diff --git a/tencentcloud/data_source_tc_lighthouse_disks_test.go b/tencentcloud/data_source_tc_lighthouse_disks_test.go deleted file mode 100644 index 41cc77ca8e..0000000000 --- a/tencentcloud/data_source_tc_lighthouse_disks_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package tencentcloud - -import ( - "testing" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" -) - -func TestAccTencentCloudLighthouseDisksDataSource_basic(t *testing.T) { - t.Parallel() - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccLighthouseDisksDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_disks.disks")), - }, - }, - }) -} - -const testAccLighthouseDisksDataSource = DefaultLighthoustVariables + ` - -data "tencentcloud_lighthouse_disks" "disks" { - disk_ids = [var.lighthouse_backup_disk_id] -} -` diff --git a/tencentcloud/data_source_tc_lighthouse_instance_blueprint_test.go b/tencentcloud/data_source_tc_lighthouse_instance_blueprint_test.go deleted file mode 100644 index 8fcd640496..0000000000 --- a/tencentcloud/data_source_tc_lighthouse_instance_blueprint_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package tencentcloud - -import ( - "testing" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" -) - -func TestAccTencentCloudLighthouseInstanceBlueprintDataSource_basic(t *testing.T) { - t.Parallel() - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccLighthouseInstanceBlueprintDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_instance_blueprint.instance_blueprint")), - }, - }, - }) -} - -const testAccLighthouseInstanceBlueprintDataSource = DefaultLighthoustVariables + ` - -data "tencentcloud_lighthouse_instance_blueprint" "instance_blueprint" { - instance_ids = [var.lighthouse_id] -} -` diff --git a/tencentcloud/data_source_tc_lighthouse_instance_disk_num_test.go b/tencentcloud/data_source_tc_lighthouse_instance_disk_num_test.go deleted file mode 100644 index bc8d1d8487..0000000000 --- a/tencentcloud/data_source_tc_lighthouse_instance_disk_num_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package tencentcloud - -import ( - "testing" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" -) - -func TestAccTencentCloudLighthouseInstanceDiskNumDataSource_basic(t *testing.T) { - t.Parallel() - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccLighthouseInstanceDiskNumDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_instance_disk_num.instance_disk_num")), - }, - }, - }) -} - -const testAccLighthouseInstanceDiskNumDataSource = DefaultLighthoustVariables + ` - -data "tencentcloud_lighthouse_instance_disk_num" "instance_disk_num" { - instance_ids = [var.lighthouse_id] -} -` diff --git a/tencentcloud/data_source_tc_lighthouse_instance_vnc_url_test.go b/tencentcloud/data_source_tc_lighthouse_instance_vnc_url_test.go deleted file mode 100644 index 8a33655695..0000000000 --- a/tencentcloud/data_source_tc_lighthouse_instance_vnc_url_test.go +++ /dev/null @@ -1,27 +0,0 @@ -package tencentcloud - -import ( - "testing" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" -) - -func TestAccTencentCloudLighthouseInstanceVncUrlDataSource_basic(t *testing.T) { - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccLighthouseInstanceVncUrlDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_instance_vnc_url.instance_vnc_url")), - }, - }, - }) -} - -const testAccLighthouseInstanceVncUrlDataSource = DefaultLighthoustVariables + ` - -data "tencentcloud_lighthouse_instance_vnc_url" "instance_vnc_url" { - instance_id = var.lighthouse_id -} -` diff --git a/tencentcloud/data_source_tc_lighthouse_reset_instance_blueprint_test.go b/tencentcloud/data_source_tc_lighthouse_reset_instance_blueprint_test.go deleted file mode 100644 index 1be617cb78..0000000000 --- a/tencentcloud/data_source_tc_lighthouse_reset_instance_blueprint_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package tencentcloud - -import ( - "testing" - - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" -) - -func TestAccTencentCloudLighthouseResetInstanceBlueprintDataSource_basic(t *testing.T) { - t.Parallel() - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: testAccLighthouseResetInstanceBlueprintDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_reset_instance_blueprint.reset_instance_blueprint")), - }, - }, - }) -} - -const testAccLighthouseResetInstanceBlueprintDataSource = DefaultLighthoustVariables + ` - -data "tencentcloud_lighthouse_reset_instance_blueprint" "reset_instance_blueprint" { - instance_id = var.lighthouse_id - offset = 0 - limit = 20 -} -` diff --git a/tencentcloud/data_source_tc_sqlserver_account_db_attachments_test.go b/tencentcloud/data_source_tc_sqlserver_account_db_attachments_test.go index 3959c7737d..e9fffa347a 100644 --- a/tencentcloud/data_source_tc_sqlserver_account_db_attachments_test.go +++ b/tencentcloud/data_source_tc_sqlserver_account_db_attachments_test.go @@ -1,9 +1,14 @@ package tencentcloud import ( + "context" + "fmt" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" ) var testDataSqlserverAccountDBAttachmentsName = "data.tencentcloud_sqlserver_account_db_attachments.test" @@ -29,6 +34,26 @@ func TestAccDataSourceTencentCloudSqlserverAccountDBAttachments_basic(t *testing }) } +func testAccCheckLBDestroy(s *terraform.State) error { + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + + clbService := ClbService{ + client: testAccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn(), + } + for _, rs := range s.RootModule().Resources { + if rs.Type != "tencentcloud_lb" { + continue + } + + _, err := clbService.DescribeLoadBalancerById(ctx, rs.Primary.ID) + if err == nil { + return fmt.Errorf("clb instance still exists: %s", rs.Primary.ID) + } + } + return nil +} + const testAccSQLServerAttachDataDB = "test_db_attachment" const testAccTencentCloudDataSqlserverAccountDBAttachmentsBasic = CommonPresetSQLServerAccount + ` diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index b897037924..820fc76615 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -50,6 +50,35 @@ import ( "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cvm" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cwp" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cynosdb" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayu" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayuv2" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dbbrain" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dc" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcdb" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcg" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dlc" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dnspod" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/domain" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dts" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/eb" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/emr" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/es" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/fl" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/gaap" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/kms" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/lighthouse" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mariadb" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mdl" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mongodb" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/monitor" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mps" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/oceanus" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/pls" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/postgresql" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/privatedns" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/project" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/pts" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/rum" ) const ( @@ -183,13 +212,13 @@ func Provider() *schema.Provider { DataSourcesMap: map[string]*schema.Resource{ "tencentcloud_availability_regions": common.DataSourceTencentCloudAvailabilityRegions(), - "tencentcloud_emr": dataSourceTencentCloudEmr(), - "tencentcloud_emr_nodes": dataSourceTencentCloudEmrNodes(), - "tencentcloud_emr_cvm_quota": dataSourceTencentCloudEmrCvmQuota(), - "tencentcloud_emr_auto_scale_records": dataSourceTencentCloudEmrAutoScaleRecords(), + "tencentcloud_emr": emr.DataSourceTencentCloudEmr(), + "tencentcloud_emr_nodes": emr.DataSourceTencentCloudEmrNodes(), + "tencentcloud_emr_cvm_quota": emr.DataSourceTencentCloudEmrCvmQuota(), + "tencentcloud_emr_auto_scale_records": emr.DataSourceTencentCloudEmrAutoScaleRecords(), "tencentcloud_availability_zones": common.DataSourceTencentCloudAvailabilityZones(), "tencentcloud_availability_zones_by_product": common.DataSourceTencentCloudAvailabilityZonesByProduct(), - "tencentcloud_projects": dataSourceTencentCloudProjects(), + "tencentcloud_projects": project.DataSourceTencentCloudProjects(), "tencentcloud_instances": cvm.DataSourceTencentCloudInstances(), "tencentcloud_instances_set": cvm.DataSourceTencentCloudInstancesSet(), "tencentcloud_reserved_instances": cvm.DataSourceTencentCloudReservedInstances(), @@ -228,7 +257,7 @@ func Provider() *schema.Provider { "tencentcloud_vpc_net_detect_state_check": dataSourceTencentCloudVpcNetDetectStateCheck(), "tencentcloud_subnet": dataSourceTencentCloudSubnet(), "tencentcloud_route_table": dataSourceTencentCloudRouteTable(), - "tencentcloud_domains": dataSourceTencentCloudDomains(), + "tencentcloud_domains": domain.DataSourceTencentCloudDomains(), "tencentcloud_eip": cvm.DataSourceTencentCloudEip(), "tencentcloud_eips": cvm.DataSourceTencentCloudEips(), "tencentcloud_eip_address_quota": cvm.DataSourceTencentCloudEipAddressQuota(), @@ -239,15 +268,15 @@ func Provider() *schema.Provider { "tencentcloud_nat_gateways": dataSourceTencentCloudNatGateways(), "tencentcloud_nat_gateway_snats": dataSourceTencentCloudNatGatewaySnats(), "tencentcloud_nat_dc_route": dataSourceTencentCloudNatDcRoute(), - "tencentcloud_oceanus_resource_related_job": dataSourceTencentCloudOceanusResourceRelatedJob(), - "tencentcloud_oceanus_savepoint_list": dataSourceTencentCloudOceanusSavepointList(), - "tencentcloud_oceanus_system_resource": dataSourceTencentCloudOceanusSystemResource(), - "tencentcloud_oceanus_work_spaces": dataSourceTencentCloudOceanusWorkSpaces(), - "tencentcloud_oceanus_clusters": dataSourceTencentCloudOceanusClusters(), - "tencentcloud_oceanus_tree_jobs": dataSourceTencentCloudOceanusTreeJobs(), - "tencentcloud_oceanus_tree_resources": dataSourceTencentCloudOceanusTreeResources(), - "tencentcloud_oceanus_job_submission_log": dataSourceTencentCloudOceanusJobSubmissionLog(), - "tencentcloud_oceanus_check_savepoint": dataSourceTencentCloudOceanusCheckSavepoint(), + "tencentcloud_oceanus_resource_related_job": oceanus.DataSourceTencentCloudOceanusResourceRelatedJob(), + "tencentcloud_oceanus_savepoint_list": oceanus.DataSourceTencentCloudOceanusSavepointList(), + "tencentcloud_oceanus_system_resource": oceanus.DataSourceTencentCloudOceanusSystemResource(), + "tencentcloud_oceanus_work_spaces": oceanus.DataSourceTencentCloudOceanusWorkSpaces(), + "tencentcloud_oceanus_clusters": oceanus.DataSourceTencentCloudOceanusClusters(), + "tencentcloud_oceanus_tree_jobs": oceanus.DataSourceTencentCloudOceanusTreeJobs(), + "tencentcloud_oceanus_tree_resources": oceanus.DataSourceTencentCloudOceanusTreeResources(), + "tencentcloud_oceanus_job_submission_log": oceanus.DataSourceTencentCloudOceanusJobSubmissionLog(), + "tencentcloud_oceanus_check_savepoint": oceanus.DataSourceTencentCloudOceanusCheckSavepoint(), "tencentcloud_vpn_customer_gateways": dataSourceTencentCloudVpnCustomerGateways(), "tencentcloud_vpn_gateways": dataSourceTencentCloudVpnGateways(), "tencentcloud_vpn_gateway_routes": dataSourceTencentCloudVpnGatewayRoutes(), @@ -262,14 +291,14 @@ func Provider() *schema.Provider { "tencentcloud_ccn_tenant_instances": ccn.DataSourceTencentCloudCcnTenantInstance(), "tencentcloud_ccn_cross_border_flow_monitor": ccn.DataSourceTencentCloudCcnCrossBorderFlowMonitor(), "tencentcloud_ccn_cross_border_region_bandwidth_limits": ccn.DataSourceTencentCloudCcnCrossBorderRegionBandwidthLimits(), - "tencentcloud_dc_instances": dataSourceTencentCloudDcInstances(), - "tencentcloud_dc_access_points": dataSourceTencentCloudDcAccessPoints(), - "tencentcloud_dc_internet_address_quota": dataSourceTencentCloudDcInternetAddressQuota(), - "tencentcloud_dc_internet_address_statistics": dataSourceTencentCloudDcInternetAddressStatistics(), - "tencentcloud_dc_public_direct_connect_tunnel_routes": dataSourceTencentCloudDcPublicDirectConnectTunnelRoutes(), - "tencentcloud_dcx_instances": dataSourceTencentCloudDcxInstances(), - "tencentcloud_dc_gateway_instances": dataSourceTencentCloudDcGatewayInstances(), - "tencentcloud_dc_gateway_ccn_routes": dataSourceTencentCloudDcGatewayCCNRoutes(), + "tencentcloud_dc_instances": dc.DataSourceTencentCloudDcInstances(), + "tencentcloud_dc_access_points": dc.DataSourceTencentCloudDcAccessPoints(), + "tencentcloud_dc_internet_address_quota": dc.DataSourceTencentCloudDcInternetAddressQuota(), + "tencentcloud_dc_internet_address_statistics": dc.DataSourceTencentCloudDcInternetAddressStatistics(), + "tencentcloud_dc_public_direct_connect_tunnel_routes": dc.DataSourceTencentCloudDcPublicDirectConnectTunnelRoutes(), + "tencentcloud_dcx_instances": dc.DataSourceTencentCloudDcxInstances(), + "tencentcloud_dc_gateway_instances": dcg.DataSourceTencentCloudDcGatewayInstances(), + "tencentcloud_dc_gateway_ccn_routes": dcg.DataSourceTencentCloudDcGatewayCCNRoutes(), "tencentcloud_security_group": dataSourceTencentCloudSecurityGroup(), "tencentcloud_security_groups": dataSourceTencentCloudSecurityGroups(), "tencentcloud_kubernetes_clusters": dataSourceTencentCloudKubernetesClusters(), @@ -354,67 +383,67 @@ func Provider() *schema.Provider { "tencentcloud_clb_resources": clb.DataSourceTencentCloudClbResources(), "tencentcloud_clb_target_group_list": clb.DataSourceTencentCloudClbTargetGroupList(), "tencentcloud_clb_target_health": clb.DataSourceTencentCloudClbTargetHealth(), - "tencentcloud_elasticsearch_instances": dataSourceTencentCloudElasticsearchInstances(), - "tencentcloud_elasticsearch_instance_logs": dataSourceTencentCloudElasticsearchInstanceLogs(), - "tencentcloud_elasticsearch_instance_operations": dataSourceTencentCloudElasticsearchInstanceOperations(), - "tencentcloud_elasticsearch_logstash_instance_logs": dataSourceTencentCloudElasticsearchLogstashInstanceLogs(), - "tencentcloud_elasticsearch_logstash_instance_operations": dataSourceTencentCloudElasticsearchLogstashInstanceOperations(), - "tencentcloud_elasticsearch_views": dataSourceTencentCloudElasticsearchViews(), - "tencentcloud_elasticsearch_diagnose": dataSourceTencentCloudElasticsearchDiagnose(), - "tencentcloud_elasticsearch_instance_plugin_list": dataSourceTencentCloudElasticsearchInstancePluginList(), - "tencentcloud_elasticsearch_describe_index_list": dataSourceTencentCloudElasticsearchDescribeIndexList(), - "tencentcloud_mongodb_zone_config": dataSourceTencentCloudMongodbZoneConfig(), - "tencentcloud_mongodb_instances": dataSourceTencentCloudMongodbInstances(), - "tencentcloud_mongodb_instance_backups": dataSourceTencentCloudMongodbInstanceBackups(), - "tencentcloud_mongodb_instance_connections": dataSourceTencentCloudMongodbInstanceConnections(), - "tencentcloud_mongodb_instance_current_op": dataSourceTencentCloudMongodbInstanceCurrentOp(), - "tencentcloud_mongodb_instance_params": dataSourceTencentCloudMongodbInstanceParams(), - "tencentcloud_mongodb_instance_slow_log": dataSourceTencentCloudMongodbInstanceSlowLog(), - "tencentcloud_dayu_cc_https_policies": dataSourceTencentCloudDayuCCHttpsPolicies(), - "tencentcloud_dayu_cc_http_policies": dataSourceTencentCloudDayuCCHttpPolicies(), - "tencentcloud_dayu_ddos_policies": dataSourceTencentCloudDayuDdosPolicies(), - "tencentcloud_dayu_ddos_policy_cases": dataSourceTencentCloudDayuDdosPolicyCases(), - "tencentcloud_dayu_ddos_policy_attachments": dataSourceTencentCloudDayuDdosPolicyAttachments(), - "tencentcloud_dayu_l4_rules": dataSourceTencentCloudDayuL4Rules(), - "tencentcloud_dayu_l4_rules_v2": dataSourceTencentCloudDayuL4RulesV2(), - "tencentcloud_dayu_l7_rules": dataSourceTencentCloudDayuL7Rules(), - "tencentcloud_dayu_l7_rules_v2": dataSourceTencentCloudDayuL7RulesV2(), - "tencentcloud_antiddos_pending_risk_info": dataSourceTencentCloudAntiddosPendingRiskInfo(), - "tencentcloud_antiddos_overview_index": dataSourceTencentCloudAntiddosOverviewIndex(), - "tencentcloud_antiddos_overview_ddos_trend": dataSourceTencentCloudAntiddosOverviewDdosTrend(), - "tencentcloud_antiddos_overview_ddos_event_list": dataSourceTencentCloudAntiddosOverviewDdosEventList(), - "tencentcloud_antiddos_overview_cc_trend": dataSourceTencentCloudAntiddosOverviewCcTrend(), - "tencentcloud_gaap_proxies": dataSourceTencentCloudGaapProxies(), - "tencentcloud_gaap_realservers": dataSourceTencentCloudGaapRealservers(), - "tencentcloud_gaap_layer4_listeners": dataSourceTencentCloudGaapLayer4Listeners(), - "tencentcloud_gaap_layer7_listeners": dataSourceTencentCloudGaapLayer7Listeners(), - "tencentcloud_gaap_http_domains": dataSourceTencentCloudGaapHttpDomains(), - "tencentcloud_gaap_http_rules": dataSourceTencentCloudGaapHttpRules(), - "tencentcloud_gaap_security_policies": dataSourceTencentCloudGaapSecurityPolices(), - "tencentcloud_gaap_security_rules": dataSourceTencentCloudGaapSecurityRules(), - "tencentcloud_gaap_certificates": dataSourceTencentCloudGaapCertificates(), - "tencentcloud_gaap_domain_error_pages": dataSourceTencentCloudGaapDomainErrorPageInfoList(), - "tencentcloud_gaap_access_regions": dataSourceTencentCloudGaapAccessRegions(), - "tencentcloud_gaap_access_regions_by_dest_region": dataSourceTencentCloudGaapAccessRegionsByDestRegion(), - "tencentcloud_gaap_black_header": dataSourceTencentCloudGaapBlackHeader(), - "tencentcloud_gaap_country_area_mapping": dataSourceTencentCloudGaapCountryAreaMapping(), - "tencentcloud_gaap_custom_header": dataSourceTencentCloudGaapCustomHeader(), - "tencentcloud_gaap_dest_regions": dataSourceTencentCloudGaapDestRegions(), - "tencentcloud_gaap_proxy_detail": dataSourceTencentCloudGaapProxyDetail(), - "tencentcloud_gaap_proxy_groups": dataSourceTencentCloudGaapProxyGroups(), - "tencentcloud_gaap_proxy_group_statistics": dataSourceTencentCloudGaapProxyGroupStatistics(), - "tencentcloud_gaap_proxy_statistics": dataSourceTencentCloudGaapProxyStatistics(), - "tencentcloud_gaap_real_servers_status": dataSourceTencentCloudGaapRealServersStatus(), - "tencentcloud_gaap_rule_real_servers": dataSourceTencentCloudGaapRuleRealServers(), - "tencentcloud_gaap_resources_by_tag": dataSourceTencentCloudGaapResourcesByTag(), - "tencentcloud_gaap_region_and_price": dataSourceTencentCloudGaapRegionAndPrice(), - "tencentcloud_gaap_proxy_and_statistics_listeners": dataSourceTencentCloudGaapProxyAndStatisticsListeners(), - "tencentcloud_gaap_proxies_status": dataSourceTencentCloudGaapProxiesStatus(), - "tencentcloud_gaap_listener_statistics": dataSourceTencentCloudGaapListenerStatistics(), - "tencentcloud_gaap_listener_real_servers": dataSourceTencentCloudGaapListenerRealServers(), - "tencentcloud_gaap_group_and_statistics_proxy": dataSourceTencentCloudGaapGroupAndStatisticsProxy(), - "tencentcloud_gaap_domain_error_page_infos": dataSourceTencentCloudGaapDomainErrorPageInfos(), - "tencentcloud_gaap_check_proxy_create": dataSourceTencentCloudGaapCheckProxyCreate(), + "tencentcloud_elasticsearch_instances": es.DataSourceTencentCloudElasticsearchInstances(), + "tencentcloud_elasticsearch_instance_logs": es.DataSourceTencentCloudElasticsearchInstanceLogs(), + "tencentcloud_elasticsearch_instance_operations": es.DataSourceTencentCloudElasticsearchInstanceOperations(), + "tencentcloud_elasticsearch_logstash_instance_logs": es.DataSourceTencentCloudElasticsearchLogstashInstanceLogs(), + "tencentcloud_elasticsearch_logstash_instance_operations": es.DataSourceTencentCloudElasticsearchLogstashInstanceOperations(), + "tencentcloud_elasticsearch_views": es.DataSourceTencentCloudElasticsearchViews(), + "tencentcloud_elasticsearch_diagnose": es.DataSourceTencentCloudElasticsearchDiagnose(), + "tencentcloud_elasticsearch_instance_plugin_list": es.DataSourceTencentCloudElasticsearchInstancePluginList(), + "tencentcloud_elasticsearch_describe_index_list": es.DataSourceTencentCloudElasticsearchDescribeIndexList(), + "tencentcloud_mongodb_zone_config": mongodb.DataSourceTencentCloudMongodbZoneConfig(), + "tencentcloud_mongodb_instances": mongodb.DataSourceTencentCloudMongodbInstances(), + "tencentcloud_mongodb_instance_backups": mongodb.DataSourceTencentCloudMongodbInstanceBackups(), + "tencentcloud_mongodb_instance_connections": mongodb.DataSourceTencentCloudMongodbInstanceConnections(), + "tencentcloud_mongodb_instance_current_op": mongodb.DataSourceTencentCloudMongodbInstanceCurrentOp(), + "tencentcloud_mongodb_instance_params": mongodb.DataSourceTencentCloudMongodbInstanceParams(), + "tencentcloud_mongodb_instance_slow_log": mongodb.DataSourceTencentCloudMongodbInstanceSlowLog(), + "tencentcloud_dayu_cc_https_policies": dayu.DataSourceTencentCloudDayuCCHttpsPolicies(), + "tencentcloud_dayu_cc_http_policies": dayu.DataSourceTencentCloudDayuCCHttpPolicies(), + "tencentcloud_dayu_ddos_policies": dayu.DataSourceTencentCloudDayuDdosPolicies(), + "tencentcloud_dayu_ddos_policy_cases": dayu.DataSourceTencentCloudDayuDdosPolicyCases(), + "tencentcloud_dayu_ddos_policy_attachments": dayu.DataSourceTencentCloudDayuDdosPolicyAttachments(), + "tencentcloud_dayu_l4_rules": dayu.DataSourceTencentCloudDayuL4Rules(), + "tencentcloud_dayu_l4_rules_v2": dayuv2.DataSourceTencentCloudDayuL4RulesV2(), + "tencentcloud_dayu_l7_rules": dayu.DataSourceTencentCloudDayuL7Rules(), + "tencentcloud_dayu_l7_rules_v2": dayuv2.DataSourceTencentCloudDayuL7RulesV2(), + "tencentcloud_antiddos_pending_risk_info": dayuv2.DataSourceTencentCloudAntiddosPendingRiskInfo(), + "tencentcloud_antiddos_overview_index": dayuv2.DataSourceTencentCloudAntiddosOverviewIndex(), + "tencentcloud_antiddos_overview_ddos_trend": dayuv2.DataSourceTencentCloudAntiddosOverviewDdosTrend(), + "tencentcloud_antiddos_overview_ddos_event_list": dayuv2.DataSourceTencentCloudAntiddosOverviewDdosEventList(), + "tencentcloud_antiddos_overview_cc_trend": dayuv2.DataSourceTencentCloudAntiddosOverviewCcTrend(), + "tencentcloud_gaap_proxies": gaap.DataSourceTencentCloudGaapProxies(), + "tencentcloud_gaap_realservers": gaap.DataSourceTencentCloudGaapRealservers(), + "tencentcloud_gaap_layer4_listeners": gaap.DataSourceTencentCloudGaapLayer4Listeners(), + "tencentcloud_gaap_layer7_listeners": gaap.DataSourceTencentCloudGaapLayer7Listeners(), + "tencentcloud_gaap_http_domains": gaap.DataSourceTencentCloudGaapHttpDomains(), + "tencentcloud_gaap_http_rules": gaap.DataSourceTencentCloudGaapHttpRules(), + "tencentcloud_gaap_security_policies": gaap.DataSourceTencentCloudGaapSecurityPolices(), + "tencentcloud_gaap_security_rules": gaap.DataSourceTencentCloudGaapSecurityRules(), + "tencentcloud_gaap_certificates": gaap.DataSourceTencentCloudGaapCertificates(), + "tencentcloud_gaap_domain_error_pages": gaap.DataSourceTencentCloudGaapDomainErrorPageInfoList(), + "tencentcloud_gaap_access_regions": gaap.DataSourceTencentCloudGaapAccessRegions(), + "tencentcloud_gaap_access_regions_by_dest_region": gaap.DataSourceTencentCloudGaapAccessRegionsByDestRegion(), + "tencentcloud_gaap_black_header": gaap.DataSourceTencentCloudGaapBlackHeader(), + "tencentcloud_gaap_country_area_mapping": gaap.DataSourceTencentCloudGaapCountryAreaMapping(), + "tencentcloud_gaap_custom_header": gaap.DataSourceTencentCloudGaapCustomHeader(), + "tencentcloud_gaap_dest_regions": gaap.DataSourceTencentCloudGaapDestRegions(), + "tencentcloud_gaap_proxy_detail": gaap.DataSourceTencentCloudGaapProxyDetail(), + "tencentcloud_gaap_proxy_groups": gaap.DataSourceTencentCloudGaapProxyGroups(), + "tencentcloud_gaap_proxy_group_statistics": gaap.DataSourceTencentCloudGaapProxyGroupStatistics(), + "tencentcloud_gaap_proxy_statistics": gaap.DataSourceTencentCloudGaapProxyStatistics(), + "tencentcloud_gaap_real_servers_status": gaap.DataSourceTencentCloudGaapRealServersStatus(), + "tencentcloud_gaap_rule_real_servers": gaap.DataSourceTencentCloudGaapRuleRealServers(), + "tencentcloud_gaap_resources_by_tag": gaap.DataSourceTencentCloudGaapResourcesByTag(), + "tencentcloud_gaap_region_and_price": gaap.DataSourceTencentCloudGaapRegionAndPrice(), + "tencentcloud_gaap_proxy_and_statistics_listeners": gaap.DataSourceTencentCloudGaapProxyAndStatisticsListeners(), + "tencentcloud_gaap_proxies_status": gaap.DataSourceTencentCloudGaapProxiesStatus(), + "tencentcloud_gaap_listener_statistics": gaap.DataSourceTencentCloudGaapListenerStatistics(), + "tencentcloud_gaap_listener_real_servers": gaap.DataSourceTencentCloudGaapListenerRealServers(), + "tencentcloud_gaap_group_and_statistics_proxy": gaap.DataSourceTencentCloudGaapGroupAndStatisticsProxy(), + "tencentcloud_gaap_domain_error_page_infos": gaap.DataSourceTencentCloudGaapDomainErrorPageInfos(), + "tencentcloud_gaap_check_proxy_create": gaap.DataSourceTencentCloudGaapCheckProxyCreate(), "tencentcloud_ssl_certificates": dataSourceTencentCloudSslCertificates(), "tencentcloud_ssl_describe_certificate": dataSourceTencentCloudSslDescribeCertificate(), "tencentcloud_ssl_describe_companies": dataSourceTencentCloudSslDescribeCompanies(), @@ -467,39 +496,39 @@ func Provider() *schema.Provider { "tencentcloud_tcaplus_tablegroups": dataSourceTencentCloudTcaplusTableGroups(), "tencentcloud_tcaplus_tables": dataSourceTencentCloudTcaplusTables(), "tencentcloud_tcaplus_idls": dataSourceTencentCloudTcaplusIdls(), - "tencentcloud_monitor_policy_conditions": dataSourceTencentMonitorPolicyConditions(), - "tencentcloud_monitor_data": dataSourceTencentMonitorData(), - "tencentcloud_monitor_product_event": dataSourceTencentMonitorProductEvent(), - "tencentcloud_monitor_binding_objects": dataSourceTencentMonitorBindingObjects(), - "tencentcloud_monitor_policy_groups": dataSourceTencentMonitorPolicyGroups(), - "tencentcloud_monitor_product_namespace": dataSourceTencentMonitorProductNamespace(), - "tencentcloud_monitor_alarm_notices": dataSourceTencentMonitorAlarmNotices(), - "tencentcloud_monitor_alarm_metric": dataSourceTencentCloudMonitorAlarmMetric(), - "tencentcloud_monitor_alarm_policy": dataSourceTencentCloudMonitorAlarmPolicy(), - "tencentcloud_monitor_alarm_history": dataSourceTencentCloudMonitorAlarmHistory(), - "tencentcloud_monitor_alarm_basic_alarms": dataSourceTencentCloudMonitorAlarmBasicAlarms(), - "tencentcloud_monitor_alarm_basic_metric": dataSourceTencentCloudMonitorAlarmBasicMetric(), - "tencentcloud_monitor_alarm_conditions_template": dataSourceTencentCloudMonitorAlarmConditionsTemplate(), + "tencentcloud_monitor_policy_conditions": monitor.DataSourceTencentCloudMonitorPolicyConditions(), + "tencentcloud_monitor_data": monitor.DataSourceTencentCloudMonitorData(), + "tencentcloud_monitor_product_event": monitor.DataSourceTencentCloudMonitorProductEvent(), + "tencentcloud_monitor_binding_objects": monitor.DataSourceTencentCloudMonitorBindingObjects(), + "tencentcloud_monitor_policy_groups": monitor.DataSourceTencentCloudMonitorPolicyGroups(), + "tencentcloud_monitor_product_namespace": monitor.DataSourceTencentCloudMonitorProductNamespace(), + "tencentcloud_monitor_alarm_notices": monitor.DataSourceTencentCloudMonitorAlarmNotices(), + "tencentcloud_monitor_alarm_metric": monitor.DataSourceTencentCloudMonitorAlarmMetric(), + "tencentcloud_monitor_alarm_policy": monitor.DataSourceTencentCloudMonitorAlarmPolicy(), + "tencentcloud_monitor_alarm_history": monitor.DataSourceTencentCloudMonitorAlarmHistory(), + "tencentcloud_monitor_alarm_basic_alarms": monitor.DataSourceTencentCloudMonitorAlarmBasicAlarms(), + "tencentcloud_monitor_alarm_basic_metric": monitor.DataSourceTencentCloudMonitorAlarmBasicMetric(), + "tencentcloud_monitor_alarm_conditions_template": monitor.DataSourceTencentCloudMonitorAlarmConditionsTemplate(), "tencentcloud_monitor_grafana_plugin_overviews": dataSourceTencentCloudMonitorGrafanaPluginOverviews(), - "tencentcloud_monitor_alarm_notice_callbacks": dataSourceTencentCloudMonitorAlarmNoticeCallbacks(), - "tencentcloud_monitor_alarm_all_namespaces": dataSourceTencentCloudMonitorAlarmAllNamespaces(), - "tencentcloud_monitor_alarm_monitor_type": dataSourceTencentCloudMonitorAlarmMonitorType(), + "tencentcloud_monitor_alarm_notice_callbacks": monitor.DataSourceTencentCloudMonitorAlarmNoticeCallbacks(), + "tencentcloud_monitor_alarm_all_namespaces": monitor.DataSourceTencentCloudMonitorAlarmAllNamespaces(), + "tencentcloud_monitor_alarm_monitor_type": monitor.DataSourceTencentCloudMonitorAlarmMonitorType(), "tencentcloud_monitor_statistic_data": dataSourceTencentCloudMonitorStatisticData(), "tencentcloud_monitor_tmp_regions": dataSourceTencentCloudMonitorTmpRegions(), - "tencentcloud_postgresql_instances": dataSourceTencentCloudPostgresqlInstances(), - "tencentcloud_postgresql_specinfos": dataSourceTencentCloudPostgresqlSpecinfos(), - "tencentcloud_postgresql_xlogs": datasourceTencentCloudPostgresqlXlogs(), - "tencentcloud_postgresql_parameter_templates": dataSourceTencentCloudPostgresqlParameterTemplates(), - "tencentcloud_postgresql_readonly_groups": dataSourceTencentCloudPostgresqlReadonlyGroups(), - "tencentcloud_postgresql_base_backups": dataSourceTencentCloudPostgresqlBaseBackups(), - "tencentcloud_postgresql_log_backups": dataSourceTencentCloudPostgresqlLogBackups(), - "tencentcloud_postgresql_backup_download_urls": dataSourceTencentCloudPostgresqlBackupDownloadUrls(), - "tencentcloud_postgresql_db_instance_classes": dataSourceTencentCloudPostgresqlDbInstanceClasses(), - "tencentcloud_postgresql_default_parameters": dataSourceTencentCloudPostgresqlDefaultParameters(), - "tencentcloud_postgresql_recovery_time": dataSourceTencentCloudPostgresqlRecoveryTime(), - "tencentcloud_postgresql_regions": dataSourceTencentCloudPostgresqlRegions(), - "tencentcloud_postgresql_db_instance_versions": dataSourceTencentCloudPostgresqlDbInstanceVersions(), - "tencentcloud_postgresql_zones": dataSourceTencentCloudPostgresqlZones(), + "tencentcloud_postgresql_instances": postgresql.DataSourceTencentCloudPostgresqlInstances(), + "tencentcloud_postgresql_specinfos": postgresql.DataSourceTencentCloudPostgresqlSpecinfos(), + "tencentcloud_postgresql_xlogs": postgresql.DataSourceTencentCloudPostgresqlXlogs(), + "tencentcloud_postgresql_parameter_templates": postgresql.DataSourceTencentCloudPostgresqlParameterTemplates(), + "tencentcloud_postgresql_readonly_groups": postgresql.DataSourceTencentCloudPostgresqlReadonlyGroups(), + "tencentcloud_postgresql_base_backups": postgresql.DataSourceTencentCloudPostgresqlBaseBackups(), + "tencentcloud_postgresql_log_backups": postgresql.DataSourceTencentCloudPostgresqlLogBackups(), + "tencentcloud_postgresql_backup_download_urls": postgresql.DataSourceTencentCloudPostgresqlBackupDownloadUrls(), + "tencentcloud_postgresql_db_instance_classes": postgresql.DataSourceTencentCloudPostgresqlDbInstanceClasses(), + "tencentcloud_postgresql_default_parameters": postgresql.DataSourceTencentCloudPostgresqlDefaultParameters(), + "tencentcloud_postgresql_recovery_time": postgresql.DataSourceTencentCloudPostgresqlRecoveryTime(), + "tencentcloud_postgresql_regions": postgresql.DataSourceTencentCloudPostgresqlRegions(), + "tencentcloud_postgresql_db_instance_versions": postgresql.DataSourceTencentCloudPostgresqlDbInstanceVersions(), + "tencentcloud_postgresql_zones": postgresql.DataSourceTencentCloudPostgresqlZones(), "tencentcloud_sqlserver_zone_config": dataSourceTencentSqlserverZoneConfig(), "tencentcloud_sqlserver_instances": dataSourceTencentCloudSqlserverInstances(), "tencentcloud_sqlserver_backups": dataSourceTencentCloudSqlserverBackups(), @@ -588,15 +617,15 @@ func Provider() *schema.Provider { "tencentcloud_address_template_groups": dataSourceTencentCloudAddressTemplateGroups(), "tencentcloud_protocol_templates": dataSourceTencentCloudProtocolTemplates(), "tencentcloud_protocol_template_groups": dataSourceTencentCloudProtocolTemplateGroups(), - "tencentcloud_kms_keys": dataSourceTencentCloudKmsKeys(), - "tencentcloud_kms_public_key": dataSourceTencentCloudKmsPublicKey(), - "tencentcloud_kms_get_parameters_for_import": dataSourceTencentCloudKmsGetParametersForImport(), - "tencentcloud_kms_describe_keys": dataSourceTencentCloudKmsDescribeKeys(), - "tencentcloud_kms_white_box_key_details": dataSourceTencentCloudKmsWhiteBoxKeyDetails(), - "tencentcloud_kms_list_keys": dataSourceTencentCloudKmsListKeys(), - "tencentcloud_kms_white_box_decrypt_key": dataSourceTencentCloudKmsWhiteBoxDecryptKey(), - "tencentcloud_kms_white_box_device_fingerprints": dataSourceTencentCloudKmsWhiteBoxDeviceFingerprints(), - "tencentcloud_kms_list_algorithms": dataSourceTencentCloudKmsListAlgorithms(), + "tencentcloud_kms_keys": kms.DataSourceTencentCloudKmsKeys(), + "tencentcloud_kms_public_key": kms.DataSourceTencentCloudKmsPublicKey(), + "tencentcloud_kms_get_parameters_for_import": kms.DataSourceTencentCloudKmsGetParametersForImport(), + "tencentcloud_kms_describe_keys": kms.DataSourceTencentCloudKmsDescribeKeys(), + "tencentcloud_kms_white_box_key_details": kms.DataSourceTencentCloudKmsWhiteBoxKeyDetails(), + "tencentcloud_kms_list_keys": kms.DataSourceTencentCloudKmsListKeys(), + "tencentcloud_kms_white_box_decrypt_key": kms.DataSourceTencentCloudKmsWhiteBoxDecryptKey(), + "tencentcloud_kms_white_box_device_fingerprints": kms.DataSourceTencentCloudKmsWhiteBoxDeviceFingerprints(), + "tencentcloud_kms_list_algorithms": kms.DataSourceTencentCloudKmsListAlgorithms(), "tencentcloud_ssm_products": dataSourceTencentCloudSsmProducts(), "tencentcloud_ssm_secrets": dataSourceTencentCloudSsmSecrets(), "tencentcloud_ssm_secret_versions": dataSourceTencentCloudSsmSecretVersions(), @@ -605,125 +634,125 @@ func Provider() *schema.Provider { "tencentcloud_ssm_service_status": dataSourceTencentCloudSsmServiceStatus(), "tencentcloud_ssm_ssh_key_pair_value": dataSourceTencentCloudSsmSshKeyPairValue(), "tencentcloud_cdh_instances": cdh.DataSourceTencentCloudCdhInstances(), - "tencentcloud_dayu_eip": dataSourceTencentCloudDayuEip(), + "tencentcloud_dayu_eip": dayuv2.DataSourceTencentCloudDayuEip(), "tencentcloud_teo_zone_available_plans": dataSourceTencentCloudTeoZoneAvailablePlans(), "tencentcloud_teo_rule_engine_settings": dataSourceTencentCloudTeoRuleEngineSettings(), "tencentcloud_sts_caller_identity": dataSourceTencentCloudStsCallerIdentity(), - "tencentcloud_dcdb_instances": dataSourceTencentCloudDcdbInstances(), - "tencentcloud_dcdb_accounts": dataSourceTencentCloudDcdbAccounts(), - "tencentcloud_dcdb_databases": dataSourceTencentCloudDcdbDatabases(), - "tencentcloud_dcdb_parameters": dataSourceTencentCloudDcdbParameters(), - "tencentcloud_dcdb_shards": dataSourceTencentCloudDcdbShards(), - "tencentcloud_dcdb_security_groups": dataSourceTencentCloudDcdbSecurityGroups(), - "tencentcloud_dcdb_database_objects": dataSourceTencentCloudDcdbDatabaseObjects(), - "tencentcloud_dcdb_database_tables": dataSourceTencentCloudDcdbDatabaseTables(), - "tencentcloud_dcdb_file_download_url": dataSourceTencentCloudDcdbFileDownloadUrl(), - "tencentcloud_dcdb_log_files": dataSourceTencentCloudDcdbLogFiles(), - "tencentcloud_dcdb_instance_node_info": dataSourceTencentCloudDcdbInstanceNodeInfo(), - "tencentcloud_dcdb_orders": dataSourceTencentCloudDcdbOrders(), - "tencentcloud_dcdb_price": dataSourceTencentCloudDcdbPrice(), - "tencentcloud_dcdb_project_security_groups": dataSourceTencentCloudDcdbProjectSecurityGroups(), - "tencentcloud_dcdb_projects": dataSourceTencentCloudDcdbProjects(), - "tencentcloud_dcdb_renewal_price": dataSourceTencentCloudDcdbRenewalPrice(), - "tencentcloud_dcdb_sale_info": dataSourceTencentCloudDcdbSaleInfo(), - "tencentcloud_dcdb_shard_spec": dataSourceTencentCloudDcdbShardSpec(), - "tencentcloud_dcdb_slow_logs": dataSourceTencentCloudDcdbSlowLogs(), - "tencentcloud_dcdb_upgrade_price": dataSourceTencentCloudDcdbUpgradePrice(), - "tencentcloud_mariadb_db_instances": dataSourceTencentCloudMariadbDbInstances(), - "tencentcloud_mariadb_accounts": dataSourceTencentCloudMariadbAccounts(), - "tencentcloud_mariadb_security_groups": dataSourceTencentCloudMariadbSecurityGroups(), - "tencentcloud_mariadb_database_objects": dataSourceTencentCloudMariadbDatabaseObjects(), - "tencentcloud_mariadb_databases": dataSourceTencentCloudMariadbDatabases(), - "tencentcloud_mariadb_database_table": dataSourceTencentCloudMariadbDatabaseTable(), - "tencentcloud_mariadb_dcn_detail": dataSourceTencentCloudMariadbDcnDetail(), - "tencentcloud_mariadb_file_download_url": dataSourceTencentCloudMariadbFileDownloadUrl(), - "tencentcloud_mariadb_flow": dataSourceTencentCloudMariadbFlow(), - "tencentcloud_mariadb_instance_node_info": dataSourceTencentCloudMariadbInstanceNodeInfo(), - "tencentcloud_mariadb_instance_specs": dataSourceTencentCloudMariadbInstanceSpecs(), - "tencentcloud_mariadb_log_files": dataSourceTencentCloudMariadbLogFiles(), - "tencentcloud_mariadb_orders": dataSourceTencentCloudMariadbOrders(), - "tencentcloud_mariadb_price": dataSourceTencentCloudMariadbPrice(), - "tencentcloud_mariadb_project_security_groups": dataSourceTencentCloudMariadbProjectSecurityGroups(), - "tencentcloud_mariadb_renewal_price": dataSourceTencentCloudMariadbRenewalPrice(), - "tencentcloud_mariadb_sale_info": dataSourceTencentCloudMariadbSaleInfo(), - "tencentcloud_mariadb_slow_logs": dataSourceTencentCloudMariadbSlowLogs(), - "tencentcloud_mariadb_upgrade_price": dataSourceTencentCloudMariadbUpgradePrice(), - "tencentcloud_mps_schedules": dataSourceTencentCloudMpsSchedules(), - "tencentcloud_mps_tasks": dataSourceTencentCloudMpsTasks(), - "tencentcloud_mps_parse_live_stream_process_notification": dataSourceTencentCloudMpsParseLiveStreamProcessNotification(), - "tencentcloud_mps_parse_notification": dataSourceTencentCloudMpsParseNotification(), - "tencentcloud_mps_media_meta_data": dataSourceTencentCloudMpsMediaMetaData(), + "tencentcloud_dcdb_instances": dcdb.DataSourceTencentCloudDcdbInstances(), + "tencentcloud_dcdb_accounts": dcdb.DataSourceTencentCloudDcdbAccounts(), + "tencentcloud_dcdb_databases": dcdb.DataSourceTencentCloudDcdbDatabases(), + "tencentcloud_dcdb_parameters": dcdb.DataSourceTencentCloudDcdbParameters(), + "tencentcloud_dcdb_shards": dcdb.DataSourceTencentCloudDcdbShards(), + "tencentcloud_dcdb_security_groups": dcdb.DataSourceTencentCloudDcdbSecurityGroups(), + "tencentcloud_dcdb_database_objects": dcdb.DataSourceTencentCloudDcdbDatabaseObjects(), + "tencentcloud_dcdb_database_tables": dcdb.DataSourceTencentCloudDcdbDatabaseTables(), + "tencentcloud_dcdb_file_download_url": dcdb.DataSourceTencentCloudDcdbFileDownloadUrl(), + "tencentcloud_dcdb_log_files": dcdb.DataSourceTencentCloudDcdbLogFiles(), + "tencentcloud_dcdb_instance_node_info": dcdb.DataSourceTencentCloudDcdbInstanceNodeInfo(), + "tencentcloud_dcdb_orders": dcdb.DataSourceTencentCloudDcdbOrders(), + "tencentcloud_dcdb_price": dcdb.DataSourceTencentCloudDcdbPrice(), + "tencentcloud_dcdb_project_security_groups": dcdb.DataSourceTencentCloudDcdbProjectSecurityGroups(), + "tencentcloud_dcdb_projects": dcdb.DataSourceTencentCloudDcdbProjects(), + "tencentcloud_dcdb_renewal_price": dcdb.DataSourceTencentCloudDcdbRenewalPrice(), + "tencentcloud_dcdb_sale_info": dcdb.DataSourceTencentCloudDcdbSaleInfo(), + "tencentcloud_dcdb_shard_spec": dcdb.DataSourceTencentCloudDcdbShardSpec(), + "tencentcloud_dcdb_slow_logs": dcdb.DataSourceTencentCloudDcdbSlowLogs(), + "tencentcloud_dcdb_upgrade_price": dcdb.DataSourceTencentCloudDcdbUpgradePrice(), + "tencentcloud_mariadb_db_instances": mariadb.DataSourceTencentCloudMariadbDbInstances(), + "tencentcloud_mariadb_accounts": mariadb.DataSourceTencentCloudMariadbAccounts(), + "tencentcloud_mariadb_security_groups": mariadb.DataSourceTencentCloudMariadbSecurityGroups(), + "tencentcloud_mariadb_database_objects": mariadb.DataSourceTencentCloudMariadbDatabaseObjects(), + "tencentcloud_mariadb_databases": mariadb.DataSourceTencentCloudMariadbDatabases(), + "tencentcloud_mariadb_database_table": mariadb.DataSourceTencentCloudMariadbDatabaseTable(), + "tencentcloud_mariadb_dcn_detail": mariadb.DataSourceTencentCloudMariadbDcnDetail(), + "tencentcloud_mariadb_file_download_url": mariadb.DataSourceTencentCloudMariadbFileDownloadUrl(), + "tencentcloud_mariadb_flow": mariadb.DataSourceTencentCloudMariadbFlow(), + "tencentcloud_mariadb_instance_node_info": mariadb.DataSourceTencentCloudMariadbInstanceNodeInfo(), + "tencentcloud_mariadb_instance_specs": mariadb.DataSourceTencentCloudMariadbInstanceSpecs(), + "tencentcloud_mariadb_log_files": mariadb.DataSourceTencentCloudMariadbLogFiles(), + "tencentcloud_mariadb_orders": mariadb.DataSourceTencentCloudMariadbOrders(), + "tencentcloud_mariadb_price": mariadb.DataSourceTencentCloudMariadbPrice(), + "tencentcloud_mariadb_project_security_groups": mariadb.DataSourceTencentCloudMariadbProjectSecurityGroups(), + "tencentcloud_mariadb_renewal_price": mariadb.DataSourceTencentCloudMariadbRenewalPrice(), + "tencentcloud_mariadb_sale_info": mariadb.DataSourceTencentCloudMariadbSaleInfo(), + "tencentcloud_mariadb_slow_logs": mariadb.DataSourceTencentCloudMariadbSlowLogs(), + "tencentcloud_mariadb_upgrade_price": mariadb.DataSourceTencentCloudMariadbUpgradePrice(), + "tencentcloud_mps_schedules": mps.DataSourceTencentCloudMpsSchedules(), + "tencentcloud_mps_tasks": mps.DataSourceTencentCloudMpsTasks(), + "tencentcloud_mps_parse_live_stream_process_notification": mps.DataSourceTencentCloudMpsParseLiveStreamProcessNotification(), + "tencentcloud_mps_parse_notification": mps.DataSourceTencentCloudMpsParseNotification(), + "tencentcloud_mps_media_meta_data": mps.DataSourceTencentCloudMpsMediaMetaData(), "tencentcloud_tdcpg_clusters": dataSourceTencentCloudTdcpgClusters(), "tencentcloud_tdcpg_instances": dataSourceTencentCloudTdcpgInstances(), "tencentcloud_cat_probe_data": cat.DataSourceTencentCloudCatProbeData(), "tencentcloud_cat_node": cat.DataSourceTencentCloudCatNode(), "tencentcloud_cat_metric_data": cat.DataSourceTencentCloudCatMetricData(), - "tencentcloud_rum_project": dataSourceTencentCloudRumProject(), - "tencentcloud_rum_offline_log_config": dataSourceTencentCloudRumOfflineLogConfig(), - "tencentcloud_rum_whitelist": dataSourceTencentCloudRumWhitelist(), - "tencentcloud_rum_taw_instance": dataSourceTencentCloudRumTawInstance(), - "tencentcloud_rum_custom_url": dataSourceTencentCloudRumCustomUrl(), - "tencentcloud_rum_event_url": dataSourceTencentCloudRumEventUrl(), - "tencentcloud_rum_fetch_url_info": dataSourceTencentCloudRumFetchUrlInfo(), - "tencentcloud_rum_fetch_url": dataSourceTencentCloudRumFetchUrl(), - "tencentcloud_rum_group_log": dataSourceTencentCloudRumGroupLog(), - "tencentcloud_rum_log_list": dataSourceTencentCloudRumLogList(), - "tencentcloud_rum_log_url_statistics": dataSourceTencentCloudRumLogUrlStatistics(), - "tencentcloud_rum_performance_page": dataSourceTencentCloudRumPerformancePage(), - "tencentcloud_rum_pv_url_info": dataSourceTencentCloudRumPvUrlInfo(), - "tencentcloud_rum_pv_url_statistics": dataSourceTencentCloudRumPvUrlStatistics(), - "tencentcloud_rum_report_count": dataSourceTencentCloudRumReportCount(), - "tencentcloud_rum_log_stats_log_list": dataSourceTencentCloudRumLogStatsLogList(), - "tencentcloud_rum_scores": dataSourceTencentCloudRumScores(), - "tencentcloud_rum_set_url_statistics": dataSourceTencentCloudRumSetUrlStatistics(), - "tencentcloud_rum_sign": dataSourceTencentCloudRumSign(), - "tencentcloud_rum_static_project": dataSourceTencentCloudRumStaticProject(), - "tencentcloud_rum_static_resource": dataSourceTencentCloudRumStaticResource(), - "tencentcloud_rum_static_url": dataSourceTencentCloudRumStaticUrl(), - "tencentcloud_rum_taw_area": dataSourceTencentCloudRumTawArea(), - "tencentcloud_rum_web_vitals_page": dataSourceTencentCloudRumWebVitalsPage(), - "tencentcloud_rum_log_export": dataSourceTencentCloudRumLogExport(), - "tencentcloud_rum_log_export_list": dataSourceTencentCloudRumLogExportList(), - "tencentcloud_dnspod_records": dataSourceTencentCloudDnspodRecords(), - "tencentcloud_dnspod_domain_list": dataSourceTencentCloudDnspodDomainList(), - "tencentcloud_dnspod_domain_analytics": dataSourceTencentCloudDnspodDomainAnalytics(), - "tencentcloud_dnspod_domain_log_list": dataSourceTencentCloudDnspodDomainLogList(), - "tencentcloud_dnspod_record_analytics": dataSourceTencentCloudDnspodRecordAnalytics(), - "tencentcloud_dnspod_record_line_list": dataSourceTencentCloudDnspodRecordLineList(), - "tencentcloud_dnspod_record_list": dataSourceTencentCloudDnspodRecordList(), - "tencentcloud_dnspod_record_type": dataSourceTencentCloudDnspodRecordType(), + "tencentcloud_rum_project": rum.DataSourceTencentCloudRumProject(), + "tencentcloud_rum_offline_log_config": rum.DataSourceTencentCloudRumOfflineLogConfig(), + "tencentcloud_rum_whitelist": rum.DataSourceTencentCloudRumWhitelist(), + "tencentcloud_rum_taw_instance": rum.DataSourceTencentCloudRumTawInstance(), + "tencentcloud_rum_custom_url": rum.DataSourceTencentCloudRumCustomUrl(), + "tencentcloud_rum_event_url": rum.DataSourceTencentCloudRumEventUrl(), + "tencentcloud_rum_fetch_url_info": rum.DataSourceTencentCloudRumFetchUrlInfo(), + "tencentcloud_rum_fetch_url": rum.DataSourceTencentCloudRumFetchUrl(), + "tencentcloud_rum_group_log": rum.DataSourceTencentCloudRumGroupLog(), + "tencentcloud_rum_log_list": rum.DataSourceTencentCloudRumLogList(), + "tencentcloud_rum_log_url_statistics": rum.DataSourceTencentCloudRumLogUrlStatistics(), + "tencentcloud_rum_performance_page": rum.DataSourceTencentCloudRumPerformancePage(), + "tencentcloud_rum_pv_url_info": rum.DataSourceTencentCloudRumPvUrlInfo(), + "tencentcloud_rum_pv_url_statistics": rum.DataSourceTencentCloudRumPvUrlStatistics(), + "tencentcloud_rum_report_count": rum.DataSourceTencentCloudRumReportCount(), + "tencentcloud_rum_log_stats_log_list": rum.DataSourceTencentCloudRumLogStatsLogList(), + "tencentcloud_rum_scores": rum.DataSourceTencentCloudRumScores(), + "tencentcloud_rum_set_url_statistics": rum.DataSourceTencentCloudRumSetUrlStatistics(), + "tencentcloud_rum_sign": rum.DataSourceTencentCloudRumSign(), + "tencentcloud_rum_static_project": rum.DataSourceTencentCloudRumStaticProject(), + "tencentcloud_rum_static_resource": rum.DataSourceTencentCloudRumStaticResource(), + "tencentcloud_rum_static_url": rum.DataSourceTencentCloudRumStaticUrl(), + "tencentcloud_rum_taw_area": rum.DataSourceTencentCloudRumTawArea(), + "tencentcloud_rum_web_vitals_page": rum.DataSourceTencentCloudRumWebVitalsPage(), + "tencentcloud_rum_log_export": rum.DataSourceTencentCloudRumLogExport(), + "tencentcloud_rum_log_export_list": rum.DataSourceTencentCloudRumLogExportList(), + "tencentcloud_dnspod_records": dnspod.DataSourceTencentCloudDnspodRecords(), + "tencentcloud_dnspod_domain_list": dnspod.DataSourceTencentCloudDnspodDomainList(), + "tencentcloud_dnspod_domain_analytics": dnspod.DataSourceTencentCloudDnspodDomainAnalytics(), + "tencentcloud_dnspod_domain_log_list": dnspod.DataSourceTencentCloudDnspodDomainLogList(), + "tencentcloud_dnspod_record_analytics": dnspod.DataSourceTencentCloudDnspodRecordAnalytics(), + "tencentcloud_dnspod_record_line_list": dnspod.DataSourceTencentCloudDnspodRecordLineList(), + "tencentcloud_dnspod_record_list": dnspod.DataSourceTencentCloudDnspodRecordList(), + "tencentcloud_dnspod_record_type": dnspod.DataSourceTencentCloudDnspodRecordType(), "tencentcloud_tat_command": dataSourceTencentCloudTatCommand(), "tencentcloud_tat_invoker": dataSourceTencentCloudTatInvoker(), "tencentcloud_tat_invoker_records": dataSourceTencentCloudTatInvokerRecords(), "tencentcloud_tat_agent": dataSourceTencentCloudTatAgent(), "tencentcloud_tat_invocation_task": dataSourceTencentCloudTatInvocationTask(), - "tencentcloud_dbbrain_sql_filters": dataSourceTencentCloudDbbrainSqlFilters(), - "tencentcloud_dbbrain_security_audit_log_export_tasks": dataSourceTencentCloudDbbrainSecurityAuditLogExportTasks(), - "tencentcloud_dbbrain_diag_event": dataSourceTencentCloudDbbrainDiagEvent(), - "tencentcloud_dbbrain_diag_events": dataSourceTencentCloudDbbrainDiagEvents(), - "tencentcloud_dbbrain_diag_history": dataSourceTencentCloudDbbrainDiagHistory(), - "tencentcloud_dbbrain_security_audit_log_download_urls": dataSourceTencentCloudDbbrainSecurityAuditLogDownloadUrls(), - "tencentcloud_dbbrain_slow_log_time_series_stats": dataSourceTencentCloudDbbrainSlowLogTimeSeriesStats(), - "tencentcloud_dbbrain_slow_log_top_sqls": dataSourceTencentCloudDbbrainSlowLogTopSqls(), - "tencentcloud_dbbrain_slow_log_user_host_stats": dataSourceTencentCloudDbbrainSlowLogUserHostStats(), - "tencentcloud_dbbrain_slow_log_user_sql_advice": dataSourceTencentCloudDbbrainSlowLogUserSqlAdvice(), - "tencentcloud_dbbrain_slow_logs": dataSourceTencentCloudDbbrainSlowLogs(), - "tencentcloud_dbbrain_health_scores": dataSourceTencentCloudDbbrainHealthScores(), - "tencentcloud_dbbrain_sql_templates": dataSourceTencentCloudDbbrainSqlTemplates(), - "tencentcloud_dbbrain_db_space_status": dataSourceTencentCloudDbbrainDbSpaceStatus(), - "tencentcloud_dbbrain_top_space_schemas": dataSourceTencentCloudDbbrainTopSpaceSchemas(), - "tencentcloud_dbbrain_top_space_tables": dataSourceTencentCloudDbbrainTopSpaceTables(), - "tencentcloud_dbbrain_top_space_schema_time_series": dataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeries(), - "tencentcloud_dbbrain_top_space_table_time_series": dataSourceTencentCloudDbbrainTopSpaceTableTimeSeries(), - "tencentcloud_dbbrain_diag_db_instances": dataSourceTencentCloudDbbrainDiagDbInstances(), - "tencentcloud_dbbrain_mysql_process_list": dataSourceTencentCloudDbbrainMysqlProcessList(), - "tencentcloud_dbbrain_no_primary_key_tables": dataSourceTencentCloudDbbrainNoPrimaryKeyTables(), - "tencentcloud_dbbrain_redis_top_big_keys": dataSourceTencentCloudDbbrainRedisTopBigKeys(), - "tencentcloud_dbbrain_redis_top_key_prefix_list": dataSourceTencentCloudDbbrainRedisTopKeyPrefixList(), - "tencentcloud_dts_sync_jobs": dataSourceTencentCloudDtsSyncJobs(), - "tencentcloud_dts_compare_tasks": dataSourceTencentCloudDtsCompareTasks(), - "tencentcloud_dts_migrate_jobs": dataSourceTencentCloudDtsMigrateJobs(), - "tencentcloud_dts_migrate_db_instances": dataSourceTencentCloudDtsMigrateDbInstances(), + "tencentcloud_dbbrain_sql_filters": dbbrain.DataSourceTencentCloudDbbrainSqlFilters(), + "tencentcloud_dbbrain_security_audit_log_export_tasks": dbbrain.DataSourceTencentCloudDbbrainSecurityAuditLogExportTasks(), + "tencentcloud_dbbrain_diag_event": dbbrain.DataSourceTencentCloudDbbrainDiagEvent(), + "tencentcloud_dbbrain_diag_events": dbbrain.DataSourceTencentCloudDbbrainDiagEvents(), + "tencentcloud_dbbrain_diag_history": dbbrain.DataSourceTencentCloudDbbrainDiagHistory(), + "tencentcloud_dbbrain_security_audit_log_download_urls": dbbrain.DataSourceTencentCloudDbbrainSecurityAuditLogDownloadUrls(), + "tencentcloud_dbbrain_slow_log_time_series_stats": dbbrain.DataSourceTencentCloudDbbrainSlowLogTimeSeriesStats(), + "tencentcloud_dbbrain_slow_log_top_sqls": dbbrain.DataSourceTencentCloudDbbrainSlowLogTopSqls(), + "tencentcloud_dbbrain_slow_log_user_host_stats": dbbrain.DataSourceTencentCloudDbbrainSlowLogUserHostStats(), + "tencentcloud_dbbrain_slow_log_user_sql_advice": dbbrain.DataSourceTencentCloudDbbrainSlowLogUserSqlAdvice(), + "tencentcloud_dbbrain_slow_logs": dbbrain.DataSourceTencentCloudDbbrainSlowLogs(), + "tencentcloud_dbbrain_health_scores": dbbrain.DataSourceTencentCloudDbbrainHealthScores(), + "tencentcloud_dbbrain_sql_templates": dbbrain.DataSourceTencentCloudDbbrainSqlTemplates(), + "tencentcloud_dbbrain_db_space_status": dbbrain.DataSourceTencentCloudDbbrainDbSpaceStatus(), + "tencentcloud_dbbrain_top_space_schemas": dbbrain.DataSourceTencentCloudDbbrainTopSpaceSchemas(), + "tencentcloud_dbbrain_top_space_tables": dbbrain.DataSourceTencentCloudDbbrainTopSpaceTables(), + "tencentcloud_dbbrain_top_space_schema_time_series": dbbrain.DataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeries(), + "tencentcloud_dbbrain_top_space_table_time_series": dbbrain.DataSourceTencentCloudDbbrainTopSpaceTableTimeSeries(), + "tencentcloud_dbbrain_diag_db_instances": dbbrain.DataSourceTencentCloudDbbrainDiagDbInstances(), + "tencentcloud_dbbrain_mysql_process_list": dbbrain.DataSourceTencentCloudDbbrainMysqlProcessList(), + "tencentcloud_dbbrain_no_primary_key_tables": dbbrain.DataSourceTencentCloudDbbrainNoPrimaryKeyTables(), + "tencentcloud_dbbrain_redis_top_big_keys": dbbrain.DataSourceTencentCloudDbbrainRedisTopBigKeys(), + "tencentcloud_dbbrain_redis_top_key_prefix_list": dbbrain.DataSourceTencentCloudDbbrainRedisTopKeyPrefixList(), + "tencentcloud_dts_sync_jobs": dts.DataSourceTencentCloudDtsSyncJobs(), + "tencentcloud_dts_compare_tasks": dts.DataSourceTencentCloudDtsCompareTasks(), + "tencentcloud_dts_migrate_jobs": dts.DataSourceTencentCloudDtsMigrateJobs(), + "tencentcloud_dts_migrate_db_instances": dts.DataSourceTencentCloudDtsMigrateDbInstances(), "tencentcloud_tdmq_rocketmq_cluster": dataSourceTencentCloudTdmqRocketmqCluster(), "tencentcloud_tdmq_rocketmq_namespace": dataSourceTencentCloudTdmqRocketmqNamespace(), "tencentcloud_tdmq_rocketmq_topic": dataSourceTencentCloudTdmqRocketmqTopic(), @@ -781,7 +810,7 @@ func Provider() *schema.Provider { "tencentcloud_chdfs_mount_points": chdfs.DataSourceTencentCloudChdfsMountPoints(), "tencentcloud_chdfs_file_systems": chdfs.DataSourceTencentCloudChdfsFileSystems(), "tencentcloud_tcm_mesh": dataSourceTencentCloudTcmMesh(), - "tencentcloud_lighthouse_firewall_rules_template": dataSourceTencentCloudLighthouseFirewallRulesTemplate(), + "tencentcloud_lighthouse_firewall_rules_template": lighthouse.DataSourceTencentCloudLighthouseFirewallRulesTemplate(), "tencentcloud_cvm_instance_vnc_url": cvm.DataSourceTencentCloudCvmInstanceVncUrl(), "tencentcloud_cvm_disaster_recover_group_quota": cvm.DataSourceTencentCloudCvmDisasterRecoverGroupQuota(), "tencentcloud_cvm_chc_hosts": cvm.DataSourceTencentCloudCvmChcHosts(), @@ -815,7 +844,7 @@ func Provider() *schema.Provider { "tencentcloud_tsf_container_group": dataSourceTencentCloudTsfContainerGroup(), "tencentcloud_tsf_groups": dataSourceTencentCloudTsfGroups(), "tencentcloud_tsf_ms_api_list": dataSourceTencentCloudTsfMsApiList(), - "tencentcloud_lighthouse_bundle": dataSourceTencentCloudLighthouseBundle(), + "tencentcloud_lighthouse_bundle": lighthouse.DataSourceTencentCloudLighthouseBundle(), "tencentcloud_api_gateway_api_docs": apigateway.DataSourceTencentCloudAPIGatewayAPIDocs(), "tencentcloud_api_gateway_api_apps": apigateway.DataSourceTencentCloudAPIGatewayAPIApps(), "tencentcloud_tse_access_address": dataSourceTencentCloudTseAccessAddress(), @@ -830,35 +859,35 @@ func Provider() *schema.Provider { "tencentcloud_tse_gateway_canary_rules": dataSourceTencentCloudTseGatewayCanaryRules(), "tencentcloud_tse_gateway_services": dataSourceTencentCloudTseGatewayServices(), "tencentcloud_tse_gateway_certificates": dataSourceTencentCloudTseGatewayCertificates(), - "tencentcloud_lighthouse_modify_instance_bundle": dataSourceTencentCloudLighthouseModifyInstanceBundle(), - "tencentcloud_lighthouse_zone": dataSourceTencentCloudLighthouseZone(), - "tencentcloud_lighthouse_scene": dataSourceTencentCloudLighthouseScene(), - "tencentcloud_lighthouse_all_scene": dataSourceTencentCloudLighthouseAllScene(), - "tencentcloud_lighthouse_reset_instance_blueprint": dataSourceTencentCloudLighthouseResetInstanceBlueprint(), - "tencentcloud_lighthouse_region": dataSourceTencentCloudLighthouseRegion(), - "tencentcloud_lighthouse_instance_vnc_url": dataSourceTencentCloudLighthouseInstanceVncUrl(), - "tencentcloud_lighthouse_instance_traffic_package": dataSourceTencentCloudLighthouseInstanceTrafficPackage(), - "tencentcloud_lighthouse_instance_disk_num": dataSourceTencentCloudLighthouseInstanceDiskNum(), - "tencentcloud_lighthouse_instance_blueprint": dataSourceTencentCloudLighthouseInstanceBlueprint(), - "tencentcloud_lighthouse_disk_config": dataSourceTencentCloudLighthouseDiskConfig(), - "tencentcloud_lighthouse_disks": dataSourceTencentCloudLighthouseInstanceDisks(), + "tencentcloud_lighthouse_modify_instance_bundle": lighthouse.DataSourceTencentCloudLighthouseModifyInstanceBundle(), + "tencentcloud_lighthouse_zone": lighthouse.DataSourceTencentCloudLighthouseZone(), + "tencentcloud_lighthouse_scene": lighthouse.DataSourceTencentCloudLighthouseScene(), + "tencentcloud_lighthouse_all_scene": lighthouse.DataSourceTencentCloudLighthouseAllScene(), + "tencentcloud_lighthouse_reset_instance_blueprint": lighthouse.DataSourceTencentCloudLighthouseResetInstanceBlueprint(), + "tencentcloud_lighthouse_region": lighthouse.DataSourceTencentCloudLighthouseRegion(), + "tencentcloud_lighthouse_instance_vnc_url": lighthouse.DataSourceTencentCloudLighthouseInstanceVncUrl(), + "tencentcloud_lighthouse_instance_traffic_package": lighthouse.DataSourceTencentCloudLighthouseInstanceTrafficPackage(), + "tencentcloud_lighthouse_instance_disk_num": lighthouse.DataSourceTencentCloudLighthouseInstanceDiskNum(), + "tencentcloud_lighthouse_instance_blueprint": lighthouse.DataSourceTencentCloudLighthouseInstanceBlueprint(), + "tencentcloud_lighthouse_disk_config": lighthouse.DataSourceTencentCloudLighthouseDiskConfig(), + "tencentcloud_lighthouse_disks": lighthouse.DataSourceTencentCloudLighthouseInstanceDisks(), "tencentcloud_clickhouse_backup_jobs": cdwch.DataSourceTencentCloudClickhouseBackupJobs(), "tencentcloud_clickhouse_backup_job_detail": cdwch.DataSourceTencentCloudClickhouseBackupJobDetail(), "tencentcloud_clickhouse_backup_tables": cdwch.DataSourceTencentCloudClickhouseBackupTables(), "tencentcloud_cls_shipper_tasks": cls.DataSourceTencentCloudClsShipperTasks(), "tencentcloud_cls_machines": cls.DataSourceTencentCloudClsMachines(), "tencentcloud_cls_machine_group_configs": cls.DataSourceTencentCloudClsMachineGroupConfigs(), - "tencentcloud_eb_search": dataSourceTencentCloudEbSearch(), - "tencentcloud_eb_bus": dataSourceTencentCloudEbBus(), - "tencentcloud_eb_event_rules": dataSourceTencentCloudEbEventRules(), - "tencentcloud_eb_platform_event_names": dataSourceTencentCloudEbPlatformEventNames(), - "tencentcloud_eb_platform_event_patterns": dataSourceTencentCloudEbPlatformEventPatterns(), - "tencentcloud_eb_platform_products": dataSourceTencentCloudEbPlatformProducts(), - "tencentcloud_eb_plateform_event_template": dataSourceTencentCloudEbPlateformEventTemplate(), + "tencentcloud_eb_search": eb.DataSourceTencentCloudEbSearch(), + "tencentcloud_eb_bus": eb.DataSourceTencentCloudEbBus(), + "tencentcloud_eb_event_rules": eb.DataSourceTencentCloudEbEventRules(), + "tencentcloud_eb_platform_event_names": eb.DataSourceTencentCloudEbPlatformEventNames(), + "tencentcloud_eb_platform_event_patterns": eb.DataSourceTencentCloudEbPlatformEventPatterns(), + "tencentcloud_eb_platform_products": eb.DataSourceTencentCloudEbPlatformProducts(), + "tencentcloud_eb_plateform_event_template": eb.DataSourceTencentCloudEbPlateformEventTemplate(), "tencentcloud_wedata_rule_templates": dataSourceTencentCloudWedataRuleTemplates(), "tencentcloud_wedata_data_source_list": dataSourceTencentCloudWedataDataSourceList(), "tencentcloud_wedata_data_source_without_info": dataSourceTencentCloudWedataDataSourceWithoutInfo(), - "tencentcloud_private_dns_records": dataSourceTencentCloudPrivateDnsRecords(), + "tencentcloud_private_dns_records": privatedns.DataSourceTencentCloudPrivateDnsRecords(), "tencentcloud_waf_ciphers": dataSourceTencentCloudWafCiphers(), "tencentcloud_waf_tls_versions": dataSourceTencentCloudWafTlsVersions(), "tencentcloud_waf_domains": dataSourceTencentCloudWafDomains(), @@ -888,24 +917,24 @@ func Provider() *schema.Provider { "tencentcloud_organization_org_financial_by_product": dataSourceTencentCloudOrganizationOrgFinancialByProduct(), "tencentcloud_organization_org_auth_node": dataSourceTencentCloudOrganizationOrgAuthNode(), "tencentcloud_organization_members": dataSourceTencentCloudOrganizationMembers(), - "tencentcloud_pts_scenario_with_jobs": dataSourceTencentCloudPtsScenarioWithJobs(), + "tencentcloud_pts_scenario_with_jobs": pts.DataSourceTencentCloudPtsScenarioWithJobs(), "tencentcloud_cam_list_attached_user_policy": dataSourceTencentCloudCamListAttachedUserPolicy(), "tencentcloud_cam_secret_last_used_time": cam.DataSourceTencentCloudCamSecretLastUsedTime(), "tencentcloud_cam_policy_granting_service_access": cam.DataSourceTencentCloudCamPolicyGrantingServiceAccess(), "tencentcloud_cam_group_user_account": cam.DataSourceTencentCloudCamGroupUserAccount(), - "tencentcloud_dlc_check_data_engine_image_can_be_rollback": dataSourceTencentCloudDlcCheckDataEngineImageCanBeRollback(), - "tencentcloud_dlc_check_data_engine_image_can_be_upgrade": dataSourceTencentCloudDlcCheckDataEngineImageCanBeUpgrade(), - "tencentcloud_dlc_describe_user_type": dataSourceTencentCloudDlcDescribeUserType(), - "tencentcloud_dlc_describe_user_info": dataSourceTencentCloudDlcDescribeUserInfo(), - "tencentcloud_dlc_describe_user_roles": dataSourceTencentCloudDlcDescribeUserRoles(), - "tencentcloud_dlc_describe_data_engine": dataSourceTencentCloudDlcDescribeDataEngine(), - "tencentcloud_dlc_describe_data_engine_image_versions": dataSourceTencentCloudDlcDescribeDataEngineImageVersions(), - "tencentcloud_dlc_describe_data_engine_python_spark_images": dataSourceTencentCloudDlcDescribeDataEnginePythonSparkImages(), - "tencentcloud_dlc_describe_engine_usage_info": dataSourceTencentCloudDlcDescribeEngineUsageInfo(), - "tencentcloud_dlc_describe_work_group_info": dataSourceTencentCloudDlcDescribeWorkGroupInfo(), - "tencentcloud_dlc_check_data_engine_config_pairs_validity": dataSourceTencentCloudDlcCheckDataEngineConfigPairsValidity(), - "tencentcloud_dlc_describe_updatable_data_engines": dataSourceTencentCloudDlcDescribeUpdatableDataEngines(), - "tencentcloud_dlc_describe_data_engine_events": dataSourceTencentCloudDlcDescribeDataEngineEvents(), + "tencentcloud_dlc_check_data_engine_image_can_be_rollback": dlc.DataSourceTencentCloudDlcCheckDataEngineImageCanBeRollback(), + "tencentcloud_dlc_check_data_engine_image_can_be_upgrade": dlc.DataSourceTencentCloudDlcCheckDataEngineImageCanBeUpgrade(), + "tencentcloud_dlc_describe_user_type": dlc.DataSourceTencentCloudDlcDescribeUserType(), + "tencentcloud_dlc_describe_user_info": dlc.DataSourceTencentCloudDlcDescribeUserInfo(), + "tencentcloud_dlc_describe_user_roles": dlc.DataSourceTencentCloudDlcDescribeUserRoles(), + "tencentcloud_dlc_describe_data_engine": dlc.DataSourceTencentCloudDlcDescribeDataEngine(), + "tencentcloud_dlc_describe_data_engine_image_versions": dlc.DataSourceTencentCloudDlcDescribeDataEngineImageVersions(), + "tencentcloud_dlc_describe_data_engine_python_spark_images": dlc.DataSourceTencentCloudDlcDescribeDataEnginePythonSparkImages(), + "tencentcloud_dlc_describe_engine_usage_info": dlc.DataSourceTencentCloudDlcDescribeEngineUsageInfo(), + "tencentcloud_dlc_describe_work_group_info": dlc.DataSourceTencentCloudDlcDescribeWorkGroupInfo(), + "tencentcloud_dlc_check_data_engine_config_pairs_validity": dlc.DataSourceTencentCloudDlcCheckDataEngineConfigPairsValidity(), + "tencentcloud_dlc_describe_updatable_data_engines": dlc.DataSourceTencentCloudDlcDescribeUpdatableDataEngines(), + "tencentcloud_dlc_describe_data_engine_events": dlc.DataSourceTencentCloudDlcDescribeDataEngineEvents(), "tencentcloud_bi_project": bi.DataSourceTencentCloudBiProject(), "tencentcloud_bi_user_project": bi.DataSourceTencentCloudBiUserProject(), "tencentcloud_antiddos_basic_device_status": antiddos.DataSourceTencentCloudAntiddosBasicDeviceStatus(), @@ -919,9 +948,9 @@ func Provider() *schema.Provider { }, ResourcesMap: map[string]*schema.Resource{ - "tencentcloud_project": resourceTencentCloudProject(), - "tencentcloud_emr_cluster": resourceTencentCloudEmrCluster(), - "tencentcloud_emr_user_manager": resourceTencentCloudEmrUserManager(), + "tencentcloud_project": project.ResourceTencentCloudProject(), + "tencentcloud_emr_cluster": emr.ResourceTencentCloudEmrCluster(), + "tencentcloud_emr_user_manager": emr.ResourceTencentCloudEmrUserManager(), "tencentcloud_instance": cvm.ResourceTencentCloudInstance(), "tencentcloud_instance_set": cvm.ResourceTencentCloudInstanceSet(), "tencentcloud_reserved_instance": cvm.ResourceTencentCloudReservedInstance(), @@ -946,7 +975,7 @@ func Provider() *schema.Provider { "tencentcloud_vpc_snapshot_policy_attachment": resourceTencentCloudVpcSnapshotPolicyAttachment(), "tencentcloud_vpc_snapshot_policy_config": resourceTencentCloudVpcSnapshotPolicyConfig(), "tencentcloud_vpc_net_detect": resourceTencentCloudVpcNetDetect(), - "tencentcloud_vpc_flow_log_config": resourceTencentCloudVpcFlowLogConfig(), + "tencentcloud_vpc_flow_log_config": fl.ResourceTencentCloudVpcFlowLogConfig(), "tencentcloud_vpc_classic_link_attachment": resourceTencentCloudVpcClassicLinkAttachment(), "tencentcloud_vpc_dhcp_ip": resourceTencentCloudVpcDhcpIp(), "tencentcloud_vpc_ipv6_cidr_block": resourceTencentCloudVpcIpv6CidrBlock(), @@ -965,16 +994,16 @@ func Provider() *schema.Provider { "tencentcloud_nat_gateway": resourceTencentCloudNatGateway(), "tencentcloud_nat_gateway_snat": resourceTencentCloudNatGatewaySnat(), "tencentcloud_nat_refresh_nat_dc_route": resourceTencentCloudNatRefreshNatDcRoute(), - "tencentcloud_oceanus_job": resourceTencentCloudOceanusJob(), - "tencentcloud_oceanus_job_config": resourceTencentCloudOceanusJobConfig(), - "tencentcloud_oceanus_job_copy": resourceTencentCloudOceanusJobCopy(), - "tencentcloud_oceanus_run_job": resourceTencentCloudOceanusRunJob(), - "tencentcloud_oceanus_stop_job": resourceTencentCloudOceanusStopJob(), - "tencentcloud_oceanus_trigger_job_savepoint": resourceTencentCloudOceanusTriggerJobSavepoint(), - "tencentcloud_oceanus_resource": resourceTencentCloudOceanusResource(), - "tencentcloud_oceanus_resource_config": resourceTencentCloudOceanusResourceConfig(), - "tencentcloud_oceanus_work_space": resourceTencentCloudOceanusWorkSpace(), - "tencentcloud_oceanus_folder": resourceTencentCloudOceanusFolder(), + "tencentcloud_oceanus_job": oceanus.ResourceTencentCloudOceanusJob(), + "tencentcloud_oceanus_job_config": oceanus.ResourceTencentCloudOceanusJobConfig(), + "tencentcloud_oceanus_job_copy": oceanus.ResourceTencentCloudOceanusJobCopy(), + "tencentcloud_oceanus_run_job": oceanus.ResourceTencentCloudOceanusRunJob(), + "tencentcloud_oceanus_stop_job": oceanus.ResourceTencentCloudOceanusStopJob(), + "tencentcloud_oceanus_trigger_job_savepoint": oceanus.ResourceTencentCloudOceanusTriggerJobSavepoint(), + "tencentcloud_oceanus_resource": oceanus.ResourceTencentCloudOceanusResource(), + "tencentcloud_oceanus_resource_config": oceanus.ResourceTencentCloudOceanusResourceConfig(), + "tencentcloud_oceanus_work_space": oceanus.ResourceTencentCloudOceanusWorkSpace(), + "tencentcloud_oceanus_folder": oceanus.ResourceTencentCloudOceanusFolder(), "tencentcloud_tag": resourceTencentCloudTag(), "tencentcloud_tag_attachment": resourceTencentCloudTagAttachment(), "tencentcloud_eip": cvm.ResourceTencentCloudEip(), @@ -992,15 +1021,15 @@ func Provider() *schema.Provider { "tencentcloud_ccn_instances_accept_attach": ccn.ResourceTencentCloudCcnInstancesAcceptAttach(), "tencentcloud_ccn_instances_reject_attach": ccn.ResourceTencentCloudCcnInstancesRejectAttach(), "tencentcloud_ccn_instances_reset_attach": ccn.ResourceTencentCloudCcnInstancesResetAttach(), - "tencentcloud_dc_instance": resourceTencentCloudDcInstance(), - "tencentcloud_dcx": resourceTencentCloudDcxInstance(), - "tencentcloud_dcx_extra_config": resourceTencentCloudDcxExtraConfig(), - "tencentcloud_dc_share_dcx_config": resourceTencentCloudDcShareDcxConfig(), - "tencentcloud_dc_internet_address": resourceTencentCloudDcInternetAddress(), - "tencentcloud_dc_internet_address_config": resourceTencentCloudDcInternetAddressConfig(), - "tencentcloud_dc_gateway": resourceTencentCloudDcGatewayInstance(), - "tencentcloud_dc_gateway_ccn_route": resourceTencentCloudDcGatewayCcnRouteInstance(), - "tencentcloud_dc_gateway_attachment": resourceTencentCloudDcGatewayAttachment(), + "tencentcloud_dc_instance": dc.ResourceTencentCloudDcInstance(), + "tencentcloud_dcx": dc.ResourceTencentCloudDcxInstance(), + "tencentcloud_dcx_extra_config": dc.ResourceTencentCloudDcxExtraConfig(), + "tencentcloud_dc_share_dcx_config": dc.ResourceTencentCloudDcShareDcxConfig(), + "tencentcloud_dc_internet_address": dc.ResourceTencentCloudDcInternetAddress(), + "tencentcloud_dc_internet_address_config": dc.ResourceTencentCloudDcInternetAddressConfig(), + "tencentcloud_dc_gateway": dcg.ResourceTencentCloudDcGatewayInstance(), + "tencentcloud_dc_gateway_ccn_route": dcg.ResourceTencentCloudDcGatewayCcnRouteInstance(), + "tencentcloud_dc_gateway_attachment": dcg.ResourceTencentCloudDcGatewayAttachment(), "tencentcloud_vpn_customer_gateway": resourceTencentCloudVpnCustomerGateway(), "tencentcloud_vpn_gateway": resourceTencentCloudVpnGateway(), "tencentcloud_vpn_gateway_route": resourceTencentCloudVpnGatewayRoute(), @@ -1138,37 +1167,37 @@ func Provider() *schema.Provider { "tencentcloud_as_scale_out_instances": as.ResourceTencentCloudAsScaleOutInstances(), "tencentcloud_as_execute_scaling_policy": as.ResourceTencentCloudAsExecuteScalingPolicy(), "tencentcloud_as_complete_lifecycle": as.ResourceTencentCloudAsCompleteLifecycle(), - "tencentcloud_mongodb_instance": resourceTencentCloudMongodbInstance(), - "tencentcloud_mongodb_sharding_instance": resourceTencentCloudMongodbShardingInstance(), - "tencentcloud_mongodb_instance_account": resourceTencentCloudMongodbInstanceAccount(), - "tencentcloud_mongodb_instance_backup": resourceTencentCloudMongodbInstanceBackup(), - "tencentcloud_mongodb_instance_backup_download_task": resourceTencentCloudMongodbInstanceBackupDownloadTask(), - "tencentcloud_dayu_cc_http_policy": resourceTencentCloudDayuCCHttpPolicy(), - "tencentcloud_dayu_cc_https_policy": resourceTencentCloudDayuCCHttpsPolicy(), - "tencentcloud_dayu_ddos_policy": resourceTencentCloudDayuDdosPolicy(), - "tencentcloud_dayu_cc_policy_v2": resourceTencentCloudDayuCCPolicyV2(), - "tencentcloud_dayu_ddos_policy_v2": resourceTencentCloudDayuDdosPolicyV2(), - "tencentcloud_dayu_ddos_policy_case": resourceTencentCloudDayuDdosPolicyCase(), - "tencentcloud_dayu_ddos_policy_attachment": resourceTencentCloudDayuDdosPolicyAttachment(), - "tencentcloud_dayu_l4_rule": resourceTencentCloudDayuL4Rule(), - "tencentcloud_dayu_l4_rule_v2": resourceTencentCloudDayuL4RuleV2(), - "tencentcloud_dayu_l7_rule": resourceTencentCloudDayuL7Rule(), - "tencentcloud_dayu_l7_rule_v2": resourceTencentCloudDayuL7RuleV2(), - "tencentcloud_dayu_eip": resourceTencentCloudDayuEip(), - "tencentcloud_gaap_proxy": resourceTencentCloudGaapProxy(), - "tencentcloud_gaap_realserver": resourceTencentCloudGaapRealserver(), - "tencentcloud_gaap_layer4_listener": resourceTencentCloudGaapLayer4Listener(), - "tencentcloud_gaap_layer7_listener": resourceTencentCloudGaapLayer7Listener(), - "tencentcloud_gaap_http_domain": resourceTencentCloudGaapHttpDomain(), - "tencentcloud_gaap_http_rule": resourceTencentCloudGaapHttpRule(), - "tencentcloud_gaap_certificate": resourceTencentCloudGaapCertificate(), - "tencentcloud_gaap_security_policy": resourceTencentCloudGaapSecurityPolicy(), - "tencentcloud_gaap_security_rule": resourceTencentCloudGaapSecurityRule(), - "tencentcloud_gaap_domain_error_page": resourceTencentCloudGaapDomainErrorPageInfo(), - "tencentcloud_gaap_global_domain_dns": resourceTencentCloudGaapGlobalDomainDns(), - "tencentcloud_gaap_global_domain": resourceTencentCloudGaapGlobalDomain(), - "tencentcloud_gaap_custom_header": resourceTencentCloudGaapCustomHeader(), - "tencentcloud_gaap_proxy_group": resourceTencentCloudGaapProxyGroup(), + "tencentcloud_mongodb_instance": mongodb.ResourceTencentCloudMongodbInstance(), + "tencentcloud_mongodb_sharding_instance": mongodb.ResourceTencentCloudMongodbShardingInstance(), + "tencentcloud_mongodb_instance_account": mongodb.ResourceTencentCloudMongodbInstanceAccount(), + "tencentcloud_mongodb_instance_backup": mongodb.ResourceTencentCloudMongodbInstanceBackup(), + "tencentcloud_mongodb_instance_backup_download_task": mongodb.ResourceTencentCloudMongodbInstanceBackupDownloadTask(), + "tencentcloud_dayu_cc_http_policy": dayu.ResourceTencentCloudDayuCCHttpPolicy(), + "tencentcloud_dayu_cc_https_policy": dayu.ResourceTencentCloudDayuCCHttpsPolicy(), + "tencentcloud_dayu_ddos_policy": dayu.ResourceTencentCloudDayuDdosPolicy(), + "tencentcloud_dayu_cc_policy_v2": dayuv2.ResourceTencentCloudDayuCCPolicyV2(), + "tencentcloud_dayu_ddos_policy_v2": dayuv2.ResourceTencentCloudDayuDdosPolicyV2(), + "tencentcloud_dayu_ddos_policy_case": dayu.ResourceTencentCloudDayuDdosPolicyCase(), + "tencentcloud_dayu_ddos_policy_attachment": dayu.ResourceTencentCloudDayuDdosPolicyAttachment(), + "tencentcloud_dayu_l4_rule": dayu.ResourceTencentCloudDayuL4Rule(), + "tencentcloud_dayu_l4_rule_v2": dayuv2.ResourceTencentCloudDayuL4RuleV2(), + "tencentcloud_dayu_l7_rule": dayu.ResourceTencentCloudDayuL7Rule(), + "tencentcloud_dayu_l7_rule_v2": dayuv2.ResourceTencentCloudDayuL7RuleV2(), + "tencentcloud_dayu_eip": dayuv2.ResourceTencentCloudDayuEip(), + "tencentcloud_gaap_proxy": gaap.ResourceTencentCloudGaapProxy(), + "tencentcloud_gaap_realserver": gaap.ResourceTencentCloudGaapRealserver(), + "tencentcloud_gaap_layer4_listener": gaap.ResourceTencentCloudGaapLayer4Listener(), + "tencentcloud_gaap_layer7_listener": gaap.ResourceTencentCloudGaapLayer7Listener(), + "tencentcloud_gaap_http_domain": gaap.ResourceTencentCloudGaapHttpDomain(), + "tencentcloud_gaap_http_rule": gaap.ResourceTencentCloudGaapHttpRule(), + "tencentcloud_gaap_certificate": gaap.ResourceTencentCloudGaapCertificate(), + "tencentcloud_gaap_security_policy": gaap.ResourceTencentCloudGaapSecurityPolicy(), + "tencentcloud_gaap_security_rule": gaap.ResourceTencentCloudGaapSecurityRule(), + "tencentcloud_gaap_domain_error_page": gaap.ResourceTencentCloudGaapDomainErrorPageInfo(), + "tencentcloud_gaap_global_domain_dns": gaap.ResourceTencentCloudGaapGlobalDomainDns(), + "tencentcloud_gaap_global_domain": gaap.ResourceTencentCloudGaapGlobalDomain(), + "tencentcloud_gaap_custom_header": gaap.ResourceTencentCloudGaapCustomHeader(), + "tencentcloud_gaap_proxy_group": gaap.ResourceTencentCloudGaapProxyGroup(), "tencentcloud_ssl_certificate": resourceTencentCloudSslCertificate(), "tencentcloud_ssl_pay_certificate": resourceTencentCloudSSLInstance(), "tencentcloud_ssl_free_certificate": resourceTencentCloudSSLFreeCertificate(), @@ -1218,12 +1247,12 @@ func Provider() *schema.Provider { "tencentcloud_cdn_url_push": cdn.ResourceTencentCloudUrlPush(), "tencentcloud_cdn_url_purge": cdn.ResourceTencentCloudUrlPurge(), "tencentcloud_monitor_policy_group": resourceTencentCloudMonitorPolicyGroup(), - "tencentcloud_monitor_binding_object": resourceTencentCloudMonitorBindingObject(), - "tencentcloud_monitor_policy_binding_object": resourceTencentCloudMonitorPolicyBindingObject(), - "tencentcloud_monitor_binding_receiver": resourceTencentCloudMonitorBindingAlarmReceiver(), - "tencentcloud_monitor_alarm_policy": resourceTencentCloudMonitorAlarmPolicy(), - "tencentcloud_monitor_alarm_notice": resourceTencentCloudMonitorAlarmNotice(), - "tencentcloud_monitor_alarm_policy_set_default": resourceTencentCloudMonitorAlarmPolicySetDefault(), + "tencentcloud_monitor_binding_object": monitor.ResourceTencentCloudMonitorBindingObject(), + "tencentcloud_monitor_policy_binding_object": monitor.ResourceTencentCloudMonitorPolicyBindingObject(), + "tencentcloud_monitor_binding_receiver": monitor.ResourceTencentCloudMonitorBindingAlarmReceiver(), + "tencentcloud_monitor_alarm_policy": monitor.ResourceTencentCloudMonitorAlarmPolicy(), + "tencentcloud_monitor_alarm_notice": monitor.ResourceTencentCloudMonitorAlarmNotice(), + "tencentcloud_monitor_alarm_policy_set_default": monitor.ResourceTencentCloudMonitorAlarmPolicySetDefault(), "tencentcloud_monitor_tmp_instance": resourceTencentCloudMonitorTmpInstance(), "tencentcloud_monitor_tmp_cvm_agent": resourceTencentCloudMonitorTmpCvmAgent(), "tencentcloud_monitor_tmp_scrape_job": resourceTencentCloudMonitorTmpScrapeJob(), @@ -1251,39 +1280,39 @@ func Provider() *schema.Provider { "tencentcloud_monitor_grafana_sso_cam_config": resourceTencentCloudMonitorGrafanaSsoCamConfig(), "tencentcloud_monitor_grafana_sso_config": resourceTencentCloudMonitorGrafanaSsoConfig(), "tencentcloud_monitor_grafana_version_upgrade": resourceTencentCloudMonitorGrafanaVersionUpgrade(), - "tencentcloud_mongodb_standby_instance": resourceTencentCloudMongodbStandbyInstance(), - "tencentcloud_elasticsearch_instance": resourceTencentCloudElasticsearchInstance(), - "tencentcloud_elasticsearch_security_group": resourceTencentCloudElasticsearchSecurityGroup(), - "tencentcloud_elasticsearch_logstash": resourceTencentCloudElasticsearchLogstash(), - "tencentcloud_elasticsearch_logstash_pipeline": resourceTencentCloudElasticsearchLogstashPipeline(), - "tencentcloud_elasticsearch_restart_logstash_instance_operation": resourceTencentCloudElasticsearchRestartLogstashInstanceOperation(), - "tencentcloud_elasticsearch_start_logstash_pipeline_operation": resourceTencentCloudElasticsearchStartLogstashPipelineOperation(), - "tencentcloud_elasticsearch_stop_logstash_pipeline_operation": resourceTencentCloudElasticsearchStopLogstashPipelineOperation(), - "tencentcloud_elasticsearch_index": resourceTencentCloudElasticsearchIndex(), - "tencentcloud_elasticsearch_restart_instance_operation": resourceTencentCloudElasticsearchRestartInstanceOperation(), - "tencentcloud_elasticsearch_restart_kibana_operation": resourceTencentCloudElasticsearchRestartKibanaOperation(), - "tencentcloud_elasticsearch_restart_nodes_operation": resourceTencentCloudElasticsearchRestartNodesOperation(), - "tencentcloud_elasticsearch_diagnose": resourceTencentCloudElasticsearchDiagnose(), - "tencentcloud_elasticsearch_diagnose_instance": resourceTencentCloudElasticsearchDiagnoseInstance(), - "tencentcloud_elasticsearch_update_plugins_operation": resourceTencentCloudElasticsearchUpdatePluginsOperation(), - "tencentcloud_postgresql_instance": resourceTencentCloudPostgresqlInstance(), - "tencentcloud_postgresql_readonly_instance": resourceTencentCloudPostgresqlReadonlyInstance(), - "tencentcloud_postgresql_readonly_group": resourceTencentCloudPostgresqlReadonlyGroup(), - "tencentcloud_postgresql_readonly_attachment": resourceTencentCloudPostgresqlReadonlyAttachment(), - "tencentcloud_postgresql_parameter_template": resourceTencentCloudPostgresqlParameterTemplate(), - "tencentcloud_postgresql_base_backup": resourceTencentCloudPostgresqlBaseBackup(), - "tencentcloud_postgresql_backup_plan_config": resourceTencentCloudPostgresqlBackupPlanConfig(), - "tencentcloud_postgresql_security_group_config": resourceTencentCloudPostgresqlSecurityGroupConfig(), - "tencentcloud_postgresql_backup_download_restriction_config": resourceTencentCloudPostgresqlBackupDownloadRestrictionConfig(), - "tencentcloud_postgresql_restart_db_instance_operation": resourceTencentCloudPostgresqlRestartDbInstanceOperation(), - "tencentcloud_postgresql_renew_db_instance_operation": resourceTencentCloudPostgresqlRenewDbInstanceOperation(), - "tencentcloud_postgresql_isolate_db_instance_operation": resourceTencentCloudPostgresqlIsolateDbInstanceOperation(), - "tencentcloud_postgresql_disisolate_db_instance_operation": resourceTencentCloudPostgresqlDisisolateDbInstanceOperation(), - "tencentcloud_postgresql_rebalance_readonly_group_operation": resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperation(), - "tencentcloud_postgresql_delete_log_backup_operation": resourceTencentCloudPostgresqlDeleteLogBackupOperation(), - "tencentcloud_postgresql_modify_account_remark_operation": resourceTencentCloudPostgresqlModifyAccountRemarkOperation(), - "tencentcloud_postgresql_modify_switch_time_period_operation": resourceTencentCloudPostgresqlModifySwitchTimePeriodOperation(), - "tencentcloud_postgresql_instance_ha_config": resourceTencentCloudPostgresqlInstanceHAConfig(), + "tencentcloud_mongodb_standby_instance": mongodb.ResourceTencentCloudMongodbStandbyInstance(), + "tencentcloud_elasticsearch_instance": es.ResourceTencentCloudElasticsearchInstance(), + "tencentcloud_elasticsearch_security_group": es.ResourceTencentCloudElasticsearchSecurityGroup(), + "tencentcloud_elasticsearch_logstash": es.ResourceTencentCloudElasticsearchLogstash(), + "tencentcloud_elasticsearch_logstash_pipeline": es.ResourceTencentCloudElasticsearchLogstashPipeline(), + "tencentcloud_elasticsearch_restart_logstash_instance_operation": es.ResourceTencentCloudElasticsearchRestartLogstashInstanceOperation(), + "tencentcloud_elasticsearch_start_logstash_pipeline_operation": es.ResourceTencentCloudElasticsearchStartLogstashPipelineOperation(), + "tencentcloud_elasticsearch_stop_logstash_pipeline_operation": es.ResourceTencentCloudElasticsearchStopLogstashPipelineOperation(), + "tencentcloud_elasticsearch_index": es.ResourceTencentCloudElasticsearchIndex(), + "tencentcloud_elasticsearch_restart_instance_operation": es.ResourceTencentCloudElasticsearchRestartInstanceOperation(), + "tencentcloud_elasticsearch_restart_kibana_operation": es.ResourceTencentCloudElasticsearchRestartKibanaOperation(), + "tencentcloud_elasticsearch_restart_nodes_operation": es.ResourceTencentCloudElasticsearchRestartNodesOperation(), + "tencentcloud_elasticsearch_diagnose": es.ResourceTencentCloudElasticsearchDiagnose(), + "tencentcloud_elasticsearch_diagnose_instance": es.ResourceTencentCloudElasticsearchDiagnoseInstance(), + "tencentcloud_elasticsearch_update_plugins_operation": es.ResourceTencentCloudElasticsearchUpdatePluginsOperation(), + "tencentcloud_postgresql_instance": postgresql.ResourceTencentCloudPostgresqlInstance(), + "tencentcloud_postgresql_readonly_instance": postgresql.ResourceTencentCloudPostgresqlReadonlyInstance(), + "tencentcloud_postgresql_readonly_group": postgresql.ResourceTencentCloudPostgresqlReadonlyGroup(), + "tencentcloud_postgresql_readonly_attachment": postgresql.ResourceTencentCloudPostgresqlReadonlyAttachment(), + "tencentcloud_postgresql_parameter_template": postgresql.ResourceTencentCloudPostgresqlParameterTemplate(), + "tencentcloud_postgresql_base_backup": postgresql.ResourceTencentCloudPostgresqlBaseBackup(), + "tencentcloud_postgresql_backup_plan_config": postgresql.ResourceTencentCloudPostgresqlBackupPlanConfig(), + "tencentcloud_postgresql_security_group_config": postgresql.ResourceTencentCloudPostgresqlSecurityGroupConfig(), + "tencentcloud_postgresql_backup_download_restriction_config": postgresql.ResourceTencentCloudPostgresqlBackupDownloadRestrictionConfig(), + "tencentcloud_postgresql_restart_db_instance_operation": postgresql.ResourceTencentCloudPostgresqlRestartDbInstanceOperation(), + "tencentcloud_postgresql_renew_db_instance_operation": postgresql.ResourceTencentCloudPostgresqlRenewDbInstanceOperation(), + "tencentcloud_postgresql_isolate_db_instance_operation": postgresql.ResourceTencentCloudPostgresqlIsolateDbInstanceOperation(), + "tencentcloud_postgresql_disisolate_db_instance_operation": postgresql.ResourceTencentCloudPostgresqlDisisolateDbInstanceOperation(), + "tencentcloud_postgresql_rebalance_readonly_group_operation": postgresql.ResourceTencentCloudPostgresqlRebalanceReadonlyGroupOperation(), + "tencentcloud_postgresql_delete_log_backup_operation": postgresql.ResourceTencentCloudPostgresqlDeleteLogBackupOperation(), + "tencentcloud_postgresql_modify_account_remark_operation": postgresql.ResourceTencentCloudPostgresqlModifyAccountRemarkOperation(), + "tencentcloud_postgresql_modify_switch_time_period_operation": postgresql.ResourceTencentCloudPostgresqlModifySwitchTimePeriodOperation(), + "tencentcloud_postgresql_instance_ha_config": postgresql.ResourceTencentCloudPostgresqlInstanceHAConfig(), "tencentcloud_sqlserver_instance": resourceTencentCloudSqlserverInstance(), "tencentcloud_sqlserver_db": resourceTencentCloudSqlserverDB(), "tencentcloud_sqlserver_account": resourceTencentCloudSqlserverAccount(), @@ -1417,30 +1446,30 @@ func Provider() *schema.Provider { "tencentcloud_address_template_group": resourceTencentCloudAddressTemplateGroup(), "tencentcloud_protocol_template": resourceTencentCloudProtocolTemplate(), "tencentcloud_protocol_template_group": resourceTencentCloudProtocolTemplateGroup(), - "tencentcloud_kms_key": resourceTencentCloudKmsKey(), - "tencentcloud_kms_external_key": resourceTencentCloudKmsExternalKey(), - "tencentcloud_kms_white_box_key": resourceTencentCloudKmsWhiteBoxKey(), - "tencentcloud_kms_cloud_resource_attachment": resourceTencentCloudKmsCloudResourceAttachment(), - "tencentcloud_kms_overwrite_white_box_device_fingerprints": resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprints(), + "tencentcloud_kms_key": kms.ResourceTencentCloudKmsKey(), + "tencentcloud_kms_external_key": kms.ResourceTencentCloudKmsExternalKey(), + "tencentcloud_kms_white_box_key": kms.ResourceTencentCloudKmsWhiteBoxKey(), + "tencentcloud_kms_cloud_resource_attachment": kms.ResourceTencentCloudKmsCloudResourceAttachment(), + "tencentcloud_kms_overwrite_white_box_device_fingerprints": kms.ResourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprints(), "tencentcloud_ssm_secret": resourceTencentCloudSsmSecret(), "tencentcloud_ssm_ssh_key_pair_secret": resourceTencentCloudSsmSshKeyPairSecret(), "tencentcloud_ssm_product_secret": resourceTencentCloudSsmProductSecret(), "tencentcloud_ssm_secret_version": resourceTencentCloudSsmSecretVersion(), "tencentcloud_ssm_rotate_product_secret": resourceTencentCloudSsmRotateProductSecret(), "tencentcloud_cdh_instance": cdh.ResourceTencentCloudCdhInstance(), - "tencentcloud_dnspod_domain_instance": resourceTencentCloudDnspodDomainInstance(), - "tencentcloud_dnspod_domain_alias": resourceTencentCloudDnspodDomainAlias(), - "tencentcloud_dnspod_record": resourceTencentCloudDnspodRecord(), - "tencentcloud_dnspod_record_group": resourceTencentCloudDnspodRecordGroup(), - "tencentcloud_dnspod_modify_domain_owner_operation": resourceTencentCloudDnspodModifyDomainOwnerOperation(), - "tencentcloud_dnspod_modify_record_group_operation": resourceTencentCloudDnspodModifyRecordGroupOperation(), - "tencentcloud_dnspod_download_snapshot_operation": resourceTencentCloudDnspodDownloadSnapshotOperation(), - "tencentcloud_dnspod_custom_line": resourceTencentCloudDnspodCustomLine(), - "tencentcloud_dnspod_snapshot_config": resourceTencentCloudDnspodSnapshotConfig(), - "tencentcloud_dnspod_domain_lock": resourceTencentCloudDnspodDomainLock(), - "tencentcloud_private_dns_zone": resourceTencentCloudPrivateDnsZone(), - "tencentcloud_private_dns_record": resourceTencentCloudPrivateDnsRecord(), - "tencentcloud_private_dns_zone_vpc_attachment": resourceTencentCloudPrivateDnsZoneVpcAttachment(), + "tencentcloud_dnspod_domain_instance": dnspod.ResourceTencentCloudDnspodDomainInstance(), + "tencentcloud_dnspod_domain_alias": dnspod.ResourceTencentCloudDnspodDomainAlias(), + "tencentcloud_dnspod_record": dnspod.ResourceTencentCloudDnspodRecord(), + "tencentcloud_dnspod_record_group": dnspod.ResourceTencentCloudDnspodRecordGroup(), + "tencentcloud_dnspod_modify_domain_owner_operation": dnspod.ResourceTencentCloudDnspodModifyDomainOwnerOperation(), + "tencentcloud_dnspod_modify_record_group_operation": dnspod.ResourceTencentCloudDnspodModifyRecordGroupOperation(), + "tencentcloud_dnspod_download_snapshot_operation": dnspod.ResourceTencentCloudDnspodDownloadSnapshotOperation(), + "tencentcloud_dnspod_custom_line": dnspod.ResourceTencentCloudDnspodCustomLine(), + "tencentcloud_dnspod_snapshot_config": dnspod.ResourceTencentCloudDnspodSnapshotConfig(), + "tencentcloud_dnspod_domain_lock": dnspod.ResourceTencentCloudDnspodDomainLock(), + "tencentcloud_private_dns_zone": privatedns.ResourceTencentCloudPrivateDnsZone(), + "tencentcloud_private_dns_record": privatedns.ResourceTencentCloudPrivateDnsRecord(), + "tencentcloud_private_dns_zone_vpc_attachment": privatedns.ResourceTencentCloudPrivateDnsZoneVpcAttachment(), "tencentcloud_cls_logset": cls.ResourceTencentCloudClsLogset(), "tencentcloud_cls_topic": cls.ResourceTencentCloudClsTopic(), "tencentcloud_cls_config": cls.ResourceTencentCloudClsConfig(), @@ -1455,8 +1484,8 @@ func Provider() *schema.Provider { "tencentcloud_cls_cos_recharge": cls.ResourceTencentCloudClsCosRecharge(), "tencentcloud_cls_export": cls.ResourceTencentCloudClsExport(), "tencentcloud_cls_data_transform": cls.ResourceTencentCloudClsDataTransform(), - "tencentcloud_lighthouse_instance": resourceTencentCloudLighthouseInstance(), - "tencentcloud_lighthouse_firewall_template": resourceTencentCloudLighthouseFirewallTemplate(), + "tencentcloud_lighthouse_instance": lighthouse.ResourceTencentCloudLighthouseInstance(), + "tencentcloud_lighthouse_firewall_template": lighthouse.ResourceTencentCloudLighthouseFirewallTemplate(), "tencentcloud_tem_environment": resourceTencentCloudTemEnvironment(), "tencentcloud_tem_application": resourceTencentCloudTemApplication(), "tencentcloud_tem_workload": resourceTencentCloudTemWorkload(), @@ -1489,38 +1518,38 @@ func Provider() *schema.Provider { "tencentcloud_ses_black_list_delete": resourceTencentCloudSesBlackListDelete(), "tencentcloud_sms_sign": resourceTencentCloudSmsSign(), "tencentcloud_sms_template": resourceTencentCloudSmsTemplate(), - "tencentcloud_dcdb_account": resourceTencentCloudDcdbAccount(), - "tencentcloud_dcdb_hourdb_instance": resourceTencentCloudDcdbHourdbInstance(), - "tencentcloud_dcdb_security_group_attachment": resourceTencentCloudDcdbSecurityGroupAttachment(), - "tencentcloud_dcdb_db_instance": resourceTencentCloudDcdbDbInstance(), - "tencentcloud_dcdb_account_privileges": resourceTencentCloudDcdbAccountPrivileges(), - "tencentcloud_dcdb_db_parameters": resourceTencentCloudDcdbDbParameters(), - "tencentcloud_dcdb_encrypt_attributes_config": resourceTencentCloudDcdbEncryptAttributesConfig(), - "tencentcloud_dcdb_db_sync_mode_config": resourceTencentCloudDcdbDbSyncModeConfig(), - "tencentcloud_dcdb_instance_config": resourceTencentCloudDcdbInstanceConfig(), - "tencentcloud_dcdb_activate_hour_instance_operation": resourceTencentCloudDcdbActivateHourInstanceOperation(), - "tencentcloud_dcdb_isolate_hour_instance_operation": resourceTencentCloudDcdbIsolateHourInstanceOperation(), - "tencentcloud_dcdb_cancel_dcn_job_operation": resourceTencentCloudDcdbCancelDcnJobOperation(), - "tencentcloud_dcdb_flush_binlog_operation": resourceTencentCloudDcdbFlushBinlogOperation(), - "tencentcloud_dcdb_switch_db_instance_ha_operation": resourceTencentCloudDcdbSwitchDbInstanceHaOperation(), + "tencentcloud_dcdb_account": dcdb.ResourceTencentCloudDcdbAccount(), + "tencentcloud_dcdb_hourdb_instance": dcdb.ResourceTencentCloudDcdbHourdbInstance(), + "tencentcloud_dcdb_security_group_attachment": dcdb.ResourceTencentCloudDcdbSecurityGroupAttachment(), + "tencentcloud_dcdb_db_instance": dcdb.ResourceTencentCloudDcdbDbInstance(), + "tencentcloud_dcdb_account_privileges": dcdb.ResourceTencentCloudDcdbAccountPrivileges(), + "tencentcloud_dcdb_db_parameters": dcdb.ResourceTencentCloudDcdbDbParameters(), + "tencentcloud_dcdb_encrypt_attributes_config": dcdb.ResourceTencentCloudDcdbEncryptAttributesConfig(), + "tencentcloud_dcdb_db_sync_mode_config": dcdb.ResourceTencentCloudDcdbDbSyncModeConfig(), + "tencentcloud_dcdb_instance_config": dcdb.ResourceTencentCloudDcdbInstanceConfig(), + "tencentcloud_dcdb_activate_hour_instance_operation": dcdb.ResourceTencentCloudDcdbActivateHourInstanceOperation(), + "tencentcloud_dcdb_isolate_hour_instance_operation": dcdb.ResourceTencentCloudDcdbIsolateHourInstanceOperation(), + "tencentcloud_dcdb_cancel_dcn_job_operation": dcdb.ResourceTencentCloudDcdbCancelDcnJobOperation(), + "tencentcloud_dcdb_flush_binlog_operation": dcdb.ResourceTencentCloudDcdbFlushBinlogOperation(), + "tencentcloud_dcdb_switch_db_instance_ha_operation": dcdb.ResourceTencentCloudDcdbSwitchDbInstanceHaOperation(), "tencentcloud_cat_task_set": cat.ResourceTencentCloudCatTaskSet(), - "tencentcloud_mariadb_dedicatedcluster_db_instance": resourceTencentCloudMariadbDedicatedclusterDbInstance(), - "tencentcloud_mariadb_instance": resourceTencentCloudMariadbInstance(), - "tencentcloud_mariadb_hour_db_instance": resourceTencentCloudMariadbHourDbInstance(), - "tencentcloud_mariadb_account": resourceTencentCloudMariadbAccount(), - "tencentcloud_mariadb_parameters": resourceTencentCloudMariadbParameters(), - "tencentcloud_mariadb_log_file_retention_period": resourceTencentCloudMariadbLogFileRetentionPeriod(), - "tencentcloud_mariadb_security_groups": resourceTencentCloudMariadbSecurityGroups(), - "tencentcloud_mariadb_encrypt_attributes": resourceTencentCloudMariadbEncryptAttributes(), - "tencentcloud_mariadb_account_privileges": resourceTencentCloudMariadbAccountPrivileges(), - "tencentcloud_mariadb_operate_hour_db_instance": resourceTencentCloudMariadbOperateHourDbInstance(), - "tencentcloud_mariadb_backup_time": resourceTencentCloudMariadbBackupTime(), - "tencentcloud_mariadb_cancel_dcn_job": resourceTencentCloudMariadbCancelDcnJob(), - "tencentcloud_mariadb_flush_binlog": resourceTencentCloudMariadbFlushBinlog(), - "tencentcloud_mariadb_switch_ha": resourceTencentCloudMariadbSwitchHA(), - "tencentcloud_mariadb_restart_instance": resourceTencentCloudMariadbRestartInstance(), - "tencentcloud_mariadb_renew_instance": resourceTencentCloudMariadbRenewInstance(), - "tencentcloud_mariadb_instance_config": resourceTencentCloudMariadbInstanceConfig(), + "tencentcloud_mariadb_dedicatedcluster_db_instance": mariadb.ResourceTencentCloudMariadbDedicatedclusterDbInstance(), + "tencentcloud_mariadb_instance": mariadb.ResourceTencentCloudMariadbInstance(), + "tencentcloud_mariadb_hour_db_instance": mariadb.ResourceTencentCloudMariadbHourDbInstance(), + "tencentcloud_mariadb_account": mariadb.ResourceTencentCloudMariadbAccount(), + "tencentcloud_mariadb_parameters": mariadb.ResourceTencentCloudMariadbParameters(), + "tencentcloud_mariadb_log_file_retention_period": mariadb.ResourceTencentCloudMariadbLogFileRetentionPeriod(), + "tencentcloud_mariadb_security_groups": mariadb.ResourceTencentCloudMariadbSecurityGroups(), + "tencentcloud_mariadb_encrypt_attributes": mariadb.ResourceTencentCloudMariadbEncryptAttributes(), + "tencentcloud_mariadb_account_privileges": mariadb.ResourceTencentCloudMariadbAccountPrivileges(), + "tencentcloud_mariadb_operate_hour_db_instance": mariadb.ResourceTencentCloudMariadbOperateHourDbInstance(), + "tencentcloud_mariadb_backup_time": mariadb.ResourceTencentCloudMariadbBackupTime(), + "tencentcloud_mariadb_cancel_dcn_job": mariadb.ResourceTencentCloudMariadbCancelDcnJob(), + "tencentcloud_mariadb_flush_binlog": mariadb.ResourceTencentCloudMariadbFlushBinlog(), + "tencentcloud_mariadb_switch_ha": mariadb.ResourceTencentCloudMariadbSwitchHA(), + "tencentcloud_mariadb_restart_instance": mariadb.ResourceTencentCloudMariadbRestartInstance(), + "tencentcloud_mariadb_renew_instance": mariadb.ResourceTencentCloudMariadbRenewInstance(), + "tencentcloud_mariadb_instance_config": mariadb.ResourceTencentCloudMariadbInstanceConfig(), "tencentcloud_tdcpg_cluster": resourceTencentCloudTdcpgCluster(), "tencentcloud_tdcpg_instance": resourceTencentCloudTdcpgInstance(), "tencentcloud_css_watermark": css.ResourceTencentCloudCssWatermark(), @@ -1549,16 +1578,16 @@ func Provider() *schema.Provider { "tencentcloud_css_stream_monitor": css.ResourceTencentCloudCssStreamMonitor(), "tencentcloud_css_start_stream_monitor": css.ResourceTencentCloudCssStartStreamMonitor(), "tencentcloud_css_pull_stream_task_restart": css.ResourceTencentCloudCssPullStreamTaskRestart(), - "tencentcloud_pts_project": resourceTencentCloudPtsProject(), - "tencentcloud_pts_alert_channel": resourceTencentCloudPtsAlertChannel(), - "tencentcloud_pts_scenario": resourceTencentCloudPtsScenario(), - "tencentcloud_pts_file": resourceTencentCloudPtsFile(), - "tencentcloud_pts_job": resourceTencentCloudPtsJob(), - "tencentcloud_pts_cron_job": resourceTencentCloudPtsCronJob(), - "tencentcloud_pts_tmp_key_generate": resourceTencentCloudPtsTmpKeyGenerate(), - "tencentcloud_pts_cron_job_restart": resourceTencentCloudPtsCronJobRestart(), - "tencentcloud_pts_job_abort": resourceTencentCloudPtsJobAbort(), - "tencentcloud_pts_cron_job_abort": resourceTencentCloudPtsCronJobAbort(), + "tencentcloud_pts_project": pts.ResourceTencentCloudPtsProject(), + "tencentcloud_pts_alert_channel": pts.ResourceTencentCloudPtsAlertChannel(), + "tencentcloud_pts_scenario": pts.ResourceTencentCloudPtsScenario(), + "tencentcloud_pts_file": pts.ResourceTencentCloudPtsFile(), + "tencentcloud_pts_job": pts.ResourceTencentCloudPtsJob(), + "tencentcloud_pts_cron_job": pts.ResourceTencentCloudPtsCronJob(), + "tencentcloud_pts_tmp_key_generate": pts.ResourceTencentCloudPtsTmpKeyGenerate(), + "tencentcloud_pts_cron_job_restart": pts.ResourceTencentCloudPtsCronJobRestart(), + "tencentcloud_pts_job_abort": pts.ResourceTencentCloudPtsJobAbort(), + "tencentcloud_pts_cron_job_abort": pts.ResourceTencentCloudPtsCronJobAbort(), "tencentcloud_tat_command": resourceTencentCloudTatCommand(), "tencentcloud_tat_invoker": resourceTencentCloudTatInvoker(), "tencentcloud_tat_invoker_config": resourceTencentCloudTatInvokerConfig(), @@ -1572,18 +1601,18 @@ func Provider() *schema.Provider { "tencentcloud_organization_policy_sub_account_attachment": resourceTencentCloudOrganizationPolicySubAccountAttachment(), "tencentcloud_organization_org_member_auth_identity_attachment": resourceTencentCloudOrganizationOrgMemberAuthIdentityAttachment(), "tencentcloud_organization_org_member_policy_attachment": resourceTencentCloudOrganizationOrgMemberPolicyAttachment(), - "tencentcloud_dbbrain_sql_filter": resourceTencentCloudDbbrainSqlFilter(), - "tencentcloud_dbbrain_security_audit_log_export_task": resourceTencentCloudDbbrainSecurityAuditLogExportTask(), - "tencentcloud_dbbrain_db_diag_report_task": resourceTencentCloudDbbrainDbDiagReportTask(), - "tencentcloud_dbbrain_modify_diag_db_instance_operation": resourceTencentCloudDbbrainModifyDiagDbInstanceOperation(), - "tencentcloud_dbbrain_tdsql_audit_log": resourceTencentCloudDbbrainTdsqlAuditLog(), - "tencentcloud_rum_project": resourceTencentCloudRumProject(), - "tencentcloud_rum_taw_instance": resourceTencentCloudRumTawInstance(), - "tencentcloud_rum_whitelist": resourceTencentCloudRumWhitelist(), - "tencentcloud_rum_offline_log_config_attachment": resourceTencentCloudRumOfflineLogConfigAttachment(), - "tencentcloud_rum_instance_status_config": resourceTencentCloudRumInstanceStatusConfig(), - "tencentcloud_rum_project_status_config": resourceTencentCloudRumProjectStatusConfig(), - "tencentcloud_rum_release_file": resourceTencentCloudRumReleaseFile(), + "tencentcloud_dbbrain_sql_filter": dbbrain.ResourceTencentCloudDbbrainSqlFilter(), + "tencentcloud_dbbrain_security_audit_log_export_task": dbbrain.ResourceTencentCloudDbbrainSecurityAuditLogExportTask(), + "tencentcloud_dbbrain_db_diag_report_task": dbbrain.ResourceTencentCloudDbbrainDbDiagReportTask(), + "tencentcloud_dbbrain_modify_diag_db_instance_operation": dbbrain.ResourceTencentCloudDbbrainModifyDiagDbInstanceOperation(), + "tencentcloud_dbbrain_tdsql_audit_log": dbbrain.ResourceTencentCloudDbbrainTdsqlAuditLog(), + "tencentcloud_rum_project": rum.ResourceTencentCloudRumProject(), + "tencentcloud_rum_taw_instance": rum.ResourceTencentCloudRumTawInstance(), + "tencentcloud_rum_whitelist": rum.ResourceTencentCloudRumWhitelist(), + "tencentcloud_rum_offline_log_config_attachment": rum.ResourceTencentCloudRumOfflineLogConfigAttachment(), + "tencentcloud_rum_instance_status_config": rum.ResourceTencentCloudRumInstanceStatusConfig(), + "tencentcloud_rum_project_status_config": rum.ResourceTencentCloudRumProjectStatusConfig(), + "tencentcloud_rum_release_file": rum.ResourceTencentCloudRumReleaseFile(), "tencentcloud_tdmq_rocketmq_cluster": resourceTencentCloudTdmqRocketmqCluster(), "tencentcloud_tdmq_rocketmq_namespace": resourceTencentCloudTdmqRocketmqNamespace(), "tencentcloud_tdmq_rocketmq_role": resourceTencentCloudTdmqRocketmqRole(), @@ -1595,30 +1624,30 @@ func Provider() *schema.Provider { "tencentcloud_trocket_rocketmq_topic": resourceTencentCloudTrocketRocketmqTopic(), "tencentcloud_trocket_rocketmq_consumer_group": resourceTencentCloudTrocketRocketmqConsumerGroup(), "tencentcloud_trocket_rocketmq_role": resourceTencentCloudTrocketRocketmqRole(), - "tencentcloud_dts_sync_job": resourceTencentCloudDtsSyncJob(), - "tencentcloud_dts_sync_config": resourceTencentCloudDtsSyncConfig(), - "tencentcloud_dts_sync_check_job_operation": resourceTencentCloudDtsSyncCheckJobOperation(), - "tencentcloud_dts_sync_job_resume_operation": resourceTencentCloudDtsSyncJobResumeOperation(), - "tencentcloud_dts_sync_job_start_operation": resourceTencentCloudDtsSyncJobStartOperation(), - "tencentcloud_dts_sync_job_stop_operation": resourceTencentCloudDtsSyncJobStopOperation(), - "tencentcloud_dts_sync_job_resize_operation": resourceTencentCloudDtsSyncJobResizeOperation(), - "tencentcloud_dts_sync_job_recover_operation": resourceTencentCloudDtsSyncJobRecoverOperation(), - "tencentcloud_dts_sync_job_isolate_operation": resourceTencentCloudDtsSyncJobIsolateOperation(), - "tencentcloud_dts_sync_job_continue_operation": resourceTencentCloudDtsSyncJobContinueOperation(), - "tencentcloud_dts_sync_job_pause_operation": resourceTencentCloudDtsSyncJobPauseOperation(), - "tencentcloud_dts_migrate_service": resourceTencentCloudDtsMigrateService(), - "tencentcloud_dts_migrate_job": resourceTencentCloudDtsMigrateJob(), - "tencentcloud_dts_migrate_job_config": resourceTencentCloudDtsMigrateJobConfig(), - "tencentcloud_dts_migrate_job_start_operation": resourceTencentCloudDtsMigrateJobStartOperation(), - "tencentcloud_dts_migrate_job_resume_operation": resourceTencentCloudDtsMigrateJobResumeOperation(), - "tencentcloud_dts_compare_task_stop_operation": resourceTencentCloudDtsCompareTaskStopOperation(), - "tencentcloud_dts_compare_task": resourceTencentCloudDtsCompareTask(), + "tencentcloud_dts_sync_job": dts.ResourceTencentCloudDtsSyncJob(), + "tencentcloud_dts_sync_config": dts.ResourceTencentCloudDtsSyncConfig(), + "tencentcloud_dts_sync_check_job_operation": dts.ResourceTencentCloudDtsSyncCheckJobOperation(), + "tencentcloud_dts_sync_job_resume_operation": dts.ResourceTencentCloudDtsSyncJobResumeOperation(), + "tencentcloud_dts_sync_job_start_operation": dts.ResourceTencentCloudDtsSyncJobStartOperation(), + "tencentcloud_dts_sync_job_stop_operation": dts.ResourceTencentCloudDtsSyncJobStopOperation(), + "tencentcloud_dts_sync_job_resize_operation": dts.ResourceTencentCloudDtsSyncJobResizeOperation(), + "tencentcloud_dts_sync_job_recover_operation": dts.ResourceTencentCloudDtsSyncJobRecoverOperation(), + "tencentcloud_dts_sync_job_isolate_operation": dts.ResourceTencentCloudDtsSyncJobIsolateOperation(), + "tencentcloud_dts_sync_job_continue_operation": dts.ResourceTencentCloudDtsSyncJobContinueOperation(), + "tencentcloud_dts_sync_job_pause_operation": dts.ResourceTencentCloudDtsSyncJobPauseOperation(), + "tencentcloud_dts_migrate_service": dts.ResourceTencentCloudDtsMigrateService(), + "tencentcloud_dts_migrate_job": dts.ResourceTencentCloudDtsMigrateJob(), + "tencentcloud_dts_migrate_job_config": dts.ResourceTencentCloudDtsMigrateJobConfig(), + "tencentcloud_dts_migrate_job_start_operation": dts.ResourceTencentCloudDtsMigrateJobStartOperation(), + "tencentcloud_dts_migrate_job_resume_operation": dts.ResourceTencentCloudDtsMigrateJobResumeOperation(), + "tencentcloud_dts_compare_task_stop_operation": dts.ResourceTencentCloudDtsCompareTaskStopOperation(), + "tencentcloud_dts_compare_task": dts.ResourceTencentCloudDtsCompareTask(), "tencentcloud_cvm_hpc_cluster": cvm.ResourceTencentCloudCvmHpcCluster(), - "tencentcloud_vpc_flow_log": resourceTencentCloudVpcFlowLog(), - "tencentcloud_vpc_end_point_service": resourceTencentCloudVpcEndPointService(), - "tencentcloud_vpc_end_point": resourceTencentCloudVpcEndPoint(), - "tencentcloud_vpc_end_point_service_white_list": resourceTencentCloudVpcEndPointServiceWhiteList(), - "tencentcloud_vpc_enable_end_point_connect": resourceTencentCloudVpcEnableEndPointConnect(), + "tencentcloud_vpc_flow_log": fl.ResourceTencentCloudVpcFlowLog(), + "tencentcloud_vpc_end_point_service": pls.ResourceTencentCloudVpcEndPointService(), + "tencentcloud_vpc_end_point": pls.ResourceTencentCloudVpcEndPoint(), + "tencentcloud_vpc_end_point_service_white_list": pls.ResourceTencentCloudVpcEndPointServiceWhiteList(), + "tencentcloud_vpc_enable_end_point_connect": pls.ResourceTencentCloudVpcEnableEndPointConnect(), "tencentcloud_ci_bucket_attachment": ci.ResourceTencentCloudCiBucketAttachment(), "tencentcloud_tcmq_queue": resourceTencentCloudTcmqQueue(), "tencentcloud_tcmq_topic": resourceTencentCloudTcmqTopic(), @@ -1643,17 +1672,17 @@ func Provider() *schema.Provider { "tencentcloud_ci_original_image_protection": ci.ResourceTencentCloudCIOriginalImageProtection(), "tencentcloud_cynosdb_audit_log_file": cynosdb.ResourceTencentCloudCynosdbAuditLogFile(), "tencentcloud_cynosdb_security_group": cynosdb.ResourceTencentCloudCynosdbSecurityGroup(), - "tencentcloud_dayu_ddos_ip_attachment_v2": resourceTencentCloudDayuDDosIpAttachmentV2(), - "tencentcloud_antiddos_ddos_black_white_ip": resourceTencentCloudAntiddosDdosBlackWhiteIp(), - "tencentcloud_antiddos_ddos_geo_ip_block_config": resourceTencentCloudAntiddosDdosGeoIpBlockConfig(), - "tencentcloud_antiddos_ddos_speed_limit_config": resourceTencentCloudAntiddosDdosSpeedLimitConfig(), - "tencentcloud_antiddos_default_alarm_threshold": resourceTencentCloudAntiddosDefaultAlarmThreshold(), - "tencentcloud_antiddos_scheduling_domain_user_name": resourceTencentCloudAntiddosSchedulingDomainUserName(), - "tencentcloud_antiddos_ip_alarm_threshold_config": resourceTencentCloudAntiddosIpAlarmThresholdConfig(), - "tencentcloud_antiddos_packet_filter_config": resourceTencentCloudAntiddosPacketFilterConfig(), - "tencentcloud_antiddos_port_acl_config": resourceTencentCloudAntiddosPortAclConfig(), - "tencentcloud_antiddos_cc_black_white_ip": resourceTencentCloudAntiddosCcBlackWhiteIp(), - "tencentcloud_antiddos_cc_precision_policy": resourceTencentCloudAntiddosCcPrecisionPolicy(), + "tencentcloud_dayu_ddos_ip_attachment_v2": dayuv2.ResourceTencentCloudDayuDDosIpAttachmentV2(), + "tencentcloud_antiddos_ddos_black_white_ip": dayuv2.ResourceTencentCloudAntiddosDdosBlackWhiteIp(), + "tencentcloud_antiddos_ddos_geo_ip_block_config": dayuv2.ResourceTencentCloudAntiddosDdosGeoIpBlockConfig(), + "tencentcloud_antiddos_ddos_speed_limit_config": dayuv2.ResourceTencentCloudAntiddosDdosSpeedLimitConfig(), + "tencentcloud_antiddos_default_alarm_threshold": dayuv2.ResourceTencentCloudAntiddosDefaultAlarmThreshold(), + "tencentcloud_antiddos_scheduling_domain_user_name": dayuv2.ResourceTencentCloudAntiddosSchedulingDomainUserName(), + "tencentcloud_antiddos_ip_alarm_threshold_config": dayuv2.ResourceTencentCloudAntiddosIpAlarmThresholdConfig(), + "tencentcloud_antiddos_packet_filter_config": dayuv2.ResourceTencentCloudAntiddosPacketFilterConfig(), + "tencentcloud_antiddos_port_acl_config": dayuv2.ResourceTencentCloudAntiddosPortAclConfig(), + "tencentcloud_antiddos_cc_black_white_ip": dayuv2.ResourceTencentCloudAntiddosCcBlackWhiteIp(), + "tencentcloud_antiddos_cc_precision_policy": dayuv2.ResourceTencentCloudAntiddosCcPrecisionPolicy(), "tencentcloud_tsf_microservice": resourceTencentCloudTsfMicroservice(), "tencentcloud_tsf_application_config": resourceTencentCloudTsfApplicationConfig(), "tencentcloud_cvm_launch_template": cvm.ResourceTencentCloudCvmLaunchTemplate(), @@ -1684,33 +1713,33 @@ func Provider() *schema.Provider { "tencentcloud_tsf_operate_container_group": resourceTencentCloudTsfOperateContainerGroup(), "tencentcloud_tsf_operate_group": resourceTencentCloudTsfOperateGroup(), "tencentcloud_tsf_unit_namespace": resourceTencentCloudTsfUnitNamespace(), - "tencentcloud_mps_workflow": resourceTencentCloudMpsWorkflow(), - "tencentcloud_mps_enable_workflow_config": resourceTencentCloudMpsEnableWorkflowConfig(), - "tencentcloud_mps_flow": resourceTencentCloudMpsFlow(), - "tencentcloud_mps_input": resourceTencentCloudMpsInput(), - "tencentcloud_mps_output": resourceTencentCloudMpsOutput(), - "tencentcloud_mps_content_review_template": resourceTencentCloudMpsContentReviewTemplate(), - "tencentcloud_mps_start_flow_operation": resourceTencentCloudMpsStartFlowOperation(), - "tencentcloud_mps_event": resourceTencentCloudMpsEvent(), - "tencentcloud_mps_execute_function_operation": resourceTencentCloudMpsExecuteFunctionOperation(), - "tencentcloud_mps_manage_task_operation": resourceTencentCloudMpsManageTaskOperation(), - "tencentcloud_mps_transcode_template": resourceTencentCloudMpsTranscodeTemplate(), - "tencentcloud_mps_watermark_template": resourceTencentCloudMpsWatermarkTemplate(), - "tencentcloud_mps_image_sprite_template": resourceTencentCloudMpsImageSpriteTemplate(), - "tencentcloud_mps_snapshot_by_timeoffset_template": resourceTencentCloudMpsSnapshotByTimeoffsetTemplate(), - "tencentcloud_mps_sample_snapshot_template": resourceTencentCloudMpsSampleSnapshotTemplate(), - "tencentcloud_mps_animated_graphics_template": resourceTencentCloudMpsAnimatedGraphicsTemplate(), - "tencentcloud_mps_ai_recognition_template": resourceTencentCloudMpsAiRecognitionTemplate(), - "tencentcloud_mps_ai_analysis_template": resourceTencentCloudMpsAiAnalysisTemplate(), - "tencentcloud_mps_adaptive_dynamic_streaming_template": resourceTencentCloudMpsAdaptiveDynamicStreamingTemplate(), - "tencentcloud_mps_person_sample": resourceTencentCloudMpsPersonSample(), - "tencentcloud_mps_withdraws_watermark_operation": resourceTencentCloudMpsWithdrawsWatermarkOperation(), - "tencentcloud_mps_process_live_stream_operation": resourceTencentCloudMpsProcessLiveStreamOperation(), - "tencentcloud_mps_edit_media_operation": resourceTencentCloudMpsEditMediaOperation(), - "tencentcloud_mps_word_sample": resourceTencentCloudMpsWordSample(), - "tencentcloud_mps_schedule": resourceTencentCloudMpsSchedule(), - "tencentcloud_mps_enable_schedule_config": resourceTencentCloudMpsEnableScheduleConfig(), - "tencentcloud_mps_process_media_operation": resourceTencentCloudMpsProcessMediaOperation(), + "tencentcloud_mps_workflow": mps.ResourceTencentCloudMpsWorkflow(), + "tencentcloud_mps_enable_workflow_config": mps.ResourceTencentCloudMpsEnableWorkflowConfig(), + "tencentcloud_mps_flow": mps.ResourceTencentCloudMpsFlow(), + "tencentcloud_mps_input": mps.ResourceTencentCloudMpsInput(), + "tencentcloud_mps_output": mps.ResourceTencentCloudMpsOutput(), + "tencentcloud_mps_content_review_template": mps.ResourceTencentCloudMpsContentReviewTemplate(), + "tencentcloud_mps_start_flow_operation": mps.ResourceTencentCloudMpsStartFlowOperation(), + "tencentcloud_mps_event": mps.ResourceTencentCloudMpsEvent(), + "tencentcloud_mps_execute_function_operation": mps.ResourceTencentCloudMpsExecuteFunctionOperation(), + "tencentcloud_mps_manage_task_operation": mps.ResourceTencentCloudMpsManageTaskOperation(), + "tencentcloud_mps_transcode_template": mps.ResourceTencentCloudMpsTranscodeTemplate(), + "tencentcloud_mps_watermark_template": mps.ResourceTencentCloudMpsWatermarkTemplate(), + "tencentcloud_mps_image_sprite_template": mps.ResourceTencentCloudMpsImageSpriteTemplate(), + "tencentcloud_mps_snapshot_by_timeoffset_template": mps.ResourceTencentCloudMpsSnapshotByTimeoffsetTemplate(), + "tencentcloud_mps_sample_snapshot_template": mps.ResourceTencentCloudMpsSampleSnapshotTemplate(), + "tencentcloud_mps_animated_graphics_template": mps.ResourceTencentCloudMpsAnimatedGraphicsTemplate(), + "tencentcloud_mps_ai_recognition_template": mps.ResourceTencentCloudMpsAiRecognitionTemplate(), + "tencentcloud_mps_ai_analysis_template": mps.ResourceTencentCloudMpsAiAnalysisTemplate(), + "tencentcloud_mps_adaptive_dynamic_streaming_template": mps.ResourceTencentCloudMpsAdaptiveDynamicStreamingTemplate(), + "tencentcloud_mps_person_sample": mps.ResourceTencentCloudMpsPersonSample(), + "tencentcloud_mps_withdraws_watermark_operation": mps.ResourceTencentCloudMpsWithdrawsWatermarkOperation(), + "tencentcloud_mps_process_live_stream_operation": mps.ResourceTencentCloudMpsProcessLiveStreamOperation(), + "tencentcloud_mps_edit_media_operation": mps.ResourceTencentCloudMpsEditMediaOperation(), + "tencentcloud_mps_word_sample": mps.ResourceTencentCloudMpsWordSample(), + "tencentcloud_mps_schedule": mps.ResourceTencentCloudMpsSchedule(), + "tencentcloud_mps_enable_schedule_config": mps.ResourceTencentCloudMpsEnableScheduleConfig(), + "tencentcloud_mps_process_media_operation": mps.ResourceTencentCloudMpsProcessMediaOperation(), "tencentcloud_cbs_disk_backup": cbs.ResourceTencentCloudCbsDiskBackup(), "tencentcloud_cbs_snapshot_share_permission": cbs.ResourceTencentCloudCbsSnapshotSharePermission(), "tencentcloud_cbs_disk_backup_rollback_operation": cbs.ResourceTencentCloudCbsDiskBackupRollbackOperation(), @@ -1720,12 +1749,12 @@ func Provider() *schema.Provider { "tencentcloud_chdfs_life_cycle_rule": chdfs.ResourceTencentCloudChdfsLifeCycleRule(), "tencentcloud_chdfs_mount_point": chdfs.ResourceTencentCloudChdfsMountPoint(), "tencentcloud_chdfs_mount_point_attachment": chdfs.ResourceTencentCloudChdfsMountPointAttachment(), - "tencentcloud_mdl_stream_live_input": resourceTencentCloudMdlStreamLiveInput(), - "tencentcloud_lighthouse_blueprint": resourceTencentCloudLighthouseBlueprint(), + "tencentcloud_mdl_stream_live_input": mdl.ResourceTencentCloudMdlStreamLiveInput(), + "tencentcloud_lighthouse_blueprint": lighthouse.ResourceTencentCloudLighthouseBlueprint(), "tencentcloud_cvm_launch_template_version": cvm.ResourceTencentCloudCvmLaunchTemplateVersion(), "tencentcloud_apm_instance": apm.ResourceTencentCloudApmInstance(), "tencentcloud_cvm_launch_template_default_version": cvm.ResourceTencentCloudCvmLaunchTemplateDefaultVersion(), - "tencentcloud_lighthouse_firewall_rule": resourceTencentCloudLighthouseFirewallRule(), + "tencentcloud_lighthouse_firewall_rule": lighthouse.ResourceTencentCloudLighthouseFirewallRule(), "tencentcloud_cvm_security_group_attachment": cvm.ResourceTencentCloudCvmSecurityGroupAttachment(), "tencentcloud_cvm_reboot_instance": cvm.ResourceTencentCloudCvmRebootInstance(), "tencentcloud_cvm_chc_config": cvm.ResourceTencentCloudCvmChcConfig(), @@ -1737,19 +1766,19 @@ func Provider() *schema.Provider { "tencentcloud_cvm_renew_host": resourceTencentCloudCvmRenewHost(), "tencentcloud_cvm_program_fpga_image": resourceTencentCloudCvmProgramFpgaImage(), "tencentcloud_cvm_modify_instance_disk_type": resourceTencentCloudCvmModifyInstanceDiskType(), - "tencentcloud_lighthouse_disk_backup": resourceTencentCloudLighthouseDiskBackup(), - "tencentcloud_lighthouse_apply_disk_backup": resourceTencentCloudLighthouseApplyDiskBackup(), - "tencentcloud_lighthouse_disk_attachment": resourceTencentCloudLighthouseDiskAttachment(), - "tencentcloud_lighthouse_key_pair": resourceTencentCloudLighthouseKeyPair(), - "tencentcloud_lighthouse_snapshot": resourceTencentCloudLighthouseSnapshot(), - "tencentcloud_lighthouse_apply_instance_snapshot": resourceTencentCloudLighthouseApplyInstanceSnapshot(), - "tencentcloud_lighthouse_start_instance": resourceTencentCloudLighthouseStartInstance(), - "tencentcloud_lighthouse_stop_instance": resourceTencentCloudLighthouseStopInstance(), - "tencentcloud_lighthouse_reboot_instance": resourceTencentCloudLighthouseRebootInstance(), - "tencentcloud_lighthouse_key_pair_attachment": resourceTencentCloudLighthouseKeyPairAttachment(), - "tencentcloud_lighthouse_disk": resourceTencentCloudLighthouseDisk(), - "tencentcloud_lighthouse_renew_disk": resourceTencentCloudLighthouseRenewDisk(), - "tencentcloud_lighthouse_renew_instance": resourceTencentCloudLighthouseRenewInstance(), + "tencentcloud_lighthouse_disk_backup": lighthouse.ResourceTencentCloudLighthouseDiskBackup(), + "tencentcloud_lighthouse_apply_disk_backup": lighthouse.ResourceTencentCloudLighthouseApplyDiskBackup(), + "tencentcloud_lighthouse_disk_attachment": lighthouse.ResourceTencentCloudLighthouseDiskAttachment(), + "tencentcloud_lighthouse_key_pair": lighthouse.ResourceTencentCloudLighthouseKeyPair(), + "tencentcloud_lighthouse_snapshot": lighthouse.ResourceTencentCloudLighthouseSnapshot(), + "tencentcloud_lighthouse_apply_instance_snapshot": lighthouse.ResourceTencentCloudLighthouseApplyInstanceSnapshot(), + "tencentcloud_lighthouse_start_instance": lighthouse.ResourceTencentCloudLighthouseStartInstance(), + "tencentcloud_lighthouse_stop_instance": lighthouse.ResourceTencentCloudLighthouseStopInstance(), + "tencentcloud_lighthouse_reboot_instance": lighthouse.ResourceTencentCloudLighthouseRebootInstance(), + "tencentcloud_lighthouse_key_pair_attachment": lighthouse.ResourceTencentCloudLighthouseKeyPairAttachment(), + "tencentcloud_lighthouse_disk": lighthouse.ResourceTencentCloudLighthouseDisk(), + "tencentcloud_lighthouse_renew_disk": lighthouse.ResourceTencentCloudLighthouseRenewDisk(), + "tencentcloud_lighthouse_renew_instance": lighthouse.ResourceTencentCloudLighthouseRenewInstance(), "tencentcloud_clickhouse_backup": cdwch.ResourceTencentCloudClickhouseBackup(), "tencentcloud_clickhouse_backup_strategy": cdwch.ResourceTencentCloudClickhouseBackupStrategy(), "tencentcloud_clickhouse_recover_backup_job": cdwch.ResourceTencentCloudClickhouseRecoverBackupJob(), @@ -1774,33 +1803,33 @@ func Provider() *schema.Provider { "tencentcloud_clickhouse_instance": cdwch.ResourceTencentCloudClickhouseInstance(), "tencentcloud_cls_kafka_recharge": cls.ResourceTencentCloudClsKafkaRecharge(), "tencentcloud_cls_scheduled_sql": cls.ResourceTencentCloudClsScheduledSql(), - "tencentcloud_eb_event_transform": resourceTencentCloudEbEventTransform(), - "tencentcloud_eb_event_bus": resourceTencentCloudEbEventBus(), - "tencentcloud_eb_event_rule": resourceTencentCloudEbEventRule(), - "tencentcloud_eb_event_target": resourceTencentCloudEbEventTarget(), - "tencentcloud_eb_put_events": resourceTencentCloudEbPutEvents(), - "tencentcloud_eb_event_connector": resourceTencentCloudEbEventConnector(), - "tencentcloud_dlc_user": resourceTencentCloudDlcUser(), - "tencentcloud_dlc_work_group": resourceTencentCloudDlcWorkGroup(), - "tencentcloud_dlc_data_engine": resourceTencentCloudDlcDataEngine(), - "tencentcloud_dlc_suspend_resume_data_engine": resourceTencentCloudDlcSuspendResumeDataEngine(), - "tencentcloud_dlc_rollback_data_engine_image_operation": resourceTencentCloudDlcRollbackDataEngineImageOperation(), - "tencentcloud_dlc_add_users_to_work_group_attachment": resourceTencentCloudDlcAddUsersToWorkGroupAttachment(), - "tencentcloud_dlc_store_location_config": resourceTencentCloudDlcStoreLocationConfig(), - "tencentcloud_dlc_modify_data_engine_description_operation": resourceTencentCloudDlcModifyDataEngineDescriptionOperation(), - "tencentcloud_dlc_modify_user_typ_operation": resourceTencentCloudDlcModifyUserTypOperation(), - "tencentcloud_dlc_renew_data_engine_operation": resourceTencentCloudDlcRenewDataEngineOperation(), - "tencentcloud_dlc_restart_data_engine_operation": resourceTencentCloudDlcRestartDataEngineOperation(), + "tencentcloud_eb_event_transform": eb.ResourceTencentCloudEbEventTransform(), + "tencentcloud_eb_event_bus": eb.ResourceTencentCloudEbEventBus(), + "tencentcloud_eb_event_rule": eb.ResourceTencentCloudEbEventRule(), + "tencentcloud_eb_event_target": eb.ResourceTencentCloudEbEventTarget(), + "tencentcloud_eb_put_events": eb.ResourceTencentCloudEbPutEvents(), + "tencentcloud_eb_event_connector": eb.ResourceTencentCloudEbEventConnector(), + "tencentcloud_dlc_user": dlc.ResourceTencentCloudDlcUser(), + "tencentcloud_dlc_work_group": dlc.ResourceTencentCloudDlcWorkGroup(), + "tencentcloud_dlc_data_engine": dlc.ResourceTencentCloudDlcDataEngine(), + "tencentcloud_dlc_suspend_resume_data_engine": dlc.ResourceTencentCloudDlcSuspendResumeDataEngine(), + "tencentcloud_dlc_rollback_data_engine_image_operation": dlc.ResourceTencentCloudDlcRollbackDataEngineImageOperation(), + "tencentcloud_dlc_add_users_to_work_group_attachment": dlc.ResourceTencentCloudDlcAddUsersToWorkGroupAttachment(), + "tencentcloud_dlc_store_location_config": dlc.ResourceTencentCloudDlcStoreLocationConfig(), + "tencentcloud_dlc_modify_data_engine_description_operation": dlc.ResourceTencentCloudDlcModifyDataEngineDescriptionOperation(), + "tencentcloud_dlc_modify_user_typ_operation": dlc.ResourceTencentCloudDlcModifyUserTypOperation(), + "tencentcloud_dlc_renew_data_engine_operation": dlc.ResourceTencentCloudDlcRenewDataEngineOperation(), + "tencentcloud_dlc_restart_data_engine_operation": dlc.ResourceTencentCloudDlcRestartDataEngineOperation(), "tencentcloud_dlc_attach_user_policy_operation": resourceTencentCloudDlcAttachUserPolicyOperation(), "tencentcloud_dlc_detach_user_policy_operation": resourceTencentCloudDlcDetachUserPolicyOperation(), "tencentcloud_dlc_attach_work_group_policy_operation": resourceTencentCloudDlcAttachWorkGroupPolicyOperation(), "tencentcloud_dlc_detach_work_group_policy_operation": resourceTencentCloudDlcDetachWorkGroupPolicyOperation(), - "tencentcloud_dlc_switch_data_engine_image_operation": resourceTencentCloudDlcSwitchDataEngineImageOperation(), - "tencentcloud_dlc_update_data_engine_config_operation": resourceTencentCloudDlcUpdateDataEngineConfigOperation(), - "tencentcloud_dlc_upgrade_data_engine_image_operation": resourceTencentCloudDlcUpgradeDataEngineImageOperation(), - "tencentcloud_dlc_bind_work_groups_to_user_attachment": resourceTencentCloudDlcBindWorkGroupsToUserAttachment(), - "tencentcloud_dlc_update_row_filter_operation": resourceTencentCloudDlcUpdateRowFilterOperation(), - "tencentcloud_dlc_user_data_engine_config": resourceTencentCloudDlcUserDataEngineConfig(), + "tencentcloud_dlc_switch_data_engine_image_operation": dlc.ResourceTencentCloudDlcSwitchDataEngineImageOperation(), + "tencentcloud_dlc_update_data_engine_config_operation": dlc.ResourceTencentCloudDlcUpdateDataEngineConfigOperation(), + "tencentcloud_dlc_upgrade_data_engine_image_operation": dlc.ResourceTencentCloudDlcUpgradeDataEngineImageOperation(), + "tencentcloud_dlc_bind_work_groups_to_user_attachment": dlc.ResourceTencentCloudDlcBindWorkGroupsToUserAttachment(), + "tencentcloud_dlc_update_row_filter_operation": dlc.ResourceTencentCloudDlcUpdateRowFilterOperation(), + "tencentcloud_dlc_user_data_engine_config": dlc.ResourceTencentCloudDlcUserDataEngineConfig(), "tencentcloud_waf_custom_rule": resourceTencentCloudWafCustomRule(), "tencentcloud_waf_custom_white_rule": resourceTencentCloudWafCustomWhiteRule(), "tencentcloud_waf_clb_domain": resourceTencentCloudWafClbDomain(), diff --git a/tencentcloud/services/css/resource_tc_css_pull_stream_task_test.go b/tencentcloud/services/css/resource_tc_css_pull_stream_task_test.go index dfbf6daa79..5f49c9fe2a 100644 --- a/tencentcloud/services/css/resource_tc_css_pull_stream_task_test.go +++ b/tencentcloud/services/css/resource_tc_css_pull_stream_task_test.go @@ -67,7 +67,7 @@ func TestAccTencentCloudCssPullStreamTaskResource_basic(t *testing.T) { startTimeNew := baseTime.Add(30 * time.Minute).Format(time.RFC3339) endTimeNew := baseTime.Add(2 * time.Hour).Format(time.RFC3339) liveUrl := "rtmp://5000.liveplay.myqcloud.com/live/stream1" - // vodUrl := "https://main.qcloudimg.com/video/tcacctest.TVP_HOME.mp4" + // vodUrl := "https://main.qcloudimg.com/video/TVP_HOME.mp4" resource.Test(t, resource.TestCase{ PreCheck: func() { tcacctest.AccPreCheck(t) }, diff --git a/tencentcloud/data_source_tc_dayu_cc_http_policies.go b/tencentcloud/services/dayu/data_source_tc_dayu_cc_http_policies.go similarity index 87% rename from tencentcloud/data_source_tc_dayu_cc_http_policies.go rename to tencentcloud/services/dayu/data_source_tc_dayu_cc_http_policies.go index 009da32a61..22f86a7a77 100644 --- a/tencentcloud/data_source_tc_dayu_cc_http_policies.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_cc_http_policies.go @@ -1,23 +1,26 @@ -package tencentcloud +package dayu import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuCCHttpPolicies() *schema.Resource { +func DataSourceTencentCloudDayuCCHttpPolicies() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuCCHttpPoliciesRead, Schema: map[string]*schema.Schema{ "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), Description: "Type of the resource that the CC http policy works for, valid values are `bgpip`, `bgp`, `bgp-multip` and `net`.", }, "resource_id": { @@ -33,7 +36,7 @@ func dataSourceTencentCloudDayuCCHttpPolicies() *schema.Resource { "name": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(1, 20), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 20), Description: "Name of the CC http policy to be queried.", }, "result_output_file": { @@ -130,13 +133,13 @@ func dataSourceTencentCloudDayuCCHttpPolicies() *schema.Resource { } func dataSourceTencentCloudDayuCCHttpPoliciesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_cc_http_policies.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_cc_http_policies.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } resourceType := d.Get("resource_type").(string) @@ -145,10 +148,10 @@ func dataSourceTencentCloudDayuCCHttpPoliciesRead(d *schema.ResourceData, meta i name := d.Get("name").(string) ccPolicies := make([]*dayu.CCPolicy, 0) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, _, err := service.DescribeCCSelfdefinePolicies(ctx, resourceType, resourceId, name, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } ccPolicies = result return nil @@ -187,7 +190,7 @@ func dataSourceTencentCloudDayuCCHttpPoliciesRead(d *schema.ResourceData, meta i } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_dayu_cc_http_policies_test.go b/tencentcloud/services/dayu/data_source_tc_dayu_cc_http_policies_test.go similarity index 88% rename from tencentcloud/data_source_tc_dayu_cc_http_policies_test.go rename to tencentcloud/services/dayu/data_source_tc_dayu_cc_http_policies_test.go index 1891dd0635..6f66eb7f16 100644 --- a/tencentcloud/data_source_tc_dayu_cc_http_policies_test.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_cc_http_policies_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dayu_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,12 +14,12 @@ var testDataDayuCCHttpPoliciesName = "data.tencentcloud_dayu_cc_http_policies.id func TestAccTencentCloudDataDayuCCHttpPolicies(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuCCHttpPolicyDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccTencentCloudDataDayuCCHttpPoliciesBaic, defaultDayuBgpIp), + Config: fmt.Sprintf(testAccTencentCloudDataDayuCCHttpPoliciesBaic, tcacctest.DefaultDayuBgpIp), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDayuCCHttpPolicyExists("tencentcloud_dayu_cc_http_policy.test_policy"), resource.TestCheckResourceAttr(testDataDayuCCHttpPoliciesName, "list.#", "1"), diff --git a/tencentcloud/data_source_tc_dayu_cc_https_policies.go b/tencentcloud/services/dayu/data_source_tc_dayu_cc_https_policies.go similarity index 87% rename from tencentcloud/data_source_tc_dayu_cc_https_policies.go rename to tencentcloud/services/dayu/data_source_tc_dayu_cc_https_policies.go index bc9daa1789..a36fb1993b 100644 --- a/tencentcloud/data_source_tc_dayu_cc_https_policies.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_cc_https_policies.go @@ -1,23 +1,26 @@ -package tencentcloud +package dayu import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuCCHttpsPolicies() *schema.Resource { +func DataSourceTencentCloudDayuCCHttpsPolicies() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuCCHttpsPoliciesRead, Schema: map[string]*schema.Schema{ "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), Description: "Type of the resource that the CC https policy works for, valid value is `bgpip`.", }, "resource_id": { @@ -33,7 +36,7 @@ func dataSourceTencentCloudDayuCCHttpsPolicies() *schema.Resource { "name": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(1, 20), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 20), Description: "Name of the CC https policy to be queried.", }, "result_output_file": { @@ -130,13 +133,13 @@ func dataSourceTencentCloudDayuCCHttpsPolicies() *schema.Resource { } func dataSourceTencentCloudDayuCCHttpsPoliciesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_cc_https_policies.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_cc_https_policies.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } resourceType := d.Get("resource_type").(string) @@ -145,10 +148,10 @@ func dataSourceTencentCloudDayuCCHttpsPoliciesRead(d *schema.ResourceData, meta name := d.Get("name").(string) ccPolicies := make([]*dayu.CCPolicy, 0) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, _, err := service.DescribeCCSelfdefinePolicies(ctx, resourceType, resourceId, name, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } ccPolicies = result return nil @@ -183,7 +186,7 @@ func dataSourceTencentCloudDayuCCHttpsPoliciesRead(d *schema.ResourceData, meta } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_dayu_cc_https_policies_test.go b/tencentcloud/services/dayu/data_source_tc_dayu_cc_https_policies_test.go similarity index 89% rename from tencentcloud/data_source_tc_dayu_cc_https_policies_test.go rename to tencentcloud/services/dayu/data_source_tc_dayu_cc_https_policies_test.go index 64d2725cb0..bf2c8299de 100644 --- a/tencentcloud/data_source_tc_dayu_cc_https_policies_test.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_cc_https_policies_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dayu_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,12 +14,12 @@ var testDataDayuCCHttpsPoliciesName = "data.tencentcloud_dayu_cc_https_policies. func TestAccTencentCloudDataDayuCCHttpsPolicies(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuCCHttpsPolicyDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccTencentCloudDataDayuCCHttpsPoliciesBasic, defaultDayuBgpIp, defaultSshCertificate), + Config: fmt.Sprintf(testAccTencentCloudDataDayuCCHttpsPoliciesBasic, tcacctest.DefaultDayuBgpIp, tcacctest.DefaultSshCertificate), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDayuCCHttpsPolicyExists("tencentcloud_dayu_cc_https_policy.test_policy"), resource.TestCheckResourceAttr(testDataDayuCCHttpsPoliciesName, "list.#", "1"), diff --git a/tencentcloud/data_source_tc_dayu_ddos_policies.go b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policies.go similarity index 94% rename from tencentcloud/data_source_tc_dayu_ddos_policies.go rename to tencentcloud/services/dayu/data_source_tc_dayu_ddos_policies.go index ed88057952..b2ddd28340 100644 --- a/tencentcloud/data_source_tc_dayu_ddos_policies.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policies.go @@ -1,23 +1,26 @@ -package tencentcloud +package dayu import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuDdosPolicies() *schema.Resource { +func DataSourceTencentCloudDayuDdosPolicies() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuDdosPoliciesRead, Schema: map[string]*schema.Schema{ "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), Description: "Type of the resource that the DDoS policy works for, valid values are `bgpip`, `bgp`, `bgp-multip` and `net`.", }, "policy_id": { @@ -183,7 +186,7 @@ func dataSourceTencentCloudDayuDdosPolicies() *schema.Resource { Type: schema.TypeSet, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validateIp, + ValidateFunc: tccommon.ValidateIp, }, Optional: true, Description: "Black ip list.", @@ -192,7 +195,7 @@ func dataSourceTencentCloudDayuDdosPolicies() *schema.Resource { Type: schema.TypeSet, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validateIp, + ValidateFunc: tccommon.ValidateIp, }, Optional: true, Description: "White ip list.", @@ -368,23 +371,23 @@ func dataSourceTencentCloudDayuDdosPolicies() *schema.Resource { } func dataSourceTencentCloudDayuDdosPoliciesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_ddos_policies.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_ddos_policies.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } resourceType := d.Get("resource_type").(string) policyId := d.Get("policy_id").(string) policies := make([]*dayu.DDosPolicy, 0) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, err := service.DescribeDdosPolicies(ctx, resourceType, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } policies = result return nil @@ -419,7 +422,7 @@ func dataSourceTencentCloudDayuDdosPoliciesRead(d *schema.ResourceData, meta int } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_dayu_ddos_policies_test.go b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policies_test.go similarity index 93% rename from tencentcloud/data_source_tc_dayu_ddos_policies_test.go rename to tencentcloud/services/dayu/data_source_tc_dayu_ddos_policies_test.go index fbd134c2e2..41837c60dd 100644 --- a/tencentcloud/data_source_tc_dayu_ddos_policies_test.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policies_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dayu_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ var testDataDayuDdosPoliciesName = "data.tencentcloud_dayu_ddos_policies.id_test func TestAccTencentCloudDataDayuDdosPolicies(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuDdosPolicyDestroy, Steps: []resource.TestStep{ { diff --git a/tencentcloud/data_source_tc_dayu_ddos_policy_attachments.go b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_attachments.go similarity index 78% rename from tencentcloud/data_source_tc_dayu_ddos_policy_attachments.go rename to tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_attachments.go index dc462bd0a2..827be15d41 100644 --- a/tencentcloud/data_source_tc_dayu_ddos_policy_attachments.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_attachments.go @@ -1,15 +1,18 @@ -package tencentcloud +package dayu import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuDdosPolicyAttachments() *schema.Resource { +func DataSourceTencentCloudDayuDdosPolicyAttachments() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuDdosPolicyAttachmentsRead, @@ -22,7 +25,7 @@ func dataSourceTencentCloudDayuDdosPolicyAttachments() *schema.Resource { "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), Description: "Type of the resource that the DDoS policy works for, valid values are `bgpip`, `bgp`, `bgp-multip` and `net`.", }, "policy_id": { @@ -64,24 +67,24 @@ func dataSourceTencentCloudDayuDdosPolicyAttachments() *schema.Resource { } func dataSourceTencentCloudDayuDdosPolicyAttachmentsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_ddos_policy_attachments.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_ddos_policy_attachments.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceId := d.Get("resource_id").(string) resourceType := d.Get("resource_type").(string) policyId := d.Get("policy_id").(string) dayuService := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } attachments, _, err := dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, policyId) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { attachments, _, err = dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, policyId) if err != nil { - return retryError(err, "ClientError.NetworkError") + return tccommon.RetryError(err, "ClientError.NetworkError") } return nil }) @@ -95,7 +98,7 @@ func dataSourceTencentCloudDayuDdosPolicyAttachmentsRead(d *schema.ResourceData, ids := make([]string, 0, len(attachments)) for _, attachment := range attachments { ddosPolicyAttachmentList = append(ddosPolicyAttachmentList, attachment) - ids = append(ids, resourceId+FILED_SP+resourceType+""+FILED_SP+policyId) + ids = append(ids, resourceId+tccommon.FILED_SP+resourceType+""+tccommon.FILED_SP+policyId) } d.SetId(helper.DataResourceIdsHash(ids)) @@ -106,7 +109,7 @@ func dataSourceTencentCloudDayuDdosPolicyAttachmentsRead(d *schema.ResourceData, output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), ddosPolicyAttachmentList); e != nil { + if e := tccommon.WriteToFile(output.(string), ddosPolicyAttachmentList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dayu_ddos_policy_attachments_test.go b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_attachments_test.go similarity index 91% rename from tencentcloud/data_source_tc_dayu_ddos_policy_attachments_test.go rename to tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_attachments_test.go index 921f0fbc80..0d0f0297c1 100644 --- a/tencentcloud/data_source_tc_dayu_ddos_policy_attachments_test.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_attachments_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package dayu_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDataDayuDdosPolicyAttachmentsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuDdosPolicyAttachmentDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDayuDdosPolicyAttachmentsDataSource_basic, defaultDayuBgpIp), + Config: fmt.Sprintf(testAccDayuDdosPolicyAttachmentsDataSource_basic, tcacctest.DefaultDayuBgpIp), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDayuDdosPolicyAttachmentExists("tencentcloud_dayu_ddos_policy_attachment.dayu_ddos_policy_attachment"), resource.TestCheckResourceAttr("data.tencentcloud_dayu_ddos_policy_attachments.dayu_ddos_policy_attachments", "dayu_ddos_policy_attachment_list.#", "1"), diff --git a/tencentcloud/data_source_tc_dayu_ddos_policy_cases.go b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_cases.go similarity index 92% rename from tencentcloud/data_source_tc_dayu_ddos_policy_cases.go rename to tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_cases.go index 32cff4dd32..65b31f164e 100644 --- a/tencentcloud/data_source_tc_dayu_ddos_policy_cases.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_cases.go @@ -1,24 +1,27 @@ -package tencentcloud +package dayu import ( "context" "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuDdosPolicyCases() *schema.Resource { +func DataSourceTencentCloudDayuDdosPolicyCases() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuDdosPolicyCasesRead, Schema: map[string]*schema.Schema{ "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), Description: "Type of the resource that the DDoS policy case works for, valid values are `bgpip`, `bgp`, `bgp-multip` and `net`.", }, "scene_id": { @@ -177,13 +180,13 @@ func dataSourceTencentCloudDayuDdosPolicyCases() *schema.Resource { } func dataSourceTencentCloudDayuDdosPolicyCasesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_ddos_policy_cases.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_ddos_policy_cases.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } resourceType := d.Get("resource_type").(string) @@ -191,10 +194,10 @@ func dataSourceTencentCloudDayuDdosPolicyCasesRead(d *schema.ResourceData, meta var ddosPolicyCase dayu.KeyValueRecord has := false - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, flag, err := service.DescribeDdosPolicyCase(ctx, resourceType, sceneId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } ddosPolicyCase = result has = flag @@ -296,7 +299,7 @@ func dataSourceTencentCloudDayuDdosPolicyCasesRead(d *schema.ResourceData, meta } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_dayu_ddos_policy_cases_test.go b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_cases_test.go similarity index 94% rename from tencentcloud/data_source_tc_dayu_ddos_policy_cases_test.go rename to tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_cases_test.go index 36e3078753..245ac29d9d 100644 --- a/tencentcloud/data_source_tc_dayu_ddos_policy_cases_test.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_ddos_policy_cases_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dayu_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ var testDataDayuDdosPolicyCasesName = "data.tencentcloud_dayu_ddos_policy_cases. func TestAccTencentCloudDataDayuDdosPolicyCases(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuDdosPolicyCaseDestroy, Steps: []resource.TestStep{ { diff --git a/tencentcloud/data_source_tc_dayu_l4_rules.go b/tencentcloud/services/dayu/data_source_tc_dayu_l4_rules.go similarity index 91% rename from tencentcloud/data_source_tc_dayu_l4_rules.go rename to tencentcloud/services/dayu/data_source_tc_dayu_l4_rules.go index be90b77039..377c2f0a0b 100644 --- a/tencentcloud/data_source_tc_dayu_l4_rules.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_l4_rules.go @@ -1,23 +1,26 @@ -package tencentcloud +package dayu import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuL4Rules() *schema.Resource { +func DataSourceTencentCloudDayuL4Rules() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuL4RulesRead, Schema: map[string]*schema.Schema{ "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), Description: "Type of the resource that the layer 4 rule works for, valid values are `bgpip`, `bgp`, `bgp-multip` and `net`.", }, "resource_id": { @@ -143,13 +146,13 @@ func dataSourceTencentCloudDayuL4Rules() *schema.Resource { } func dataSourceTencentCloudDayuL4RulesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_l4_rules.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_l4_rules.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } resourceType := d.Get("resource_type").(string) @@ -159,10 +162,10 @@ func dataSourceTencentCloudDayuL4RulesRead(d *schema.ResourceData, meta interfac rules := make([]*dayu.L4RuleEntry, 0) healths := make([]*dayu.L4RuleHealth, 0) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, hResult, _, err := service.DescribeL4Rules(ctx, resourceType, resourceId, name, ruleId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } rules = result healths = hResult @@ -215,7 +218,7 @@ func dataSourceTencentCloudDayuL4RulesRead(d *schema.ResourceData, meta interfac } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_dayu_l4_rules_test.go b/tencentcloud/services/dayu/data_source_tc_dayu_l4_rules_test.go similarity index 91% rename from tencentcloud/data_source_tc_dayu_l4_rules_test.go rename to tencentcloud/services/dayu/data_source_tc_dayu_l4_rules_test.go index 83e65a1680..9661208b46 100644 --- a/tencentcloud/data_source_tc_dayu_l4_rules_test.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_l4_rules_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dayu_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,12 +14,12 @@ var testDataDayuL4RulesName = "data.tencentcloud_dayu_l4_rules.id_test" func TestAccTencentCloudDataDayuL4Rules(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuL4RuleDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccTencentCloudDataDayuL4RulesBaic, defaultDayuBgpIp), + Config: fmt.Sprintf(testAccTencentCloudDataDayuL4RulesBaic, tcacctest.DefaultDayuBgpIp), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDayuL4RuleExists("tencentcloud_dayu_l4_rule.test_rule"), resource.TestCheckResourceAttr(testDataDayuL4RulesName, "list.#", "1"), diff --git a/tencentcloud/data_source_tc_dayu_l7_rules.go b/tencentcloud/services/dayu/data_source_tc_dayu_l7_rules.go similarity index 91% rename from tencentcloud/data_source_tc_dayu_l7_rules.go rename to tencentcloud/services/dayu/data_source_tc_dayu_l7_rules.go index 34b405aae3..fdeb33e1ca 100644 --- a/tencentcloud/data_source_tc_dayu_l7_rules.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_l7_rules.go @@ -1,23 +1,26 @@ -package tencentcloud +package dayu import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuL7Rules() *schema.Resource { +func DataSourceTencentCloudDayuL7Rules() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuL7RulesRead, Schema: map[string]*schema.Schema{ "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE_HTTPS), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE_HTTPS), Description: "Type of the resource that the layer 7 rule works for, valid value is `bgpip`.", }, "resource_id": { @@ -143,13 +146,13 @@ func dataSourceTencentCloudDayuL7Rules() *schema.Resource { } func dataSourceTencentCloudDayuL7RulesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_l7_rules.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_l7_rules.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } resourceType := d.Get("resource_type").(string) @@ -160,10 +163,10 @@ func dataSourceTencentCloudDayuL7RulesRead(d *schema.ResourceData, meta interfac rules := make([]*dayu.L7RuleEntry, 0) healths := make([]*dayu.L7RuleHealth, 0) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, hResult, _, err := service.DescribeL7Rules(ctx, resourceType, resourceId, domain, ruleId, protocol) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } rules = result healths = hResult @@ -235,7 +238,7 @@ func dataSourceTencentCloudDayuL7RulesRead(d *schema.ResourceData, meta interfac } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_dayu_l7_rules_test.go b/tencentcloud/services/dayu/data_source_tc_dayu_l7_rules_test.go similarity index 89% rename from tencentcloud/data_source_tc_dayu_l7_rules_test.go rename to tencentcloud/services/dayu/data_source_tc_dayu_l7_rules_test.go index 0f17b6ef42..b503ae03ed 100644 --- a/tencentcloud/data_source_tc_dayu_l7_rules_test.go +++ b/tencentcloud/services/dayu/data_source_tc_dayu_l7_rules_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dayu_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,12 +14,12 @@ var testDataDayuL7RulesName = "data.tencentcloud_dayu_l7_rules.id_test" func TestAccTencentCloudDataDayuL7Rules(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuL7RuleDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccTencentCloudDataDayuL7RulesBaic, defaultDayuBgpIp, defaultSshCertificate), + Config: fmt.Sprintf(testAccTencentCloudDataDayuL7RulesBaic, tcacctest.DefaultDayuBgpIp, tcacctest.DefaultSshCertificate), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDayuL7RuleExists("tencentcloud_dayu_l7_rule.test_rule"), resource.TestCheckResourceAttr(testDataDayuL7RulesName, "list.#", "1"), @@ -26,7 +28,7 @@ func TestAccTencentCloudDataDayuL7Rules(t *testing.T) { resource.TestCheckResourceAttr(testDataDayuL7RulesName, "list.0.domain", "zhaoshaona.com"), resource.TestCheckResourceAttr(testDataDayuL7RulesName, "list.0.source_type", "2"), resource.TestCheckResourceAttr(testDataDayuL7RulesName, "list.0.protocol", "https"), - resource.TestCheckResourceAttr(testDataDayuL7RulesName, "list.0.ssl_id", defaultSshCertificate), + resource.TestCheckResourceAttr(testDataDayuL7RulesName, "list.0.ssl_id", tcacctest.DefaultSshCertificate), resource.TestCheckResourceAttrSet(testDataDayuL7RulesName, "list.0.status"), resource.TestCheckResourceAttr(testDataDayuL7RulesName, "list.0.source_list.#", "2"), resource.TestCheckResourceAttr(testDataDayuL7RulesName, "list.0.health_check_switch", "true"), diff --git a/tencentcloud/extension_dayu.go b/tencentcloud/services/dayu/extension_dayu.go similarity index 99% rename from tencentcloud/extension_dayu.go rename to tencentcloud/services/dayu/extension_dayu.go index 3cd7def1a0..ca76180ba2 100644 --- a/tencentcloud/extension_dayu.go +++ b/tencentcloud/services/dayu/extension_dayu.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu const ( DAYU_RESOURCE_TYPE_BGPIP = "bgpip" diff --git a/tencentcloud/resource_tc_dayu_cc_http_policy.go b/tencentcloud/services/dayu/resource_tc_dayu_cc_http_policy.go similarity index 77% rename from tencentcloud/resource_tc_dayu_cc_http_policy.go rename to tencentcloud/services/dayu/resource_tc_dayu_cc_http_policy.go index 3237d6241c..f20e31849b 100644 --- a/tencentcloud/resource_tc_dayu_cc_http_policy.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_cc_http_policy.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu import ( "context" @@ -6,15 +6,18 @@ import ( "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" //sdkError "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" ) -func resourceTencentCloudDayuCCHttpPolicy() *schema.Resource { +func ResourceTencentCloudDayuCCHttpPolicy() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuCCHttpPolicyCreate, Read: resourceTencentCloudDayuCCHttpPolicyRead, @@ -31,7 +34,7 @@ func resourceTencentCloudDayuCCHttpPolicy() *schema.Resource { "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), ForceNew: true, Description: "Type of the resource that the CC self-define http policy works for, valid values are `bgpip`, `bgp`, `bgp-multip` and `net`.", }, @@ -39,13 +42,13 @@ func resourceTencentCloudDayuCCHttpPolicy() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateStringLengthInRange(1, 20), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 20), Description: "Name of the CC self-define http policy. Length should between 1 and 20.", }, "smode": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DAYU_CC_POLICY_SMODE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_CC_POLICY_SMODE), Default: DAYU_CC_POLICY_SMODE_MATCH, Description: "Match mode, and valid values are `matching`, `speedlimit`. Note: the speed limit type CC self-define policy can only set one.", }, @@ -53,14 +56,14 @@ func resourceTencentCloudDayuCCHttpPolicy() *schema.Resource { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(1, 10000), + ValidateFunc: tccommon.ValidateIntegerInRange(1, 10000), Description: "Max frequency per minute, only valid when `smode` is `speedlimit`, the valid value ranges from 1 to 10000.", }, "action": { Type: schema.TypeString, Optional: true, Computed: true, - ValidateFunc: validateAllowedStringValue(DAYU_CC_POLICY_ACTION), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_CC_POLICY_ACTION), Description: "Action mode, only valid when `smode` is `matching`. Valid values are `alg` and `drop`.", }, "switch": { @@ -78,21 +81,21 @@ func resourceTencentCloudDayuCCHttpPolicy() *schema.Resource { Type: schema.TypeString, Optional: true, Default: "host", - ValidateFunc: validateAllowedStringValue(DAYU_CC_POLICY_HTTP_CHECK_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_CC_POLICY_HTTP_CHECK_TYPE), Description: "Key of the rule. Valid values: `host`, `cgi`, `ua`, `referer`.", }, "operator": { Type: schema.TypeString, Optional: true, Default: "include", - ValidateFunc: validateAllowedStringValue(DAYU_CC_POLICY_CHECK_OP), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_CC_POLICY_CHECK_OP), Description: "Operator of the rule. Valid values: `include`, `not_include`, `equal`.", }, "value": { Type: schema.TypeString, Optional: true, Default: "", - ValidateFunc: validateStringLengthInRange(0, 31), + ValidateFunc: tccommon.ValidateStringLengthInRange(0, 31), Description: "Rule value, then length should be less than 31 bytes.", }, }, @@ -103,7 +106,7 @@ func resourceTencentCloudDayuCCHttpPolicy() *schema.Resource { Type: schema.TypeString, Computed: true, Optional: true, - ValidateFunc: validateIp, + ValidateFunc: tccommon.ValidateIp, Description: "Ip of the CC self-define http policy, only valid when `resource_type` is `bgp-multip`. The num of list items can only be set one.", }, //computed @@ -122,10 +125,10 @@ func resourceTencentCloudDayuCCHttpPolicy() *schema.Resource { } func resourceTencentCloudDayuCCHttpPolicyCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_http_policy.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_http_policy.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceId := d.Get("resource_id").(string) resourceType := d.Get("resource_type").(string) @@ -176,13 +179,13 @@ func resourceTencentCloudDayuCCHttpPolicyCreate(d *schema.ResourceData, meta int ccPolicy.RuleList = append(ccPolicy.RuleList, &ccRule) } - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} policyId := "" - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := dayuService.CreateCCSelfdefinePolicy(ctx, resourceType, resourceId, ccPolicy) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } policyId = result return nil @@ -192,19 +195,19 @@ func resourceTencentCloudDayuCCHttpPolicyCreate(d *schema.ResourceData, meta int return err } - d.SetId(resourceType + FILED_SP + resourceId + FILED_SP + policyId) + d.SetId(resourceType + tccommon.FILED_SP + resourceId + tccommon.FILED_SP + policyId) return resourceTencentCloudDayuCCHttpPolicyRead(d, meta) } func resourceTencentCloudDayuCCHttpPolicyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_http_policy.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_http_policy.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu CC policy") } @@ -212,14 +215,14 @@ func resourceTencentCloudDayuCCHttpPolicyRead(d *schema.ResourceData, meta inter resourceId := items[1] policyId := items[2] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} policy, has, err := dayuService.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { policy, has, err = dayuService.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -253,12 +256,12 @@ func resourceTencentCloudDayuCCHttpPolicyRead(d *schema.ResourceData, meta inter } func resourceTencentCloudDayuCCHttpPolicyUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_http_policy.update")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_http_policy.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of CC policy") } @@ -311,12 +314,12 @@ func resourceTencentCloudDayuCCHttpPolicyUpdate(d *schema.ResourceData, meta int } else { ccPolicy.IpList = []*string{} } - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.ModifyCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId, ccPolicy) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -329,12 +332,12 @@ func resourceTencentCloudDayuCCHttpPolicyUpdate(d *schema.ResourceData, meta int } func resourceTencentCloudDayuCCHttpPolicyDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_http_policy.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_http_policy.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of CC policy") } @@ -342,12 +345,12 @@ func resourceTencentCloudDayuCCHttpPolicyDelete(d *schema.ResourceData, meta int resourceId := items[1] policyId := items[2] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.DeleteCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -358,10 +361,10 @@ func resourceTencentCloudDayuCCHttpPolicyDelete(d *schema.ResourceData, meta int _, has, err := dayuService.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil || has { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, err = dayuService.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if has { diff --git a/tencentcloud/resource_tc_dayu_cc_http_policy_test.go b/tencentcloud/services/dayu/resource_tc_dayu_cc_http_policy_test.go similarity index 82% rename from tencentcloud/resource_tc_dayu_cc_http_policy_test.go rename to tencentcloud/services/dayu/resource_tc_dayu_cc_http_policy_test.go index a9bb19fcb4..687f420f97 100644 --- a/tencentcloud/resource_tc_dayu_cc_http_policy_test.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_cc_http_policy_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu_test import ( "context" @@ -6,6 +6,10 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdayu "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayu" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) @@ -16,12 +20,12 @@ var testDayuCCHttpPolicyResourceKey = testDayuCCHttpPolicyResourceName + ".test_ func TestAccTencentCloudDayuCCHttpPolicyResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuCCHttpPolicyDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDayuCCHttpPolicy, defaultDayuBgpIp), + Config: fmt.Sprintf(testAccDayuCCHttpPolicy, tcacctest.DefaultDayuBgpIp), Check: resource.ComposeTestCheckFunc( testAccCheckDayuCCHttpPolicyExists(testDayuCCHttpPolicyResourceKey), resource.TestCheckResourceAttrSet(testDayuCCHttpPolicyResourceKey, "create_time"), @@ -34,7 +38,7 @@ func TestAccTencentCloudDayuCCHttpPolicyResource(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccDayuCCHttpPolicyUpdate, defaultDayuBgpIp), + Config: fmt.Sprintf(testAccDayuCCHttpPolicyUpdate, tcacctest.DefaultDayuBgpIp), Check: resource.ComposeTestCheckFunc( testAccCheckDayuCCHttpPolicyExists(testDayuCCHttpPolicyResourceKey), resource.TestCheckResourceAttrSet(testDayuCCHttpPolicyResourceKey, "create_time"), @@ -51,12 +55,12 @@ func TestAccTencentCloudDayuCCHttpPolicyResource(t *testing.T) { func TestAccTencentCloudDayuCCHttpPolicyResource_BGP(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuCCHttpPolicyDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDayuCCHttpPolicy_BGP, defaultDayuBgp), + Config: fmt.Sprintf(testAccDayuCCHttpPolicy_BGP, tcacctest.DefaultDayuBgp), Check: resource.ComposeTestCheckFunc( testAccCheckDayuCCHttpPolicyExists(testDayuCCHttpPolicyResourceKey), resource.TestCheckResourceAttrSet(testDayuCCHttpPolicyResourceKey, "create_time"), @@ -75,12 +79,12 @@ func TestAccTencentCloudDayuCCHttpPolicyResource_BGP(t *testing.T) { func TestAccTencentCloudDayuCCHttpPolicyResource_NET(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuCCHttpPolicyDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDayuCCHttpPolicy_NET, defaultDayuNet), + Config: fmt.Sprintf(testAccDayuCCHttpPolicy_NET, tcacctest.DefaultDayuNet), Check: resource.ComposeTestCheckFunc( testAccCheckDayuCCHttpPolicyExists(testDayuCCHttpPolicyResourceKey), resource.TestCheckResourceAttrSet(testDayuCCHttpPolicyResourceKey, "create_time"), @@ -99,12 +103,12 @@ func TestAccTencentCloudDayuCCHttpPolicyResource_NET(t *testing.T) { func TestAccTencentCloudDayuCCHttpPolicyResource_BGPMUL(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuCCHttpPolicyDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDayuCCHttpPolicy_BGPMUL, defaultDayuBgpMul), + Config: fmt.Sprintf(testAccDayuCCHttpPolicy_BGPMUL, tcacctest.DefaultDayuBgpMul), Check: resource.ComposeTestCheckFunc( testAccCheckDayuCCHttpPolicyExists(testDayuCCHttpPolicyResourceKey), resource.TestCheckResourceAttrSet(testDayuCCHttpPolicyResourceKey, "create_time"), @@ -124,10 +128,10 @@ func testAccCheckDayuCCHttpPolicyDestroy(s *terraform.State) error { if rs.Type != testDayuCCHttpPolicyResourceName { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of DDos policy case") } @@ -135,7 +139,7 @@ func testAccCheckDayuCCHttpPolicyDestroy(s *terraform.State) error { resourceId := items[1] policyId := items[2] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { @@ -159,10 +163,10 @@ func testAccCheckDayuCCHttpPolicyExists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of DDos policy case") } @@ -170,7 +174,7 @@ func testAccCheckDayuCCHttpPolicyExists(n string) resource.TestCheckFunc { resourceId := items[1] policyId := items[2] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { diff --git a/tencentcloud/resource_tc_dayu_cc_https_policy.go b/tencentcloud/services/dayu/resource_tc_dayu_cc_https_policy.go similarity index 76% rename from tencentcloud/resource_tc_dayu_cc_https_policy.go rename to tencentcloud/services/dayu/resource_tc_dayu_cc_https_policy.go index 479b2c717e..84e9298a80 100644 --- a/tencentcloud/resource_tc_dayu_cc_https_policy.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_cc_https_policy.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu import ( "context" @@ -6,13 +6,16 @@ import ( "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDayuCCHttpsPolicy() *schema.Resource { +func ResourceTencentCloudDayuCCHttpsPolicy() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuCCHttpsPolicyCreate, Read: resourceTencentCloudDayuCCHttpsPolicyRead, @@ -29,7 +32,7 @@ func resourceTencentCloudDayuCCHttpsPolicy() *schema.Resource { "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE_HTTPS), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE_HTTPS), ForceNew: true, Description: "Type of the resource that the CC self-define https policy works for, valid value is `bgpip`.", }, @@ -37,7 +40,7 @@ func resourceTencentCloudDayuCCHttpsPolicy() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateStringLengthInRange(1, 20), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 20), Description: "Name of the CC self-define https policy. Length should between 1 and 20.", }, "domain": { @@ -62,7 +65,7 @@ func resourceTencentCloudDayuCCHttpsPolicy() *schema.Resource { Type: schema.TypeString, Optional: true, Computed: true, - ValidateFunc: validateAllowedStringValue(DAYU_CC_POLICY_ACTION), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_CC_POLICY_ACTION), Description: "Action mode. Valid values are `alg` and `drop`.", }, "rule_list": { @@ -73,19 +76,19 @@ func resourceTencentCloudDayuCCHttpsPolicy() *schema.Resource { "skey": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_CC_POLICY_HTTPS_CHECK_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_CC_POLICY_HTTPS_CHECK_TYPE), Description: "Key of the rule. Valid values are `cgi`, `ua` and `referer`.", }, "operator": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_CC_POLICY_CHECK_OP_HTTPS), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_CC_POLICY_CHECK_OP_HTTPS), Description: "Operator of the rule. Valid values are `include` and `equal`.", }, "value": { Type: schema.TypeString, Required: true, - ValidateFunc: validateStringLengthInRange(0, 31), + ValidateFunc: tccommon.ValidateStringLengthInRange(0, 31), Description: "Rule value, then length should be less than 31 bytes.", }, }, @@ -114,10 +117,10 @@ func resourceTencentCloudDayuCCHttpsPolicy() *schema.Resource { } func resourceTencentCloudDayuCCHttpsPolicyCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_https_policy.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_https_policy.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceId := d.Get("resource_id").(string) resourceType := d.Get("resource_type").(string) @@ -154,14 +157,14 @@ func resourceTencentCloudDayuCCHttpsPolicyCreate(d *schema.ResourceData, meta in ccPolicy.RuleList = append(ccPolicy.RuleList, &ccRule) } - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} policyId := "" - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := dayuService.CreateCCSelfdefinePolicy(ctx, resourceType, resourceId, ccPolicy) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } policyId = result return nil @@ -171,19 +174,19 @@ func resourceTencentCloudDayuCCHttpsPolicyCreate(d *schema.ResourceData, meta in return err } - d.SetId(resourceType + FILED_SP + resourceId + FILED_SP + policyId) + d.SetId(resourceType + tccommon.FILED_SP + resourceId + tccommon.FILED_SP + policyId) return resourceTencentCloudDayuCCHttpPolicyRead(d, meta) } func resourceTencentCloudDayuCCHttpsPolicyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_https_policy.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_https_policy.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu CC policy") } @@ -191,14 +194,14 @@ func resourceTencentCloudDayuCCHttpsPolicyRead(d *schema.ResourceData, meta inte resourceId := items[1] policyId := items[2] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} policy, has, err := dayuService.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { policy, has, err = dayuService.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -224,12 +227,12 @@ func resourceTencentCloudDayuCCHttpsPolicyRead(d *schema.ResourceData, meta inte } func resourceTencentCloudDayuCCHttpsPolicyUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_https_policy.update")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_https_policy.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of CC policy") } @@ -272,12 +275,12 @@ func resourceTencentCloudDayuCCHttpsPolicyUpdate(d *schema.ResourceData, meta in for _, ip := range ipList { ccPolicy.IpList = append(ccPolicy.IpList, helper.String(ip.(string))) } - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.ModifyCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId, ccPolicy) if e != nil { - return retryError(e, InternalError) + return tccommon.RetryError(e, tccommon.InternalError) } return nil }) @@ -290,12 +293,12 @@ func resourceTencentCloudDayuCCHttpsPolicyUpdate(d *schema.ResourceData, meta in } func resourceTencentCloudDayuCCHttpsPolicyDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_https_policy.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_https_policy.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of CC policy") } @@ -303,12 +306,12 @@ func resourceTencentCloudDayuCCHttpsPolicyDelete(d *schema.ResourceData, meta in resourceId := items[1] policyId := items[2] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.DeleteCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -319,10 +322,10 @@ func resourceTencentCloudDayuCCHttpsPolicyDelete(d *schema.ResourceData, meta in _, has, err := dayuService.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil || has { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, err = dayuService.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if has { diff --git a/tencentcloud/resource_tc_dayu_cc_https_policy_test.go b/tencentcloud/services/dayu/resource_tc_dayu_cc_https_policy_test.go similarity index 82% rename from tencentcloud/resource_tc_dayu_cc_https_policy_test.go rename to tencentcloud/services/dayu/resource_tc_dayu_cc_https_policy_test.go index 93b87e1c56..7bb8440d56 100644 --- a/tencentcloud/resource_tc_dayu_cc_https_policy_test.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_cc_https_policy_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dayu_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdayu "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayu" + "context" "fmt" "strings" @@ -16,12 +20,12 @@ var testDayuCCHttpsPolicyResourceKey = testDayuCCHttpsPolicyResourceName + ".tes func TestAccTencentCloudDayuCCHttpsPolicyResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuCCHttpsPolicyDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDayuCCHttpsPolicy, defaultDayuBgpIp, defaultSshCertificate), + Config: fmt.Sprintf(testAccDayuCCHttpsPolicy, tcacctest.DefaultDayuBgpIp, tcacctest.DefaultSshCertificate), Check: resource.ComposeTestCheckFunc( testAccCheckDayuCCHttpsPolicyExists(testDayuCCHttpsPolicyResourceKey), resource.TestCheckResourceAttrSet(testDayuCCHttpsPolicyResourceKey, "create_time"), @@ -35,7 +39,7 @@ func TestAccTencentCloudDayuCCHttpsPolicyResource(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccDayuCCHttpsPolicyUpdate, defaultDayuBgpIp, defaultSshCertificate), + Config: fmt.Sprintf(testAccDayuCCHttpsPolicyUpdate, tcacctest.DefaultDayuBgpIp, tcacctest.DefaultSshCertificate), Check: resource.ComposeTestCheckFunc( testAccCheckDayuCCHttpsPolicyExists(testDayuCCHttpsPolicyResourceKey), resource.TestCheckResourceAttrSet(testDayuCCHttpsPolicyResourceKey, "create_time"), @@ -56,10 +60,10 @@ func testAccCheckDayuCCHttpsPolicyDestroy(s *terraform.State) error { if rs.Type != testDayuCCHttpsPolicyResourceName { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of DDos policy case") } @@ -67,7 +71,7 @@ func testAccCheckDayuCCHttpsPolicyDestroy(s *terraform.State) error { resourceId := items[1] policyId := items[2] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { @@ -91,10 +95,10 @@ func testAccCheckDayuCCHttpsPolicyExists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of DDos policy case") } @@ -102,7 +106,7 @@ func testAccCheckDayuCCHttpsPolicyExists(n string) resource.TestCheckFunc { resourceId := items[1] policyId := items[2] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribeCCSelfdefinePolicy(ctx, resourceType, resourceId, policyId) if err != nil { diff --git a/tencentcloud/resource_tc_dayu_ddos_policy.go b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy.go similarity index 80% rename from tencentcloud/resource_tc_dayu_ddos_policy.go rename to tencentcloud/services/dayu/resource_tc_dayu_ddos_policy.go index 283146b4c4..f2bc60c2af 100644 --- a/tencentcloud/resource_tc_dayu_ddos_policy.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu import ( "context" @@ -6,12 +6,14 @@ import ( "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" ) -func resourceTencentCloudDayuDdosPolicy() *schema.Resource { +func ResourceTencentCloudDayuDdosPolicy() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuDdosPolicyCreate, Read: resourceTencentCloudDayuDdosPolicyRead, @@ -22,14 +24,14 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), ForceNew: true, Description: "Type of the resource that the DDoS policy works for. Valid values: `bgpip`, `bgp`, `bgp-multip` and `net`.", }, "name": { Type: schema.TypeString, Required: true, - ValidateFunc: validateStringLengthInRange(1, 32), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 32), Description: "Name of the DDoS policy. Length should between 1 and 32.", }, "drop_options": { @@ -70,31 +72,31 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { "d_new_limit": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 4294967295), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 4294967295), Description: "The limit of new connections based on destination IP. Valid value ranges: (0~4294967295).", }, "d_conn_limit": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 4294967295), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 4294967295), Description: "The limit of concurrent connections based on destination IP. Valid value ranges: (0~4294967295).", }, "s_new_limit": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 4294967295), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 4294967295), Description: "The limit of new connections based on source IP. Valid value ranges: (0~4294967295).", }, "s_conn_limit": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 4294967295), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 4294967295), Description: "The limit of concurrent connections based on source IP. Valid value ranges: (0~4294967295).", }, "bad_conn_threshold": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 4294967295), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 4294967295), Description: "The number of new connections based on destination IP that trigger suppression of connections. Valid value ranges: (0~4294967295).", }, "null_conn_enable": { @@ -105,43 +107,43 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { "conn_timeout": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 65535), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 65535), Description: "Connection timeout of abnormal connection check. Valid value ranges: (0~65535).", }, "syn_rate": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateIntegerInRange(0, 100), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 100), Description: "The percentage of syn in ack of abnormal connection check. Valid value ranges: (0~100).", }, "syn_limit": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 100), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 100), Description: "The limit of syn of abnormal connection check. Valid value ranges: (0~100).", }, "tcp_mbps_limit": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 4294967295), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 4294967295), Description: "The limit of TCP traffic. Valid value ranges: (0~4294967295)(Mbps).", }, "udp_mbps_limit": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 4294967295), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 4294967295), Description: "The limit of UDP traffic rate. Valid value ranges: (0~4294967295)(Mbps).", }, "icmp_mbps_limit": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 4294967295), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 4294967295), Description: "The limit of ICMP traffic rate. Valid value ranges: (0~4294967295)(Mbps).", }, "other_mbps_limit": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 4294967295), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 4294967295), Description: "The limit of other protocols(exclude TCP/UDP/ICMP) traffic rate. Valid value ranges: (0~4294967295)(Mbps).", }, }, @@ -156,33 +158,33 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { "protocol": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DAYU_PROTOCOL), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_PROTOCOL), Description: "Protocol. Valid values are `tcp`, `udp`, `icmp`, `all`.", }, "start_port": { Type: schema.TypeInt, Optional: true, Default: 0, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "Start port. Valid value ranges: (0~65535).", }, "end_port": { Type: schema.TypeInt, Optional: true, Default: 65535, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "End port. Valid value ranges: (0~65535). It must be greater than `start_port`.", }, "action": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DAYU_PORT_ACTION), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_PORT_ACTION), Description: "Action of port to take. Valid values: `drop`, `transmit`.", }, "kind": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateAllowedIntValue([]int{0, 1, 2}), + ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1, 2}), Description: "The type of forbidden port. Valid values: `0`, `1`, `2`. `0` for destination ports make effect, `1` for source ports make effect. `2` for both destination and source ports.", }, }, @@ -193,7 +195,7 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { Type: schema.TypeSet, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validateIp, + ValidateFunc: tccommon.ValidateIp, }, Optional: true, Description: "Black IP list.", @@ -202,7 +204,7 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { Type: schema.TypeSet, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validateIp, + ValidateFunc: tccommon.ValidateIp, }, Optional: true, Description: "White IP list.", @@ -215,55 +217,55 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { "protocol": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DAYU_PROTOCOL), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_PROTOCOL), Description: "Protocol. Valid values: `tcp`, `udp`, `icmp`, `all`.", }, "d_start_port": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "Start port of the destination. Valid value ranges: (0~65535).", }, "d_end_port": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "End port of the destination. Valid value ranges: (0~65535). It must be greater than `d_start_port`.", }, "s_start_port": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "Start port of the source. Valid value ranges: (0~65535).", }, "s_end_port": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "End port of the source. Valid value ranges: (0~65535). It must be greater than `s_start_port`.", }, "pkt_length_min": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateIntegerInRange(0, 1500), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 1500), Description: "The minimum length of the packet. Valid value ranges: (0~1500)(Mbps).", }, "pkt_length_max": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateIntegerInRange(0, 1500), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 1500), Description: "The max length of the packet. Valid value ranges: (0~1500)(Mbps). It must be greater than `pkt_length_min`.", }, "match_begin": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DAYU_MATCH_SWITCH), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_MATCH_SWITCH), Description: "Indicate whether to check load or not, `begin_l5` means to match and `no_match` means not.", }, "match_type": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DAYU_MATCH_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_MATCH_TYPE), Description: "Match type. Valid values: `sunday` and `pcre`. `sunday` means key word match while `pcre` means regular match.", }, "match_str": { @@ -274,13 +276,13 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { "depth": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateIntegerInRange(0, 1500), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 1500), Description: "The depth of match. Valid value ranges: (0~1500).", }, "offset": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateIntegerInRange(0, 1500), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 1500), Description: "The offset of match. Valid value ranges: (0~1500).", }, "is_include": { @@ -292,7 +294,7 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { "action": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DAYU_PACKET_ACTION), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_PACKET_ACTION), Description: "Action of port to take. Valid values: `drop`, `drop_black`,`drop_rst`,`drop_black_rst`,`transmit`.`drop`(drop the packet), `drop_black`(drop the packet and black the ip),`drop_rst`(drop the packet and disconnect),`drop_black_rst`(drop the packet, black the ip and disconnect),`transmit`(transmit the packet).", }, }, @@ -309,7 +311,7 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { Optional: true, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validatePortRange, + ValidateFunc: tccommon.ValidatePortRange, }, Description: "Port range of TCP, the format is like `2000-3000`.", }, @@ -318,14 +320,14 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { Optional: true, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validatePortRange, + ValidateFunc: tccommon.ValidatePortRange, }, Description: "Port range of TCP, the format is like `2000-3000`.", }, "offset": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateIntegerInRange(0, 100), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 100), Description: "The offset of watermark. Valid value ranges: (0~1500).", }, "auto_remove": { @@ -392,10 +394,10 @@ func resourceTencentCloudDayuDdosPolicy() *schema.Resource { } func resourceTencentCloudDayuDdosPolicyCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceType := d.Get("resource_type").(string) name := d.Get("name").(string) @@ -430,14 +432,14 @@ func resourceTencentCloudDayuDdosPolicyCreate(d *schema.ResourceData, meta inter waterPrintMapping := d.Get("watermark_filters").([]interface{}) waterPrintPolicy, _ := setWaterPrintPolicy(waterPrintMapping) - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} policyId := "" - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := dayuService.CreateDdosPolicy(ctx, resourceType, name, ddosPolicyDropOption, ddosPolicyPortLimit, ipBlackWhite, ddosPacketFilter, waterPrintPolicy) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } policyId = result return nil @@ -447,32 +449,32 @@ func resourceTencentCloudDayuDdosPolicyCreate(d *schema.ResourceData, meta inter return err } - d.SetId(resourceType + FILED_SP + policyId) + d.SetId(resourceType + tccommon.FILED_SP + policyId) return resourceTencentCloudDayuDdosPolicyRead(d, meta) } func resourceTencentCloudDayuDdosPolicyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy.read")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } resourceType := items[0] policyId := items[1] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ddosPolicy, has, err := dayuService.DescribeDdosPolicy(ctx, resourceType, policyId) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ddosPolicy, has, err = dayuService.DescribeDdosPolicy(ctx, resourceType, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -501,26 +503,26 @@ func resourceTencentCloudDayuDdosPolicyRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudDayuDdosPolicyUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy.update")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } resourceType := items[0] policyId := items[1] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} d.Partial(true) if d.HasChange("name") { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.ModifyDdosPolicyName(ctx, resourceType, policyId, d.Get("name").(string)) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -563,10 +565,10 @@ func resourceTencentCloudDayuDdosPolicyUpdate(d *schema.ResourceData, meta inter waterPrintMapping := d.Get("watermark_filters").([]interface{}) waterPrintPolicy, _ := setWaterPrintPolicy(waterPrintMapping) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.ModifyDdosPolicy(ctx, resourceType, policyId, ddosPolicyDropOption, ddosPolicyPortLimit, ipBlackWhite, ddosPacketFilter, waterPrintPolicy) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -582,24 +584,24 @@ func resourceTencentCloudDayuDdosPolicyUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudDayuDdosPolicyDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } resourceType := items[0] policyId := items[1] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.DeleteDdosPolicy(ctx, resourceType, policyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -610,10 +612,10 @@ func resourceTencentCloudDayuDdosPolicyDelete(d *schema.ResourceData, meta inter _, has, err := dayuService.DescribeDdosPolicy(ctx, resourceType, policyId) if err != nil || has { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, err = dayuService.DescribeDdosPolicy(ctx, resourceType, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if has { diff --git a/tencentcloud/resource_tc_dayu_ddos_policy_attachment.go b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_attachment.go similarity index 67% rename from tencentcloud/resource_tc_dayu_ddos_policy_attachment.go rename to tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_attachment.go index f805849ae1..4e0d5fc8d4 100644 --- a/tencentcloud/resource_tc_dayu_ddos_policy_attachment.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_attachment.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu import ( "context" @@ -7,11 +7,13 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func resourceTencentCloudDayuDdosPolicyAttachment() *schema.Resource { +func ResourceTencentCloudDayuDdosPolicyAttachment() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuDdosPolicyAttachmentCreate, Read: resourceTencentCloudDayuDdosPolicyAttachmentRead, @@ -34,7 +36,7 @@ func resourceTencentCloudDayuDdosPolicyAttachment() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), Description: "Type of the resource that the DDoS policy works for. Valid values are `bgpip`, `bgp`, `bgp-multip`, `net`.", }, }, @@ -42,25 +44,25 @@ func resourceTencentCloudDayuDdosPolicyAttachment() *schema.Resource { } func resourceTencentCloudDayuDdosPolicyAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_attachment.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_attachment.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceId := d.Get("resource_id").(string) policyId := d.Get("policy_id").(string) resourceType := d.Get("resource_type").(string) dayuService := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } //only one bind relationship supported, check unbind status _, has, statusErr := dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, "") if statusErr != nil { - statusErr = resource.Retry(readRetryTimeout, func() *resource.RetryError { + statusErr = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, statusErr = dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, "") if statusErr != nil { - return retryError(statusErr) + return tccommon.RetryError(statusErr) } return nil }) @@ -72,10 +74,10 @@ func resourceTencentCloudDayuDdosPolicyAttachmentCreate(d *schema.ResourceData, return fmt.Errorf("DDoS is already bined by policy") } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.BindDdosPolicy(ctx, resourceId, resourceType, policyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -88,10 +90,10 @@ func resourceTencentCloudDayuDdosPolicyAttachmentCreate(d *schema.ResourceData, //check bind status _, has, statusErr = dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, policyId) if statusErr != nil { - statusErr = resource.Retry(readRetryTimeout, func() *resource.RetryError { + statusErr = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, statusErr = dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, policyId) if statusErr != nil { - return retryError(statusErr) + return tccommon.RetryError(statusErr) } return nil }) @@ -103,19 +105,19 @@ func resourceTencentCloudDayuDdosPolicyAttachmentCreate(d *schema.ResourceData, return fmt.Errorf("Create DDoS policy attachment faild") } - d.SetId(resourceId + FILED_SP + resourceType + FILED_SP + policyId) + d.SetId(resourceId + tccommon.FILED_SP + resourceType + tccommon.FILED_SP + policyId) return resourceTencentCloudDayuDdosPolicyAttachmentRead(d, meta) } func resourceTencentCloudDayuDdosPolicyAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of DDoS policy attachment") } @@ -124,14 +126,14 @@ func resourceTencentCloudDayuDdosPolicyAttachmentRead(d *schema.ResourceData, me policyId := items[2] dayuService := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } _, has, err := dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, policyId) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, err = dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, policyId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -153,12 +155,12 @@ func resourceTencentCloudDayuDdosPolicyAttachmentRead(d *schema.ResourceData, me } func resourceTencentCloudDayuDdosPolicyAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_attachment.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_attachment.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of DDoS policy attachment") } @@ -167,13 +169,13 @@ func resourceTencentCloudDayuDdosPolicyAttachmentDelete(d *schema.ResourceData, policyId := items[2] dayuService := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.UnbindDdosPolicy(ctx, resourceId, resourceType, policyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -186,10 +188,10 @@ func resourceTencentCloudDayuDdosPolicyAttachmentDelete(d *schema.ResourceData, //check bind status _, has, statusErr := dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, policyId) if statusErr != nil { - statusErr = resource.Retry(readRetryTimeout, func() *resource.RetryError { + statusErr = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, statusErr = dayuService.DescribeDdosPolicyAttachments(ctx, resourceId, resourceType, policyId) if statusErr != nil { - return retryError(statusErr) + return tccommon.RetryError(statusErr) } return nil }) diff --git a/tencentcloud/resource_tc_dayu_ddos_policy_attachment_test.go b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_attachment_test.go similarity index 82% rename from tencentcloud/resource_tc_dayu_ddos_policy_attachment_test.go rename to tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_attachment_test.go index af16279ac2..2ad7dc3766 100644 --- a/tencentcloud/resource_tc_dayu_ddos_policy_attachment_test.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_attachment_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dayu_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdayu "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayu" + "context" "fmt" "strings" @@ -13,8 +17,8 @@ import ( func TestAccTencentCloudDayuDdosPolicyAttachment_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuDdosPolicyAttachmentDestroy, Steps: []resource.TestStep{ { @@ -30,12 +34,10 @@ func TestAccTencentCloudDayuDdosPolicyAttachment_basic(t *testing.T) { } func testAccCheckDayuDdosPolicyAttachmentDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dayuService := DayuService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + dayuService := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dayu_ddos_policy_attachment" { continue @@ -60,8 +62,8 @@ func testAccCheckDayuDdosPolicyAttachmentDestroy(s *terraform.State) error { func testAccCheckDayuDdosPolicyAttachmentExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[n] if !ok { @@ -70,9 +72,7 @@ func testAccCheckDayuDdosPolicyAttachmentExists(n string) resource.TestCheckFunc if rs.Primary.ID == "" { return fmt.Errorf("DDoS policy attachment id is not set") } - dayuService := DayuService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + dayuService := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) items := strings.Split(rs.Primary.ID, "#") if len(items) < 3 { return fmt.Errorf("broken ID of DDos policy attachment") diff --git a/tencentcloud/resource_tc_dayu_ddos_policy_case.go b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_case.go similarity index 83% rename from tencentcloud/resource_tc_dayu_ddos_policy_case.go rename to tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_case.go index bd00d8eb49..90bc273bf6 100644 --- a/tencentcloud/resource_tc_dayu_ddos_policy_case.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_case.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu import ( "context" @@ -7,14 +7,17 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" sdkError "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDayuDdosPolicyCase() *schema.Resource { +func ResourceTencentCloudDayuDdosPolicyCase() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuDdosPolicyCaseCreate, Read: resourceTencentCloudDayuDdosPolicyCaseRead, @@ -25,7 +28,7 @@ func resourceTencentCloudDayuDdosPolicyCase() *schema.Resource { "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE_CASE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE_CASE), ForceNew: true, Description: "Type of the resource that the DDoS policy case works for. Valid values: `bgpip`, `bgp` and `bgp-multip`.", }, @@ -33,14 +36,14 @@ func resourceTencentCloudDayuDdosPolicyCase() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateStringLengthInRange(1, 64), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 64), Description: "Name of the DDoS policy case. Length should between 1 and 64.", }, "platform_types": { Type: schema.TypeSet, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validateAllowedStringValue(DAYU_APP_PLATFORM), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_APP_PLATFORM), Description: "Platform of the DDoS policy case. Valid values: `PC`, `MOBILE`, `TV` and `SERVER`.", }, Required: true, @@ -50,7 +53,7 @@ func resourceTencentCloudDayuDdosPolicyCase() *schema.Resource { Type: schema.TypeSet, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validateAllowedStringValue(DAYU_PROTOCOL), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_PROTOCOL), Description: "App protocol of the DDoS policy case. Valid values: `tcp`, `udp`, `icmp` and `all`.", }, Required: true, @@ -59,79 +62,79 @@ func resourceTencentCloudDayuDdosPolicyCase() *schema.Resource { "app_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_APP_TYPE), //to see the max + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_APP_TYPE), //to see the max Description: "App type of the DDoS policy case. Valid values: `WEB`, `GAME`, `APP` and `OTHER`.", }, "tcp_start_port": { Type: schema.TypeString, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "Start port of the TCP service. Valid value ranges: (0~65535).", }, "tcp_end_port": { Type: schema.TypeString, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "End port of the TCP service. Valid value ranges: (0~65535). It must be greater than `tcp_start_port`.", }, "udp_start_port": { Type: schema.TypeString, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "Start port of the UDP service. Valid value ranges: (0~65535).", }, "udp_end_port": { Type: schema.TypeString, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "End port of the UDP service. Valid value ranges: (0~65535). It must be greater than `udp_start_port`.", }, "has_abroad": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_BOOL_FLAG), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_BOOL_FLAG), Description: "Indicate whether the service involves overseas or not. Valid values: `no` and `yes`.", }, "has_initiate_tcp": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_BOOL_FLAG), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_BOOL_FLAG), Description: "Indicate whether the service actively initiates TCP requests or not. Valid values: `no` and `yes`.", }, "has_initiate_udp": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DAYU_BOOL_FLAG), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_BOOL_FLAG), Description: "Indicate whether the actively initiate UDP requests or not. Valid values: `no` and `yes`.", }, "has_vpn": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DAYU_BOOL_FLAG), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_BOOL_FLAG), Description: "Indicate whether the service involves VPN service or not. Valid values: `no` and `yes`.", }, "peer_tcp_port": { Type: schema.TypeString, Optional: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "The port that actively initiates TCP requests. Valid value ranges: (1~65535).", }, "peer_udp_port": { Type: schema.TypeString, Optional: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "The port that actively initiates UDP requests. Valid value ranges: (1~65535).", }, "tcp_footprint": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(1, 512), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 512), Description: "The fixed signature of TCP protocol load, valid value length is range from 1 to 512.", }, "udp_footprint": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(1, 512), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 512), Description: "The fixed signature of TCP protocol load, valid value length is range from 1 to 512.", }, "web_api_urls": { @@ -146,25 +149,25 @@ func resourceTencentCloudDayuDdosPolicyCase() *schema.Resource { "min_tcp_package_len": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(1, 1499), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 1499), Description: "The minimum length of TCP message package, valid value length should be greater than 0 and less than 1500.", }, "max_tcp_package_len": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(1, 1499), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 1499), Description: "The max length of TCP message package, valid value length should be greater than 0 and less than 1500. It should be greater than `min_tcp_package_len`.", }, "min_udp_package_len": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(1, 1499), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 1499), Description: "The minimum length of UDP message package, valid value length should be greater than 0 and less than 1500.", }, "max_udp_package_len": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(1, 1499), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 1499), Description: "The max length of UDP message package, valid value length should be greater than 0 and less than 1500. It should be greater than `min_udp_package_len`.", }, //computed @@ -183,10 +186,10 @@ func resourceTencentCloudDayuDdosPolicyCase() *schema.Resource { } func resourceTencentCloudDayuDdosPolicyCaseCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_case.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_case.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request := dayu.NewCreateDDoSPolicyCaseRequest() resourceType := d.Get("resource_type").(string) @@ -264,13 +267,13 @@ func resourceTencentCloudDayuDdosPolicyCaseCreate(d *schema.ResourceData, meta i request.MinUdpPackageLen = &minUdpPackageLen request.MaxUdpPackageLen = &maxTcpPackageLen - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} sceneId := "" - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := dayuService.CreateDdosPolicyCase(ctx, request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } sceneId = result return nil @@ -280,33 +283,33 @@ func resourceTencentCloudDayuDdosPolicyCaseCreate(d *schema.ResourceData, meta i return err } - d.SetId(resourceType + FILED_SP + sceneId) + d.SetId(resourceType + tccommon.FILED_SP + sceneId) return resourceTencentCloudDayuDdosPolicyCaseRead(d, meta) } func resourceTencentCloudDayuDdosPolicyCaseRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_case.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_case.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy case") } resourceType := items[0] sceneId := items[1] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ddosPolicyCase, has, err := dayuService.DescribeDdosPolicyCase(ctx, resourceType, sceneId) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ddosPolicyCase, has, err = dayuService.DescribeDdosPolicyCase(ctx, resourceType, sceneId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -395,12 +398,12 @@ func resourceTencentCloudDayuDdosPolicyCaseRead(d *schema.ResourceData, meta int } func resourceTencentCloudDayuDdosPolicyCaseUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_case.update")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_case.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy case") } @@ -485,12 +488,12 @@ func resourceTencentCloudDayuDdosPolicyCaseUpdate(d *schema.ResourceData, meta i request.MinUdpPackageLen = &minUdpPackageLen request.MaxUdpPackageLen = &maxTcpPackageLen - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.ModifyDdosPolicyCase(ctx, request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -502,19 +505,19 @@ func resourceTencentCloudDayuDdosPolicyCaseUpdate(d *schema.ResourceData, meta i } func resourceTencentCloudDayuDdosPolicyCaseDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_case.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_case.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } resourceType := items[0] sceneId := items[1] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} err := dayuService.DeleteDdosPolicyCase(ctx, resourceType, sceneId) @@ -551,10 +554,10 @@ func resourceTencentCloudDayuDdosPolicyCaseDelete(d *schema.ResourceData, meta i } } } - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.DeleteDdosPolicyCase(ctx, resourceType, sceneId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -566,10 +569,10 @@ func resourceTencentCloudDayuDdosPolicyCaseDelete(d *schema.ResourceData, meta i _, has, err := dayuService.DescribeDdosPolicyCase(ctx, resourceType, sceneId) if err != nil || has { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, err = dayuService.DescribeDdosPolicyCase(ctx, resourceType, sceneId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if has { diff --git a/tencentcloud/resource_tc_dayu_ddos_policy_case_test.go b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_case_test.go similarity index 89% rename from tencentcloud/resource_tc_dayu_ddos_policy_case_test.go rename to tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_case_test.go index 29266bd8f4..10f377163b 100644 --- a/tencentcloud/resource_tc_dayu_ddos_policy_case_test.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_case_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dayu_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdayu "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayu" + "context" "fmt" "strings" @@ -16,8 +20,8 @@ var testDayuDdosPolicyCaseResourceKey = testDayuDdosPolicyCaseResourceName + ".t func TestAccTencentCloudDayuDdosPolicyCaseResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuDdosPolicyCaseDestroy, Steps: []resource.TestStep{ { @@ -86,17 +90,17 @@ func testAccCheckDayuDdosPolicyCaseDestroy(s *terraform.State) error { if rs.Type != testDayuDdosPolicyCaseResourceName { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDos policy case") } resourceType := items[0] sceneId := items[1] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribeDdosPolicyCase(ctx, resourceType, sceneId) if err != nil { @@ -120,17 +124,17 @@ func testAccCheckDayuDdosPolicyCaseExists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDos policy case") } resourceType := items[0] sceneId := items[1] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribeDdosPolicyCase(ctx, resourceType, sceneId) if err != nil { diff --git a/tencentcloud/resource_tc_dayu_ddos_policy_test.go b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_test.go similarity index 94% rename from tencentcloud/resource_tc_dayu_ddos_policy_test.go rename to tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_test.go index d8f1cbf437..ec2d018f10 100644 --- a/tencentcloud/resource_tc_dayu_ddos_policy_test.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_ddos_policy_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dayu_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdayu "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayu" + "context" "fmt" "strings" @@ -13,8 +17,8 @@ import ( func TestAccTencentCloudDayuDdosPolicyResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuDdosPolicyDestroy, Steps: []resource.TestStep{ { @@ -136,17 +140,17 @@ func testAccCheckDayuDdosPolicyDestroy(s *terraform.State) error { if rs.Type != "tencentcloud_dayu_ddos_policy" { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDos policy") } resourceType := items[0] policyId := items[1] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribeDdosPolicy(ctx, resourceType, policyId) if err != nil { @@ -170,17 +174,17 @@ func testAccCheckDayuDdosPolicyExists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDos policy") } resourceType := items[0] policyId := items[1] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribeDdosPolicy(ctx, resourceType, policyId) if err != nil { diff --git a/tencentcloud/resource_tc_dayu_l4_rule.go b/tencentcloud/services/dayu/resource_tc_dayu_l4_rule.go similarity index 81% rename from tencentcloud/resource_tc_dayu_l4_rule.go rename to tencentcloud/services/dayu/resource_tc_dayu_l4_rule.go index 94fafe7c54..0d44089d4c 100644 --- a/tencentcloud/resource_tc_dayu_l4_rule.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_l4_rule.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu import ( "context" @@ -6,13 +6,16 @@ import ( "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDayuL4Rule() *schema.Resource { +func ResourceTencentCloudDayuL4Rule() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuL4RuleCreate, Read: resourceTencentCloudDayuL4RuleRead, @@ -29,7 +32,7 @@ func resourceTencentCloudDayuL4Rule() *schema.Resource { "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE_RULE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE_RULE), ForceNew: true, Description: "Type of the resource that the layer 4 rule works for. Valid values: `bgpip` and `net`.", }, @@ -37,7 +40,7 @@ func resourceTencentCloudDayuL4Rule() *schema.Resource { Type: schema.TypeInt, Required: true, ForceNew: true, - ValidateFunc: validateAllowedIntValue(DAYU_L7_RULE_SOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedIntValue(DAYU_L7_RULE_SOURCE_TYPE), Description: "Source type, `1` for source of host, `2` for source of IP.", }, "name": { @@ -49,19 +52,19 @@ func resourceTencentCloudDayuL4Rule() *schema.Resource { "s_port": { Type: schema.TypeInt, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "The source port of the L4 rule.", }, "d_port": { Type: schema.TypeInt, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "The destination port of the L4 rule.", }, "protocol": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_L4_RULE_PROTOCOL), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_L4_RULE_PROTOCOL), Description: "Protocol of the rule. Valid values: `http`, `https`. When `source_type` is 1(host source), the value of this field can only set with `tcp`.", }, "source_list": { @@ -77,7 +80,7 @@ func resourceTencentCloudDayuL4Rule() *schema.Resource { "weight": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 100), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 100), Description: "Weight of the source, the valid value ranges from 0 to 100.", }, }, @@ -96,28 +99,28 @@ func resourceTencentCloudDayuL4Rule() *schema.Resource { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(10, 60), + ValidateFunc: tccommon.ValidateIntegerInRange(10, 60), Description: "Interval time of health check. The value range is 10-60 sec, and the default is 15 sec.", }, "health_check_health_num": { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(2, 10), + ValidateFunc: tccommon.ValidateIntegerInRange(2, 10), Description: "Health threshold of health check, and the default is 3. If a success result is returned for the health check 3 consecutive times, indicates that the forwarding is normal. The value range is 2-10.", }, "health_check_unhealth_num": { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(2, 10), + ValidateFunc: tccommon.ValidateIntegerInRange(2, 10), Description: "Unhealthy threshold of health check, and the default is 3. If the unhealthy result is returned 3 consecutive times, indicates that the forwarding is abnormal. The value range is 2-10.", }, "health_check_timeout": { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(2, 60), + ValidateFunc: tccommon.ValidateIntegerInRange(2, 60), Description: "HTTP Status Code. The default is 26 and value range is 2-60.", }, "session_switch": { @@ -130,7 +133,7 @@ func resourceTencentCloudDayuL4Rule() *schema.Resource { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(1, 300), + ValidateFunc: tccommon.ValidateIntegerInRange(1, 300), Description: "Session keep time, only valid when `session_switch` is true, the available value ranges from 1 to 300 and unit is second.", }, //computed @@ -149,10 +152,10 @@ func resourceTencentCloudDayuL4Rule() *schema.Resource { } func resourceTencentCloudDayuL4RuleCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceId := d.Get("resource_id").(string) resourceType := d.Get("resource_type").(string) @@ -211,13 +214,13 @@ func resourceTencentCloudDayuL4RuleCreate(d *schema.ResourceData, meta interface rule.SourceList = append(rule.SourceList, &l4RuleSource) } - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ruleId := "" - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := dayuService.CreateL4Rule(ctx, resourceType, resourceId, rule) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } ruleId = result return nil @@ -227,7 +230,7 @@ func resourceTencentCloudDayuL4RuleCreate(d *schema.ResourceData, meta interface return err } - d.SetId(resourceType + FILED_SP + resourceId + FILED_SP + ruleId) + d.SetId(resourceType + tccommon.FILED_SP + resourceId + tccommon.FILED_SP + ruleId) //set health check var healthCheck dayu.L4HealthConfig @@ -239,10 +242,10 @@ func resourceTencentCloudDayuL4RuleCreate(d *schema.ResourceData, meta interface healthCheck.TimeOut = helper.IntUint64(d.Get("health_check_timeout").(int)) healthCheck.VirtualPort = helper.IntUint64(destPort) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.SetL4Health(ctx, resourceType, resourceId, healthCheck) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -261,10 +264,10 @@ func resourceTencentCloudDayuL4RuleCreate(d *schema.ResourceData, meta interface return fmt.Errorf("`session_time` should be set when `session_switch` is true.") } - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.SetSession(ctx, resourceType, resourceId, ruleId, sessionFlag, sessionTime) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -277,12 +280,12 @@ func resourceTencentCloudDayuL4RuleCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudDayuL4RuleUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu L4 rule") } @@ -316,7 +319,7 @@ func resourceTencentCloudDayuL4RuleUpdate(d *schema.ResourceData, meta interface } } - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ruleFlag := false ruleKey := []string{"s_port", "d_port", "protocol", "source_list"} @@ -349,10 +352,10 @@ func resourceTencentCloudDayuL4RuleUpdate(d *schema.ResourceData, meta interface rule.SourceList = append(rule.SourceList, &l4RuleSource) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.ModifyL4Rule(ctx, resourceType, resourceId, rule) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -386,10 +389,10 @@ func resourceTencentCloudDayuL4RuleUpdate(d *schema.ResourceData, meta interface healthCheck.TimeOut = helper.IntUint64(d.Get("health_check_timeout").(int)) healthCheck.VirtualPort = helper.IntUint64(d.Get("d_port").(int)) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.SetL4Health(ctx, resourceType, resourceId, healthCheck) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -410,10 +413,10 @@ func resourceTencentCloudDayuL4RuleUpdate(d *schema.ResourceData, meta interface return fmt.Errorf("`session_time` should be set when `session_switch` is true.") } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.SetSession(ctx, resourceType, resourceId, ruleId, sessionFlag, sessionTime) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -430,12 +433,12 @@ func resourceTencentCloudDayuL4RuleUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudDayuL4RuleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule.read")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu L4 rule") } @@ -443,15 +446,15 @@ func resourceTencentCloudDayuL4RuleRead(d *schema.ResourceData, meta interface{} resourceId := items[1] ruleId := items[2] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} //set rule rule, health, has, err := dayuService.DescribeL4Rule(ctx, resourceType, resourceId, ruleId) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { rule, health, has, err = dayuService.DescribeL4Rule(ctx, resourceType, resourceId, ruleId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -489,12 +492,12 @@ func resourceTencentCloudDayuL4RuleRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudDayuL4RuleDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of L4 rule") } @@ -502,12 +505,12 @@ func resourceTencentCloudDayuL4RuleDelete(d *schema.ResourceData, meta interface resourceId := items[1] ruleId := items[2] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.DeleteL4Rule(ctx, resourceType, resourceId, ruleId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -518,10 +521,10 @@ func resourceTencentCloudDayuL4RuleDelete(d *schema.ResourceData, meta interface _, _, has, err := dayuService.DescribeL4Rule(ctx, resourceType, resourceId, ruleId) if err != nil || has { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, _, has, err = dayuService.DescribeL4Rule(ctx, resourceType, resourceId, ruleId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if has { diff --git a/tencentcloud/resource_tc_dayu_l4_rule_test.go b/tencentcloud/services/dayu/resource_tc_dayu_l4_rule_test.go similarity index 86% rename from tencentcloud/resource_tc_dayu_l4_rule_test.go rename to tencentcloud/services/dayu/resource_tc_dayu_l4_rule_test.go index 62bc6c07b0..1824dac417 100644 --- a/tencentcloud/resource_tc_dayu_l4_rule_test.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_l4_rule_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dayu_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdayu "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayu" + "context" "fmt" "strings" @@ -18,12 +22,12 @@ var testDayuL4RuleResourceKeyUdp = testDayuL4RuleResourceNameUdp + ".test_rule" func TestAccTencentCloudDayuL4RuleResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuL4RuleDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDayuL4Rule, defaultDayuBgpIp), + Config: fmt.Sprintf(testAccDayuL4Rule, tcacctest.DefaultDayuBgpIp), Check: resource.ComposeTestCheckFunc( testAccCheckDayuL4RuleExists(testDayuL4RuleResourceKey), resource.TestCheckResourceAttrSet(testDayuL4RuleResourceKey, "rule_id"), @@ -45,7 +49,7 @@ func TestAccTencentCloudDayuL4RuleResource(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccDayuL4RuleUpdate, defaultDayuBgpIp), + Config: fmt.Sprintf(testAccDayuL4RuleUpdate, tcacctest.DefaultDayuBgpIp), Check: resource.ComposeTestCheckFunc( testAccCheckDayuL4RuleExists(testDayuL4RuleResourceKey), testAccCheckDayuL4RuleExists(testDayuL4RuleResourceKey), @@ -74,12 +78,12 @@ func TestAccTencentCloudDayuL4RuleResource(t *testing.T) { func TestAccTencentCloudDayuL4RuleResource_UDP(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuL4RuleDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDayuL4Rule_udp, defaultDayuNet), + Config: fmt.Sprintf(testAccDayuL4Rule_udp, tcacctest.DefaultDayuNet), Check: resource.ComposeTestCheckFunc( testAccCheckDayuL4RuleExists(testDayuL4RuleResourceKeyUdp), resource.TestCheckResourceAttrSet(testDayuL4RuleResourceKeyUdp, "rule_id"), @@ -108,10 +112,10 @@ func testAccCheckDayuL4RuleDestroy(s *terraform.State) error { if rs.Type != testDayuL4RuleResourceName { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of L4 rule") } @@ -119,7 +123,7 @@ func testAccCheckDayuL4RuleDestroy(s *terraform.State) error { resourceId := items[1] ruleId := items[2] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, _, has, err := service.DescribeL4Rule(ctx, resourceType, resourceId, ruleId) if err != nil { @@ -143,10 +147,10 @@ func testAccCheckDayuL4RuleExists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of L4 rule") } @@ -154,7 +158,7 @@ func testAccCheckDayuL4RuleExists(n string) resource.TestCheckFunc { resourceId := items[1] ruleId := items[2] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, _, has, err := service.DescribeL4Rule(ctx, resourceType, resourceId, ruleId) if err != nil { diff --git a/tencentcloud/resource_tc_dayu_l7_rule.go b/tencentcloud/services/dayu/resource_tc_dayu_l7_rule.go similarity index 84% rename from tencentcloud/resource_tc_dayu_l7_rule.go rename to tencentcloud/services/dayu/resource_tc_dayu_l7_rule.go index eacd17b59b..a476022a66 100644 --- a/tencentcloud/resource_tc_dayu_l7_rule.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_l7_rule.go @@ -1,17 +1,20 @@ -package tencentcloud +package dayu import ( "context" "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDayuL7Rule() *schema.Resource { +func ResourceTencentCloudDayuL7Rule() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuL7RuleCreate, Read: resourceTencentCloudDayuL7RuleRead, @@ -28,7 +31,7 @@ func resourceTencentCloudDayuL7Rule() *schema.Resource { "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), ForceNew: true, Description: "Type of the resource that the layer 7 rule works for, valid value is `bgpip`.", }, @@ -36,13 +39,13 @@ func resourceTencentCloudDayuL7Rule() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateStringLengthInRange(0, 80), + ValidateFunc: tccommon.ValidateStringLengthInRange(0, 80), Description: "Domain that the layer 7 rule works for. Valid string length ranges from 0 to 80.", }, "protocol": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_L7_RULE_PROTOCOL), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_L7_RULE_PROTOCOL), Description: "Protocol of the rule. Valid values: `http`, `https`.", }, "name": { @@ -59,7 +62,7 @@ func resourceTencentCloudDayuL7Rule() *schema.Resource { "source_type": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateAllowedIntValue(DAYU_L7_RULE_SOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedIntValue(DAYU_L7_RULE_SOURCE_TYPE), Description: "Source type, `1` for source of host, `2` for source of IP.", }, "source_list": { @@ -88,28 +91,28 @@ func resourceTencentCloudDayuL7Rule() *schema.Resource { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(10, 60), + ValidateFunc: tccommon.ValidateIntegerInRange(10, 60), Description: "Interval time of health check. Valid value ranges: [10~60]sec. The default is 15 sec.", }, "health_check_health_num": { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(2, 10), + ValidateFunc: tccommon.ValidateIntegerInRange(2, 10), Description: "Health threshold of health check, and the default is `3`. If a success result is returned for the health check 3 consecutive times, indicates that the forwarding is normal. The value range is [2-10].", }, "health_check_unhealth_num": { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(2, 10), + ValidateFunc: tccommon.ValidateIntegerInRange(2, 10), Description: "Unhealthy threshold of health check, and the default is `3`. If the unhealthy result is returned 3 consecutive times, indicates that the forwarding is abnormal. The value range is [2-10].", }, "health_check_code": { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateIntegerInRange(1, 31), + ValidateFunc: tccommon.ValidateIntegerInRange(1, 31), Description: "HTTP Status Code. The default is `26`. Valid value ranges: [1~31]. `1` means the return value '1xx' is health. `2` means the return value '2xx' is health. `4` means the return value '3xx' is health. `8` means the return value '4xx' is health. `16` means the return value '5xx' is health. If you want multiple return codes to indicate health, need to add the corresponding values.", }, "health_check_path": { @@ -122,7 +125,7 @@ func resourceTencentCloudDayuL7Rule() *schema.Resource { Type: schema.TypeString, Optional: true, Computed: true, - ValidateFunc: validateAllowedStringValue(DAYU_RULE_METHOD), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RULE_METHOD), Description: "Methods of health check. The default is 'HEAD', the available value are 'HEAD' and 'GET'.", }, //computed @@ -141,10 +144,10 @@ func resourceTencentCloudDayuL7Rule() *schema.Resource { } func resourceTencentCloudDayuL7RuleCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l7_rule.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l7_rule.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceId := d.Get("resource_id").(string) resourceType := d.Get("resource_type").(string) @@ -192,13 +195,13 @@ func resourceTencentCloudDayuL7RuleCreate(d *schema.ResourceData, meta interface rule.SourceList = append(rule.SourceList, &l4RuleSource) } - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ruleId := "" - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := dayuService.CreateL7Rule(ctx, resourceType, resourceId, rule) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } ruleId = result return nil @@ -208,7 +211,7 @@ func resourceTencentCloudDayuL7RuleCreate(d *schema.ResourceData, meta interface return err } - d.SetId(resourceType + FILED_SP + resourceId + FILED_SP + ruleId) + d.SetId(resourceType + tccommon.FILED_SP + resourceId + tccommon.FILED_SP + ruleId) readyFlag, rErr := checkL7RuleStatus(meta, resourceType, resourceId, ruleId, "create") if rErr != nil { @@ -230,10 +233,10 @@ func resourceTencentCloudDayuL7RuleCreate(d *schema.ResourceData, meta interface healthCheck.AliveNum = helper.IntUint64(d.Get("health_check_health_num").(int)) healthCheck.StatusCode = helper.IntUint64(d.Get("health_check_code").(int)) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.SetL7Health(ctx, resourceType, resourceId, healthCheck) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -253,10 +256,10 @@ func resourceTencentCloudDayuL7RuleCreate(d *schema.ResourceData, meta interface //set switch switchFlag := d.Get("switch").(bool) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.SetRuleSwitch(ctx, resourceType, resourceId, ruleId, switchFlag, protocol) if e != nil { - return retryError(e, InternalError) + return tccommon.RetryError(e, tccommon.InternalError) } return nil }) @@ -278,12 +281,12 @@ func resourceTencentCloudDayuL7RuleCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudDayuL7RuleUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l7_rule.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l7_rule.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu L7 rule") } @@ -295,7 +298,7 @@ func resourceTencentCloudDayuL7RuleUpdate(d *schema.ResourceData, meta interface sourceList := d.Get("source_list").(*schema.Set).List() d.Partial(true) - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ruleFlag := false ruleKey := []string{"protocol", "source_type", "source_list", "ssl_id"} @@ -339,10 +342,10 @@ func resourceTencentCloudDayuL7RuleUpdate(d *schema.ResourceData, meta interface rule.SourceList = append(rule.SourceList, &l4RuleSource) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.ModifyL7Rule(ctx, resourceType, resourceId, rule) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -389,10 +392,10 @@ func resourceTencentCloudDayuL7RuleUpdate(d *schema.ResourceData, meta interface healthCheck.AliveNum = helper.IntUint64(d.Get("health_check_health_num").(int)) healthCheck.StatusCode = helper.IntUint64(d.Get("health_check_code").(int)) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.SetL7Health(ctx, resourceType, resourceId, healthCheck) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -429,10 +432,10 @@ func resourceTencentCloudDayuL7RuleUpdate(d *schema.ResourceData, meta interface } if protocol != "" { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.SetRuleSwitch(ctx, resourceType, resourceId, ruleId, switchFlag, protocol) if e != nil { - return retryError(e, InternalError) + return tccommon.RetryError(e, tccommon.InternalError) } return nil }) @@ -459,13 +462,13 @@ func resourceTencentCloudDayuL7RuleUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudDayuL7RuleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l7_rule.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l7_rule.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu L7 rule") } @@ -473,15 +476,15 @@ func resourceTencentCloudDayuL7RuleRead(d *schema.ResourceData, meta interface{} resourceId := items[1] ruleId := items[2] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} //set rule rule, health, has, err := dayuService.DescribeL7Rule(ctx, resourceType, resourceId, ruleId) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { rule, health, has, err = dayuService.DescribeL7Rule(ctx, resourceType, resourceId, ruleId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -529,12 +532,12 @@ func resourceTencentCloudDayuL7RuleRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudDayuL7RuleDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l7_rule.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l7_rule.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of L7 rule") } @@ -542,12 +545,12 @@ func resourceTencentCloudDayuL7RuleDelete(d *schema.ResourceData, meta interface resourceId := items[1] ruleId := items[2] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.DeleteL7Rule(ctx, resourceType, resourceId, ruleId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -568,17 +571,17 @@ func resourceTencentCloudDayuL7RuleDelete(d *schema.ResourceData, meta interface } func checkL7RuleStatus(meta interface{}, resourceType string, resourceId string, ruleId string, checkType string) (status bool, errRrt error) { - defer logElapsed("resource.tencentcloud_dayu_l7_rule.check_status")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l7_rule.check_status")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { sRule, health, has, err := dayuService.DescribeL7Rule(ctx, resourceType, resourceId, ruleId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if has { diff --git a/tencentcloud/resource_tc_dayu_l7_rule_test.go b/tencentcloud/services/dayu/resource_tc_dayu_l7_rule_test.go similarity index 81% rename from tencentcloud/resource_tc_dayu_l7_rule_test.go rename to tencentcloud/services/dayu/resource_tc_dayu_l7_rule_test.go index 127668014a..a2c44f46a3 100644 --- a/tencentcloud/resource_tc_dayu_l7_rule_test.go +++ b/tencentcloud/services/dayu/resource_tc_dayu_l7_rule_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu_test import ( "context" @@ -6,8 +6,13 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcdayu "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayu" ) var testDayuL7RuleResourceName = "tencentcloud_dayu_l7_rule" @@ -16,12 +21,12 @@ var testDayuL7RuleResourceKey = testDayuL7RuleResourceName + ".test_rule" func TestAccTencentCloudDayuL7RuleResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuL7RuleDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDayuL7Rule, defaultDayuBgpIp, defaultSshCertificate), + Config: fmt.Sprintf(testAccDayuL7Rule, tcacctest.DefaultDayuBgpIp, tcacctest.DefaultSshCertificate), Check: resource.ComposeTestCheckFunc( testAccCheckDayuL7RuleExists(testDayuL7RuleResourceKey), resource.TestCheckResourceAttrSet(testDayuL7RuleResourceKey, "rule_id"), @@ -32,7 +37,7 @@ func TestAccTencentCloudDayuL7RuleResource(t *testing.T) { resource.TestCheckResourceAttr(testDayuL7RuleResourceKey, "source_list.#", "2"), resource.TestCheckResourceAttr(testDayuL7RuleResourceKey, "switch", "true"), resource.TestCheckResourceAttr(testDayuL7RuleResourceKey, "protocol", "https"), - resource.TestCheckResourceAttr(testDayuL7RuleResourceKey, "ssl_id", defaultSshCertificate), + resource.TestCheckResourceAttr(testDayuL7RuleResourceKey, "ssl_id", tcacctest.DefaultSshCertificate), resource.TestCheckResourceAttr(testDayuL7RuleResourceKey, "health_check_code", "31"), resource.TestCheckResourceAttr(testDayuL7RuleResourceKey, "health_check_switch", "true"), resource.TestCheckResourceAttr(testDayuL7RuleResourceKey, "health_check_interval", "30"), @@ -43,7 +48,7 @@ func TestAccTencentCloudDayuL7RuleResource(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccDayuL7RuleUpdate, defaultDayuBgpIp), + Config: fmt.Sprintf(testAccDayuL7RuleUpdate, tcacctest.DefaultDayuBgpIp), Check: resource.ComposeTestCheckFunc( testAccCheckDayuL7RuleExists(testDayuL7RuleResourceKey), testAccCheckDayuL7RuleExists(testDayuL7RuleResourceKey), @@ -66,10 +71,10 @@ func testAccCheckDayuL7RuleDestroy(s *terraform.State) error { if rs.Type != testDayuL7RuleResourceName { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of L7 rule") } @@ -77,7 +82,7 @@ func testAccCheckDayuL7RuleDestroy(s *terraform.State) error { resourceId := items[1] ruleId := items[2] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, _, has, err := service.DescribeL7Rule(ctx, resourceType, resourceId, ruleId) if err != nil { @@ -101,10 +106,10 @@ func testAccCheckDayuL7RuleExists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of L7 rule") } @@ -112,7 +117,7 @@ func testAccCheckDayuL7RuleExists(n string) resource.TestCheckFunc { resourceId := items[1] ruleId := items[2] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayu.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, _, has, err := service.DescribeL7Rule(ctx, resourceType, resourceId, ruleId) if err != nil { diff --git a/tencentcloud/service_tencentcloud_dayu.go b/tencentcloud/services/dayu/service_tencentcloud_dayu.go similarity index 97% rename from tencentcloud/service_tencentcloud_dayu.go rename to tencentcloud/services/dayu/service_tencentcloud_dayu.go index 0df37b10fa..c560f8e285 100644 --- a/tencentcloud/service_tencentcloud_dayu.go +++ b/tencentcloud/services/dayu/service_tencentcloud_dayu.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayu import ( "context" @@ -6,22 +6,29 @@ import ( "log" "net/url" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/pkg/errors" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" sdkError "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewDayuService(client *connectivity.TencentCloudClient) DayuService { + return DayuService{client: client} +} + type DayuService struct { client *connectivity.TencentCloudClient } func (me *DayuService) DescribeCCSelfdefinePolicies(ctx context.Context, resourceType string, resourceId string, policyName string, policyId string) (infos []*dayu.CCPolicy, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribeCCSelfDefinePolicyRequest() infos = make([]*dayu.CCPolicy, 0, 100) @@ -83,7 +90,7 @@ func (me *DayuService) DescribeCCSelfdefinePolicies(ctx context.Context, resourc } func (me *DayuService) DescribeCCSelfdefinePolicy(ctx context.Context, resourceType string, resourceId string, policyId string) (infos *dayu.CCPolicy, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribeCCSelfDefinePolicyRequest() defer func() { @@ -112,7 +119,7 @@ func (me *DayuService) DescribeCCSelfdefinePolicy(ctx context.Context, resourceT } func (me *DayuService) CreateCCSelfdefinePolicy(ctx context.Context, resourceType string, resourceId string, ccPolicy dayu.CCPolicy) (policyId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewCreateCCSelfDefinePolicyRequest() defer func() { if errRet != nil { @@ -158,7 +165,7 @@ func (me *DayuService) CreateCCSelfdefinePolicy(ctx context.Context, resourceTyp } func (me *DayuService) ModifyCCSelfdefinePolicy(ctx context.Context, resourceType string, resourceId string, policyId string, ccPolicy dayu.CCPolicy) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyCCSelfDefinePolicyRequest() defer func() { if errRet != nil { @@ -191,7 +198,7 @@ func (me *DayuService) ModifyCCSelfdefinePolicy(ctx context.Context, resourceTyp func (me *DayuService) DeleteCCSelfdefinePolicy(ctx context.Context, resourceType string, resourceId string, policyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDeleteCCSelfDefinePolicyRequest() defer func() { if errRet != nil { @@ -221,7 +228,7 @@ func (me *DayuService) DeleteCCSelfdefinePolicy(ctx context.Context, resourceTyp } func (me *DayuService) CreateDdosPolicy(ctx context.Context, resourceType string, name string, ddosPolicyDropOption []*dayu.DDoSPolicyDropOption, ddosPolicyPortLimit []*dayu.DDoSPolicyPortLimit, ipBlackWhite []*dayu.IpBlackWhite, ddosPacketFilter []*dayu.DDoSPolicyPacketFilter, waterPrintPolicy []*dayu.WaterPrintPolicy) (policyId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewCreateDDoSPolicyRequest() defer func() { if errRet != nil { @@ -256,7 +263,7 @@ func (me *DayuService) CreateDdosPolicy(ctx context.Context, resourceType string } func (me *DayuService) DescribeDdosPolicies(ctx context.Context, resourceType string, policyId string) (ddosPolicies []*dayu.DDosPolicy, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribeDDoSPolicyRequest() ddosPolicies = make([]*dayu.DDosPolicy, 0, 100) @@ -301,7 +308,7 @@ func (me *DayuService) DescribeDdosPolicies(ctx context.Context, resourceType st } func (me *DayuService) DescribeDdosPolicy(ctx context.Context, resourceType string, policyId string) (ddosPolicy dayu.DDosPolicy, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribeDDoSPolicyRequest() defer func() { if errRet != nil { @@ -613,7 +620,7 @@ func setWaterPrintPolicy(mapping []interface{}) (result []*dayu.WaterPrintPolicy func (me *DayuService) DeleteDdosPolicy(ctx context.Context, resourceType string, policyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDeleteDDoSPolicyRequest() defer func() { if errRet != nil { @@ -642,7 +649,7 @@ func (me *DayuService) DeleteDdosPolicy(ctx context.Context, resourceType string } func (me *DayuService) ModifyDdosPolicy(ctx context.Context, resourceType string, policyId string, ddosPolicyDropOption []*dayu.DDoSPolicyDropOption, ddosPolicyPortLimit []*dayu.DDoSPolicyPortLimit, ipBlackWhite []*dayu.IpBlackWhite, ddosPacketFilter []*dayu.DDoSPolicyPacketFilter, waterPrintPolicy []*dayu.WaterPrintPolicy) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyDDoSPolicyRequest() defer func() { if errRet != nil { @@ -678,7 +685,7 @@ func (me *DayuService) ModifyDdosPolicy(ctx context.Context, resourceType string } func (me *DayuService) ModifyDdosPolicyName(ctx context.Context, resourceType string, policyId string, name string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyDDoSPolicyNameRequest() defer func() { if errRet != nil { @@ -710,7 +717,7 @@ func (me *DayuService) ModifyDdosPolicyName(ctx context.Context, resourceType st } func (me *DayuService) CreateDdosPolicyCase(ctx context.Context, request *dayu.CreateDDoSPolicyCaseRequest) (sceneId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { @@ -738,7 +745,7 @@ func (me *DayuService) CreateDdosPolicyCase(ctx context.Context, request *dayu.C } func (me *DayuService) DescribeDdosPolicyCase(ctx context.Context, resourceType string, sceneId string) (ddosPolicyCase dayu.KeyValueRecord, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribePolicyCaseRequest() defer func() { if errRet != nil { @@ -780,7 +787,7 @@ func (me *DayuService) DescribeDdosPolicyCase(ctx context.Context, resourceType func (me *DayuService) DeleteDdosPolicyCase(ctx context.Context, resourceType string, sceneId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDeleteDDoSPolicyCaseRequest() defer func() { if errRet != nil { @@ -818,7 +825,7 @@ func (me *DayuService) DeleteDdosPolicyCase(ctx context.Context, resourceType st } func (me *DayuService) ModifyDdosPolicyCase(ctx context.Context, request *dayu.ModifyDDoSPolicyCaseRequest) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) @@ -846,7 +853,7 @@ func (me *DayuService) ModifyDdosPolicyCase(ctx context.Context, request *dayu.M } func (me *DayuService) DescribeDdosPolicyAttachments(ctx context.Context, resourceId string, resourceType string, policyId string) (attachments []map[string]interface{}, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribeDDoSPolicyRequest() defer func() { if errRet != nil { @@ -894,7 +901,7 @@ func (me *DayuService) DescribeDdosPolicyAttachments(ctx context.Context, resour } func (me *DayuService) BindDdosPolicy(ctx context.Context, resourceId string, resourceType string, policyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyResBindDDoSPolicyRequest() request.PolicyId = &policyId request.Business = &resourceType @@ -928,7 +935,7 @@ func (me *DayuService) BindDdosPolicy(ctx context.Context, resourceId string, re } func (me *DayuService) UnbindDdosPolicy(ctx context.Context, resourceId string, resourceType string, policyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyResBindDDoSPolicyRequest() request.PolicyId = &policyId request.Business = &resourceType @@ -966,7 +973,7 @@ func (me *DayuService) UnbindDdosPolicy(ctx context.Context, resourceId string, } func (me *DayuService) DescribeL7Rules(ctx context.Context, resourceType string, resourceId string, ruleDomain string, ruleId string, protocol string) (infos []*dayu.L7RuleEntry, healths []*dayu.L7RuleHealth, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribleL7RulesRequest() infos = make([]*dayu.L7RuleEntry, 0, 100) @@ -1063,7 +1070,7 @@ func (me *DayuService) DescribeL7Rule(ctx context.Context, resourceType string, } func (me *DayuService) SetL7Health(ctx context.Context, resourceType string, resourceId string, healthCheck dayu.L7HealthConfig) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewCreateL7HealthConfigRequest() defer func() { if errRet != nil { @@ -1094,7 +1101,7 @@ func (me *DayuService) SetL7Health(ctx context.Context, resourceType string, res } func (me *DayuService) DescribeL7Health(ctx context.Context, resourceType string, resourceId string, ruleId string) (healthCheck *dayu.L7HealthConfig, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribeL7HealthConfigRequest() defer func() { @@ -1139,7 +1146,7 @@ func (me *DayuService) DescribeL7Health(ctx context.Context, resourceType string } func (me *DayuService) CreateL7Rule(ctx context.Context, resourceType string, resourceId string, rule dayu.L7RuleEntry) (ruleId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewCreateL7RulesRequest() defer func() { if errRet != nil { @@ -1184,7 +1191,7 @@ func (me *DayuService) CreateL7Rule(ctx context.Context, resourceType string, re } func (me *DayuService) ModifyL7Rule(ctx context.Context, resourceType string, resourceId string, rule dayu.L7RuleEntry) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyL7RulesRequest() defer func() { if errRet != nil { @@ -1228,7 +1235,7 @@ func flattenSourceList(list []*dayu.L4RuleSource) (re []map[string]interface{}) } func (me *DayuService) DeleteL7Rule(ctx context.Context, resourceType string, resourceId string, ruleId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDeleteL7RulesRequest() defer func() { if errRet != nil { @@ -1259,7 +1266,7 @@ func (me *DayuService) DeleteL7Rule(ctx context.Context, resourceType string, re } func (me *DayuService) SetRuleSwitch(ctx context.Context, resourceType string, resourceId string, ruleId string, switchFlag bool, protocol string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) if protocol == DAYU_L7_RULE_PROTOCOL_HTTP { request := dayu.NewModifyCCHostProtectionRequest() defer func() { @@ -1329,7 +1336,7 @@ func (me *DayuService) SetRuleSwitch(ctx context.Context, resourceType string, r return } func (me *DayuService) DescribeNewL4Rules(ctx context.Context, business string, extendParams map[string]interface{}) (infos []*dayu.NewL4RuleEntry, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribeNewL4RulesRequest() defer func() { if errRet != nil { @@ -1360,7 +1367,7 @@ func (me *DayuService) DescribeNewL4Rules(ctx context.Context, business string, } func (me *DayuService) DeleteNewL4Rules(ctx context.Context, business string, id string, ip string, ruleIds []string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDeleteNewL4RulesRequest() defer func() { if errRet != nil { @@ -1397,7 +1404,7 @@ func (me *DayuService) DeleteNewL4Rules(ctx context.Context, business string, id } func (me *DayuService) ModifyNewL4Rule(ctx context.Context, business string, id string, singleRule interface{}) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyNewL4RuleRequest() defer func() { if errRet != nil { @@ -1458,7 +1465,7 @@ func (me *DayuService) ModifyNewL4Rule(ctx context.Context, business string, id } func (me *DayuService) CreateNewL4Rules(ctx context.Context, business string, id string, vip string, ruleList []interface{}) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewCreateNewL4RulesRequest() defer func() { if errRet != nil { @@ -1523,7 +1530,7 @@ func (me *DayuService) CreateNewL4Rules(ctx context.Context, business string, id } func (me *DayuService) DescribeL4Rules(ctx context.Context, resourceType string, resourceId string, ruleName string, ruleId string) (infos []*dayu.L4RuleEntry, healths []*dayu.L4RuleHealth, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribleL4RulesRequest() infos = make([]*dayu.L4RuleEntry, 0, 100) @@ -1618,7 +1625,7 @@ func (me *DayuService) DescribeL4Rule(ctx context.Context, resourceType string, } func (me *DayuService) SetL4Health(ctx context.Context, resourceType string, resourceId string, healthCheck dayu.L4HealthConfig) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewCreateL4HealthConfigRequest() defer func() { if errRet != nil { @@ -1649,7 +1656,7 @@ func (me *DayuService) SetL4Health(ctx context.Context, resourceType string, res } func (me *DayuService) DescribeL4Health(ctx context.Context, resourceType string, resourceId string, ruleId string) (healthCheck *dayu.L4HealthConfig, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribeL4HealthConfigRequest() defer func() { @@ -1687,7 +1694,7 @@ func (me *DayuService) DescribeL4Health(ctx context.Context, resourceType string } func (me *DayuService) CreateL4Rule(ctx context.Context, resourceType string, resourceId string, rule dayu.L4RuleEntry) (ruleId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewCreateL4RulesRequest() defer func() { if errRet != nil { @@ -1733,7 +1740,7 @@ func (me *DayuService) CreateL4Rule(ctx context.Context, resourceType string, re } func (me *DayuService) ModifyL4Rule(ctx context.Context, resourceType string, resourceId string, rule dayu.L4RuleEntry) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyL4RulesRequest() defer func() { if errRet != nil { @@ -1764,7 +1771,7 @@ func (me *DayuService) ModifyL4Rule(ctx context.Context, resourceType string, re } func (me *DayuService) DeleteL4Rule(ctx context.Context, resourceType string, resourceId string, ruleId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDeleteL4RulesRequest() defer func() { if errRet != nil { @@ -1795,7 +1802,7 @@ func (me *DayuService) DeleteL4Rule(ctx context.Context, resourceType string, re } func (me *DayuService) SetSession(ctx context.Context, resourceType string, resourceId string, ruleId string, switchFlag bool, sessionTime int) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyL4KeepTimeRequest() defer func() { if errRet != nil { @@ -1828,7 +1835,7 @@ func (me *DayuService) SetSession(ctx context.Context, resourceType string, reso } func (me *DayuService) DescribeL7RulesV2(ctx context.Context, business string, extendParams map[string]interface{}) (rules []*dayu.NewL7RuleEntry, healths []*dayu.L7RuleHealth, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDescribleNewL7RulesRequest() defer func() { @@ -1893,7 +1900,7 @@ func (me *DayuService) DescribeL7RulesV2(ctx context.Context, business string, e } func (me *DayuService) CreateL7RuleV2(ctx context.Context, business string, resourceId string, resourceIp string, ruleList []interface{}) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewCreateNewL7RulesRequest() defer func() { if errRet != nil { @@ -1943,7 +1950,7 @@ func (me *DayuService) CreateL7RuleV2(ctx context.Context, business string, reso request.VipList = []*string{&resourceIp} request.Business = &business request.Rules = []*dayu.L7RuleEntry{&ruleEntry} - errRet = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, errRet := me.client.UseDayuClient().CreateNewL7Rules(request) @@ -1965,7 +1972,7 @@ func (me *DayuService) CreateL7RuleV2(ctx context.Context, business string, reso } func (me *DayuService) ModifyL7RuleV2(ctx context.Context, resourceType string, resourceId string, rule *dayu.NewL7RuleEntry) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewModifyNewDomainRulesRequest() defer func() { if errRet != nil { @@ -1976,7 +1983,7 @@ func (me *DayuService) ModifyL7RuleV2(ctx context.Context, resourceType string, request.Business = &resourceType request.Rule = rule - errRet = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, errRet := me.client.UseDayuClient().ModifyNewDomainRules(request) @@ -1999,7 +2006,7 @@ func (me *DayuService) ModifyL7RuleV2(ctx context.Context, resourceType string, } func (me *DayuService) DeleteL7RulesV2(ctx context.Context, resourceType string, resourceId string, resourceIp string, ruleId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dayu.NewDeleteNewL7RulesRequest() defer func() { if errRet != nil { @@ -2014,7 +2021,7 @@ func (me *DayuService) DeleteL7RulesV2(ctx context.Context, resourceType string, RuleIdList: []*string{&ruleId}, }, } - errRet = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, errRet := me.client.UseDayuClient().DeleteNewL7Rules(request) diff --git a/tencentcloud/data_source_tc_antiddos_overview_cc_trend.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_cc_trend.go similarity index 82% rename from tencentcloud/data_source_tc_antiddos_overview_cc_trend.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_cc_trend.go index fe2fbc7d97..33429d2592 100644 --- a/tencentcloud/data_source_tc_antiddos_overview_cc_trend.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_cc_trend.go @@ -1,15 +1,18 @@ -package tencentcloud +package dayuv2 import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudAntiddosOverviewCcTrend() *schema.Resource { +func DataSourceTencentCloudAntiddosOverviewCcTrend() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudAntiddosOverviewCcTrendRead, Schema: map[string]*schema.Schema{ @@ -71,12 +74,12 @@ func dataSourceTencentCloudAntiddosOverviewCcTrend() *schema.Resource { } func dataSourceTencentCloudAntiddosOverviewCcTrendRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_antiddos_overview_cc_trend.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_antiddos_overview_cc_trend.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, _ := d.GetOk("period"); v != nil { @@ -104,13 +107,13 @@ func dataSourceTencentCloudAntiddosOverviewCcTrendRead(d *schema.ResourceData, m paramMap["IpList"] = helper.InterfacesStringsPoint(ipListSet) } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var overviewCCTrendResponseParams *antiddos.DescribeOverviewCCTrendResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeAntiddosOverviewCcTrendByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } overviewCCTrendResponseParams = result return nil @@ -128,7 +131,7 @@ func dataSourceTencentCloudAntiddosOverviewCcTrendRead(d *schema.ResourceData, m } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), resultMap); e != nil { + if e := tccommon.WriteToFile(output.(string), resultMap); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_antiddos_overview_cc_trend_test.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_cc_trend_test.go similarity index 67% rename from tencentcloud/data_source_tc_antiddos_overview_cc_trend_test.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_cc_trend_test.go index 645056f6c7..6e6163bae4 100644 --- a/tencentcloud/data_source_tc_antiddos_overview_cc_trend_test.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_cc_trend_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosOverviewCcTrendDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosOverviewCcTrendDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_overview_cc_trend.overview_cc_trend"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_overview_cc_trend.overview_cc_trend"), resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_overview_cc_trend.overview_cc_trend", "data.#"), ), }, diff --git a/tencentcloud/data_source_tc_antiddos_overview_ddos_event_list.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_event_list.go similarity index 88% rename from tencentcloud/data_source_tc_antiddos_overview_ddos_event_list.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_event_list.go index 1d20dc86f7..84d3664f99 100644 --- a/tencentcloud/data_source_tc_antiddos_overview_ddos_event_list.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_event_list.go @@ -1,15 +1,18 @@ -package tencentcloud +package dayuv2 import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudAntiddosOverviewDdosEventList() *schema.Resource { +func DataSourceTencentCloudAntiddosOverviewDdosEventList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudAntiddosOverviewDdosEventListRead, Schema: map[string]*schema.Schema{ @@ -106,12 +109,12 @@ func dataSourceTencentCloudAntiddosOverviewDdosEventList() *schema.Resource { } func dataSourceTencentCloudAntiddosOverviewDdosEventListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_antiddos_overview_ddos_event_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_antiddos_overview_ddos_event_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("start_time"); ok { @@ -126,14 +129,14 @@ func dataSourceTencentCloudAntiddosOverviewDdosEventListRead(d *schema.ResourceD paramMap["AttackStatus"] = helper.String(v.(string)) } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var eventList []*antiddos.OverviewDDoSEvent - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeAntiddosOverviewDdosEventListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } eventList = result return nil @@ -203,7 +206,7 @@ func dataSourceTencentCloudAntiddosOverviewDdosEventListRead(d *schema.ResourceD d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_antiddos_overview_ddos_event_list_test.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_event_list_test.go similarity index 67% rename from tencentcloud/data_source_tc_antiddos_overview_ddos_event_list_test.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_event_list_test.go index 70b6d9e21b..1e7d740e2a 100644 --- a/tencentcloud/data_source_tc_antiddos_overview_ddos_event_list_test.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_event_list_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosOverviewDdosEventListDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosOverviewDdosEventListDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_overview_ddos_event_list.overview_ddos_event_list"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_overview_ddos_event_list.overview_ddos_event_list"), resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_overview_ddos_event_list.overview_ddos_event_list", "event_list.#"), ), }, diff --git a/tencentcloud/data_source_tc_antiddos_overview_ddos_trend.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_trend.go similarity index 82% rename from tencentcloud/data_source_tc_antiddos_overview_ddos_trend.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_trend.go index 657f59a22a..aa95b3641b 100644 --- a/tencentcloud/data_source_tc_antiddos_overview_ddos_trend.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_trend.go @@ -1,15 +1,18 @@ -package tencentcloud +package dayuv2 import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudAntiddosOverviewDdosTrend() *schema.Resource { +func DataSourceTencentCloudAntiddosOverviewDdosTrend() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudAntiddosOverviewDdosTrendRead, Schema: map[string]*schema.Schema{ @@ -71,12 +74,12 @@ func dataSourceTencentCloudAntiddosOverviewDdosTrend() *schema.Resource { } func dataSourceTencentCloudAntiddosOverviewDdosTrendRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_antiddos_overview_ddos_trend.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_antiddos_overview_ddos_trend.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, _ := d.GetOk("period"); v != nil { @@ -104,13 +107,13 @@ func dataSourceTencentCloudAntiddosOverviewDdosTrendRead(d *schema.ResourceData, paramMap["IpList"] = helper.InterfacesStringsPoint(ipListSet) } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var describeOverviewDDoSTrendResponseParams *antiddos.DescribeOverviewDDoSTrendResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeAntiddosOverviewDdosTrendByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } describeOverviewDDoSTrendResponseParams = result return nil @@ -128,7 +131,7 @@ func dataSourceTencentCloudAntiddosOverviewDdosTrendRead(d *schema.ResourceData, d.SetId(helper.BuildToken()) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), resultMap); e != nil { + if e := tccommon.WriteToFile(output.(string), resultMap); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_antiddos_overview_ddos_trend_test.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_trend_test.go similarity index 67% rename from tencentcloud/data_source_tc_antiddos_overview_ddos_trend_test.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_trend_test.go index dd27f4a180..1546c00e5d 100644 --- a/tencentcloud/data_source_tc_antiddos_overview_ddos_trend_test.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_ddos_trend_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosOverviewDdosTrendDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosOverviewDdosTrendDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_overview_ddos_trend.overview_ddos_trend"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_overview_ddos_trend.overview_ddos_trend"), resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_overview_ddos_trend.overview_ddos_trend", "data.#"), ), }, diff --git a/tencentcloud/data_source_tc_antiddos_overview_index.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_index.go similarity index 88% rename from tencentcloud/data_source_tc_antiddos_overview_index.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_index.go index 6ec55d5725..3f58ba44d3 100644 --- a/tencentcloud/data_source_tc_antiddos_overview_index.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_index.go @@ -1,15 +1,18 @@ -package tencentcloud +package dayuv2 import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudAntiddosOverviewIndex() *schema.Resource { +func DataSourceTencentCloudAntiddosOverviewIndex() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudAntiddosOverviewIndexRead, Schema: map[string]*schema.Schema{ @@ -95,12 +98,12 @@ func dataSourceTencentCloudAntiddosOverviewIndex() *schema.Resource { } func dataSourceTencentCloudAntiddosOverviewIndexRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_antiddos_overview_index.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_antiddos_overview_index.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("start_time"); ok { @@ -111,12 +114,12 @@ func dataSourceTencentCloudAntiddosOverviewIndexRead(d *schema.ResourceData, met paramMap["EndTime"] = helper.String(v.(string)) } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var describeOverviewIndexResponseParams *antiddos.DescribeOverviewIndexResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeAntiddosOverviewIndexByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } describeOverviewIndexResponseParams = result return nil @@ -179,7 +182,7 @@ func dataSourceTencentCloudAntiddosOverviewIndexRead(d *schema.ResourceData, met d.SetId(helper.BuildToken()) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), resultMap); e != nil { + if e := tccommon.WriteToFile(output.(string), resultMap); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_antiddos_overview_index_test.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_index_test.go similarity index 80% rename from tencentcloud/data_source_tc_antiddos_overview_index_test.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_index_test.go index 7cd3d0448f..891730f748 100644 --- a/tencentcloud/data_source_tc_antiddos_overview_index_test.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_overview_index_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosOverviewIndexDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosOverviewIndexDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_overview_index.overview_index"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_overview_index.overview_index"), resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_overview_index.overview_index", "all_ip_count"), resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_overview_index.overview_index", "antiddos_ip_count"), resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_overview_index.overview_index", "attack_ip_count"), diff --git a/tencentcloud/data_source_tc_antiddos_pending_risk_info.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_pending_risk_info.go similarity index 80% rename from tencentcloud/data_source_tc_antiddos_pending_risk_info.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_pending_risk_info.go index 9c52a944bd..509a093950 100644 --- a/tencentcloud/data_source_tc_antiddos_pending_risk_info.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_pending_risk_info.go @@ -1,15 +1,18 @@ -package tencentcloud +package dayuv2 import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudAntiddosPendingRiskInfo() *schema.Resource { +func DataSourceTencentCloudAntiddosPendingRiskInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudAntiddosPendingRiskInfoRead, Schema: map[string]*schema.Schema{ @@ -53,19 +56,19 @@ func dataSourceTencentCloudAntiddosPendingRiskInfo() *schema.Resource { } func dataSourceTencentCloudAntiddosPendingRiskInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_antiddos_pending_risk_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_antiddos_pending_risk_info.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var pendingRiskInfoResponseParams *antiddos.DescribePendingRiskInfoResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeAntiddosPendingRiskInfoByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } pendingRiskInfoResponseParams = result return nil @@ -102,7 +105,7 @@ func dataSourceTencentCloudAntiddosPendingRiskInfoRead(d *schema.ResourceData, m d.SetId(helper.BuildToken()) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), resultMap); e != nil { + if e := tccommon.WriteToFile(output.(string), resultMap); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_antiddos_pending_risk_info_test.go b/tencentcloud/services/dayuv2/data_source_tc_antiddos_pending_risk_info_test.go similarity index 73% rename from tencentcloud/data_source_tc_antiddos_pending_risk_info_test.go rename to tencentcloud/services/dayuv2/data_source_tc_antiddos_pending_risk_info_test.go index 0445cd27cd..eb9565d6c6 100644 --- a/tencentcloud/data_source_tc_antiddos_pending_risk_info_test.go +++ b/tencentcloud/services/dayuv2/data_source_tc_antiddos_pending_risk_info_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosPendingRiskInfoDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosPendingRiskInfoDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_pending_risk_info.pending_risk_info"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_pending_risk_info.pending_risk_info"), resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_pending_risk_info.pending_risk_info", "attacking_count"), resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_pending_risk_info.pending_risk_info", "blocking_count"), resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_pending_risk_info.pending_risk_info", "expired_count"), diff --git a/tencentcloud/data_source_tc_dayu_eip.go b/tencentcloud/services/dayuv2/data_source_tc_dayu_eip.go similarity index 89% rename from tencentcloud/data_source_tc_dayu_eip.go rename to tencentcloud/services/dayuv2/data_source_tc_dayu_eip.go index 2929c722dd..879ec4ed55 100644 --- a/tencentcloud/data_source_tc_dayu_eip.go +++ b/tencentcloud/services/dayuv2/data_source_tc_dayu_eip.go @@ -1,13 +1,16 @@ -package tencentcloud +package dayuv2 import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuEip() *schema.Resource { +func DataSourceTencentCloudDayuEip() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuEipRead, Schema: map[string]*schema.Schema{ @@ -20,7 +23,7 @@ func dataSourceTencentCloudDayuEip() *schema.Resource { Type: schema.TypeList, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validateAllowedStringValue(DDOS_EIP_BIND_STATUS), + ValidateFunc: tccommon.ValidateAllowedStringValue(DDOS_EIP_BIND_STATUS), }, Optional: true, Description: "The binding state of the instance, value range [BINDING, BIND, UNBINDING, UNBIND], default is [BINDING, BIND, UNBINDING, UNBIND].", @@ -114,10 +117,10 @@ func dataSourceTencentCloudDayuEip() *schema.Resource { } func dataSourceTencentCloudDayuEipRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_l4_rules.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_l4_rules.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceId := d.Get("resource_id").(string) var bindStatus []string @@ -132,7 +135,7 @@ func dataSourceTencentCloudDayuEipRead(d *schema.ResourceData, meta interface{}) offset := d.Get("offset").(int) limit := d.Get("limit").(int) - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} result, err := antiddosService.DescribeListBGPIPInstances(ctx, resourceId, bindStatus, offset, limit) if err != nil { return err @@ -166,7 +169,7 @@ func dataSourceTencentCloudDayuEipRead(d *schema.ResourceData, meta interface{}) _ = d.Set("list", resultList) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), resultList) + return tccommon.WriteToFile(output.(string), resultList) } return nil diff --git a/tencentcloud/data_source_tc_dayu_eip_test.go b/tencentcloud/services/dayuv2/data_source_tc_dayu_eip_test.go similarity index 78% rename from tencentcloud/data_source_tc_dayu_eip_test.go rename to tencentcloud/services/dayuv2/data_source_tc_dayu_eip_test.go index 20577cfb8f..0b25d47383 100644 --- a/tencentcloud/data_source_tc_dayu_eip_test.go +++ b/tencentcloud/services/dayuv2/data_source_tc_dayu_eip_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ var testDataDayuEip = "data.tencentcloud_dayu_eip.test" func TestAccTencentCloudDataDayuEip(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_INTERNATIONAL) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_INTERNATIONAL) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuEipDestroy, Steps: []resource.TestStep{ { diff --git a/tencentcloud/data_source_tc_dayu_l4_rules_v2.go b/tencentcloud/services/dayuv2/data_source_tc_dayu_l4_rules_v2.go similarity index 89% rename from tencentcloud/data_source_tc_dayu_l4_rules_v2.go rename to tencentcloud/services/dayuv2/data_source_tc_dayu_l4_rules_v2.go index ab216681bf..4d8f666a40 100644 --- a/tencentcloud/data_source_tc_dayu_l4_rules_v2.go +++ b/tencentcloud/services/dayuv2/data_source_tc_dayu_l4_rules_v2.go @@ -1,23 +1,26 @@ -package tencentcloud +package dayuv2 import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuL4RulesV2() *schema.Resource { +func DataSourceTencentCloudDayuL4RulesV2() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuL4RulesReadV2, Schema: map[string]*schema.Schema{ "business": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), Description: "Type of the resource that the layer 4 rule works for, valid values are `bgpip`, `bgp`, `bgp-multip` and `net`.", }, "virtual_port": { @@ -138,12 +141,12 @@ func dataSourceTencentCloudDayuL4RulesV2() *schema.Resource { } func dataSourceTencentCloudDayuL4RulesReadV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_l4_rules_v2.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_l4_rules_v2.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } business := d.Get("business").(string) @@ -156,11 +159,11 @@ func dataSourceTencentCloudDayuL4RulesReadV2(d *schema.ResourceData, meta interf } rules := make([]*dayu.NewL4RuleEntry, 0) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, err := service.DescribeNewL4Rules(ctx, business, extendParams) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } rules = result return nil @@ -207,7 +210,7 @@ func dataSourceTencentCloudDayuL4RulesReadV2(d *schema.ResourceData, meta interf } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_dayu_l4_rules_v2_test.go b/tencentcloud/services/dayuv2/data_source_tc_dayu_l4_rules_v2_test.go similarity index 88% rename from tencentcloud/data_source_tc_dayu_l4_rules_v2_test.go rename to tencentcloud/services/dayuv2/data_source_tc_dayu_l4_rules_v2_test.go index 9050b11969..b01a767f55 100644 --- a/tencentcloud/data_source_tc_dayu_l4_rules_v2_test.go +++ b/tencentcloud/services/dayuv2/data_source_tc_dayu_l4_rules_v2_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ var testDataDayuL4RulesV2Name = "data.tencentcloud_dayu_l4_rules_v2.test" func TestAccTencentCloudDataDayuL4RulesV2(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_INTERNATIONAL) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_INTERNATIONAL) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuL4RuleV2Destroy, Steps: []resource.TestStep{ { diff --git a/tencentcloud/data_source_tc_dayu_l7_rules_v2.go b/tencentcloud/services/dayuv2/data_source_tc_dayu_l7_rules_v2.go similarity index 93% rename from tencentcloud/data_source_tc_dayu_l7_rules_v2.go rename to tencentcloud/services/dayuv2/data_source_tc_dayu_l7_rules_v2.go index 8cf0226738..0c1f6f32b0 100644 --- a/tencentcloud/data_source_tc_dayu_l7_rules_v2.go +++ b/tencentcloud/services/dayuv2/data_source_tc_dayu_l7_rules_v2.go @@ -1,21 +1,24 @@ -package tencentcloud +package dayuv2 import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDayuL7RulesV2() *schema.Resource { +func DataSourceTencentCloudDayuL7RulesV2() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDayuL7RulesReadV2, Schema: map[string]*schema.Schema{ "business": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), Description: "Type of the resource that the layer 4 rule works for, valid values are `bgpip`, `bgp`, `bgp-multip` and `net`.", }, "domain": { @@ -185,12 +188,12 @@ func dataSourceTencentCloudDayuL7RulesV2() *schema.Resource { } func dataSourceTencentCloudDayuL7RulesReadV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dayu_l4_rules_v2.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("data_source.tencentcloud_dayu_l4_rules_v2.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } business := d.Get("business").(string) @@ -251,7 +254,7 @@ func dataSourceTencentCloudDayuL7RulesReadV2(d *schema.ResourceData, meta interf } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), resultList) + return tccommon.WriteToFile(output.(string), resultList) } return nil } diff --git a/tencentcloud/data_source_tc_dayu_l7_rules_v2_test.go b/tencentcloud/services/dayuv2/data_source_tc_dayu_l7_rules_v2_test.go similarity index 82% rename from tencentcloud/data_source_tc_dayu_l7_rules_v2_test.go rename to tencentcloud/services/dayuv2/data_source_tc_dayu_l7_rules_v2_test.go index 639456251a..b5f546e279 100644 --- a/tencentcloud/data_source_tc_dayu_l7_rules_v2_test.go +++ b/tencentcloud/services/dayuv2/data_source_tc_dayu_l7_rules_v2_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ var testDataDayuL7RulesV2Name = "data.tencentcloud_dayu_l7_rules_v2.test" func TestAccTencentCloudDataDayuL7V2Rules(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_INTERNATIONAL) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_INTERNATIONAL) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuL7RuleV2Destroy, Steps: []resource.TestStep{ { diff --git a/tencentcloud/extension_antiddos.go b/tencentcloud/services/dayuv2/extension_antiddos.go similarity index 74% rename from tencentcloud/extension_antiddos.go rename to tencentcloud/services/dayuv2/extension_antiddos.go index f1cd60e4c5..f38ea11399 100644 --- a/tencentcloud/extension_antiddos.go +++ b/tencentcloud/services/dayuv2/extension_antiddos.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 const ( IP_TYPE_BLACK = "black" diff --git a/tencentcloud/services/dayuv2/extension_dayu.go b/tencentcloud/services/dayuv2/extension_dayu.go new file mode 100644 index 0000000000..0bc55f3802 --- /dev/null +++ b/tencentcloud/services/dayuv2/extension_dayu.go @@ -0,0 +1,183 @@ +package dayuv2 + +const ( + DAYU_RESOURCE_TYPE_BGPIP = "bgpip" + DAYU_RESOURCE_TYPE_BGP = "bgp" + DAYU_RESOURCE_TYPE_BGPMUL = "bgp-multip" + DAYU_RESOURCE_TYPE_NET = "net" +) + +var DAYU_RESOURCE_TYPE = []string{DAYU_RESOURCE_TYPE_BGPIP, DAYU_RESOURCE_TYPE_BGP, DAYU_RESOURCE_TYPE_BGPMUL, DAYU_RESOURCE_TYPE_NET} + +var DAYU_RESOURCE_TYPE_RULE = []string{DAYU_RESOURCE_TYPE_BGPIP, DAYU_RESOURCE_TYPE_NET} + +var DAYU_RESOURCE_TYPE_CASE = []string{DAYU_RESOURCE_TYPE_BGPIP, DAYU_RESOURCE_TYPE_BGPMUL, DAYU_RESOURCE_TYPE_BGP} + +var DAYU_RESOURCE_TYPE_HTTPS = []string{DAYU_RESOURCE_TYPE_BGPIP} + +const ( + DAYU_APP_PLATFORM_PC = "PC" + DAYU_APP_PLATFORM_MOBILE = "MOBILE" + DAYU_APP_PLATFORM_TV = "TV" + DAYU_APP_PLATFORM_SERVER = "SERVER" +) + +var DAYU_APP_PLATFORM = []string{DAYU_APP_PLATFORM_PC, DAYU_APP_PLATFORM_MOBILE, DAYU_APP_PLATFORM_TV, DAYU_APP_PLATFORM_SERVER} + +const ( + DAYU_PROTOCOL_TCP = "tcp" + DAYU_PROTOCOL_UDP = "udp" + DAYU_PROTOCOL_ICMP = "icmp" + DAYU_PROTOCOL_ALL = "all" +) + +var DAYU_PROTOCOL = []string{DAYU_PROTOCOL_TCP, DAYU_PROTOCOL_UDP, DAYU_PROTOCOL_ICMP, DAYU_PROTOCOL_ALL} + +const ( + DAYU_MATCH_TYPE_SUNDAY = "sunday" + DAYU_MATCH_TYPE_PCRE = "pcre" +) + +var DAYU_MATCH_TYPE = []string{DAYU_MATCH_TYPE_SUNDAY, DAYU_MATCH_TYPE_PCRE} + +const ( + DAYU_MATCH_SWITCH_ON_L5 = "begin_l5" + DAYU_MATCH_SWITCH_OFF = "no_match" +) + +var DAYU_MATCH_SWITCH = []string{DAYU_MATCH_SWITCH_ON_L5, DAYU_MATCH_SWITCH_OFF} + +const ( + DAYU_IP_TYPE_BLACK = "black" + DAYU_IP_TYPE_WHITE = "white" +) + +var DAYU_IP_TYPE = []string{DAYU_IP_TYPE_BLACK, DAYU_IP_TYPE_WHITE} + +const ( + DAYU_PACKET_ACTION_DROP = "drop" + DAYU_PACKET_ACTION_TRANSMIT = "transmit" + DAYU_PACKET_PROTOCOL_DROP_BLACK = "drop_black" + DAYU_PACKET_PROTOCOL_DROP_RST = "drop_rst" + DAYU_PACKET_PROTOCOL_DROP_BLACK_RST = "drop_black_rst" +) + +var DAYU_PACKET_ACTION = []string{DAYU_PACKET_ACTION_DROP, DAYU_PACKET_ACTION_TRANSMIT, DAYU_PACKET_PROTOCOL_DROP_BLACK, DAYU_PACKET_PROTOCOL_DROP_RST, DAYU_PACKET_PROTOCOL_DROP_BLACK_RST} + +const ( + DAYU_PORT_ACTION_DROP = "drop" + DAYU_PORT_ACTION_TRANSMIT = "transmit" +) + +var DAYU_PORT_ACTION = []string{DAYU_PORT_ACTION_DROP, DAYU_PORT_ACTION_TRANSMIT} + +const ( + DAYU_APP_TYPE_WEB = "WEB" + DAYU_APP_TYPE_GAME = "GAME" + DAYU_APP_TYPE_APP = "APP" + DAYU_APP_TYPE_OTHER = "OTHER" +) + +var DAYU_APP_TYPE = []string{DAYU_APP_TYPE_WEB, DAYU_APP_TYPE_GAME, DAYU_APP_TYPE_APP, DAYU_APP_TYPE_OTHER} + +const ( + DAYU_BOOL_FLAG_TRUE = "yes" + DAYU_BOOL_FLAG_FALSE = "no" +) + +var DAYU_BOOL_FLAG = []string{DAYU_BOOL_FLAG_FALSE, DAYU_BOOL_FLAG_TRUE} + +const ( + DAYU_L7_RULE_PROTOCOL_HTTP = "http" + DAYU_L7_RULE_PROTOCOL_HTTPS = "https" +) + +var DAYU_L7_RULE_PROTOCOL = []string{DAYU_L7_RULE_PROTOCOL_HTTP, DAYU_L7_RULE_PROTOCOL_HTTPS} + +const ( + DAYU_RULE_METHOD_GET = "GET" + DAYU_RULE_METHOD_HEAD = "HEAD" +) + +var DAYU_RULE_METHOD = []string{ + DAYU_RULE_METHOD_GET, + DAYU_RULE_METHOD_HEAD, +} + +const ( + DAYU_L7_RULE_SOURCE_TYPE_HOST = 1 + DAYU_L7_RULE_SOURCE_TYPE_IP = 2 +) + +var DAYU_L7_RULE_SOURCE_TYPE = []int{DAYU_L7_RULE_SOURCE_TYPE_HOST, DAYU_L7_RULE_SOURCE_TYPE_IP} + +const ( + DAYU_L7_HTTPS_SWITCH_ON_DEFAULT = 20000 + DAYU_L7_HTTPS_SWITCH_OFF = 0 +) + +const ( + DAYU_CC_POLICY_ACTION_DROP = "drop" + DAYU_CC_POLICY_ACTION_ALG = "alg" +) + +var DAYU_CC_POLICY_ACTION = []string{DAYU_CC_POLICY_ACTION_DROP, DAYU_CC_POLICY_ACTION_ALG} + +const ( + DAYU_CC_POLICY_SMODE_MATCH = "matching" + DAYU_CC_POLICY_SMODE_SPEED_LIMIT = "speedlimit" +) + +var DAYU_CC_POLICY_SMODE = []string{DAYU_CC_POLICY_SMODE_MATCH, DAYU_CC_POLICY_SMODE_SPEED_LIMIT} + +const ( + DAYU_CC_POLICY_CHECK_TYPE_HOST = "host" + DAYU_CC_POLICY_CHECK_TYPE_CGI = "cgi" + DAYU_CC_POLICY_CHECK_TYPE_UA = "ua" + DAYU_CC_POLICY_CHECK_TYPE_REFERER = "referer" +) + +var DAYU_CC_POLICY_HTTP_CHECK_TYPE = []string{DAYU_CC_POLICY_CHECK_TYPE_HOST, DAYU_CC_POLICY_CHECK_TYPE_CGI, DAYU_CC_POLICY_CHECK_TYPE_UA, DAYU_CC_POLICY_CHECK_TYPE_REFERER} + +var DAYU_CC_POLICY_HTTPS_CHECK_TYPE = []string{DAYU_CC_POLICY_CHECK_TYPE_CGI, DAYU_CC_POLICY_CHECK_TYPE_UA, DAYU_CC_POLICY_CHECK_TYPE_REFERER} + +const ( + DAYU_CC_POLICY_CHECK_OP_INCLUDE = "include" + DAYU_CC_POLICY_CHECK_OP_NOT_INCLUDE = "not_include" + DAYU_CC_POLICY_CHECK_OP_EQUAL = "equal" +) + +var DAYU_CC_POLICY_CHECK_OP = []string{DAYU_CC_POLICY_CHECK_OP_INCLUDE, DAYU_CC_POLICY_CHECK_OP_NOT_INCLUDE, DAYU_CC_POLICY_CHECK_OP_EQUAL} +var DAYU_CC_POLICY_CHECK_OP_HTTPS = []string{DAYU_CC_POLICY_CHECK_OP_INCLUDE, DAYU_CC_POLICY_CHECK_OP_EQUAL} + +const ( + DAYU_L4_RULE_PROTOCOL_TCP = "TCP" + DAYU_L4_RULE_PROTOCOL_UDP = "UDP" +) + +var DAYU_L4_RULE_PROTOCOL = []string{DAYU_L4_RULE_PROTOCOL_TCP, DAYU_L4_RULE_PROTOCOL_UDP} + +const ( + DAYU_L7_STATUS_SET_DONE = 0 + DAYU_L7_STATUS_SETTING = 1 + DAYU_L7_STATUS_SET_FAIL = 2 + DAYU_L7_STATUS_DEL_DONE = 3 + DAYU_L7_STATUS_DEL_FAIL = 5 + DAYU_L7_STATUS_SET_WAIT = 6 + DAYU_L7_STATUS_DEL_WAIT = 7 + DAYU_L7_STATUS_SSL_WAIT = 8 +) + +const ( + DAYU_L7_HEALTH_STATUS_SET_DONE = 0 + DAYU_L7_HEALTH_STATUS_SETTING = 1 + DAYU_L7_HEALTH_STATUS_SET_FAIL = 2 +) + +const DAYU_BOUNDSTATUS_IDLE = "idle" + +const RESPONSE_SUCCESS_CODE = "Success" + +const BUSINESS_BGP_MULTIP = "bgp-multip" + +const ISP_CODE_BGP = 5 diff --git a/tencentcloud/extension_ddos.go b/tencentcloud/services/dayuv2/extension_ddos.go similarity index 98% rename from tencentcloud/extension_ddos.go rename to tencentcloud/services/dayuv2/extension_ddos.go index 9241f4b642..1b52604904 100644 --- a/tencentcloud/extension_ddos.go +++ b/tencentcloud/services/dayuv2/extension_ddos.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import "encoding/json" diff --git a/tencentcloud/resource_tc_antiddos_cc_black_white_ip.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_cc_black_white_ip.go similarity index 80% rename from tencentcloud/resource_tc_antiddos_cc_black_white_ip.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_cc_black_white_ip.go index ced5b26535..4f64842fbf 100644 --- a/tencentcloud/resource_tc_antiddos_cc_black_white_ip.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_cc_black_white_ip.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosCcBlackWhiteIp() *schema.Resource { +func ResourceTencentCloudAntiddosCcBlackWhiteIp() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosCcBlackWhiteIpCreate, Read: resourceTencentCloudAntiddosCcBlackWhiteIpRead, @@ -82,11 +85,11 @@ func resourceTencentCloudAntiddosCcBlackWhiteIp() *schema.Resource { } func resourceTencentCloudAntiddosCcBlackWhiteIpCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_cc_black_white_ip.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_cc_black_white_ip.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = antiddos.NewCreateCcBlackWhiteIpListRequest() @@ -136,10 +139,10 @@ func resourceTencentCloudAntiddosCcBlackWhiteIpCreate(d *schema.ResourceData, me request.Protocol = helper.String(protocol) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreateCcBlackWhiteIpList(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreateCcBlackWhiteIpList(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -150,7 +153,7 @@ func resourceTencentCloudAntiddosCcBlackWhiteIpCreate(d *schema.ResourceData, me return err } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ccBlackWhiteIps, err := service.DescribeAntiddosCcBlackWhiteIpById(ctx, "bgpip", instanceId, ip, domain, protocol) if err != nil { return err @@ -183,22 +186,22 @@ func resourceTencentCloudAntiddosCcBlackWhiteIpCreate(d *schema.ResourceData, me return fmt.Errorf("can not find cc black white ip policy") } - d.SetId(strings.Join([]string{instanceId, *ccBlackWhiteIpPolicy.PolicyId, ip, domain, protocol}, FILED_SP)) + d.SetId(strings.Join([]string{instanceId, *ccBlackWhiteIpPolicy.PolicyId, ip, domain, protocol}, tccommon.FILED_SP)) return resourceTencentCloudAntiddosCcBlackWhiteIpRead(d, meta) } func resourceTencentCloudAntiddosCcBlackWhiteIpRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_cc_black_white_ip.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_cc_black_white_ip.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 5 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -260,14 +263,14 @@ func resourceTencentCloudAntiddosCcBlackWhiteIpRead(d *schema.ResourceData, meta } func resourceTencentCloudAntiddosCcBlackWhiteIpDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_cc_black_white_ip.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_cc_black_white_ip.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 5 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_antiddos_cc_black_white_ip_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_cc_black_white_ip_test.go similarity index 87% rename from tencentcloud/resource_tc_antiddos_cc_black_white_ip_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_cc_black_white_ip_test.go index 49c08f6d75..e5c95be78e 100644 --- a/tencentcloud/resource_tc_antiddos_cc_black_white_ip_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_cc_black_white_ip_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosCcBlackWhiteIpResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosCcBlackWhiteIp, diff --git a/tencentcloud/resource_tc_antiddos_cc_precision_policy.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_cc_precision_policy.go similarity index 82% rename from tencentcloud/resource_tc_antiddos_cc_precision_policy.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_cc_precision_policy.go index a83694afc6..2b007b295a 100644 --- a/tencentcloud/resource_tc_antiddos_cc_precision_policy.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_cc_precision_policy.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -8,13 +8,16 @@ import ( "sort" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosCcPrecisionPolicy() *schema.Resource { +func ResourceTencentCloudAntiddosCcPrecisionPolicy() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosCcPrecisionPolicyCreate, Read: resourceTencentCloudAntiddosCcPrecisionPolicyRead, @@ -88,11 +91,11 @@ func resourceTencentCloudAntiddosCcPrecisionPolicy() *schema.Resource { } func resourceTencentCloudAntiddosCcPrecisionPolicyCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_cc_precision_policy.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_cc_precision_policy.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = antiddos.NewCreateCCPrecisionPolicyRequest() @@ -151,14 +154,14 @@ func resourceTencentCloudAntiddosCcPrecisionPolicyCreate(d *schema.ResourceData, policyItems = append(policyItems, v.(string)) } request.PolicyList = append(request.PolicyList, &cCPrecisionPlyRecord) - policyStrings = append(policyStrings, strings.Join(policyItems, FILED_SP)) + policyStrings = append(policyStrings, strings.Join(policyItems, tccommon.FILED_SP)) } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreateCCPrecisionPolicy(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreateCCPrecisionPolicy(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -169,7 +172,7 @@ func resourceTencentCloudAntiddosCcPrecisionPolicyCreate(d *schema.ResourceData, return err } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ccPrecisionPolicys, err := service.DescribeAntiddosCcPrecisionPolicyById(ctx, "bgpip", instanceId, ip, domain, protocol) if err != nil { @@ -187,7 +190,7 @@ func resourceTencentCloudAntiddosCcPrecisionPolicyCreate(d *schema.ResourceData, policyItems = append(policyItems, *policy.FieldName) policyItems = append(policyItems, *policy.Value) policyItems = append(policyItems, *policy.ValueOperator) - tmpPolicyStrings = append(tmpPolicyStrings, strings.Join(policyItems, FILED_SP)) + tmpPolicyStrings = append(tmpPolicyStrings, strings.Join(policyItems, tccommon.FILED_SP)) } sort.Strings(policyStrings) sort.Strings(tmpPolicyStrings) @@ -201,22 +204,22 @@ func resourceTencentCloudAntiddosCcPrecisionPolicyCreate(d *schema.ResourceData, log.Printf("[WARN]%s resource `AntiddosCcPrecisionPolicy` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) return nil } - d.SetId(strings.Join([]string{instanceId, *ccPrecisionPolicy.PolicyId, ip, domain, protocol}, FILED_SP)) + d.SetId(strings.Join([]string{instanceId, *ccPrecisionPolicy.PolicyId, ip, domain, protocol}, tccommon.FILED_SP)) return resourceTencentCloudAntiddosCcPrecisionPolicyRead(d, meta) } func resourceTencentCloudAntiddosCcPrecisionPolicyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_cc_precision_policy.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_cc_precision_policy.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 5 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -296,14 +299,14 @@ func resourceTencentCloudAntiddosCcPrecisionPolicyRead(d *schema.ResourceData, m } func resourceTencentCloudAntiddosCcPrecisionPolicyUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_cc_precision_policy.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_cc_precision_policy.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := antiddos.NewModifyCCPrecisionPolicyRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 5 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -345,10 +348,10 @@ func resourceTencentCloudAntiddosCcPrecisionPolicyUpdate(d *schema.ResourceData, } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().ModifyCCPrecisionPolicy(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().ModifyCCPrecisionPolicy(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -363,14 +366,14 @@ func resourceTencentCloudAntiddosCcPrecisionPolicyUpdate(d *schema.ResourceData, } func resourceTencentCloudAntiddosCcPrecisionPolicyDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_cc_precision_policy.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_cc_precision_policy.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 5 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_antiddos_cc_precision_policy_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_cc_precision_policy_test.go similarity index 92% rename from tencentcloud/resource_tc_antiddos_cc_precision_policy_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_cc_precision_policy_test.go index 109fbaf9e0..fcacc7e4ff 100644 --- a/tencentcloud/resource_tc_antiddos_cc_precision_policy_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_cc_precision_policy_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosCcPrecisionPolicyResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosCcPrecisionPolicy, diff --git a/tencentcloud/resource_tc_antiddos_ddos_black_white_ip.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_black_white_ip.go similarity index 75% rename from tencentcloud/resource_tc_antiddos_ddos_black_white_ip.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_black_white_ip.go index 43b1b07e79..d7fcc5d50a 100644 --- a/tencentcloud/resource_tc_antiddos_ddos_black_white_ip.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_black_white_ip.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosDdosBlackWhiteIp() *schema.Resource { +func ResourceTencentCloudAntiddosDdosBlackWhiteIp() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosDdosBlackWhiteIpCreate, Read: resourceTencentCloudAntiddosDdosBlackWhiteIpRead, @@ -49,10 +52,10 @@ func resourceTencentCloudAntiddosDdosBlackWhiteIp() *schema.Resource { } func resourceTencentCloudAntiddosDdosBlackWhiteIpCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_black_white_ip.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_black_white_ip.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = antiddos.NewCreateDDoSBlackWhiteIpListRequest() @@ -82,10 +85,10 @@ func resourceTencentCloudAntiddosDdosBlackWhiteIpCreate(d *schema.ResourceData, request.Type = helper.String(ipType) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreateDDoSBlackWhiteIpList(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreateDDoSBlackWhiteIpList(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -97,25 +100,25 @@ func resourceTencentCloudAntiddosDdosBlackWhiteIpCreate(d *schema.ResourceData, } idItems := []string{instanceId, ip} - d.SetId(strings.Join(idItems, FILED_SP)) + d.SetId(strings.Join(idItems, tccommon.FILED_SP)) return resourceTencentCloudAntiddosDdosBlackWhiteIpRead(d, meta) } func resourceTencentCloudAntiddosDdosBlackWhiteIpRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_black_white_ip.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_black_white_ip.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := idSplit[0] ip := idSplit[1] @@ -161,14 +164,14 @@ func resourceTencentCloudAntiddosDdosBlackWhiteIpRead(d *schema.ResourceData, me } func resourceTencentCloudAntiddosDdosBlackWhiteIpUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_black_white_ip.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_black_white_ip.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := antiddos.NewModifyDDoSBlackWhiteIpListRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -206,10 +209,10 @@ func resourceTencentCloudAntiddosDdosBlackWhiteIpUpdate(d *schema.ResourceData, } if isChange { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().ModifyDDoSBlackWhiteIpList(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().ModifyDDoSBlackWhiteIpList(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -225,14 +228,14 @@ func resourceTencentCloudAntiddosDdosBlackWhiteIpUpdate(d *schema.ResourceData, } func resourceTencentCloudAntiddosDdosBlackWhiteIpDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_black_white_ip.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_black_white_ip.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_antiddos_ddos_black_white_ip_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_black_white_ip_test.go similarity index 87% rename from tencentcloud/resource_tc_antiddos_ddos_black_white_ip_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_black_white_ip_test.go index 912df3b344..a29b825835 100644 --- a/tencentcloud/resource_tc_antiddos_ddos_black_white_ip_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_black_white_ip_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosDdosBlackWhiteIpResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosDdosBlackWhiteIp, diff --git a/tencentcloud/resource_tc_antiddos_ddos_geo_ip_block_config.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_geo_ip_block_config.go similarity index 79% rename from tencentcloud/resource_tc_antiddos_ddos_geo_ip_block_config.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_geo_ip_block_config.go index 3742aa43b9..63415c6918 100644 --- a/tencentcloud/resource_tc_antiddos_ddos_geo_ip_block_config.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_geo_ip_block_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -8,13 +8,16 @@ import ( "sort" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosDdosGeoIpBlockConfig() *schema.Resource { +func ResourceTencentCloudAntiddosDdosGeoIpBlockConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosDdosGeoIpBlockConfigCreate, Read: resourceTencentCloudAntiddosDdosGeoIpBlockConfigRead, @@ -63,12 +66,12 @@ func resourceTencentCloudAntiddosDdosGeoIpBlockConfig() *schema.Resource { } func resourceTencentCloudAntiddosDdosGeoIpBlockConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_geo_ip_block_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_geo_ip_block_config.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = antiddos.NewCreateDDoSGeoIPBlockConfigRequest() @@ -104,10 +107,10 @@ func resourceTencentCloudAntiddosDdosGeoIpBlockConfigCreate(d *schema.ResourceDa request.DDoSGeoIPBlockConfig = &dDoSGeoIPBlockConfig } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreateDDoSGeoIPBlockConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreateDDoSGeoIPBlockConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -118,7 +121,7 @@ func resourceTencentCloudAntiddosDdosGeoIpBlockConfigCreate(d *schema.ResourceDa return err } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} configList, err := service.DescribeAntiddosDdosGeoIpBlockConfigById(ctx, instanceId) if err != nil { @@ -153,22 +156,22 @@ func resourceTencentCloudAntiddosDdosGeoIpBlockConfigCreate(d *schema.ResourceDa if targetConfig == nil { return fmt.Errorf("can not find geo ip block config") } - d.SetId(instanceId + FILED_SP + *targetConfig.Id) + d.SetId(instanceId + tccommon.FILED_SP + *targetConfig.Id) return resourceTencentCloudAntiddosDdosGeoIpBlockConfigRead(d, meta) } func resourceTencentCloudAntiddosDdosGeoIpBlockConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_geo_ip_block_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_geo_ip_block_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -217,14 +220,14 @@ func resourceTencentCloudAntiddosDdosGeoIpBlockConfigRead(d *schema.ResourceData } func resourceTencentCloudAntiddosDdosGeoIpBlockConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_geo_ip_block_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_geo_ip_block_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := antiddos.NewModifyDDoSGeoIPBlockConfigRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -259,10 +262,10 @@ func resourceTencentCloudAntiddosDdosGeoIpBlockConfigUpdate(d *schema.ResourceDa request.DDoSGeoIPBlockConfig = &dDoSGeoIPBlockConfig } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().ModifyDDoSGeoIPBlockConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().ModifyDDoSGeoIPBlockConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -278,14 +281,14 @@ func resourceTencentCloudAntiddosDdosGeoIpBlockConfigUpdate(d *schema.ResourceDa } func resourceTencentCloudAntiddosDdosGeoIpBlockConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_geo_ip_block_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_geo_ip_block_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_antiddos_ddos_geo_ip_block_config_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_geo_ip_block_config_test.go similarity index 90% rename from tencentcloud/resource_tc_antiddos_ddos_geo_ip_block_config_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_geo_ip_block_config_test.go index 9816ede9cb..c294cf8618 100644 --- a/tencentcloud/resource_tc_antiddos_ddos_geo_ip_block_config_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_geo_ip_block_config_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosDdosGeoIpBlockConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosDdosGeoIpBlockConfig, diff --git a/tencentcloud/resource_tc_antiddos_ddos_speed_limit_config.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_speed_limit_config.go similarity index 86% rename from tencentcloud/resource_tc_antiddos_ddos_speed_limit_config.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_speed_limit_config.go index 07ef055a82..25d5d0e26d 100644 --- a/tencentcloud/resource_tc_antiddos_ddos_speed_limit_config.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_speed_limit_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -8,13 +8,16 @@ import ( "sort" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosDdosSpeedLimitConfig() *schema.Resource { +func ResourceTencentCloudAntiddosDdosSpeedLimitConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosDdosSpeedLimitConfigCreate, Read: resourceTencentCloudAntiddosDdosSpeedLimitConfigRead, @@ -98,11 +101,11 @@ func resourceTencentCloudAntiddosDdosSpeedLimitConfig() *schema.Resource { } func resourceTencentCloudAntiddosDdosSpeedLimitConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_speed_limit_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_speed_limit_config.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = antiddos.NewCreateDDoSSpeedLimitConfigRequest() @@ -163,10 +166,10 @@ func resourceTencentCloudAntiddosDdosSpeedLimitConfigCreate(d *schema.ResourceDa request.DDoSSpeedLimitConfig = &dDoSSpeedLimitConfig } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreateDDoSSpeedLimitConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreateDDoSSpeedLimitConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -177,7 +180,7 @@ func resourceTencentCloudAntiddosDdosSpeedLimitConfigCreate(d *schema.ResourceDa return err } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} configList, err := service.DescribeAntiddosDdosSpeedLimitConfigById(ctx, instanceId) if err != nil { return err @@ -221,25 +224,25 @@ func resourceTencentCloudAntiddosDdosSpeedLimitConfigCreate(d *schema.ResourceDa return fmt.Errorf("can not find speed limit config") } - d.SetId(instanceId + FILED_SP + *targetConfig.Id) + d.SetId(instanceId + tccommon.FILED_SP + *targetConfig.Id) return resourceTencentCloudAntiddosDdosSpeedLimitConfigRead(d, meta) } func resourceTencentCloudAntiddosDdosSpeedLimitConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_speed_limit_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_speed_limit_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := idSplit[0] configId := idSplit[1] @@ -325,14 +328,14 @@ func resourceTencentCloudAntiddosDdosSpeedLimitConfigRead(d *schema.ResourceData } func resourceTencentCloudAntiddosDdosSpeedLimitConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_speed_limit_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_speed_limit_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := antiddos.NewModifyDDoSSpeedLimitConfigRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -389,10 +392,10 @@ func resourceTencentCloudAntiddosDdosSpeedLimitConfigUpdate(d *schema.ResourceDa request.DDoSSpeedLimitConfig = &dDoSSpeedLimitConfig } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().ModifyDDoSSpeedLimitConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().ModifyDDoSSpeedLimitConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -408,14 +411,14 @@ func resourceTencentCloudAntiddosDdosSpeedLimitConfigUpdate(d *schema.ResourceDa } func resourceTencentCloudAntiddosDdosSpeedLimitConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ddos_speed_limit_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ddos_speed_limit_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_antiddos_ddos_speed_limit_config_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_speed_limit_config_test.go similarity index 93% rename from tencentcloud/resource_tc_antiddos_ddos_speed_limit_config_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_speed_limit_config_test.go index 1f7d3aec8f..25eca5a660 100644 --- a/tencentcloud/resource_tc_antiddos_ddos_speed_limit_config_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_ddos_speed_limit_config_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosDdosSpeedLimitConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosDdosSpeedLimitConfig, diff --git a/tencentcloud/resource_tc_antiddos_default_alarm_threshold.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_default_alarm_threshold.go similarity index 77% rename from tencentcloud/resource_tc_antiddos_default_alarm_threshold.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_default_alarm_threshold.go index ba614e2d51..9072e336d1 100644 --- a/tencentcloud/resource_tc_antiddos_default_alarm_threshold.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_default_alarm_threshold.go @@ -1,16 +1,19 @@ -package tencentcloud +package dayuv2 import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosDefaultAlarmThreshold() *schema.Resource { +func ResourceTencentCloudAntiddosDefaultAlarmThreshold() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosDefaultAlarmThresholdCreate, Read: resourceTencentCloudAntiddosDefaultAlarmThresholdRead, @@ -52,8 +55,8 @@ func resourceTencentCloudAntiddosDefaultAlarmThreshold() *schema.Resource { } func resourceTencentCloudAntiddosDefaultAlarmThresholdCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_default_alarm_threshold.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_default_alarm_threshold.create")() + defer tccommon.InconsistentCheck(d, meta)() d.SetId(d.Get("instance_type").(string)) @@ -61,14 +64,14 @@ func resourceTencentCloudAntiddosDefaultAlarmThresholdCreate(d *schema.ResourceD } func resourceTencentCloudAntiddosDefaultAlarmThresholdRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_default_alarm_threshold.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_default_alarm_threshold.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceType := d.Id() @@ -103,10 +106,10 @@ func resourceTencentCloudAntiddosDefaultAlarmThresholdRead(d *schema.ResourceDat } func resourceTencentCloudAntiddosDefaultAlarmThresholdUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_default_alarm_threshold.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_default_alarm_threshold.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := antiddos.NewCreateDefaultAlarmThresholdRequest() @@ -126,10 +129,10 @@ func resourceTencentCloudAntiddosDefaultAlarmThresholdUpdate(d *schema.ResourceD request.DefaultAlarmConfig = &defaultAlarmThreshold } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreateDefaultAlarmThreshold(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreateDefaultAlarmThreshold(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -145,8 +148,8 @@ func resourceTencentCloudAntiddosDefaultAlarmThresholdUpdate(d *schema.ResourceD } func resourceTencentCloudAntiddosDefaultAlarmThresholdDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_default_alarm_threshold.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_default_alarm_threshold.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_antiddos_default_alarm_threshold_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_default_alarm_threshold_test.go similarity index 90% rename from tencentcloud/resource_tc_antiddos_default_alarm_threshold_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_default_alarm_threshold_test.go index 010ace6c97..e3d15b5c4e 100644 --- a/tencentcloud/resource_tc_antiddos_default_alarm_threshold_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_default_alarm_threshold_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosDefaultAlarmThresholdResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosDefaultAlarmThreshold, diff --git a/tencentcloud/resource_tc_antiddos_ip_alarm_threshold_config.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_ip_alarm_threshold_config.go similarity index 75% rename from tencentcloud/resource_tc_antiddos_ip_alarm_threshold_config.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_ip_alarm_threshold_config.go index e656db972d..26f142feff 100644 --- a/tencentcloud/resource_tc_antiddos_ip_alarm_threshold_config.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_ip_alarm_threshold_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -7,13 +7,16 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosIpAlarmThresholdConfig() *schema.Resource { +func ResourceTencentCloudAntiddosIpAlarmThresholdConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosIpAlarmThresholdConfigCreate, Read: resourceTencentCloudAntiddosIpAlarmThresholdConfigRead, @@ -50,29 +53,29 @@ func resourceTencentCloudAntiddosIpAlarmThresholdConfig() *schema.Resource { } func resourceTencentCloudAntiddosIpAlarmThresholdConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ip_alarm_threshold_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ip_alarm_threshold_config.create")() + defer tccommon.InconsistentCheck(d, meta)() instanceId := d.Get("instance_id").(string) instanceIp := d.Get("instance_ip").(string) alarmType := d.Get("alarm_type").(int) alarmTypeString := strconv.Itoa(alarmType) - d.SetId(instanceId + FILED_SP + instanceIp + FILED_SP + alarmTypeString) + d.SetId(instanceId + tccommon.FILED_SP + instanceIp + tccommon.FILED_SP + alarmTypeString) return resourceTencentCloudAntiddosIpAlarmThresholdConfigUpdate(d, meta) } func resourceTencentCloudAntiddosIpAlarmThresholdConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ip_alarm_threshold_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ip_alarm_threshold_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -102,14 +105,14 @@ func resourceTencentCloudAntiddosIpAlarmThresholdConfigRead(d *schema.ResourceDa } func resourceTencentCloudAntiddosIpAlarmThresholdConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ip_alarm_threshold_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ip_alarm_threshold_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := antiddos.NewCreateIPAlarmThresholdConfigRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -138,10 +141,10 @@ func resourceTencentCloudAntiddosIpAlarmThresholdConfigUpdate(d *schema.Resource request.IpAlarmThresholdConfigList = []*antiddos.IPAlarmThresholdRelation{&ipAlarmThresholdRelation} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreateIPAlarmThresholdConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreateIPAlarmThresholdConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -157,8 +160,8 @@ func resourceTencentCloudAntiddosIpAlarmThresholdConfigUpdate(d *schema.Resource } func resourceTencentCloudAntiddosIpAlarmThresholdConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_ip_alarm_threshold_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_ip_alarm_threshold_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_antiddos_ip_alarm_threshold_config_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_ip_alarm_threshold_config_test.go similarity index 89% rename from tencentcloud/resource_tc_antiddos_ip_alarm_threshold_config_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_ip_alarm_threshold_config_test.go index 3b140dba8e..f85e77209c 100644 --- a/tencentcloud/resource_tc_antiddos_ip_alarm_threshold_config_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_ip_alarm_threshold_config_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosIpAlarmThresholdConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosIpAlarmThresholdConfig, diff --git a/tencentcloud/resource_tc_antiddos_packet_filter_config.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_packet_filter_config.go similarity index 91% rename from tencentcloud/resource_tc_antiddos_packet_filter_config.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_packet_filter_config.go index d2de69d481..90d2657beb 100644 --- a/tencentcloud/resource_tc_antiddos_packet_filter_config.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_packet_filter_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosPacketFilterConfig() *schema.Resource { +func ResourceTencentCloudAntiddosPacketFilterConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosPacketFilterConfigCreate, Read: resourceTencentCloudAntiddosPacketFilterConfigRead, @@ -156,11 +159,11 @@ func resourceTencentCloudAntiddosPacketFilterConfig() *schema.Resource { } func resourceTencentCloudAntiddosPacketFilterConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_packet_filter_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_packet_filter_config.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = antiddos.NewCreatePacketFilterConfigRequest() @@ -242,10 +245,10 @@ func resourceTencentCloudAntiddosPacketFilterConfigCreate(d *schema.ResourceData request.PacketFilterConfig = &packetFilterConfig } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreatePacketFilterConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreatePacketFilterConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -256,7 +259,7 @@ func resourceTencentCloudAntiddosPacketFilterConfigCreate(d *schema.ResourceData return err } - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} packetFilterConfigs, err := service.DescribeAntiddosPacketFilterConfigById(ctx, instanceId) if err != nil { return err @@ -338,7 +341,7 @@ func resourceTencentCloudAntiddosPacketFilterConfigCreate(d *schema.ResourceData configId = config.PacketFilterConfig.Id } if configId != nil { - d.SetId(instanceId + FILED_SP + *configId) + d.SetId(instanceId + tccommon.FILED_SP + *configId) } else { return fmt.Errorf("can not find config ids") } @@ -347,16 +350,16 @@ func resourceTencentCloudAntiddosPacketFilterConfigCreate(d *schema.ResourceData } func resourceTencentCloudAntiddosPacketFilterConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_packet_filter_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_packet_filter_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -479,14 +482,14 @@ func resourceTencentCloudAntiddosPacketFilterConfigRead(d *schema.ResourceData, } func resourceTencentCloudAntiddosPacketFilterConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_packet_filter_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_packet_filter_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_antiddos_packet_filter_config_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_packet_filter_config_test.go similarity index 85% rename from tencentcloud/resource_tc_antiddos_packet_filter_config_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_packet_filter_config_test.go index 97f1c1ae61..80ce4ee51f 100644 --- a/tencentcloud/resource_tc_antiddos_packet_filter_config_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_packet_filter_config_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosPacketFilterConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosPacketFilterConfig, diff --git a/tencentcloud/resource_tc_antiddos_port_acl_config.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_port_acl_config.go similarity index 85% rename from tencentcloud/resource_tc_antiddos_port_acl_config.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_port_acl_config.go index 2c03805400..9982972bd6 100644 --- a/tencentcloud/resource_tc_antiddos_port_acl_config.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_port_acl_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -7,13 +7,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosPortAclConfig() *schema.Resource { +func ResourceTencentCloudAntiddosPortAclConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosPortAclConfigCreate, Read: resourceTencentCloudAntiddosPortAclConfigRead, @@ -80,10 +83,10 @@ func resourceTencentCloudAntiddosPortAclConfig() *schema.Resource { } func resourceTencentCloudAntiddosPortAclConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_port_acl_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_port_acl_config.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = antiddos.NewCreatePortAclConfigRequest() @@ -125,10 +128,10 @@ func resourceTencentCloudAntiddosPortAclConfigCreate(d *schema.ResourceData, met config = string(dMapJson) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreatePortAclConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreatePortAclConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -139,22 +142,22 @@ func resourceTencentCloudAntiddosPortAclConfigCreate(d *schema.ResourceData, met return err } - d.SetId(instanceId + FILED_SP + config) + d.SetId(instanceId + tccommon.FILED_SP + config) return resourceTencentCloudAntiddosPortAclConfigRead(d, meta) } func resourceTencentCloudAntiddosPortAclConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_port_acl_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_port_acl_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -259,14 +262,14 @@ func resourceTencentCloudAntiddosPortAclConfigRead(d *schema.ResourceData, meta } func resourceTencentCloudAntiddosPortAclConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_port_acl_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_port_acl_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_antiddos_port_acl_config_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_port_acl_config_test.go similarity index 83% rename from tencentcloud/resource_tc_antiddos_port_acl_config_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_port_acl_config_test.go index 9a1db93eb4..22a9233f26 100644 --- a/tencentcloud/resource_tc_antiddos_port_acl_config_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_port_acl_config_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosPortAclConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosPortAclConfig, diff --git a/tencentcloud/resource_tc_antiddos_scheduling_domain_user_name.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_scheduling_domain_user_name.go similarity index 70% rename from tencentcloud/resource_tc_antiddos_scheduling_domain_user_name.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_scheduling_domain_user_name.go index d19dfec66b..f87c85ddf2 100644 --- a/tencentcloud/resource_tc_antiddos_scheduling_domain_user_name.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_scheduling_domain_user_name.go @@ -1,16 +1,19 @@ -package tencentcloud +package dayuv2 import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudAntiddosSchedulingDomainUserName() *schema.Resource { +func ResourceTencentCloudAntiddosSchedulingDomainUserName() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudAntiddosSchedulingDomainUserNameCreate, Read: resourceTencentCloudAntiddosSchedulingDomainUserNameRead, @@ -37,8 +40,8 @@ func resourceTencentCloudAntiddosSchedulingDomainUserName() *schema.Resource { } func resourceTencentCloudAntiddosSchedulingDomainUserNameCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_scheduling_domain_user_name.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_scheduling_domain_user_name.create")() + defer tccommon.InconsistentCheck(d, meta)() d.SetId(d.Get("domain_name").(string)) @@ -46,14 +49,14 @@ func resourceTencentCloudAntiddosSchedulingDomainUserNameCreate(d *schema.Resour } func resourceTencentCloudAntiddosSchedulingDomainUserNameRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_scheduling_domain_user_name.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_scheduling_domain_user_name.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} domainName := d.Id() @@ -80,10 +83,10 @@ func resourceTencentCloudAntiddosSchedulingDomainUserNameRead(d *schema.Resource } func resourceTencentCloudAntiddosSchedulingDomainUserNameUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_scheduling_domain_user_name.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_scheduling_domain_user_name.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := antiddos.NewModifyDomainUsrNameRequest() @@ -97,10 +100,10 @@ func resourceTencentCloudAntiddosSchedulingDomainUserNameUpdate(d *schema.Resour } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().ModifyDomainUsrName(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().ModifyDomainUsrName(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -115,8 +118,8 @@ func resourceTencentCloudAntiddosSchedulingDomainUserNameUpdate(d *schema.Resour } func resourceTencentCloudAntiddosSchedulingDomainUserNameDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_antiddos_scheduling_domain_user_name.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_antiddos_scheduling_domain_user_name.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_antiddos_scheduling_domain_user_name_test.go b/tencentcloud/services/dayuv2/resource_tc_antiddos_scheduling_domain_user_name_test.go similarity index 89% rename from tencentcloud/resource_tc_antiddos_scheduling_domain_user_name_test.go rename to tencentcloud/services/dayuv2/resource_tc_antiddos_scheduling_domain_user_name_test.go index ca12601921..d82051bb8b 100644 --- a/tencentcloud/resource_tc_antiddos_scheduling_domain_user_name_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_antiddos_scheduling_domain_user_name_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudAntiddosSchedulingDomainUserNameResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccAntiddosSchedulingDomainUserName, diff --git a/tencentcloud/resource_tc_dayu_cc_policy_v2.go b/tencentcloud/services/dayuv2/resource_tc_dayu_cc_policy_v2.go similarity index 96% rename from tencentcloud/resource_tc_dayu_cc_policy_v2.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_cc_policy_v2.go index 9439b17f26..eec8528efa 100644 --- a/tencentcloud/resource_tc_dayu_cc_policy_v2.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_cc_policy_v2.go @@ -1,16 +1,19 @@ -package tencentcloud +package dayuv2 import ( "context" "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDayuCCPolicyV2() *schema.Resource { +func ResourceTencentCloudDayuCCPolicyV2() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuCCPolicyV2Create, Read: resourceTencentCloudDayuCCPolicyV2Read, @@ -290,11 +293,11 @@ func resourceTencentCloudDayuCCPolicyV2() *schema.Resource { } func resourceTencentCloudDayuCCPolicyV2Create(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_policy_v2.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_policy_v2.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} resourceId := d.Get("resource_id").(string) business := d.Get("business").(string) protectThresholdConfig, err := antiddosService.DescribeListProtectThresholdConfig(ctx, resourceId) @@ -427,21 +430,21 @@ func resourceTencentCloudDayuCCPolicyV2Create(d *schema.ResourceData, meta inter } } - d.SetId(resourceId + FILED_SP + business) + d.SetId(resourceId + tccommon.FILED_SP + business) return resourceTencentCloudDayuCCPolicyV2Read(d, meta) } func resourceTencentCloudDayuCCPolicyV2Read(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_policy_v2.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_policy_v2.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } instanceId := items[0] business := items[1] - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} thresholdList, err := antiddosService.DescribeCCThresholdList(ctx, business, instanceId) if err != nil { @@ -564,17 +567,17 @@ func resourceTencentCloudDayuCCPolicyV2Read(d *schema.ResourceData, meta interfa } func resourceTencentCloudDayuCCPolicyV2Update(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_policy_v2.update")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_policy_v2.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } instanceId := items[0] business := items[1] - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} protectThresholdConfig, err := antiddosService.DescribeListProtectThresholdConfig(ctx, instanceId) if err != nil { return err @@ -917,17 +920,17 @@ func resourceTencentCloudDayuCCPolicyV2Update(d *schema.ResourceData, meta inter } func resourceTencentCloudDayuCCPolicyV2Delete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_cc_policy_v2.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_cc_policy_v2.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } instanceId := items[0] business := items[1] - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} thresholdList, err := antiddosService.DescribeCCThresholdList(ctx, business, instanceId) if err != nil { return err diff --git a/tencentcloud/resource_tc_dayu_cc_policy_v2_test.go b/tencentcloud/services/dayuv2/resource_tc_dayu_cc_policy_v2_test.go similarity index 83% rename from tencentcloud/resource_tc_dayu_cc_policy_v2_test.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_cc_policy_v2_test.go index 7bbc696e8d..36b7a8666c 100644 --- a/tencentcloud/resource_tc_dayu_cc_policy_v2_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_cc_policy_v2_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2_test import ( "context" @@ -6,6 +6,10 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdayuv2 "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayuv2" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) @@ -13,8 +17,8 @@ import ( func TestAccTencentCloudDayuCCPolicyV2Resource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_INTERNATIONAL) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_INTERNATIONAL) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuCCPolicyV2Destroy, Steps: []resource.TestStep{ { @@ -37,16 +41,16 @@ func testAccCheckDayuCCPolicyV2Destroy(s *terraform.State) error { if rs.Type != "tencentcloud_dayu_cc_policy_v2" { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } instanceId := items[0] business := items[1] - antiddosService := AntiddosService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + antiddosService := svcdayuv2.NewAntiddosService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) thresholdList, err := antiddosService.DescribeCCThresholdList(ctx, business, instanceId) if err != nil { return err diff --git a/tencentcloud/resource_tc_dayu_ddos_ip_attachment_v2.go b/tencentcloud/services/dayuv2/resource_tc_dayu_ddos_ip_attachment_v2.go similarity index 75% rename from tencentcloud/resource_tc_dayu_ddos_ip_attachment_v2.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_ddos_ip_attachment_v2.go index af7bac3221..ba87f3e523 100644 --- a/tencentcloud/resource_tc_dayu_ddos_ip_attachment_v2.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_ddos_ip_attachment_v2.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -7,13 +7,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDayuDDosIpAttachmentV2() *schema.Resource { +func ResourceTencentCloudDayuDDosIpAttachmentV2() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuDDosIpAttachmentCreateV2, Read: resourceTencentCloudDayuDDosIpAttachmentReadV2, @@ -61,13 +64,13 @@ func resourceTencentCloudDayuDDosIpAttachmentV2() *schema.Resource { } func resourceTencentCloudDayuDDosIpAttachmentCreateV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_ip_attachment_v2.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_ip_attachment_v2.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var bgpInstanceId string boundIps := make([]string, 0) @@ -101,10 +104,10 @@ func resourceTencentCloudDayuDDosIpAttachmentCreateV2(d *schema.ResourceData, me } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreateBoundIP(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreateBoundIP(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -117,10 +120,10 @@ func resourceTencentCloudDayuDDosIpAttachmentCreateV2(d *schema.ResourceData, me log.Printf("[CRITAL]%s create antiddos boundip failed, reason:%+v", logId, err) return err } - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { boundip, e := service.DescribeAntiddosBoundipById(ctx, bgpInstanceId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *boundip.BoundStatus == DAYU_BOUNDSTATUS_IDLE { return nil @@ -132,29 +135,29 @@ func resourceTencentCloudDayuDDosIpAttachmentCreateV2(d *schema.ResourceData, me return err } - d.SetId(bgpInstanceId + FILED_SP + strings.Join(boundIps, COMMA_SP)) + d.SetId(bgpInstanceId + tccommon.FILED_SP + strings.Join(boundIps, tccommon.COMMA_SP)) return resourceTencentCloudDayuDDosIpAttachmentReadV2(d, meta) } func resourceTencentCloudDayuDDosIpAttachmentReadV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_ip_attachment_v2.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_ip_attachment_v2.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } bgpInstanceId := idSplit[0] boundIps := idSplit[1] boundIpMap := make(map[string]bool) - for _, boundIp := range strings.Split(boundIps, COMMA_SP) { + for _, boundIp := range strings.Split(boundIps, tccommon.COMMA_SP) { boundIpMap[boundIp] = true } @@ -189,15 +192,15 @@ func resourceTencentCloudDayuDDosIpAttachmentReadV2(d *schema.ResourceData, meta } func resourceTencentCloudDayuDDosIpAttachmentDeleteV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_ip_attachment_v2.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_ip_attachment_v2.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + service := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -208,7 +211,7 @@ func resourceTencentCloudDayuDDosIpAttachmentDeleteV2(d *schema.ResourceData, me request.Business = helper.String(BUSINESS_BGP_MULTIP) request.Id = helper.String(bgpInstanceId) ubBoundDevList := make([]*antiddos.BoundIpInfo, 0) - for _, boundIp := range strings.Split(boundIps, COMMA_SP) { + for _, boundIp := range strings.Split(boundIps, tccommon.COMMA_SP) { boundIpValue := boundIp ubBoundDevList = append( ubBoundDevList, @@ -219,10 +222,10 @@ func resourceTencentCloudDayuDDosIpAttachmentDeleteV2(d *schema.ResourceData, me } request.UnBoundDevList = ubBoundDevList - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseAntiddosClient().CreateBoundIP(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseAntiddosClient().CreateBoundIP(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -236,10 +239,10 @@ func resourceTencentCloudDayuDDosIpAttachmentDeleteV2(d *schema.ResourceData, me return err } - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { boundip, e := service.DescribeAntiddosBoundipById(ctx, bgpInstanceId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *boundip.BoundStatus == DAYU_BOUNDSTATUS_IDLE { return nil diff --git a/tencentcloud/resource_tc_dayu_ddos_ip_attachment_v2_test.go b/tencentcloud/services/dayuv2/resource_tc_dayu_ddos_ip_attachment_v2_test.go similarity index 72% rename from tencentcloud/resource_tc_dayu_ddos_ip_attachment_v2_test.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_ddos_ip_attachment_v2_test.go index b56c63ef76..61d06d961f 100644 --- a/tencentcloud/resource_tc_dayu_ddos_ip_attachment_v2_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_ddos_ip_attachment_v2_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dayuv2_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdayuv2 "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayuv2" + "context" "fmt" "strings" @@ -13,8 +17,8 @@ import ( func TestAccTencentCloudDayuDdosIpAttachmentV2Resource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_INTERNATIONAL) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_INTERNATIONAL) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuDdosIpAttachmentDestroy, Steps: []resource.TestStep{ { @@ -30,24 +34,22 @@ func TestAccTencentCloudDayuDdosIpAttachmentV2Resource_basic(t *testing.T) { } func testAccCheckDayuDdosIpAttachmentDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := AntiddosService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + service := svcdayuv2.NewAntiddosService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dayu_ddos_ip_attachment_v2" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } bgpInstanceId := idSplit[0] boundIps := idSplit[1] boundIpMap := make(map[string]bool) - for _, boundIp := range strings.Split(boundIps, COMMA_SP) { + for _, boundIp := range strings.Split(boundIps, tccommon.COMMA_SP) { boundIpMap[boundIp] = true } boundip, err := service.DescribeAntiddosBoundipById(ctx, bgpInstanceId) @@ -68,8 +70,8 @@ func testAccCheckDayuDdosIpAttachmentDestroy(s *terraform.State) error { func testAccCheckDayuDdosIpAttachmentExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[n] if !ok { @@ -78,14 +80,12 @@ func testAccCheckDayuDdosIpAttachmentExists(n string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("DDoS ip attachment id is not set") } - service := AntiddosService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + service := svcdayuv2.NewAntiddosService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dayu_ddos_ip_attachment_v2" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -103,7 +103,7 @@ func testAccCheckDayuDdosIpAttachmentExists(n string) resource.TestCheckFunc { for _, item := range boundip.EipProductInfos { boundIpMap[*item.Ip] = true } - for _, item := range strings.Split(boundIps, COMMA_SP) { + for _, item := range strings.Split(boundIps, tccommon.COMMA_SP) { if _, ok := boundIpMap[item]; !ok { return fmt.Errorf("DDoS ip attachment not exists: %s, %s", rs.Primary.ID, item) } diff --git a/tencentcloud/resource_tc_dayu_ddos_policy_v2.go b/tencentcloud/services/dayuv2/resource_tc_dayu_ddos_policy_v2.go similarity index 97% rename from tencentcloud/resource_tc_dayu_ddos_policy_v2.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_ddos_policy_v2.go index ef0ea127ee..ad9827567d 100644 --- a/tencentcloud/resource_tc_dayu_ddos_policy_v2.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_ddos_policy_v2.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2 import ( "context" @@ -6,12 +6,15 @@ import ( "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDayuDdosPolicyV2() *schema.Resource { +func ResourceTencentCloudDayuDdosPolicyV2() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuDdosPolicyV2Create, Read: resourceTencentCloudDayuDdosPolicyV2Read, @@ -418,15 +421,15 @@ func resourceTencentCloudDayuDdosPolicyV2() *schema.Resource { } func resourceTencentCloudDayuDdosPolicyV2Create(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_v2.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_v2.create")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} resourceId := d.Get("resource_id").(string) business := d.Get("business").(string) - d.SetId(resourceId + FILED_SP + business) + d.SetId(resourceId + tccommon.FILED_SP + business) if v, ok := d.GetOk("black_white_ips"); ok { blackWhiteIps := v.([]interface{}) blacks := make([]string, 0) @@ -705,11 +708,11 @@ func resourceTencentCloudDayuDdosPolicyV2Create(d *schema.ResourceData, meta int } func resourceTencentCloudDayuDdosPolicyV2Read(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_v2.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - items := strings.Split(d.Id(), FILED_SP) + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_v2.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } @@ -897,11 +900,11 @@ func resourceTencentCloudDayuDdosPolicyV2Read(d *schema.ResourceData, meta inter } func resourceTencentCloudDayuDdosPolicyV2Update(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_v2.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - items := strings.Split(d.Id(), FILED_SP) + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_v2.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } @@ -1331,11 +1334,11 @@ func resourceTencentCloudDayuDdosPolicyV2Update(d *schema.ResourceData, meta int } func resourceTencentCloudDayuDdosPolicyV2Delete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_ddos_policy_v2.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} - items := strings.Split(d.Id(), FILED_SP) + defer tccommon.LogElapsed("resource.tencentcloud_dayu_ddos_policy_v2.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } diff --git a/tencentcloud/resource_tc_dayu_ddos_policy_v2_test.go b/tencentcloud/services/dayuv2/resource_tc_dayu_ddos_policy_v2_test.go similarity index 86% rename from tencentcloud/resource_tc_dayu_ddos_policy_v2_test.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_ddos_policy_v2_test.go index 8a192bd965..4ef5cd303f 100644 --- a/tencentcloud/resource_tc_dayu_ddos_policy_v2_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_ddos_policy_v2_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2_test import ( "context" @@ -6,15 +6,20 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcdayuv2 "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayuv2" ) func TestAccTencentCloudDayuDdosPolicyV2Resource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuDdosPolicyV2Destroy, Steps: []resource.TestStep{ { @@ -38,16 +43,16 @@ func testAccCheckDayuDdosPolicyV2Destroy(s *terraform.State) error { if rs.Type != "tencentcloud_dayu_ddos_policy_v2" { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of DDoS policy") } resourceId := items[0] - antiddosService := AntiddosService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + antiddosService := svcdayuv2.NewAntiddosService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) blackWhiteIpRelationList, err := antiddosService.DescribeListBlackWhiteIpList(ctx, resourceId) if err != nil { return err diff --git a/tencentcloud/resource_tc_dayu_eip.go b/tencentcloud/services/dayuv2/resource_tc_dayu_eip.go similarity index 79% rename from tencentcloud/resource_tc_dayu_eip.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_eip.go index 1ec206d4dc..67870d27f5 100644 --- a/tencentcloud/resource_tc_dayu_eip.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_eip.go @@ -1,14 +1,16 @@ -package tencentcloud +package dayuv2 import ( "context" "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func resourceTencentCloudDayuEip() *schema.Resource { +func ResourceTencentCloudDayuEip() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuEipCreate, Read: resourceTencentCloudDayuEipRead, @@ -43,7 +45,7 @@ func resourceTencentCloudDayuEip() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateAllowedStringValue(DDOS_EIP_BIND_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DDOS_EIP_BIND_RESOURCE_TYPE), Description: "Resource type to bind, value range [`clb`, `cvm`].", }, "resource_region": { @@ -96,11 +98,11 @@ func resourceTencentCloudDayuEip() *schema.Resource { } func resourceTencentCloudDayuEipCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule.create")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} bindResourceType := d.Get("bind_resource_type").(string) resourceId := d.Get("resource_id").(string) eip := d.Get("eip").(string) @@ -129,21 +131,21 @@ func resourceTencentCloudDayuEipCreate(d *schema.ResourceData, meta interface{}) break } } - d.SetId(resourceId + FILED_SP + eip) + d.SetId(resourceId + tccommon.FILED_SP + eip) return resourceTencentCloudDayuEipRead(d, meta) } func resourceTencentCloudDayuEipRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule.read")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of dayu eip.") } resourceId := items[0] - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} bgpIPInstances, err := antiddosService.DescribeListBGPIPInstances(ctx, resourceId, DDOS_EIP_BIND_STATUS, 0, 10) if err != nil { return err @@ -165,17 +167,17 @@ func resourceTencentCloudDayuEipRead(d *schema.ResourceData, meta interface{}) e } func resourceTencentCloudDayuEipDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of dayu eip.") } resourceId := items[0] eip := items[1] - antiddosService := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn} + antiddosService := AntiddosService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} err := antiddosService.DisassociateDDoSEipAddress(ctx, resourceId, eip) if err != nil { return err diff --git a/tencentcloud/resource_tc_dayu_eip_test.go b/tencentcloud/services/dayuv2/resource_tc_dayu_eip_test.go similarity index 69% rename from tencentcloud/resource_tc_dayu_eip_test.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_eip_test.go index 35c969bcb2..81bec16aa5 100644 --- a/tencentcloud/resource_tc_dayu_eip_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_eip_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dayuv2_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdayuv2 "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayuv2" + "context" "fmt" "strings" @@ -16,8 +20,8 @@ var testDayuEipResourceKey = testDayuEipResourceName + ".test" func TestAccTencentCloudDayuEipResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_INTERNATIONAL) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_INTERNATIONAL) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuEipDestroy, Steps: []resource.TestStep{ { @@ -41,19 +45,19 @@ func testAccCheckDayuEipDestroy(s *terraform.State) error { if rs.Type != testDayuL4RuleResourceName { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of eip") } resourceId := items[0] eip := items[1] - service := AntiddosService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayuv2.NewAntiddosService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) - result, err := service.DescribeListBGPIPInstances(ctx, resourceId, DDOS_EIP_BIND_STATUS, 0, 10) + result, err := service.DescribeListBGPIPInstances(ctx, resourceId, svcdayuv2.DDOS_EIP_BIND_STATUS, 0, 10) if err != nil { return err } @@ -75,18 +79,18 @@ func testAccCheckDayuEipExists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return fmt.Errorf("broken ID of eip") } resourceId := items[0] - service := AntiddosService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayuv2.NewAntiddosService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) - result, err := service.DescribeListBGPIPInstances(ctx, resourceId, DDOS_EIP_BIND_STATUS, 0, 10) + result, err := service.DescribeListBGPIPInstances(ctx, resourceId, svcdayuv2.DDOS_EIP_BIND_STATUS, 0, 10) if err != nil { return err diff --git a/tencentcloud/resource_tc_dayu_l4_rule_v2.go b/tencentcloud/services/dayuv2/resource_tc_dayu_l4_rule_v2.go similarity index 75% rename from tencentcloud/resource_tc_dayu_l4_rule_v2.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_l4_rule_v2.go index cbe92c73ec..3afa5411c2 100644 --- a/tencentcloud/resource_tc_dayu_l4_rule_v2.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_l4_rule_v2.go @@ -1,39 +1,4 @@ -/* -Use this resource to create dayu layer 4 rule - -~> **NOTE:** This resource only support resource Anti-DDoS of type `bgpip` and `net` - -Example Usage - -```hcl -resource "tencentcloud_dayu_l4_rule" "test_rule" { - resource_type = "bgpip" - resource_id = "bgpip-00000294" - name = "rule_test" - protocol = "TCP" - s_port = 80 - d_port = 60 - source_type = 2 - health_check_switch = true - health_check_timeout = 30 - health_check_interval = 35 - health_check_health_num = 5 - health_check_unhealth_num = 10 - session_switch = false - session_time = 300 - - source_list { - source = "1.1.1.1" - weight = 100 - } - source_list { - source = "2.2.2.2" - weight = 50 - } -} -``` -*/ -package tencentcloud +package dayuv2 import ( "context" @@ -45,9 +10,11 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" ) -func resourceTencentCloudDayuL4RuleV2() *schema.Resource { +func ResourceTencentCloudDayuL4RuleV2() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuL4RuleCreateV2, Read: resourceTencentCloudDayuL4RuleReadV2, @@ -57,7 +24,7 @@ func resourceTencentCloudDayuL4RuleV2() *schema.Resource { "business": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE_RULE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE_RULE), ForceNew: true, Description: "Business of the resource that the layer 4 rule works for. Valid values: `bgpip` and `net`.", }, @@ -164,10 +131,10 @@ func resourceTencentCloudDayuL4RuleV2() *schema.Resource { } func resourceTencentCloudDayuL4RuleCreateV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule_v2.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule_v2.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceId := d.Get("resource_id").(string) business := d.Get("business").(string) @@ -175,26 +142,26 @@ func resourceTencentCloudDayuL4RuleCreateV2(d *schema.ResourceData, meta interfa virtualPort := d.Get("virtual_port").(int) rules := d.Get("rules").([]interface{}) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } err := service.CreateNewL4Rules(ctx, business, resourceId, vpn, rules) if err != nil { return err } virtualPortStr := strconv.Itoa(virtualPort) - d.SetId(business + FILED_SP + resourceId + FILED_SP + vpn + FILED_SP + virtualPortStr) + d.SetId(business + tccommon.FILED_SP + resourceId + tccommon.FILED_SP + vpn + tccommon.FILED_SP + virtualPortStr) return resourceTencentCloudDayuL4RuleReadV2(d, meta) } func resourceTencentCloudDayuL4RuleReadV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 4 { return fmt.Errorf("broken ID of dayu L4 rule") } @@ -212,11 +179,11 @@ func resourceTencentCloudDayuL4RuleReadV2(d *schema.ResourceData, meta interface extendParams["virtual_port"] = virtualPort rules := make([]*dayu.NewL4RuleEntry, 0) - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, err := service.DescribeNewL4Rules(ctx, business, extendParams) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } rules = result return nil @@ -238,16 +205,16 @@ func resourceTencentCloudDayuL4RuleReadV2(d *schema.ResourceData, meta interface } func resourceTencentCloudDayuL4RuleDeleteV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l4_rule.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l4_rule.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := DayuService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 4 { return fmt.Errorf("broken ID of dayu L4 rule") } @@ -264,11 +231,11 @@ func resourceTencentCloudDayuL4RuleDeleteV2(d *schema.ResourceData, meta interfa extendParams["virtual_port"] = virtualPort rules := make([]*dayu.NewL4RuleEntry, 0) - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, err := service.DescribeNewL4Rules(ctx, business, extendParams) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } rules = result return nil diff --git a/tencentcloud/services/dayuv2/resource_tc_dayu_l4_rule_v2.md b/tencentcloud/services/dayuv2/resource_tc_dayu_l4_rule_v2.md new file mode 100644 index 0000000000..e07a85fdc7 --- /dev/null +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_l4_rule_v2.md @@ -0,0 +1,33 @@ +Use this resource to create dayu layer 4 rule + +~> **NOTE:** This resource only support resource Anti-DDoS of type `bgpip` and `net` + +Example Usage + +```hcl +resource "tencentcloud_dayu_l4_rule" "test_rule" { + resource_type = "bgpip" + resource_id = "bgpip-00000294" + name = "rule_test" + protocol = "TCP" + s_port = 80 + d_port = 60 + source_type = 2 + health_check_switch = true + health_check_timeout = 30 + health_check_interval = 35 + health_check_health_num = 5 + health_check_unhealth_num = 10 + session_switch = false + session_time = 300 + + source_list { + source = "1.1.1.1" + weight = 100 + } + source_list { + source = "2.2.2.2" + weight = 50 + } +} +``` diff --git a/tencentcloud/resource_tc_dayu_l4_rule_v2_test.go b/tencentcloud/services/dayuv2/resource_tc_dayu_l4_rule_v2_test.go similarity index 76% rename from tencentcloud/resource_tc_dayu_l4_rule_v2_test.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_l4_rule_v2_test.go index eb6abf64fa..ce11002adb 100644 --- a/tencentcloud/resource_tc_dayu_l4_rule_v2_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_l4_rule_v2_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2_test import ( "context" @@ -10,16 +10,22 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + svcdayuv2 "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayuv2" ) +var testDayuL4RuleResourceName = "tencentcloud_dayu_l4_rule" var testDayuL4RuleV2ResourceNameTCP = "tencentcloud_dayu_l4_rule_v2" var testDayuL4RuleV2ResourceKeyTCP = testDayuL4RuleV2ResourceNameTCP + ".test" func TestAccTencentCloudDayuL4RuleV2Resource_TCP(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_INTERNATIONAL) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_INTERNATIONAL) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuL4RuleV2Destroy, Steps: []resource.TestStep{ { @@ -44,10 +50,10 @@ func testAccCheckDayuL4RuleV2Destroy(s *terraform.State) error { if rs.Type != testDayuL4RuleV2ResourceNameTCP { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 4 { return fmt.Errorf("broken ID of L4 rule") } @@ -55,7 +61,7 @@ func testAccCheckDayuL4RuleV2Destroy(s *terraform.State) error { resourceId := items[1] vpn := items[2] virtualPortStr := items[3] - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayuv2.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) extendParams := make(map[string]interface{}) extendParams["ip"] = vpn virtualPort, err := strconv.Atoi(virtualPortStr) @@ -81,10 +87,10 @@ func testAccCheckDayuL4RuleV2Exists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 4 { return fmt.Errorf("broken ID of L4 rule") } @@ -92,7 +98,7 @@ func testAccCheckDayuL4RuleV2Exists(n string) resource.TestCheckFunc { vpn := items[2] virtualPortStr := items[3] virtualPort, err := strconv.Atoi(virtualPortStr) - service := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdayuv2.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) extendParams := make(map[string]interface{}) extendParams["ip"] = vpn diff --git a/tencentcloud/resource_tc_dayu_l7_rule_v2.go b/tencentcloud/services/dayuv2/resource_tc_dayu_l7_rule_v2.go similarity index 82% rename from tencentcloud/resource_tc_dayu_l7_rule_v2.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_l7_rule_v2.go index 5c67ec7fad..3ab224bf5c 100644 --- a/tencentcloud/resource_tc_dayu_l7_rule_v2.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_l7_rule_v2.go @@ -1,16 +1,18 @@ -package tencentcloud +package dayuv2 import ( "context" "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" ) -func resourceTencentCloudDayuL7RuleV2() *schema.Resource { +func ResourceTencentCloudDayuL7RuleV2() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDayuL7RuleCreateV2, Read: resourceTencentCloudDayuL7RuleReadV2, @@ -33,7 +35,7 @@ func resourceTencentCloudDayuL7RuleV2() *schema.Resource { "resource_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(DAYU_RESOURCE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DAYU_RESOURCE_TYPE), ForceNew: true, Description: "Type of the resource that the layer 7 rule works for, valid value is `bgpip`.", }, @@ -123,10 +125,10 @@ func resourceTencentCloudDayuL7RuleV2() *schema.Resource { } func resourceTencentCloudDayuL7RuleCreateV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l7_rule.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l7_rule.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) resourceId := d.Get("resource_id").(string) resourceIp := d.Get("resource_ip").(string) @@ -135,23 +137,23 @@ func resourceTencentCloudDayuL7RuleCreateV2(d *schema.ResourceData, meta interfa ruleItem := rule[0].(map[string]interface{}) domain := ruleItem["domain"].(string) protocol := ruleItem["protocol"].(string) - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} err := dayuService.CreateL7RuleV2(ctx, resourceType, resourceId, resourceIp, rule) if err != nil { return err } - d.SetId(resourceType + FILED_SP + domain + FILED_SP + protocol) + d.SetId(resourceType + tccommon.FILED_SP + domain + tccommon.FILED_SP + protocol) return resourceTencentCloudDayuL7RuleReadV2(d, meta) } func resourceTencentCloudDayuL7RuleUpdateV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l7_rule.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l7_rule.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu L7 rule") } @@ -226,18 +228,18 @@ func resourceTencentCloudDayuL7RuleUpdateV2(d *schema.ResourceData, meta interfa if err != nil { return err } - d.SetId(business + FILED_SP + domain + FILED_SP + protocol) + d.SetId(business + tccommon.FILED_SP + domain + tccommon.FILED_SP + protocol) return resourceTencentCloudDayuL7RuleReadV2(d, meta) } func resourceTencentCloudDayuL7RuleReadV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l7_rule.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l7_rule.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu L7 rule") } @@ -247,7 +249,7 @@ func resourceTencentCloudDayuL7RuleReadV2(d *schema.ResourceData, meta interface extendParams := make(map[string]interface{}) extendParams["domain"] = domain extendParams["protocol"] = protocol - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} for { rules, _, err := dayuService.DescribeL7RulesV2(ctx, business, extendParams) if err != nil { @@ -268,12 +270,12 @@ func resourceTencentCloudDayuL7RuleReadV2(d *schema.ResourceData, meta interface } func resourceTencentCloudDayuL7RuleDeleteV2(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dayu_l7_rule.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dayu_l7_rule.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(d.Id(), FILED_SP) + items := strings.Split(d.Id(), tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of L7 rule") } @@ -281,7 +283,7 @@ func resourceTencentCloudDayuL7RuleDeleteV2(d *schema.ResourceData, meta interfa domain := items[1] protocol := items[2] - dayuService := DayuService{client: meta.(*TencentCloudClient).apiV3Conn} + dayuService := DayuService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} extendParams := make(map[string]interface{}) extendParams["domain"] = domain extendParams["protocol"] = protocol @@ -297,10 +299,10 @@ func resourceTencentCloudDayuL7RuleDeleteV2(d *schema.ResourceData, meta interfa resourceId := *ruleItem.Id resourceIp := *ruleItem.Ip ruleId := *ruleItem.RuleId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.DeleteL7RulesV2(ctx, business, resourceId, resourceIp, ruleId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) diff --git a/tencentcloud/resource_tc_dayu_l7_rule_v2_test.go b/tencentcloud/services/dayuv2/resource_tc_dayu_l7_rule_v2_test.go similarity index 73% rename from tencentcloud/resource_tc_dayu_l7_rule_v2_test.go rename to tencentcloud/services/dayuv2/resource_tc_dayu_l7_rule_v2_test.go index 78fc2c2bbe..6ca8e18fc8 100644 --- a/tencentcloud/resource_tc_dayu_l7_rule_v2_test.go +++ b/tencentcloud/services/dayuv2/resource_tc_dayu_l7_rule_v2_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dayuv2_test import ( "context" @@ -6,8 +6,13 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcdayuv2 "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dayuv2" ) var testDayuL7RuleV2ResourceName = "tencentcloud_dayu_l7_rule_v2" @@ -16,8 +21,8 @@ var testDayuL7RuleV2ResourceKey = testDayuL7RuleV2ResourceName + ".test_rule" func TestAccTencentCloudDayuL7RuleV2Resource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_INTERNATIONAL) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_INTERNATIONAL) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDayuL7RuleV2Destroy, Steps: []resource.TestStep{ { @@ -39,9 +44,9 @@ func testAccCheckDayuL7RuleV2Destroy(s *terraform.State) error { if rs.Type != testDayuL4RuleV2ResourceNameTCP { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu L7 rule") } @@ -52,7 +57,7 @@ func testAccCheckDayuL7RuleV2Destroy(s *terraform.State) error { extendParams := make(map[string]interface{}) extendParams["domain"] = domain extendParams["protocol"] = protocol - dayuService := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dayuService := svcdayuv2.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rules, _, err := dayuService.DescribeL7RulesV2(ctx, business, extendParams) if err != nil { return err @@ -65,10 +70,10 @@ func testAccCheckDayuL7RuleV2Destroy(s *terraform.State) error { resourceId := *ruleItem.Id resourceIp := *ruleItem.Ip ruleId := *ruleItem.RuleId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := dayuService.DeleteL7RulesV2(ctx, business, resourceId, resourceIp, ruleId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -86,10 +91,10 @@ func testAccCheckDayuL7RuleV2Exists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 3 { return fmt.Errorf("broken ID of dayu L7 rule") } @@ -100,7 +105,7 @@ func testAccCheckDayuL7RuleV2Exists(n string) resource.TestCheckFunc { extendParams := make(map[string]interface{}) extendParams["domain"] = domain extendParams["protocol"] = protocol - dayuService := DayuService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dayuService := svcdayuv2.NewDayuService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rules, _, err := dayuService.DescribeL7RulesV2(ctx, business, extendParams) if err != nil { diff --git a/tencentcloud/service_tencentcloud_antiddos.go b/tencentcloud/services/dayuv2/service_tencentcloud_antiddos.go similarity index 92% rename from tencentcloud/service_tencentcloud_antiddos.go rename to tencentcloud/services/dayuv2/service_tencentcloud_antiddos.go index 766a012495..53c5782642 100644 --- a/tencentcloud/service_tencentcloud_antiddos.go +++ b/tencentcloud/services/dayuv2/service_tencentcloud_antiddos.go @@ -1,25 +1,32 @@ -package tencentcloud +package dayuv2 import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewAntiddosService(client *connectivity.TencentCloudClient) AntiddosService { + return AntiddosService{client: client} +} + type AntiddosService struct { client *connectivity.TencentCloudClient } func (me *AntiddosService) DescribeListBGPIPInstances(ctx context.Context, instanceId string, status []string, offset int, limit int) (result []*antiddos.BGPIPInstance, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListBGPIPInstancesRequest() request.FilterInstanceId = &instanceId eipType := int64(1) @@ -36,7 +43,7 @@ func (me *AntiddosService) DescribeListBGPIPInstances(ctx context.Context, insta request.Limit = &limitInt64 ratelimit.Check(request.GetAction()) var response *antiddos.DescribeListBGPIPInstancesResponse - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, err = me.client.UseAntiddosClient().DescribeListBGPIPInstances(request) if e, ok := err.(*errors.TencentCloudSDKError); ok { @@ -59,7 +66,7 @@ func (me *AntiddosService) DescribeListBGPIPInstances(ctx context.Context, insta } func (me *AntiddosService) AssociateDDoSEipAddress(ctx context.Context, instanceId string, eip string, cvmInstanceID string, cvmRegion string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewAssociateDDoSEipAddressRequest() request.InstanceId = common.StringPtr(instanceId) @@ -67,7 +74,7 @@ func (me *AntiddosService) AssociateDDoSEipAddress(ctx context.Context, instance request.CvmInstanceID = common.StringPtr(cvmInstanceID) request.CvmRegion = common.StringPtr(cvmRegion) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().AssociateDDoSEipAddress(request) if e, ok := err.(*errors.TencentCloudSDKError); ok { @@ -90,7 +97,7 @@ func (me *AntiddosService) AssociateDDoSEipAddress(ctx context.Context, instance } func (me *AntiddosService) AssociateDDoSEipLoadBalancer(ctx context.Context, instanceId string, eip string, loadBalancerID string, loadBalancerRegion string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewAssociateDDoSEipLoadBalancerRequest() request.InstanceId = common.StringPtr(instanceId) @@ -98,7 +105,7 @@ func (me *AntiddosService) AssociateDDoSEipLoadBalancer(ctx context.Context, ins request.LoadBalancerID = common.StringPtr(loadBalancerID) request.LoadBalancerRegion = common.StringPtr(loadBalancerRegion) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().AssociateDDoSEipLoadBalancer(request) if e, ok := err.(*errors.TencentCloudSDKError); ok { @@ -121,13 +128,13 @@ func (me *AntiddosService) AssociateDDoSEipLoadBalancer(ctx context.Context, ins } func (me *AntiddosService) DisassociateDDoSEipAddress(ctx context.Context, instanceId string, eip string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDisassociateDDoSEipAddressRequest() request.InstanceId = common.StringPtr(instanceId) request.Eip = common.StringPtr(eip) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DisassociateDDoSEipAddress(request) if e, ok := err.(*errors.TencentCloudSDKError); ok { @@ -150,13 +157,13 @@ func (me *AntiddosService) DisassociateDDoSEipAddress(ctx context.Context, insta } func (me *AntiddosService) DescribeListProtectThresholdConfig(ctx context.Context, instanceId string) (result antiddos.ProtectThresholdRelation, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListProtectThresholdConfigRequest() request.FilterInstanceId = common.StringPtr(instanceId) request.Limit = helper.IntUint64(1) request.Offset = helper.Int64Uint64(0) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { response, err := me.client.UseAntiddosClient().DescribeListProtectThresholdConfig(request) configList := response.Response.ConfigList if len(configList) > 0 { @@ -230,13 +237,13 @@ func (me *AntiddosService) DescribeListPortAclList(ctx context.Context, instance } func (me *AntiddosService) DescribeListProtocolBlockConfig(ctx context.Context, instanceId string) (result antiddos.ProtocolBlockRelation, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListProtocolBlockConfigRequest() request.FilterInstanceId = common.StringPtr(instanceId) request.Limit = helper.IntInt64(1) request.Offset = helper.IntInt64(0) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { response, err := me.client.UseAntiddosClient().DescribeListProtocolBlockConfig(request) configList := response.Response.ConfigList if len(configList) > 0 { @@ -256,13 +263,13 @@ func (me *AntiddosService) DescribeListProtocolBlockConfig(ctx context.Context, } func (me *AntiddosService) DescribeDDoSConnectLimitList(ctx context.Context, instanceId string) (result antiddos.ConnectLimitConfig, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeDDoSConnectLimitListRequest() request.FilterInstanceId = common.StringPtr(instanceId) request.Limit = helper.IntUint64(1) request.Offset = helper.IntUint64(0) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { response, err := me.client.UseAntiddosClient().DescribeDDoSConnectLimitList(request) configList := response.Response.ConfigList if len(configList) > 0 { @@ -282,13 +289,13 @@ func (me *AntiddosService) DescribeDDoSConnectLimitList(ctx context.Context, ins } func (me *AntiddosService) DescribeListDDoSAI(ctx context.Context, instanceId string) (result antiddos.DDoSAIRelation, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListDDoSAIRequest() request.FilterInstanceId = common.StringPtr(instanceId) request.Limit = helper.IntInt64(1) request.Offset = helper.IntInt64(0) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { response, err := me.client.UseAntiddosClient().DescribeListDDoSAI(request) configList := response.Response.ConfigList if len(configList) > 0 { @@ -361,13 +368,13 @@ func (me *AntiddosService) DescribeListDDoSSpeedLimitConfig(ctx context.Context, } func (me *AntiddosService) DescribeListPacketFilterConfig(ctx context.Context, instanceId string) (result []*antiddos.PacketFilterRelation, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListPacketFilterConfigRequest() request.FilterInstanceId = common.StringPtr(instanceId) request.Limit = helper.IntInt64(1) request.Offset = helper.IntInt64(0) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { response, err := me.client.UseAntiddosClient().DescribeListPacketFilterConfig(request) configList := response.Response.ConfigList if len(configList) > 0 { @@ -387,13 +394,13 @@ func (me *AntiddosService) DescribeListPacketFilterConfig(ctx context.Context, i } // func (me *AntiddosService) DescribeListWaterPrintConfig(ctx context.Context, instanceId string) (result antiddos.WaterPrintRelation, err error) { -// logId := getLogId(ctx) +// logId := tccommon.GetLogId(ctx) // request := antiddos.NewDescribeListWaterPrintConfigRequest() // request.FilterInstanceId = common.StringPtr(instanceId) // request.Limit = helper.IntInt64(1) // request.Offset = helper.IntInt64(0) -// err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { +// err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { // response, err := me.client.UseAntiddosClient().DescribeListWaterPrintConfig(request) // configList := response.Response.ConfigList // if len(configList) > 0 { @@ -413,7 +420,7 @@ func (me *AntiddosService) DescribeListPacketFilterConfig(ctx context.Context, i // } func (me *AntiddosService) CreateDDoSBlackWhiteIpList(ctx context.Context, instanceId string, ipList []string, ipType string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateDDoSBlackWhiteIpListRequest() request.InstanceId = common.StringPtr(instanceId) requestIpList := make([]*antiddos.IpSegment, 0) @@ -424,7 +431,7 @@ func (me *AntiddosService) CreateDDoSBlackWhiteIpList(ctx context.Context, insta request.IpList = requestIpList request.Type = common.StringPtr(ipType) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateDDoSBlackWhiteIpList(request) if err != nil { return resource.RetryableError(err) @@ -440,12 +447,12 @@ func (me *AntiddosService) CreateDDoSBlackWhiteIpList(ctx context.Context, insta } func (me *AntiddosService) ModifyDDoSThreshold(ctx context.Context, business, instanceId string, threshold int) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewModifyDDoSThresholdRequest() request.Business = common.StringPtr(business) request.Id = common.StringPtr(instanceId) request.Threshold = helper.IntUint64(threshold) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().ModifyDDoSThreshold(request) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { @@ -466,14 +473,14 @@ func (me *AntiddosService) ModifyDDoSThreshold(ctx context.Context, business, in } func (me *AntiddosService) ModifyDDoSLevel(ctx context.Context, business, instanceId, ddosLevel string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewModifyDDoSLevelRequest() request.Business = common.StringPtr(business) request.Id = common.StringPtr(instanceId) request.Method = common.StringPtr("set") request.DDoSLevel = common.StringPtr(ddosLevel) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().ModifyDDoSLevel(request) if err != nil { return resource.RetryableError(err) @@ -489,12 +496,12 @@ func (me *AntiddosService) ModifyDDoSLevel(ctx context.Context, business, instan } func (me *AntiddosService) CreatePortAclConfig(ctx context.Context, instanceId string, aclConfig antiddos.AclConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreatePortAclConfigRequest() request.AclConfig = &aclConfig request.InstanceId = &instanceId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreatePortAclConfig(request) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { @@ -515,12 +522,12 @@ func (me *AntiddosService) CreatePortAclConfig(ctx context.Context, instanceId s } func (me *AntiddosService) CreateProtocolBlockConfig(ctx context.Context, instanceId string, protocolBlockConfig antiddos.ProtocolBlockConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateProtocolBlockConfigRequest() request.InstanceId = &instanceId request.ProtocolBlockConfig = &protocolBlockConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateProtocolBlockConfig(request) if err != nil { return resource.RetryableError(err) @@ -536,12 +543,12 @@ func (me *AntiddosService) CreateProtocolBlockConfig(ctx context.Context, instan } func (me *AntiddosService) CreateWaterPrintConfig(ctx context.Context, instanceId string, waterPrintConfig antiddos.WaterPrintConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateWaterPrintConfigRequest() request.InstanceId = &instanceId request.WaterPrintConfig = &waterPrintConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateWaterPrintConfig(request) if err != nil { return resource.RetryableError(err) @@ -583,10 +590,10 @@ func (me *AntiddosService) DescribeListWaterPrintConfig(ctx context.Context, ins } func (me *AntiddosService) DeleteWaterPrintConfig(ctx context.Context, instanceId string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteWaterPrintConfigRequest() request.InstanceId = &instanceId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteWaterPrintConfig(request) if err != nil { return resource.RetryableError(err) @@ -602,11 +609,11 @@ func (me *AntiddosService) DeleteWaterPrintConfig(ctx context.Context, instanceI } func (me *AntiddosService) SwitchWaterPrintConfig(ctx context.Context, instanceId string, openStatus int) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewSwitchWaterPrintConfigRequest() request.InstanceId = &instanceId request.OpenStatus = helper.IntInt64(openStatus) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().SwitchWaterPrintConfig(request) if err != nil { return resource.RetryableError(err) @@ -622,12 +629,12 @@ func (me *AntiddosService) SwitchWaterPrintConfig(ctx context.Context, instanceI } func (me *AntiddosService) CreateDDoSConnectLimit(ctx context.Context, instanceId string, connectLimitConfig antiddos.ConnectLimitConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateDDoSConnectLimitRequest() request.InstanceId = &instanceId request.ConnectLimitConfig = &connectLimitConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateDDoSConnectLimit(request) if err != nil { return resource.RetryableError(err) @@ -643,12 +650,12 @@ func (me *AntiddosService) CreateDDoSConnectLimit(ctx context.Context, instanceI } func (me *AntiddosService) CreateDDoSAI(ctx context.Context, instanceId, ddosAI string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateDDoSAIRequest() request.DDoSAI = &ddosAI request.InstanceIdList = []*string{&instanceId} - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateDDoSAI(request) if err != nil { return resource.RetryableError(err) @@ -664,12 +671,12 @@ func (me *AntiddosService) CreateDDoSAI(ctx context.Context, instanceId, ddosAI } func (me *AntiddosService) CreateDDoSGeoIPBlockConfig(ctx context.Context, instanceId string, ddosGeoIPBlockConfig antiddos.DDoSGeoIPBlockConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateDDoSGeoIPBlockConfigRequest() request.InstanceId = &instanceId request.DDoSGeoIPBlockConfig = &ddosGeoIPBlockConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateDDoSGeoIPBlockConfig(request) if err != nil { return resource.RetryableError(err) @@ -685,12 +692,12 @@ func (me *AntiddosService) CreateDDoSGeoIPBlockConfig(ctx context.Context, insta } func (me *AntiddosService) CreateDDoSSpeedLimitConfig(ctx context.Context, instanceId string, ddosSpeedLimitConfig antiddos.DDoSSpeedLimitConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateDDoSSpeedLimitConfigRequest() request.InstanceId = &instanceId request.DDoSSpeedLimitConfig = &ddosSpeedLimitConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateDDoSSpeedLimitConfig(request) if err != nil { return resource.RetryableError(err) @@ -706,12 +713,12 @@ func (me *AntiddosService) CreateDDoSSpeedLimitConfig(ctx context.Context, insta } func (me *AntiddosService) CreatePacketFilterConfig(ctx context.Context, instanceId string, packetFilterConfig antiddos.PacketFilterConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreatePacketFilterConfigRequest() request.InstanceId = &instanceId request.PacketFilterConfig = &packetFilterConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreatePacketFilterConfig(request) if err != nil { return resource.RetryableError(err) @@ -727,7 +734,7 @@ func (me *AntiddosService) CreatePacketFilterConfig(ctx context.Context, instanc } func (me *AntiddosService) DeleteDDoSBlackWhiteIpList(ctx context.Context, instanceId string, ips []string, ipType string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteDDoSBlackWhiteIpListRequest() request.InstanceId = &instanceId request.Type = &ipType @@ -739,7 +746,7 @@ func (me *AntiddosService) DeleteDDoSBlackWhiteIpList(ctx context.Context, insta }) } request.IpList = ipList - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteDDoSBlackWhiteIpList(request) if err != nil { return resource.RetryableError(err) @@ -755,11 +762,11 @@ func (me *AntiddosService) DeleteDDoSBlackWhiteIpList(ctx context.Context, insta } func (me *AntiddosService) DeletePortAclConfig(ctx context.Context, instanceId string, aclConfig antiddos.AclConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeletePortAclConfigRequest() request.InstanceId = &instanceId request.AclConfig = &aclConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeletePortAclConfig(request) if err != nil { return resource.RetryableError(err) @@ -775,7 +782,7 @@ func (me *AntiddosService) DeletePortAclConfig(ctx context.Context, instanceId s } func (me *AntiddosService) DeleteProtocolBlockConfig(ctx context.Context, instanceId string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateProtocolBlockConfigRequest() request.InstanceId = &instanceId protocolBlockConfig := antiddos.ProtocolBlockConfig{ @@ -787,7 +794,7 @@ func (me *AntiddosService) DeleteProtocolBlockConfig(ctx context.Context, instan } request.ProtocolBlockConfig = &protocolBlockConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateProtocolBlockConfig(request) if err != nil { return resource.RetryableError(err) @@ -803,7 +810,7 @@ func (me *AntiddosService) DeleteProtocolBlockConfig(ctx context.Context, instan } func (me *AntiddosService) DeleteDDoSConnectLimit(ctx context.Context, instanceId string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateDDoSConnectLimitRequest() request.InstanceId = &instanceId connectLimitConfig := antiddos.ConnectLimitConfig{ @@ -819,7 +826,7 @@ func (me *AntiddosService) DeleteDDoSConnectLimit(ctx context.Context, instanceI } request.ConnectLimitConfig = &connectLimitConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateDDoSConnectLimit(request) if err != nil { return resource.RetryableError(err) @@ -835,12 +842,12 @@ func (me *AntiddosService) DeleteDDoSConnectLimit(ctx context.Context, instanceI } func (me *AntiddosService) DeleteDDoSAI(ctx context.Context, instanceId string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateDDoSAIRequest() request.DDoSAI = common.StringPtr("off") request.InstanceIdList = []*string{&instanceId} - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateDDoSAI(request) if err != nil { return resource.RetryableError(err) @@ -856,12 +863,12 @@ func (me *AntiddosService) DeleteDDoSAI(ctx context.Context, instanceId string) } func (me *AntiddosService) DeleteDDoSGeoIPBlockConfig(ctx context.Context, instanceId string, ddosGeoIPBlockConfig antiddos.DDoSGeoIPBlockConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteDDoSGeoIPBlockConfigRequest() request.InstanceId = &instanceId request.DDoSGeoIPBlockConfig = &ddosGeoIPBlockConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteDDoSGeoIPBlockConfig(request) if err != nil { return resource.RetryableError(err) @@ -877,12 +884,12 @@ func (me *AntiddosService) DeleteDDoSGeoIPBlockConfig(ctx context.Context, insta } func (me *AntiddosService) DeleteDDoSSpeedLimitConfig(ctx context.Context, instanceId string, ddosSpeedLimitConfig antiddos.DDoSSpeedLimitConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteDDoSSpeedLimitConfigRequest() request.InstanceId = &instanceId request.DDoSSpeedLimitConfig = &ddosSpeedLimitConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteDDoSSpeedLimitConfig(request) if err != nil { return resource.RetryableError(err) @@ -898,12 +905,12 @@ func (me *AntiddosService) DeleteDDoSSpeedLimitConfig(ctx context.Context, insta } func (me *AntiddosService) DeletePacketFilterConfig(ctx context.Context, instanceId string, packetFilterConfig antiddos.PacketFilterConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeletePacketFilterConfigRequest() request.InstanceId = &instanceId request.PacketFilterConfig = &packetFilterConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeletePacketFilterConfig(request) if err != nil { return resource.RetryableError(err) @@ -919,12 +926,12 @@ func (me *AntiddosService) DeletePacketFilterConfig(ctx context.Context, instanc } func (me *AntiddosService) DeleteDDoSThreshold(ctx context.Context, business, instanceId string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewModifyDDoSThresholdRequest() request.Business = common.StringPtr(business) request.Id = common.StringPtr(instanceId) request.Threshold = helper.IntUint64(0) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().ModifyDDoSThreshold(request) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { @@ -945,14 +952,14 @@ func (me *AntiddosService) DeleteDDoSThreshold(ctx context.Context, business, in } func (me *AntiddosService) DeleteyDDoSLevel(ctx context.Context, business, instanceId string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewModifyDDoSLevelRequest() request.Business = common.StringPtr(business) request.Id = common.StringPtr(instanceId) request.Method = common.StringPtr("set") request.DDoSLevel = common.StringPtr("middle") - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().ModifyDDoSLevel(request) if err != nil { return resource.RetryableError(err) @@ -995,14 +1002,14 @@ func (me *AntiddosService) DescribeCCThresholdList(ctx context.Context, business } func (me *AntiddosService) ModifyCCThresholdPolicy(ctx context.Context, instanceId, protocol, ip, domain string, threshold int) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewModifyCCThresholdPolicyRequest() request.Domain = &domain request.InstanceId = &instanceId request.Ip = &ip request.Protocol = &protocol request.Threshold = helper.IntInt64(threshold) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().ModifyCCThresholdPolicy(request) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { @@ -1050,14 +1057,14 @@ func (me *AntiddosService) DescribeCcGeoIPBlockConfigList(ctx context.Context, b } func (me *AntiddosService) CreateCcGeoIPBlockConfig(ctx context.Context, instanceId, protocol, ip, domain string, ccGeoIPBlockConfig antiddos.CcGeoIPBlockConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateCcGeoIPBlockConfigRequest() request.Domain = &domain request.InstanceId = &instanceId request.IP = &ip request.Protocol = &protocol request.CcGeoIPBlockConfig = &ccGeoIPBlockConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateCcGeoIPBlockConfig(request) if err != nil { return resource.RetryableError(err) @@ -1073,11 +1080,11 @@ func (me *AntiddosService) CreateCcGeoIPBlockConfig(ctx context.Context, instanc } func (me *AntiddosService) DeleteCcGeoIPBlockConfig(ctx context.Context, instanceId string, ccGeoIPBlockConfig antiddos.CcGeoIPBlockConfig) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteCcGeoIPBlockConfigRequest() request.InstanceId = &instanceId request.CcGeoIPBlockConfig = &ccGeoIPBlockConfig - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteCcGeoIPBlockConfig(request) if err != nil { return resource.RetryableError(err) @@ -1120,7 +1127,7 @@ func (me *AntiddosService) DescribeCcBlackWhiteIpList(ctx context.Context, busin } func (me *AntiddosService) CreateCcBlackWhiteIpList(ctx context.Context, instanceId, protocol, ip, domain, ipType string, posIps []string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateCcBlackWhiteIpListRequest() request.Domain = &domain request.InstanceId = &instanceId @@ -1135,7 +1142,7 @@ func (me *AntiddosService) CreateCcBlackWhiteIpList(ctx context.Context, instanc }) } request.IpList = ipLists - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateCcBlackWhiteIpList(request) if err != nil { return resource.RetryableError(err) @@ -1151,11 +1158,11 @@ func (me *AntiddosService) CreateCcBlackWhiteIpList(ctx context.Context, instanc } func (me *AntiddosService) DeleteCcBlackWhiteIpList(ctx context.Context, instanceId, policyId string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteCcBlackWhiteIpListRequest() request.InstanceId = &instanceId request.PolicyId = &policyId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteCcBlackWhiteIpList(request) if err != nil { return resource.RetryableError(err) @@ -1198,7 +1205,7 @@ func (me *AntiddosService) DescribeCCPrecisionPlyList(ctx context.Context, busin } func (me *AntiddosService) CreateCCPrecisionPolicy(ctx context.Context, instanceId, protocol, ip, domain, policyAction string, policyList []*antiddos.CCPrecisionPlyRecord) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateCCPrecisionPolicyRequest() request.Domain = &domain request.InstanceId = &instanceId @@ -1206,7 +1213,7 @@ func (me *AntiddosService) CreateCCPrecisionPolicy(ctx context.Context, instance request.Protocol = &protocol request.PolicyAction = &policyAction request.PolicyList = policyList - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateCCPrecisionPolicy(request) if err != nil { return resource.RetryableError(err) @@ -1222,11 +1229,11 @@ func (me *AntiddosService) CreateCCPrecisionPolicy(ctx context.Context, instance } func (me *AntiddosService) DeleteCCPrecisionPolicy(ctx context.Context, instanceId, policyId string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteCCPrecisionPolicyRequest() request.InstanceId = &instanceId request.PolicyId = &policyId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteCCPrecisionPolicy(request) if err != nil { return resource.RetryableError(err) @@ -1242,14 +1249,14 @@ func (me *AntiddosService) DeleteCCPrecisionPolicy(ctx context.Context, instance } func (me *AntiddosService) ModifyCCLevelPolicy(ctx context.Context, instanceId, ip, domain, protocol, level string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewModifyCCLevelPolicyRequest() request.InstanceId = &instanceId request.Ip = &ip request.Domain = &domain request.Protocol = &protocol request.Level = &level - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().ModifyCCLevelPolicy(request) if err != nil { return resource.RetryableError(err) @@ -1292,14 +1299,14 @@ func (me *AntiddosService) DescribeCCReqLimitPolicyList(ctx context.Context, bus } func (me *AntiddosService) CreateCCReqLimitPolicy(ctx context.Context, instanceId, protocol, ip, domain string, ccReqLimitPolicyRecord antiddos.CCReqLimitPolicyRecord) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewCreateCCReqLimitPolicyRequest() request.Domain = &domain request.InstanceId = &instanceId request.Ip = &ip request.Protocol = &protocol request.Policy = &ccReqLimitPolicyRecord - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().CreateCCReqLimitPolicy(request) if err != nil { return resource.RetryableError(err) @@ -1315,11 +1322,11 @@ func (me *AntiddosService) CreateCCReqLimitPolicy(ctx context.Context, instanceI } func (me *AntiddosService) DeleteCCRequestLimitPolicy(ctx context.Context, instanceId, policyId string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteCCRequestLimitPolicyRequest() request.InstanceId = &instanceId request.PolicyId = &policyId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteCCRequestLimitPolicy(request) if err != nil { return resource.RetryableError(err) @@ -1434,13 +1441,13 @@ func (me *AntiddosService) DescribeCCLevelList(ctx context.Context, business, in } func (me *AntiddosService) DeleteCCLevelPolicy(ctx context.Context, instanceId, ip, domain string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteCCLevelPolicyRequest() request.InstanceId = &instanceId request.Ip = &ip request.Domain = &domain request.Protocol = common.StringPtr("http") - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteCCLevelPolicy(request) if err != nil { return resource.RetryableError(err) @@ -1456,13 +1463,13 @@ func (me *AntiddosService) DeleteCCLevelPolicy(ctx context.Context, instanceId, } func (me *AntiddosService) DeleteCCThresholdPolicy(ctx context.Context, instanceId, ip, domain string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteCCThresholdPolicyRequest() request.InstanceId = &instanceId request.Ip = &ip request.Domain = &domain request.Protocol = common.StringPtr("http") - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, err := me.client.UseAntiddosClient().DeleteCCThresholdPolicy(request) if err != nil { return resource.RetryableError(err) @@ -1478,7 +1485,7 @@ func (me *AntiddosService) DeleteCCThresholdPolicy(ctx context.Context, instance } func (me *AntiddosService) DescribeAntiddosBoundipById(ctx context.Context, id string) (boundip *antiddos.BGPInstance, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListBGPInstancesRequest() request.FilterInstanceId = &id @@ -1510,7 +1517,7 @@ func (me *AntiddosService) DescribeAntiddosBoundipById(ctx context.Context, id s func (me *AntiddosService) DescribeAntiddosPendingRiskInfoByFilter(ctx context.Context) (pendingRiskInfoResponseParams *antiddos.DescribePendingRiskInfoResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = antiddos.NewDescribePendingRiskInfoRequest() ) @@ -1538,7 +1545,7 @@ func (me *AntiddosService) DescribeAntiddosPendingRiskInfoByFilter(ctx context.C func (me *AntiddosService) DescribeAntiddosOverviewIndexByFilter(ctx context.Context, param map[string]interface{}) (describeOverviewIndexResponseParams *antiddos.DescribeOverviewIndexResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = antiddos.NewDescribeOverviewIndexRequest() ) @@ -1571,7 +1578,7 @@ func (me *AntiddosService) DescribeAntiddosOverviewIndexByFilter(ctx context.Con func (me *AntiddosService) DescribeAntiddosOverviewDdosTrendByFilter(ctx context.Context, param map[string]interface{}) (describeOverviewDDoSTrendResponseParams *antiddos.DescribeOverviewDDoSTrendResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = antiddos.NewDescribeOverviewDDoSTrendRequest() ) @@ -1620,7 +1627,7 @@ func (me *AntiddosService) DescribeAntiddosOverviewDdosTrendByFilter(ctx context func (me *AntiddosService) DescribeAntiddosOverviewDdosEventListByFilter(ctx context.Context, param map[string]interface{}) (overviewDdosEventList []*antiddos.OverviewDDoSEvent, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = antiddos.NewDescribeOverviewDDoSEventListRequest() ) @@ -1674,7 +1681,7 @@ func (me *AntiddosService) DescribeAntiddosOverviewDdosEventListByFilter(ctx con func (me *AntiddosService) DescribeAntiddosOverviewCcTrendByFilter(ctx context.Context, param map[string]interface{}) (overviewCCTrendResponseParams *antiddos.DescribeOverviewCCTrendResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = antiddos.NewDescribeOverviewCCTrendRequest() ) @@ -1722,7 +1729,7 @@ func (me *AntiddosService) DescribeAntiddosOverviewCcTrendByFilter(ctx context.C } func (me *AntiddosService) DescribeAntiddosDdosBlackWhiteIpListById(ctx context.Context, instanceId string) (ddosBlackWhiteIpListResponseParams *antiddos.DescribeDDoSBlackWhiteIpListResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeDDoSBlackWhiteIpListRequest() request.InstanceId = &instanceId @@ -1748,7 +1755,7 @@ func (me *AntiddosService) DescribeAntiddosDdosBlackWhiteIpListById(ctx context. } func (me *AntiddosService) DeleteAntiddosDdosBlackWhiteIpListById(ctx context.Context, params map[string]interface{}) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteDDoSBlackWhiteIpListRequest() if v, ok := params["instanceId"]; ok { @@ -1786,7 +1793,7 @@ func (me *AntiddosService) DeleteAntiddosDdosBlackWhiteIpListById(ctx context.Co func (me *AntiddosService) DescribeAntiddosBasicDeviceStatusByFilter(ctx context.Context, param map[string]interface{}) (basicDeviceStatus *antiddos.DescribeBasicDeviceStatusResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = antiddos.NewDescribeBasicDeviceStatusRequest() ) @@ -1823,7 +1830,7 @@ func (me *AntiddosService) DescribeAntiddosBasicDeviceStatusByFilter(ctx context func (me *AntiddosService) DescribeAntiddosBgpBizTrendByFilter(ctx context.Context, param map[string]interface{}) (bgpBizTrend *antiddos.DescribeBgpBizTrendResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = antiddos.NewDescribeBgpBizTrendRequest() ) @@ -1873,7 +1880,7 @@ func (me *AntiddosService) DescribeAntiddosBgpBizTrendByFilter(ctx context.Conte func (me *AntiddosService) DescribeAntiddosListListenerByFilter(ctx context.Context) (listListener *antiddos.DescribeListListenerResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = antiddos.NewDescribeListListenerRequest() ) @@ -1898,7 +1905,7 @@ func (me *AntiddosService) DescribeAntiddosListListenerByFilter(ctx context.Cont func (me *AntiddosService) DescribeAntiddosOverviewAttackTrendByFilter(ctx context.Context, param map[string]interface{}) (overviewAttackTrend *antiddos.DescribeOverviewAttackTrendResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = antiddos.NewDescribeOverviewAttackTrendRequest() ) @@ -1944,7 +1951,7 @@ func (me *AntiddosService) DescribeAntiddosOverviewAttackTrendByFilter(ctx conte } func (me *AntiddosService) DescribeAntiddosDdosGeoIpBlockConfigById(ctx context.Context, instanceId string) (configList []*antiddos.DDoSGeoIPBlockConfigRelation, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListDDoSGeoIPBlockConfigRequest() request.FilterInstanceId = &instanceId @@ -1986,7 +1993,7 @@ func (me *AntiddosService) DescribeAntiddosDdosGeoIpBlockConfigById(ctx context. } func (me *AntiddosService) DeleteAntiddosDdosGeoIpBlockConfigById(ctx context.Context, instanceId string, config *antiddos.DDoSGeoIPBlockConfig) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteDDoSGeoIPBlockConfigRequest() request.InstanceId = &instanceId @@ -2011,7 +2018,7 @@ func (me *AntiddosService) DeleteAntiddosDdosGeoIpBlockConfigById(ctx context.Co } func (me *AntiddosService) DescribeAntiddosDdosSpeedLimitConfigById(ctx context.Context, instanceId string) (configList []*antiddos.DDoSSpeedLimitConfigRelation, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListDDoSSpeedLimitConfigRequest() request.FilterInstanceId = &instanceId @@ -2053,7 +2060,7 @@ func (me *AntiddosService) DescribeAntiddosDdosSpeedLimitConfigById(ctx context. } func (me *AntiddosService) DeleteAntiddosDdosSpeedLimitConfigById(ctx context.Context, instanceId string, config *antiddos.DDoSSpeedLimitConfig) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteDDoSSpeedLimitConfigRequest() request.InstanceId = &instanceId @@ -2078,7 +2085,7 @@ func (me *AntiddosService) DeleteAntiddosDdosSpeedLimitConfigById(ctx context.Co } func (me *AntiddosService) DescribeAntiddosDefaultAlarmThresholdById(ctx context.Context, instanceType string, filterAlarmType int64) (defaultAlarmThreshold *antiddos.DefaultAlarmThreshold, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeDefaultAlarmThresholdRequest() request.InstanceType = &instanceType @@ -2108,7 +2115,7 @@ func (me *AntiddosService) DescribeAntiddosDefaultAlarmThresholdById(ctx context } func (me *AntiddosService) DescribeAntiddosSchedulingDomainUserNameById(ctx context.Context, domainName string) (schedulingDomainUserName *antiddos.SchedulingDomainInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListSchedulingDomainRequest() request.FilterDomain = &domainName @@ -2139,7 +2146,7 @@ func (me *AntiddosService) DescribeAntiddosSchedulingDomainUserNameById(ctx cont } func (me *AntiddosService) DescribeAntiddosIpAlarmThresholdConfigById(ctx context.Context, instanceId, eip string, alarmType int) (ipAlarmThresholdConfig *antiddos.IPAlarmThresholdRelation, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListIPAlarmConfigRequest() request.FilterInstanceId = &instanceId @@ -2172,7 +2179,7 @@ func (me *AntiddosService) DescribeAntiddosIpAlarmThresholdConfigById(ctx contex } func (me *AntiddosService) DescribeAntiddosPacketFilterConfigById(ctx context.Context, instanceId string) (configList []*antiddos.PacketFilterRelation, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListPacketFilterConfigRequest() request.FilterInstanceId = &instanceId @@ -2214,7 +2221,7 @@ func (me *AntiddosService) DescribeAntiddosPacketFilterConfigById(ctx context.Co } func (me *AntiddosService) DeleteAntiddosPacketFilterConfigById(ctx context.Context, instanceId string, config *antiddos.PacketFilterConfig) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeletePacketFilterConfigRequest() request.InstanceId = &instanceId @@ -2239,7 +2246,7 @@ func (me *AntiddosService) DeleteAntiddosPacketFilterConfigById(ctx context.Cont } func (me *AntiddosService) DescribeAntiddosPortAclConfigById(ctx context.Context, instanceId string) (portAclConfig []*antiddos.AclConfigRelation, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeListPortAclListRequest() request.FilterInstanceId = &instanceId @@ -2281,7 +2288,7 @@ func (me *AntiddosService) DescribeAntiddosPortAclConfigById(ctx context.Context } func (me *AntiddosService) DeleteAntiddosPortAclConfigById(ctx context.Context, instanceId string, config *antiddos.AclConfig) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeletePortAclConfigRequest() request.InstanceId = &instanceId @@ -2306,7 +2313,7 @@ func (me *AntiddosService) DeleteAntiddosPortAclConfigById(ctx context.Context, } func (me *AntiddosService) DescribeAntiddosCcBlackWhiteIpById(ctx context.Context, business, instanceId, ip, domain, protocol string) (ccBlackWhiteIps []*antiddos.CcBlackWhiteIpPolicy, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeCcBlackWhiteIpListRequest() request.InstanceId = &instanceId @@ -2352,7 +2359,7 @@ func (me *AntiddosService) DescribeAntiddosCcBlackWhiteIpById(ctx context.Contex } func (me *AntiddosService) DeleteAntiddosCcBlackWhiteIpById(ctx context.Context, instanceId, policyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteCcBlackWhiteIpListRequest() request.InstanceId = &instanceId @@ -2377,7 +2384,7 @@ func (me *AntiddosService) DeleteAntiddosCcBlackWhiteIpById(ctx context.Context, } func (me *AntiddosService) DescribeAntiddosCcPrecisionPolicyById(ctx context.Context, business, instanceId, ip, domain, protocol string) (ccPrecisionPolicys []*antiddos.CCPrecisionPolicy, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDescribeCCPrecisionPlyListRequest() request.InstanceId = &instanceId @@ -2422,7 +2429,7 @@ func (me *AntiddosService) DescribeAntiddosCcPrecisionPolicyById(ctx context.Con } func (me *AntiddosService) DeleteAntiddosCcPrecisionPolicyById(ctx context.Context, instanceId, policyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := antiddos.NewDeleteCCPrecisionPolicyRequest() request.InstanceId = &instanceId diff --git a/tencentcloud/services/dayuv2/service_tencentcloud_dayu.go b/tencentcloud/services/dayuv2/service_tencentcloud_dayu.go new file mode 100644 index 0000000000..c6d33c341d --- /dev/null +++ b/tencentcloud/services/dayuv2/service_tencentcloud_dayu.go @@ -0,0 +1,2043 @@ +package dayuv2 + +import ( + "context" + "fmt" + "log" + "net/url" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + sdkError "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + dayu "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu/v20180709" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +func NewDayuService(client *connectivity.TencentCloudClient) DayuService { + return DayuService{client: client} +} + +type DayuService struct { + client *connectivity.TencentCloudClient +} + +func (me *DayuService) DescribeCCSelfdefinePolicies(ctx context.Context, resourceType string, resourceId string, policyName string, policyId string) (infos []*dayu.CCPolicy, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribeCCSelfDefinePolicyRequest() + + infos = make([]*dayu.CCPolicy, 0, 100) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit uint64 = 0, 20 + + request.Business = &resourceType + if resourceId != "" { + request.Id = &resourceId + } + + request.Offset = &offset + request.Limit = &limit + for { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribeCCSelfDefinePolicy(request) + + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + //this error case is what sdk returns when the dayu service is overdue + errRet = nil + return + } + } + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + if policyName == "" && policyId == "" { + infos = append(infos, response.Response.Policys...) + } else { + for _, policy := range response.Response.Policys { + if policyName != "" && *policy.Name != policyName { + continue + } + if policyId != "" && *policy.SetId != policyId { + continue + } + infos = append(infos, policy) + } + } + if len(response.Response.Policys) < int(limit) { + if len(infos) > 0 { + has = true + } + return + } + offset += limit + } +} + +func (me *DayuService) DescribeCCSelfdefinePolicy(ctx context.Context, resourceType string, resourceId string, policyId string) (infos *dayu.CCPolicy, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribeCCSelfDefinePolicyRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + policies, _, err := me.DescribeCCSelfdefinePolicies(ctx, resourceType, resourceId, "", policyId) + if err != nil { + errRet = err + return + } + + length := len(policies) + if length == 0 { + return + } + if length > 1 { + errRet = fmt.Errorf("Create CC self-define policy returns %d policies", length) + return + } + + infos = policies[0] + has = true + return +} + +func (me *DayuService) CreateCCSelfdefinePolicy(ctx context.Context, resourceType string, resourceId string, ccPolicy dayu.CCPolicy) (policyId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewCreateCCSelfDefinePolicyRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.Policy = &ccPolicy + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().CreateCCSelfDefinePolicy(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + //describe CC self-define policies to get policy ID + policies, has, dErr := me.DescribeCCSelfdefinePolicies(ctx, resourceType, resourceId, *ccPolicy.Name, "") + if dErr != nil { + errRet = dErr + return + } + if !has { + errRet = fmt.Errorf("Create CC self-define policy failed") + return + } + if len(policies) != 1 { + errRet = fmt.Errorf("Create CC self-define policy returns %d policies", len(policies)) + return + } + policyId = *policies[0].SetId + return +} + +func (me *DayuService) ModifyCCSelfdefinePolicy(ctx context.Context, resourceType string, resourceId string, policyId string, ccPolicy dayu.CCPolicy) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyCCSelfDefinePolicyRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.SetId = &policyId + request.Policy = &ccPolicy + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyCCSelfDefinePolicy(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) DeleteCCSelfdefinePolicy(ctx context.Context, resourceType string, resourceId string, policyId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := dayu.NewDeleteCCSelfDefinePolicyRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SetId = &policyId + request.Business = &resourceType + request.Id = &resourceId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DeleteCCSelfDefinePolicy(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + return +} + +func (me *DayuService) CreateDdosPolicy(ctx context.Context, resourceType string, name string, ddosPolicyDropOption []*dayu.DDoSPolicyDropOption, ddosPolicyPortLimit []*dayu.DDoSPolicyPortLimit, ipBlackWhite []*dayu.IpBlackWhite, ddosPacketFilter []*dayu.DDoSPolicyPacketFilter, waterPrintPolicy []*dayu.WaterPrintPolicy) (policyId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewCreateDDoSPolicyRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Name = &name + request.Business = &resourceType + request.DropOptions = ddosPolicyDropOption + request.PortLimits = ddosPolicyPortLimit + request.IpAllowDenys = ipBlackWhite + request.PacketFilters = ddosPacketFilter + request.WaterPrint = waterPrintPolicy + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().CreateDDoSPolicy(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + if response.Response.PolicyId == nil || *response.Response.PolicyId == "" { + errRet = errors.New("TencentCloud SDK return empty DDoS policy Id") + return + } + policyId = *response.Response.PolicyId + return +} + +func (me *DayuService) DescribeDdosPolicies(ctx context.Context, resourceType string, policyId string) (ddosPolicies []*dayu.DDosPolicy, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribeDDoSPolicyRequest() + + ddosPolicies = make([]*dayu.DDosPolicy, 0, 100) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Business = &resourceType + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribeDDoSPolicy(request) + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + //this is when resource is not exist + errRet = nil + return + } + } + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + if policyId != "" { + for i, p := range response.Response.DDosPolicyList { + if *p.PolicyId == policyId { + ddosPolicies = append(ddosPolicies, response.Response.DDosPolicyList[i]) + return + } + } + } else { + ddosPolicies = append(ddosPolicies, response.Response.DDosPolicyList...) + return + } + return +} + +func (me *DayuService) DescribeDdosPolicy(ctx context.Context, resourceType string, policyId string) (ddosPolicy dayu.DDosPolicy, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribeDDoSPolicyRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Business = &resourceType + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribeDDoSPolicy(request) + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + errRet = nil + return + } + } + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if len(response.Response.DDosPolicyList) == 0 { + return + } + + for i, p := range response.Response.DDosPolicyList { + if *p.PolicyId == policyId { + has = true + ddosPolicy = *response.Response.DDosPolicyList[i] + return + } + } + + return +} + +func flattenDdosDropOptionList(list []*dayu.DDoSPolicyDropOption) (mapping []map[string]interface{}) { + result := make([]map[string]interface{}, 0, len(list)) + for _, v := range list { + mapping := map[string]interface{}{ + "drop_tcp": *v.DropTcp > 0, + "drop_udp": *v.DropUdp > 0, + "drop_icmp": *v.DropIcmp > 0, + "drop_other": *v.DropOther > 0, + "drop_abroad": *v.DropAbroad > 0, + "check_sync_conn": *v.CheckSyncConn > 0, + "s_new_limit": int(*v.SdNewLimit), + "d_new_limit": int(*v.DstNewLimit), + "s_conn_limit": int(*v.SdConnLimit), + "d_conn_limit": int(*v.DstConnLimit), + "bad_conn_threshold": int(*v.BadConnThreshold), + "null_conn_enable": *v.NullConnEnable > 0, + "conn_timeout": int(*v.ConnTimeout), + "syn_rate": int(*v.SynRate), + "syn_limit": int(*v.SynLimit), + "tcp_mbps_limit": int(*v.DTcpMbpsLimit), + "udp_mbps_limit": int(*v.DUdpMbpsLimit), + "icmp_mbps_limit": int(*v.DIcmpMbpsLimit), + "other_mbps_limit": int(*v.DOtherMbpsLimit), + } + result = append(result, mapping) + } + return result +} + +func flattenCCRuleList(list []*dayu.CCRule) (re []map[string]interface{}) { + result := make([]map[string]interface{}, 0, len(list)) + for _, v := range list { + mapping := map[string]interface{}{ + "skey": v.Skey, + "operator": v.Operator, + "value": v.Value, + } + result = append(result, mapping) + } + return result +} + +func flattenDdosPortLimitList(list []*dayu.DDoSPolicyPortLimit) (re []map[string]interface{}) { + result := make([]map[string]interface{}, 0, len(list)) + for _, v := range list { + mapping := map[string]interface{}{ + "protocol": v.Protocol, + "action": v.Action, + "kind": int(*v.Kind), + } + if int(*v.Kind) == 0 || int(*v.Kind) == 2 { + mapping["start_port"] = int(*v.DPortStart) + mapping["end_port"] = int(*v.DPortEnd) + } else { + mapping["start_port"] = int(*v.SPortStart) + mapping["end_port"] = int(*v.SPortEnd) + } + result = append(result, mapping) + } + return result +} + +func flattenDdosPacketFilterList(list []*dayu.DDoSPolicyPacketFilter) (re []map[string]interface{}) { + result := make([]map[string]interface{}, 0, len(list)) + for _, v := range list { + mapping := map[string]interface{}{ + "protocol": v.Protocol, + "action": v.Action, + "d_start_port": int(*v.DportStart), + "d_end_port": int(*v.DportEnd), + "s_start_port": int(*v.SportStart), + "s_end_port": int(*v.SportEnd), + "pkt_length_max": int(*v.PktlenMax), + "pkt_length_min": int(*v.PktlenMin), + "match_begin": v.MatchBegin, + "match_type": v.MatchType, + "match_str": v.Str, + "is_include": *v.IsNot > 0, + "depth": int(*v.Depth), + "offset": int(*v.Offset), + } + result = append(result, mapping) + } + return result +} + +func flattenIpBlackWhiteList(list []*dayu.IpBlackWhite) (reB []string, reW []string) { + reB = make([]string, 0) + reW = make([]string, 0) + for _, v := range list { + if *v.Type == DAYU_IP_TYPE_BLACK { + reB = append(reB, *v.Ip) + } + if *v.Type == DAYU_IP_TYPE_WHITE { + reW = append(reW, *v.Ip) + } + + } + return +} + +func flattenWaterPrintPolicyList(list []*dayu.WaterPrintPolicy) (re []map[string]interface{}) { + result := make([]map[string]interface{}, 0, len(list)) + for _, v := range list { + mapping := map[string]interface{}{ + "tcp_port_list": helper.StringsInterfaces(v.TcpPortList), + "udp_port_list": helper.StringsInterfaces(v.UdpPortList), + "offset": int(*v.Offset), + "auto_remove": *v.RemoveSwitch > 0, + "open_switch": *v.OpenStatus > 0, + } + result = append(result, mapping) + } + return result +} + +func flattenWaterPrintKeyList(list []*dayu.WaterPrintKey) (re []map[string]interface{}) { + result := make([]map[string]interface{}, 0, len(list)) + for _, v := range list { + mapping := map[string]interface{}{ + "id": *v.KeyId, + "content": *v.KeyContent, + "create_time": *v.CreateTime, + "open_switch": *v.OpenStatus > 0, + } + result = append(result, mapping) + } + return result +} + +func setDdosPolicyDropOption(mapping []interface{}) (result []*dayu.DDoSPolicyDropOption, err error) { + result = make([]*dayu.DDoSPolicyDropOption, 0, len(mapping)) + for _, vv := range mapping { + v := vv.(map[string]interface{}) + var r dayu.DDoSPolicyDropOption + r.DropTcp = helper.BoolToInt64Pointer(v["drop_tcp"].(bool)) + r.DropUdp = helper.BoolToInt64Pointer(v["drop_udp"].(bool)) + r.DropIcmp = helper.BoolToInt64Pointer(v["drop_icmp"].(bool)) + r.DropOther = helper.BoolToInt64Pointer(v["drop_other"].(bool)) + r.DropAbroad = helper.BoolToInt64Pointer(v["drop_abroad"].(bool)) + r.CheckSyncConn = helper.BoolToInt64Pointer(v["check_sync_conn"].(bool)) + r.SdNewLimit = helper.IntUint64(v["s_new_limit"].(int)) + r.DstNewLimit = helper.IntUint64(v["d_new_limit"].(int)) + r.SdConnLimit = helper.IntUint64(v["s_conn_limit"].(int)) + r.DstConnLimit = helper.IntUint64(v["d_conn_limit"].(int)) + r.BadConnThreshold = helper.IntUint64(v["bad_conn_threshold"].(int)) + r.NullConnEnable = helper.BoolToInt64Pointer(v["null_conn_enable"].(bool)) + r.ConnTimeout = helper.IntUint64(v["conn_timeout"].(int)) + r.SynRate = helper.IntUint64(v["syn_rate"].(int)) + r.SynLimit = helper.IntUint64((v["syn_limit"]).(int)) + r.DTcpMbpsLimit = helper.IntUint64(v["tcp_mbps_limit"].(int)) + r.DUdpMbpsLimit = helper.IntUint64(v["udp_mbps_limit"].(int)) + r.DIcmpMbpsLimit = helper.IntUint64(v["icmp_mbps_limit"].(int)) + r.DOtherMbpsLimit = helper.IntUint64(v["other_mbps_limit"].(int)) + result = append(result, &r) + } + return +} + +func setDdosPolicyPortLimit(mapping []interface{}) (result []*dayu.DDoSPolicyPortLimit, err error) { + result = make([]*dayu.DDoSPolicyPortLimit, 0, len(mapping)) + for _, vv := range mapping { + v := vv.(map[string]interface{}) + var r dayu.DDoSPolicyPortLimit + startPort := v["start_port"].(int) + endPort := v["end_port"].(int) + kind := v["kind"].(int) + if startPort > endPort { + err = fmt.Errorf("The `start_port` should not be greater than `end_port`.") + return + } + if kind == 0 || kind == 2 { + r.DPortStart = helper.IntUint64(startPort) + r.DPortEnd = helper.IntUint64(endPort) + } else if kind == 1 { + r.SPortStart = helper.IntUint64(startPort) + r.SPortEnd = helper.IntUint64(endPort) + } + + r.Protocol = helper.String(v["protocol"].(string)) + r.Action = helper.String(v["action"].(string)) + r.Kind = helper.IntUint64(kind) + result = append(result, &r) + } + return +} + +func setIpBlackWhite(blackIps []interface{}, whiteIps []interface{}) (result []*dayu.IpBlackWhite, err error) { + result = make([]*dayu.IpBlackWhite, 0, len(blackIps)+len(whiteIps)) + for _, vv := range blackIps { + var r dayu.IpBlackWhite + r.Ip = helper.String(vv.(string)) + r.Type = helper.String(DAYU_IP_TYPE_BLACK) + result = append(result, &r) + } + for _, vv := range whiteIps { + var r dayu.IpBlackWhite + r.Ip = helper.String(vv.(string)) + r.Type = helper.String(DAYU_IP_TYPE_WHITE) + result = append(result, &r) + } + return +} + +func setDdosPolicyPacketFilter(mapping []interface{}) (result []*dayu.DDoSPolicyPacketFilter, err error) { + result = make([]*dayu.DDoSPolicyPacketFilter, 0, len(mapping)) + for _, vv := range mapping { + v := vv.(map[string]interface{}) + var r dayu.DDoSPolicyPacketFilter + dStartPort := v["d_start_port"].(int) + dEndPort := v["d_end_port"].(int) + sStartPort := v["s_start_port"].(int) + sEndPort := v["s_end_port"].(int) + if dStartPort > dEndPort { + err = fmt.Errorf("The `d_start_port` should not be greater than `d_end_port`.") + return + } + if sStartPort > sEndPort { + err = fmt.Errorf("The `s_start_port` should not be greater than `s_end_port`.") + return + } + pktLenMax := v["pkt_length_max"].(int) + pktLenMin := v["pkt_length_min"].(int) + if pktLenMax < pktLenMin { + err = fmt.Errorf("The `pkt_length_min` should not be greater than `pkt_length_max`.") + return + } + r.Protocol = helper.String(v["protocol"].(string)) + r.DportStart = helper.IntUint64(dStartPort) + r.DportEnd = helper.IntUint64(dEndPort) + r.SportStart = helper.IntUint64(sStartPort) + r.SportEnd = helper.IntUint64(sEndPort) + r.Action = helper.String(v["action"].(string)) + r.IsNot = helper.BoolToInt64Pointer(v["is_include"].(bool)) + r.PktlenMax = helper.IntUint64(pktLenMax) + r.PktlenMin = helper.IntUint64(pktLenMin) + r.MatchBegin = helper.String(v["match_begin"].(string)) + r.MatchType = helper.String(v["match_type"].(string)) + r.Str = helper.String(v["match_str"].(string)) + r.Depth = helper.IntUint64(v["depth"].(int)) + r.Offset = helper.IntUint64(v["offset"].(int)) + result = append(result, &r) + } + return +} + +func setWaterPrintPolicy(mapping []interface{}) (result []*dayu.WaterPrintPolicy, err error) { + result = make([]*dayu.WaterPrintPolicy, 0, len(mapping)) + for _, vv := range mapping { + v := vv.(map[string]interface{}) + var r dayu.WaterPrintPolicy + tcpPortList := v["tcp_port_list"].([]interface{}) + r.TcpPortList = make([]*string, 0, len(tcpPortList)) + for _, tcpPort := range tcpPortList { + r.TcpPortList = append(r.TcpPortList, helper.String(tcpPort.(string))) + } + udpPortList := v["udp_port_list"].([]interface{}) + r.UdpPortList = make([]*string, 0, len(udpPortList)) + for _, udpPort := range udpPortList { + r.UdpPortList = append(r.UdpPortList, helper.String(udpPort.(string))) + } + r.RemoveSwitch = helper.BoolToInt64Pointer(v["auto_remove"].(bool)) + r.OpenStatus = helper.BoolToInt64Pointer(v["open_switch"].(bool)) + r.Offset = helper.IntUint64(v["offset"].(int)) + result = append(result, &r) + } + return +} + +func (me *DayuService) DeleteDdosPolicy(ctx context.Context, resourceType string, policyId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := dayu.NewDeleteDDoSPolicyRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.PolicyId = &policyId + request.Business = &resourceType + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DeleteDDoSPolicy(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + return +} + +func (me *DayuService) ModifyDdosPolicy(ctx context.Context, resourceType string, policyId string, ddosPolicyDropOption []*dayu.DDoSPolicyDropOption, ddosPolicyPortLimit []*dayu.DDoSPolicyPortLimit, ipBlackWhite []*dayu.IpBlackWhite, ddosPacketFilter []*dayu.DDoSPolicyPacketFilter, waterPrintPolicy []*dayu.WaterPrintPolicy) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyDDoSPolicyRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Business = &resourceType + request.PolicyId = &policyId + request.DropOptions = ddosPolicyDropOption + request.PortLimits = ddosPolicyPortLimit + request.IpAllowDenys = ipBlackWhite + request.PacketFilters = ddosPacketFilter + request.WaterPrint = waterPrintPolicy + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyDDoSPolicy(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) ModifyDdosPolicyName(ctx context.Context, resourceType string, policyId string, name string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyDDoSPolicyNameRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Business = &resourceType + request.PolicyId = &policyId + request.Name = helper.String(url.QueryEscape(name)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyDDoSPolicyName(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + return +} + +func (me *DayuService) CreateDdosPolicyCase(ctx context.Context, request *dayu.CreateDDoSPolicyCaseRequest) (sceneId string, errRet error) { + logId := tccommon.GetLogId(ctx) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().CreateDDoSPolicyCase(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + if response.Response.SceneId == nil || *response.Response.SceneId == "" { + errRet = errors.New("TencentCloud SDK return empty DDoS policy case Id") + return + } + sceneId = *response.Response.SceneId + return +} + +func (me *DayuService) DescribeDdosPolicyCase(ctx context.Context, resourceType string, sceneId string) (ddosPolicyCase dayu.KeyValueRecord, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribePolicyCaseRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SceneId = &sceneId + request.Business = &resourceType + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribePolicyCase(request) + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + //this is when resource is not exist + errRet = nil + return + } + } + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if len(response.Response.CaseList) == 0 { + return + } + if len(response.Response.CaseList) != 1 { + errRet = fmt.Errorf("TencentCloud SDK return %d appInfo with one applicationId %s", + len(response.Response.CaseList), sceneId) + return + } + ddosPolicyCase = *response.Response.CaseList[0] + has = true + return +} + +func (me *DayuService) DeleteDdosPolicyCase(ctx context.Context, resourceType string, sceneId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := dayu.NewDeleteDDoSPolicyCaseRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SceneId = &sceneId + request.Business = &resourceType + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DeleteDDoSPolicyCase(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + //describe the scene + _, has, err := me.DescribeDdosPolicyCase(ctx, resourceType, sceneId) + if err != nil { + errRet = err + return + } + if !has { + return + } + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + return +} + +func (me *DayuService) ModifyDdosPolicyCase(ctx context.Context, request *dayu.ModifyDDoSPolicyCaseRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyDDoSPolicyCase(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) DescribeDdosPolicyAttachments(ctx context.Context, resourceId string, resourceType string, policyId string) (attachments []map[string]interface{}, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribeDDoSPolicyRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + if resourceId != "" { + request.Id = &resourceId + } + request.Business = &resourceType + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribeDDoSPolicy(request) + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + //this is when resource is not exist + errRet = nil + return + } + } + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + if len(response.Response.DDosPolicyList) == 0 { + return + } + + for _, policy := range response.Response.DDosPolicyList { + if policyId != "" && *policy.PolicyId != policyId { + continue + } + for _, resource := range policy.BoundResources { + attachments = append(attachments, map[string]interface{}{"resource_id": *resource, "policy_id": *policy.PolicyId, "resource_type": resourceType}) + } + } + if len(attachments) > 0 { + has = true + } + return +} + +func (me *DayuService) BindDdosPolicy(ctx context.Context, resourceId string, resourceType string, policyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyResBindDDoSPolicyRequest() + request.PolicyId = &policyId + request.Business = &resourceType + request.Id = &resourceId + request.Method = helper.String("bind") + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyResBindDDoSPolicy(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) UnbindDdosPolicy(ctx context.Context, resourceId string, resourceType string, policyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyResBindDDoSPolicyRequest() + request.PolicyId = &policyId + request.Business = &resourceType + request.Id = &resourceId + request.Method = helper.String("unbind") + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyResBindDDoSPolicy(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + //when resource is not exist, return + if *response.Response.Success.Code == "InvalidParameterValue" && *response.Response.Success.Message == "resource not exist" { + return + } + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) DescribeL7Rules(ctx context.Context, resourceType string, resourceId string, ruleDomain string, ruleId string, protocol string) (infos []*dayu.L7RuleEntry, healths []*dayu.L7RuleHealth, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribleL7RulesRequest() + + infos = make([]*dayu.L7RuleEntry, 0, 100) + healths = make([]*dayu.L7RuleHealth, 0, 100) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit uint64 = 0, 20 + + request.Business = &resourceType + request.Id = &resourceId + if protocol != "" { + request.ProtocolList = []*string{&protocol} + } + + if ruleDomain != "" { + request.Domain = &ruleDomain + } + request.Offset = &offset + request.Limit = &limit + for { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribleL7Rules(request) + + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + errRet = nil + return + } + } + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + if ruleId == "" { + infos = append(infos, response.Response.Rules...) + healths = append(healths, response.Response.Healths...) + } else { + for _, rule := range response.Response.Rules { + if *rule.RuleId != ruleId { + continue + } + infos = append(infos, rule) + //get right health, the SDK returns with no order + var theHealth dayu.L7RuleHealth + for _, health := range response.Response.Healths { + if *health.RuleId != *rule.RuleId { + continue + } + theHealth = *health + } + healths = append(healths, &theHealth) + } + } + if len(response.Response.Rules) < int(limit) { + if len(infos) > 0 { + has = true + } + return + } + offset += limit + } +} + +func (me *DayuService) DescribeL7Rule(ctx context.Context, resourceType string, resourceId string, ruleId string) (infos *dayu.L7RuleEntry, health *dayu.L7RuleHealth, has bool, errRet error) { + policies, healths, _, err := me.DescribeL7Rules(ctx, resourceType, resourceId, "", ruleId, "") + if err != nil { + errRet = err + return + } + + length := len(policies) + if length == 0 { + return + } + if length > 1 { + errRet = fmt.Errorf("Create l7 rule returns %d rules", length) + return + } + + infos = policies[0] + if len(healths) > 0 { + health = healths[0] + } + has = true + return +} + +func (me *DayuService) SetL7Health(ctx context.Context, resourceType string, resourceId string, healthCheck dayu.L7HealthConfig) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewCreateL7HealthConfigRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.HealthConfig = []*dayu.L7HealthConfig{&healthCheck} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().CreateL7HealthConfig(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) DescribeL7Health(ctx context.Context, resourceType string, resourceId string, ruleId string) (healthCheck *dayu.L7HealthConfig, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribeL7HealthConfigRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Id = &resourceId + request.Business = &resourceType + request.RuleIdList = []*string{&ruleId} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribeL7HealthConfig(request) + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + //this is when resource is not exist + errRet = nil + return + } + } + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + healthChecks := response.Response.HealthConfig + length := len(healthChecks) + if length == 0 { + return + } + if length > 1 { + errRet = fmt.Errorf("Get L7 health check returns %d healthchecks", length) + } + + healthCheck = healthChecks[0] + has = true + return +} + +func (me *DayuService) CreateL7Rule(ctx context.Context, resourceType string, resourceId string, rule dayu.L7RuleEntry) (ruleId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewCreateL7RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.Rules = []*dayu.L7RuleEntry{&rule} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().CreateL7Rules(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + //describe rules to get rule ID + rules, _, has, dErr := me.DescribeL7Rules(ctx, resourceType, resourceId, *rule.Domain, "", "") + if dErr != nil { + errRet = dErr + return + } + if !has { + errRet = fmt.Errorf("Create L7 rule failed") + return + } + if len(rules) != 1 { + errRet = fmt.Errorf("Create L7 rule returns %d rules", len(rules)) + } + ruleId = *rules[0].RuleId + return +} + +func (me *DayuService) ModifyL7Rule(ctx context.Context, resourceType string, resourceId string, rule dayu.L7RuleEntry) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyL7RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.Rule = &rule + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyL7Rules(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func flattenSourceList(list []*dayu.L4RuleSource) (re []map[string]interface{}) { + result := make([]map[string]interface{}, 0, len(list)) + for _, v := range list { + mapping := map[string]interface{}{ + "weight": v.Weight, + "source": v.Source, + } + result = append(result, mapping) + } + + return result +} + +func (me *DayuService) DeleteL7Rule(ctx context.Context, resourceType string, resourceId string, ruleId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDeleteL7RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.RuleIdList = []*string{&ruleId} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DeleteL7Rules(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) SetRuleSwitch(ctx context.Context, resourceType string, resourceId string, ruleId string, switchFlag bool, protocol string) (errRet error) { + logId := tccommon.GetLogId(ctx) + if protocol == DAYU_L7_RULE_PROTOCOL_HTTP { + request := dayu.NewModifyCCHostProtectionRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.RuleId = &ruleId + if switchFlag { + request.Method = helper.String("open") + } else { + request.Method = helper.String("close") + } + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyCCHostProtection(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + } else { + request := dayu.NewModifyCCThresholdRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.RuleId = &ruleId + request.Protocol = &protocol + + if !switchFlag { + request.Threshold = helper.IntUint64(DAYU_L7_HTTPS_SWITCH_OFF) + } else { + //this default value can be a request value that asks the whole threshold value if needed + request.Threshold = helper.IntUint64(DAYU_L7_HTTPS_SWITCH_ON_DEFAULT) + } + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyCCThreshold(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + } + return +} +func (me *DayuService) DescribeNewL4Rules(ctx context.Context, business string, extendParams map[string]interface{}) (infos []*dayu.NewL4RuleEntry, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribeNewL4RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Business = common.StringPtr(business) + + var offset, limit uint64 = 0, 20 + request.Offset = common.Uint64Ptr(offset) + request.Limit = common.Uint64Ptr(limit) + + if ip, ok := extendParams["ip"]; ok { + request.Ip = common.StringPtr(ip.(string)) + } + if virtualPort, ok := extendParams["virtual_port"]; ok { + request.VirtualPort = common.Uint64Ptr(uint64(virtualPort.(int))) + } + + response, errRet := me.client.UseDayuClient().DescribeNewL4Rules(request) + if errRet != nil { + return + } + infos = response.Response.Rules + return + +} + +func (me *DayuService) DeleteNewL4Rules(ctx context.Context, business string, id string, ip string, ruleIds []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDeleteNewL4RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Business = common.StringPtr(business) + request.Rule = []*dayu.L4DelRule{ + { + Id: common.StringPtr(id), + Ip: common.StringPtr(ip), + RuleIdList: common.StringPtrs(ruleIds), + }, + } + for { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DeleteNewL4Rules(request) + + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + errRet = nil + return + } + } + errRet = err + return + } + if *response.Response.Success.Code == "Success" { + return + } + } +} + +func (me *DayuService) ModifyNewL4Rule(ctx context.Context, business string, id string, singleRule interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyNewL4RuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + rule := singleRule.(map[string]interface{}) + tmpRule := dayu.L4RuleEntry{} + tmpRule.Protocol = common.StringPtr(rule["protocol"].(string)) + tmpRule.SourcePort = common.Uint64Ptr((uint64(rule["source_port"].(int)))) + tmpRule.VirtualPort = common.Uint64Ptr((uint64(rule["virtual_port"].(int)))) + tmpRule.KeepTime = common.Uint64Ptr((uint64(rule["keeptime"].(int)))) + tmpRule.RuleId = common.StringPtr((rule["rule_id"].(string))) + tmpRule.LbType = common.Uint64Ptr((uint64(rule["lb_type"].(int)))) + if rule["keep_enable"].(bool) { + tmpRule.KeepEnable = common.Uint64Ptr((uint64(1))) + } else { + tmpRule.KeepEnable = common.Uint64Ptr((uint64(0))) + } + tmpRule.SourceType = common.Uint64Ptr((uint64(rule["source_type"].(int)))) + if rule["remove_switch"].(bool) { + tmpRule.RemoveSwitch = common.Uint64Ptr((uint64(1))) + } else { + tmpRule.RemoveSwitch = common.Uint64Ptr((uint64(0))) + } + sourceList := rule["source_list"].([]interface{}) + tmpRule.SourceList = make([]*dayu.L4RuleSource, 0) + for _, singleSource := range sourceList { + source := singleSource.(map[string]interface{}) + tSource := source["source"].(string) + tWeight := uint64(source["weight"].(int)) + tmpRule.SourceList = append(tmpRule.SourceList, &dayu.L4RuleSource{Source: &tSource, Weight: &tWeight}) + } + + request.Business = common.StringPtr(business) + request.Id = common.StringPtr(id) + request.Rule = &tmpRule + + for { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyNewL4Rule(request) + + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + errRet = nil + return + } + } + errRet = err + return + } + if *response.Response.Success.Code == "Success" { + return + } + } +} + +func (me *DayuService) CreateNewL4Rules(ctx context.Context, business string, id string, vip string, ruleList []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewCreateNewL4RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + rules := make([]*dayu.L4RuleEntry, 0) + for _, singleRule := range ruleList { + rule := singleRule.(map[string]interface{}) + tmpRule := dayu.L4RuleEntry{} + tmpRule.Protocol = common.StringPtr(rule["protocol"].(string)) + tmpRule.SourcePort = common.Uint64Ptr((uint64(rule["source_port"].(int)))) + tmpRule.VirtualPort = common.Uint64Ptr((uint64(rule["virtual_port"].(int)))) + tmpRule.KeepTime = common.Uint64Ptr((uint64(rule["keeptime"].(int)))) + tmpRule.RuleName = common.StringPtr((rule["rule_name"].(string))) + tmpRule.LbType = common.Uint64Ptr((uint64(rule["lb_type"].(int)))) + if rule["keep_enable"].(bool) { + tmpRule.KeepEnable = common.Uint64Ptr((uint64(1))) + } else { + tmpRule.KeepEnable = common.Uint64Ptr((uint64(0))) + } + tmpRule.SourceType = common.Uint64Ptr((uint64(rule["source_type"].(int)))) + if rule["remove_switch"].(bool) { + tmpRule.RemoveSwitch = common.Uint64Ptr((uint64(1))) + } else { + tmpRule.RemoveSwitch = common.Uint64Ptr((uint64(0))) + } + sourceList := rule["source_list"].([]interface{}) + tmpRule.SourceList = make([]*dayu.L4RuleSource, 0) + for _, singleSource := range sourceList { + source := singleSource.(map[string]interface{}) + tSource := source["source"].(string) + tWeight := uint64(source["weight"].(int)) + tmpRule.SourceList = append(tmpRule.SourceList, &dayu.L4RuleSource{Source: &tSource, Weight: &tWeight}) + } + rules = append(rules, &tmpRule) + } + request.Business = common.StringPtr(business) + request.IdList = common.StringPtrs([]string{id}) + request.VipList = common.StringPtrs([]string{vip}) + request.Rules = rules + + for { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().CreateNewL4Rules(request) + + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + errRet = nil + return + } + } + errRet = err + return + } + if *response.Response.Success.Code == "Success" { + return + } + } +} + +func (me *DayuService) DescribeL4Rules(ctx context.Context, resourceType string, resourceId string, ruleName string, ruleId string) (infos []*dayu.L4RuleEntry, healths []*dayu.L4RuleHealth, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribleL4RulesRequest() + + infos = make([]*dayu.L4RuleEntry, 0, 100) + healths = make([]*dayu.L4RuleHealth, 0, 100) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit uint64 = 0, 20 + + request.Business = &resourceType + request.Id = &resourceId + + request.Offset = &offset + request.Limit = &limit + for { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribleL4Rules(request) + + if err != nil { + if sdkErr, ok := err.(*sdkError.TencentCloudSDKError); ok { + if sdkErr.Code == "InvalidParameterValue" { + errRet = nil + return + } + } + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + if ruleId == "" && ruleName == "" { + infos = append(infos, response.Response.Rules...) + healths = append(healths, response.Response.Healths...) + } else { + for _, rule := range response.Response.Rules { + if ruleId != "" && *rule.RuleId != ruleId { + continue + } + if ruleName != "" && *rule.RuleName != ruleName { + continue + } + infos = append(infos, rule) + + //get right health, the SDK returns with no order + var theHealth dayu.L4RuleHealth + for _, health := range response.Response.Healths { + if *health.RuleId != *rule.RuleId { + continue + } + theHealth = *health + } + healths = append(healths, &theHealth) + } + } + if len(response.Response.Rules) < int(limit) { + if len(infos) > 0 { + has = true + } + return + } + offset += limit + } +} + +func (me *DayuService) DescribeL4Rule(ctx context.Context, resourceType string, resourceId string, ruleId string) (infos *dayu.L4RuleEntry, health *dayu.L4RuleHealth, has bool, errRet error) { + policies, healths, _, err := me.DescribeL4Rules(ctx, resourceType, resourceId, "", ruleId) + if err != nil { + errRet = err + return + } + + length := len(policies) + if length == 0 { + return + } + if length > 1 { + errRet = fmt.Errorf("Create L4 rule returns %d rules", length) + return + } + + infos = policies[0] + if len(healths) > 0 { + health = healths[0] + } + has = true + return +} + +func (me *DayuService) SetL4Health(ctx context.Context, resourceType string, resourceId string, healthCheck dayu.L4HealthConfig) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewCreateL4HealthConfigRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.HealthConfig = []*dayu.L4HealthConfig{&healthCheck} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().CreateL4HealthConfig(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) DescribeL4Health(ctx context.Context, resourceType string, resourceId string, ruleId string) (healthCheck *dayu.L4HealthConfig, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribeL4HealthConfigRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Id = &resourceId + request.Business = &resourceType + request.RuleIdList = []*string{&ruleId} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribeL4HealthConfig(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + healthChecks := response.Response.HealthConfig + length := len(healthChecks) + if length == 0 { + return + } + if length > 1 { + errRet = fmt.Errorf("Get L4 health check returns %d healthchecks", length) + return + } + healthCheck = healthChecks[0] + has = true + return +} + +func (me *DayuService) CreateL4Rule(ctx context.Context, resourceType string, resourceId string, rule dayu.L4RuleEntry) (ruleId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewCreateL4RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.Rules = []*dayu.L4RuleEntry{&rule} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().CreateL4Rules(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + //describe rules to get rule ID + rules, _, has, dErr := me.DescribeL4Rules(ctx, resourceType, resourceId, *rule.RuleName, "") + if dErr != nil { + errRet = dErr + return + } + if !has { + errRet = fmt.Errorf("Create L4 rule failed") + return + } + if len(rules) != 1 { + errRet = fmt.Errorf("Create L4 rule returns %d rules", len(rules)) + return + } + ruleId = *rules[0].RuleId + return +} + +func (me *DayuService) ModifyL4Rule(ctx context.Context, resourceType string, resourceId string, rule dayu.L4RuleEntry) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyL4RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.Rule = &rule + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyL4Rules(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) DeleteL4Rule(ctx context.Context, resourceType string, resourceId string, ruleId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDeleteL4RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.RuleIdList = []*string{&ruleId} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DeleteL4Rules(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) SetSession(ctx context.Context, resourceType string, resourceId string, ruleId string, switchFlag bool, sessionTime int) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyL4KeepTimeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.RuleId = &ruleId + request.KeepEnable = helper.BoolToInt64Pointer(switchFlag) + request.KeepTime = helper.IntUint64(sessionTime) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().ModifyL4KeepTime(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.Success == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response,%s", request.GetAction()) + return + } + + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return + } + + return +} + +func (me *DayuService) DescribeL7RulesV2(ctx context.Context, business string, extendParams map[string]interface{}) (rules []*dayu.NewL7RuleEntry, healths []*dayu.L7RuleHealth, errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDescribleNewL7RulesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + request.Business = &business + if v, ok := extendParams["protocol"]; ok { + protocol := v.(string) + if protocol != "" { + request.ProtocolList = []*string{&protocol} + } + } + if v, ok := extendParams["domain"]; ok { + domain := v.(string) + if domain != "" { + request.Domain = &domain + } + } + if v, ok := extendParams["ip"]; ok { + ip := v.(string) + if ip != "" { + request.Ip = &ip + } + } + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + + for { + request.Offset = &offset + request.Limit = &limit + ratelimit.Check(request.GetAction()) + response, err := me.client.UseDayuClient().DescribleNewL7Rules(request) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Rules) < 1 { + break + } + + rules = append(rules, response.Response.Rules...) + healths = append(healths, response.Response.Healths...) + if len(response.Response.Rules) < int(limit) { + break + } + + offset += limit + } + return +} + +func (me *DayuService) CreateL7RuleV2(ctx context.Context, business string, resourceId string, resourceIp string, ruleList []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewCreateNewL7RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + rule := ruleList[0].(map[string]interface{}) + keeptime := uint64(rule["keeptime"].(int)) + domain := rule["domain"].(string) + protocol := rule["protocol"].(string) + sourceType := uint64(rule["source_type"].(int)) + lbType := uint64(rule["lb_type"].(int)) + keepEnable := uint64(rule["keep_enable"].(int)) + certType := uint64(rule["cert_type"].(int)) + sslId := rule["ssl_id"].(string) + ccEnable := uint64(rule["cc_enable"].(int)) + httpsToHttpEnable := uint64(rule["https_to_http_enable"].(int)) + + sourceList := rule["source_list"].([]interface{}) + sources := make([]*dayu.L4RuleSource, 0) + for _, source := range sourceList { + sourceItem := source.(map[string]interface{}) + weight := uint64(sourceItem["weight"].(int)) + subSource := sourceItem["source"].(string) + tmpSource := dayu.L4RuleSource{ + Source: &subSource, + Weight: &weight, + } + sources = append(sources, &tmpSource) + } + + ruleEntry := dayu.L7RuleEntry{ + KeepTime: &keeptime, + Domain: &domain, + Protocol: &protocol, + SourceType: &sourceType, + LbType: &lbType, + KeepEnable: &keepEnable, + SourceList: sources, + CertType: &certType, + SSLId: &sslId, + CCEnable: &ccEnable, + HttpsToHttpEnable: &httpsToHttpEnable, + } + + request.IdList = []*string{&resourceId} + request.VipList = []*string{&resourceIp} + request.Business = &business + request.Rules = []*dayu.L7RuleEntry{&ruleEntry} + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseDayuClient().CreateNewL7Rules(request) + + if e, ok := errRet.(*sdkError.TencentCloudSDKError); ok { + if e.GetCode() == "InternalError.ClusterNotFound" { + return nil + } + } + if errRet != nil { + return resource.RetryableError(errRet) + } + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return resource.RetryableError(errRet) + } + return nil + }) + return +} + +func (me *DayuService) ModifyL7RuleV2(ctx context.Context, resourceType string, resourceId string, rule *dayu.NewL7RuleEntry) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewModifyNewDomainRulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Id = &resourceId + request.Business = &resourceType + request.Rule = rule + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseDayuClient().ModifyNewDomainRules(request) + + if e, ok := errRet.(*sdkError.TencentCloudSDKError); ok { + if e.GetCode() == "InternalError.ClusterNotFound" { + return nil + } + } + if errRet != nil { + return resource.RetryableError(errRet) + } + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return resource.RetryableError(errRet) + } + return nil + }) + + return +} + +func (me *DayuService) DeleteL7RulesV2(ctx context.Context, resourceType string, resourceId string, resourceIp string, ruleId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := dayu.NewDeleteNewL7RulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.Business = &resourceType + request.Rule = []*dayu.L4DelRule{ + { + Id: &resourceId, + Ip: &resourceIp, + RuleIdList: []*string{&ruleId}, + }, + } + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseDayuClient().DeleteNewL7Rules(request) + + if e, ok := errRet.(*sdkError.TencentCloudSDKError); ok { + if e.GetCode() == "InternalError.ClusterNotFound" { + return nil + } + } + if errRet != nil { + return resource.RetryableError(errRet) + } + if *response.Response.Success.Code != "Success" { + errRet = fmt.Errorf("TencentCloud SDK return %s response,%s", *response.Response.Success.Code, *response.Response.Success.Message) + return resource.RetryableError(errRet) + } + return nil + }) + return +} diff --git a/tencentcloud/data_source_tc_dbbrain_db_space_status.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_db_space_status.go similarity index 81% rename from tencentcloud/data_source_tc_dbbrain_db_space_status.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_db_space_status.go index 5646dcd074..846ca14563 100644 --- a/tencentcloud/data_source_tc_dbbrain_db_space_status.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_db_space_status.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainDbSpaceStatus() *schema.Resource { +func DataSourceTencentCloudDbbrainDbSpaceStatus() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainDbSpaceStatusRead, Schema: map[string]*schema.Schema{ @@ -65,14 +68,14 @@ func dataSourceTencentCloudDbbrainDbSpaceStatus() *schema.Resource { } func dataSourceTencentCloudDbbrainDbSpaceStatusRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_db_space_status.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_db_space_status.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var instanceId string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -88,14 +91,14 @@ func dataSourceTencentCloudDbbrainDbSpaceStatusRead(d *schema.ResourceData, meta paramMap["Product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var rows *dbbrain.DescribeDBSpaceStatusResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainDbSpaceStatusByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } rows = result return nil @@ -135,7 +138,7 @@ func dataSourceTencentCloudDbbrainDbSpaceStatusRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdHash(instanceId)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_db_space_status_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_db_space_status_test.go similarity index 72% rename from tencentcloud/data_source_tc_dbbrain_db_space_status_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_db_space_status_test.go index 1d2d86b3be..22e7d6661e 100644 --- a/tencentcloud/data_source_tc_dbbrain_db_space_status_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_db_space_status_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,15 +13,15 @@ func TestAccTencentCloudDbbrainDbSpaceStatusDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainDbSpaceStatusDataSource, defaultDbBrainInstanceId), + Config: fmt.Sprintf(testAccDbbrainDbSpaceStatusDataSource, tcacctest.DefaultDbBrainInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_db_space_status.db_space_status"), - resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_db_space_status.db_space_status", "instance_id", defaultDbBrainInstanceId), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_db_space_status.db_space_status"), + resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_db_space_status.db_space_status", "instance_id", tcacctest.DefaultDbBrainInstanceId), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_db_space_status.db_space_status", "range_days", "7"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_db_space_status.db_space_status", "product", "mysql"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_db_space_status.db_space_status", "growth"), diff --git a/tencentcloud/data_source_tc_dbbrain_diag_db_instances.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_db_instances.go similarity index 95% rename from tencentcloud/data_source_tc_dbbrain_diag_db_instances.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_db_instances.go index 4576f15a3a..51368ab47c 100644 --- a/tencentcloud/data_source_tc_dbbrain_diag_db_instances.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_db_instances.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainDiagDbInstances() *schema.Resource { +func DataSourceTencentCloudDbbrainDiagDbInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainDiagDbInstancesRead, Schema: map[string]*schema.Schema{ @@ -255,12 +258,12 @@ func dataSourceTencentCloudDbbrainDiagDbInstances() *schema.Resource { } func dataSourceTencentCloudDbbrainDiagDbInstancesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_diag_db_instances.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_diag_db_instances.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, _ := d.GetOk("is_supported"); v != nil { @@ -286,17 +289,17 @@ func dataSourceTencentCloudDbbrainDiagDbInstancesRead(d *schema.ResourceData, me paramMap["Regions"] = helper.InterfacesStringsPoint(regionsSet) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( infos []*dbbrain.InstanceInfo dbScanStatus *int64 e error ) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { infos, dbScanStatus, e = service.DescribeDbbrainDiagDbInstancesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -463,7 +466,7 @@ func dataSourceTencentCloudDbbrainDiagDbInstancesRead(d *schema.ResourceData, me d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_diag_db_instances_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_db_instances_test.go similarity index 89% rename from tencentcloud/data_source_tc_dbbrain_diag_db_instances_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_db_instances_test.go index d25d7b163a..047578c9b2 100644 --- a/tencentcloud/data_source_tc_dbbrain_diag_db_instances_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_db_instances_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dbbrain_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDbbrainDiagDbInstancesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDbbrainDiagDbInstancesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_diag_db_instances.diag_db_instances"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_diag_db_instances.diag_db_instances"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_diag_db_instances.diag_db_instances", "is_supported", "true"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_diag_db_instances.diag_db_instances", "product", "mysql"), resource.TestCheckTypeSetElemAttr("data.tencentcloud_dbbrain_diag_db_instances.diag_db_instances", "instance_names.*", "keep_preset_mysql"), diff --git a/tencentcloud/data_source_tc_dbbrain_diag_event.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_event.go similarity index 86% rename from tencentcloud/data_source_tc_dbbrain_diag_event.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_event.go index a2607700a0..aab005de9a 100644 --- a/tencentcloud/data_source_tc_dbbrain_diag_event.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_event.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainDiagEvent() *schema.Resource { +func DataSourceTencentCloudDbbrainDiagEvent() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainDiagEventRead, Schema: map[string]*schema.Schema{ @@ -102,12 +105,12 @@ func dataSourceTencentCloudDbbrainDiagEvent() *schema.Resource { } func dataSourceTencentCloudDbbrainDiagEventRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_diag_event.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_diag_event.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var id string paramMap := make(map[string]interface{}) @@ -125,13 +128,13 @@ func dataSourceTencentCloudDbbrainDiagEventRead(d *schema.ResourceData, meta int } var result *dbbrain.DescribeDBDiagEventResponseParams - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { var e error result, e = service.DescribeDbbrainDiagEventByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -189,7 +192,7 @@ func dataSourceTencentCloudDbbrainDiagEventRead(d *schema.ResourceData, meta int d.SetId(id) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_diag_event_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_event_test.go similarity index 80% rename from tencentcloud/data_source_tc_dbbrain_diag_event_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_event_test.go index c2d19923cf..90e22b2e14 100644 --- a/tencentcloud/data_source_tc_dbbrain_diag_event_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_event_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,14 +17,14 @@ func TestAccTencentCloudDbbrainDiagEventDataSource_basic(t *testing.T) { endTime := time.Now().In(loc).Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainDiagEventDataSource, defaultDbBrainInstanceId, startTime, endTime, defaultDbBrainInstanceId), + Config: fmt.Sprintf(testAccDbbrainDiagEventDataSource, tcacctest.DefaultDbBrainInstanceId, startTime, endTime, tcacctest.DefaultDbBrainInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_diag_event.diag_event"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_diag_event.diag_event"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_diag_event.diag_event", "diag_item"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_diag_event.diag_event", "diag_type"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_diag_event.diag_event", "explanation"), diff --git a/tencentcloud/data_source_tc_dbbrain_diag_events.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_events.go similarity index 88% rename from tencentcloud/data_source_tc_dbbrain_diag_events.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_events.go index ddde640eec..2cb4962ccd 100644 --- a/tencentcloud/data_source_tc_dbbrain_diag_events.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_events.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainDiagEvents() *schema.Resource { +func DataSourceTencentCloudDbbrainDiagEvents() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainDiagEventsRead, Schema: map[string]*schema.Schema{ @@ -113,12 +116,12 @@ func dataSourceTencentCloudDbbrainDiagEvents() *schema.Resource { } func dataSourceTencentCloudDbbrainDiagEventsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_diag_events.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_diag_events.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_ids"); ok { @@ -144,14 +147,14 @@ func dataSourceTencentCloudDbbrainDiagEventsRead(d *schema.ResourceData, meta in paramMap["severities"] = tmpSet } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var items []*dbbrain.DiagHistoryEventItem - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainDiagEventsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } items = result return nil @@ -216,7 +219,7 @@ func dataSourceTencentCloudDbbrainDiagEventsRead(d *schema.ResourceData, meta in output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_diag_events_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_events_test.go similarity index 82% rename from tencentcloud/data_source_tc_dbbrain_diag_events_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_events_test.go index fb35fc412d..10784112cb 100644 --- a/tencentcloud/data_source_tc_dbbrain_diag_events_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_events_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,14 +17,14 @@ func TestAccTencentCloudDbbrainDiagEventsDataSource_basic(t *testing.T) { endTime := time.Now().In(loc).Format("2006-01-02T15:04:05+08:00") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainDiagEventsDataSource, defaultDbBrainInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainDiagEventsDataSource, tcacctest.DefaultDbBrainInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_diag_events.diag_events"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_diag_events.diag_events"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_diag_events.diag_events", "list.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_diag_events.diag_events", "list.0.diag_type"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_diag_events.diag_events", "list.0.start_time"), diff --git a/tencentcloud/data_source_tc_dbbrain_diag_history.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_history.go similarity index 89% rename from tencentcloud/data_source_tc_dbbrain_diag_history.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_history.go index 39850fb836..6ab5788033 100644 --- a/tencentcloud/data_source_tc_dbbrain_diag_history.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_history.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainDiagHistory() *schema.Resource { +func DataSourceTencentCloudDbbrainDiagHistory() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainDiagHistoryRead, Schema: map[string]*schema.Schema{ @@ -107,12 +110,12 @@ func dataSourceTencentCloudDbbrainDiagHistory() *schema.Resource { } func dataSourceTencentCloudDbbrainDiagHistoryRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_diag_history.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_diag_history.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -131,14 +134,14 @@ func dataSourceTencentCloudDbbrainDiagHistoryRead(d *schema.ResourceData, meta i paramMap["product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var events []*dbbrain.DiagHistoryEventItem - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainDiagHistoryByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } events = result return nil @@ -204,7 +207,7 @@ func dataSourceTencentCloudDbbrainDiagHistoryRead(d *schema.ResourceData, meta i d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_diag_history_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_history_test.go similarity index 83% rename from tencentcloud/data_source_tc_dbbrain_diag_history_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_history_test.go index 5e6d183e26..e6a54dc5ca 100644 --- a/tencentcloud/data_source_tc_dbbrain_diag_history_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_diag_history_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,14 +17,14 @@ func TestAccTencentCloudDbbrainDiagHistoryDataSource_basic(t *testing.T) { endTime := time.Now().In(loc).Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainDiagHistoryDataSource, defaultDbBrainInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainDiagHistoryDataSource, tcacctest.DefaultDbBrainInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_diag_history.diag_history"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_diag_history.diag_history"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_diag_history.diag_history", "events.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_diag_history.diag_history", "events.0.diag_type"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_diag_history.diag_history", "events.0.event_id"), diff --git a/tencentcloud/data_source_tc_dbbrain_health_scores.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_health_scores.go similarity index 91% rename from tencentcloud/data_source_tc_dbbrain_health_scores.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_health_scores.go index b9b877c902..2822a72ce9 100644 --- a/tencentcloud/data_source_tc_dbbrain_health_scores.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_health_scores.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainHealthScores() *schema.Resource { +func DataSourceTencentCloudDbbrainHealthScores() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainHealthScoresRead, Schema: map[string]*schema.Schema{ @@ -139,12 +142,12 @@ func dataSourceTencentCloudDbbrainHealthScores() *schema.Resource { } func dataSourceTencentCloudDbbrainHealthScoresRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_health_scores.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_health_scores.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var instanceId string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -160,14 +163,14 @@ func dataSourceTencentCloudDbbrainHealthScoresRead(d *schema.ResourceData, meta paramMap["product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var data *dbbrain.HealthScoreInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainHealthScoresByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } data = result return nil @@ -262,7 +265,7 @@ func dataSourceTencentCloudDbbrainHealthScoresRead(d *schema.ResourceData, meta d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), healthScoreInfoMap); e != nil { + if e := tccommon.WriteToFile(output.(string), healthScoreInfoMap); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_health_scores_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_health_scores_test.go similarity index 84% rename from tencentcloud/data_source_tc_dbbrain_health_scores_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_health_scores_test.go index f5696fe123..16ebb23c50 100644 --- a/tencentcloud/data_source_tc_dbbrain_health_scores_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_health_scores_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,14 +17,14 @@ func TestAccTencentCloudDbbrainHealthScoresDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccDbbrainHealthScoresDataSource, reportTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_health_scores.health_scores"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_health_scores.health_scores"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_health_scores.health_scores", "instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_health_scores.health_scores", "time", reportTime), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_health_scores.health_scores", "product", "mysql"), @@ -40,7 +42,7 @@ func TestAccTencentCloudDbbrainHealthScoresDataSource_basic(t *testing.T) { }) } -const testAccDbbrainHealthScoresDataSource = CommonPresetMysql + ` +const testAccDbbrainHealthScoresDataSource = tcacctest.CommonPresetMysql + ` data "tencentcloud_dbbrain_health_scores" "health_scores" { instance_id = local.mysql_id diff --git a/tencentcloud/data_source_tc_dbbrain_mysql_process_list.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_mysql_process_list.go similarity index 89% rename from tencentcloud/data_source_tc_dbbrain_mysql_process_list.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_mysql_process_list.go index f080a64ee7..3e2e2df27a 100644 --- a/tencentcloud/data_source_tc_dbbrain_mysql_process_list.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_mysql_process_list.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainMysqlProcessList() *schema.Resource { +func DataSourceTencentCloudDbbrainMysqlProcessList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainMysqlProcessListRead, Schema: map[string]*schema.Schema{ @@ -134,12 +137,12 @@ func dataSourceTencentCloudDbbrainMysqlProcessList() *schema.Resource { } func dataSourceTencentCloudDbbrainMysqlProcessListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_mysql_process_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_mysql_process_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instanceId string ) @@ -186,14 +189,14 @@ func dataSourceTencentCloudDbbrainMysqlProcessListRead(d *schema.ResourceData, m paramMap["Product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var processList []*dbbrain.MySqlProcess - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainMysqlProcessListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } processList = result return nil @@ -241,7 +244,7 @@ func dataSourceTencentCloudDbbrainMysqlProcessListRead(d *schema.ResourceData, m mySqlProcessMap["info"] = mySqlProcess.Info } - ids = append(ids, strings.Join([]string{instanceId, *mySqlProcess.ID}, FILED_SP)) + ids = append(ids, strings.Join([]string{instanceId, *mySqlProcess.ID}, tccommon.FILED_SP)) tmpList = append(tmpList, mySqlProcessMap) } @@ -251,7 +254,7 @@ func dataSourceTencentCloudDbbrainMysqlProcessListRead(d *schema.ResourceData, m d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_mysql_process_list_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_mysql_process_list_test.go similarity index 83% rename from tencentcloud/data_source_tc_dbbrain_mysql_process_list_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_mysql_process_list_test.go index 6d530a749d..b4306f47c8 100644 --- a/tencentcloud/data_source_tc_dbbrain_mysql_process_list_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_mysql_process_list_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dbbrain_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDbbrainMysqlProcessListDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDbbrainMysqlProcessListDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_mysql_process_list.mysql_process_list"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_mysql_process_list.mysql_process_list"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_mysql_process_list.mysql_process_list", "instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_mysql_process_list.mysql_process_list", "product", "mysql"), // return @@ -36,7 +38,7 @@ func TestAccTencentCloudDbbrainMysqlProcessListDataSource_basic(t *testing.T) { }) } -const testAccDbbrainMysqlProcessListDataSource = CommonPresetMysql + ` +const testAccDbbrainMysqlProcessListDataSource = tcacctest.CommonPresetMysql + ` data "tencentcloud_dbbrain_mysql_process_list" "mysql_process_list" { instance_id = local.mysql_id diff --git a/tencentcloud/data_source_tc_dbbrain_no_primary_key_tables.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_no_primary_key_tables.go similarity index 85% rename from tencentcloud/data_source_tc_dbbrain_no_primary_key_tables.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_no_primary_key_tables.go index a9f752271b..8bd6aed881 100644 --- a/tencentcloud/data_source_tc_dbbrain_no_primary_key_tables.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_no_primary_key_tables.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainNoPrimaryKeyTables() *schema.Resource { +func DataSourceTencentCloudDbbrainNoPrimaryKeyTables() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainNoPrimaryKeyTablesRead, Schema: map[string]*schema.Schema{ @@ -89,12 +92,12 @@ func dataSourceTencentCloudDbbrainNoPrimaryKeyTables() *schema.Resource { } func dataSourceTencentCloudDbbrainNoPrimaryKeyTablesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_no_primary_key_tables.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_no_primary_key_tables.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instanceId string ) @@ -113,17 +116,17 @@ func dataSourceTencentCloudDbbrainNoPrimaryKeyTablesRead(d *schema.ResourceData, paramMap["Product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( tables []*dbbrain.Table resp *dbbrain.DescribeNoPrimaryKeyTablesResponseParams e error ) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { tables, resp, e = service.DescribeDbbrainNoPrimaryKeyTablesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -168,7 +171,7 @@ func dataSourceTencentCloudDbbrainNoPrimaryKeyTablesRead(d *schema.ResourceData, tableMap["total_length"] = table.TotalLength } - ids = append(ids, strings.Join([]string{instanceId, *table.TableSchema, *table.TableName}, FILED_SP)) + ids = append(ids, strings.Join([]string{instanceId, *table.TableSchema, *table.TableName}, tccommon.FILED_SP)) tmpList = append(tmpList, tableMap) } @@ -178,7 +181,7 @@ func dataSourceTencentCloudDbbrainNoPrimaryKeyTablesRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_no_primary_key_tables_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_no_primary_key_tables_test.go similarity index 85% rename from tencentcloud/data_source_tc_dbbrain_no_primary_key_tables_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_no_primary_key_tables_test.go index e4b3642fde..e63164eb35 100644 --- a/tencentcloud/data_source_tc_dbbrain_no_primary_key_tables_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_no_primary_key_tables_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -13,14 +15,14 @@ func TestAccTencentCloudDbbrainNoPrimaryKeyTablesDataSource_basic(t *testing.T) // queryDate := time.Now().AddDate(0, 0, -20).In(loc).Format("2006-01-02") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccDbbrainNoPrimaryKeyTablesDataSource, "2023-06-13"), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_no_primary_key_tables.no_primary_key_tables"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_no_primary_key_tables.no_primary_key_tables"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_no_primary_key_tables.no_primary_key_tables", "instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_no_primary_key_tables.no_primary_key_tables", "date", "2023-06-13"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_no_primary_key_tables.no_primary_key_tables", "product", "mysql"), @@ -39,7 +41,7 @@ func TestAccTencentCloudDbbrainNoPrimaryKeyTablesDataSource_basic(t *testing.T) }) } -const testAccDbbrainNoPrimaryKeyTablesDataSource = CommonPresetMysql + ` +const testAccDbbrainNoPrimaryKeyTablesDataSource = tcacctest.CommonPresetMysql + ` data "tencentcloud_dbbrain_no_primary_key_tables" "no_primary_key_tables" { instance_id = local.mysql_id diff --git a/tencentcloud/data_source_tc_dbbrain_redis_top_big_keys.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_big_keys.go similarity index 87% rename from tencentcloud/data_source_tc_dbbrain_redis_top_big_keys.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_big_keys.go index 5515f3e2f0..421a34d61e 100644 --- a/tencentcloud/data_source_tc_dbbrain_redis_top_big_keys.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_big_keys.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainRedisTopBigKeys() *schema.Resource { +func DataSourceTencentCloudDbbrainRedisTopBigKeys() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainRedisTopBigKeysRead, Schema: map[string]*schema.Schema{ @@ -99,12 +102,12 @@ func dataSourceTencentCloudDbbrainRedisTopBigKeys() *schema.Resource { } func dataSourceTencentCloudDbbrainRedisTopBigKeysRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_redis_top_big_keys.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_redis_top_big_keys.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instanceId string ) @@ -131,14 +134,14 @@ func dataSourceTencentCloudDbbrainRedisTopBigKeysRead(d *schema.ResourceData, me paramMap["KeyType"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var topKeys []*dbbrain.RedisKeySpaceData - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainRedisTopBigKeysByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } topKeys = result return nil @@ -182,7 +185,7 @@ func dataSourceTencentCloudDbbrainRedisTopBigKeysRead(d *schema.ResourceData, me redisKeySpaceDataMap["max_element_size"] = redisKeySpaceData.MaxElementSize } - ids = append(ids, strings.Join([]string{instanceId, *redisKeySpaceData.Key}, FILED_SP)) + ids = append(ids, strings.Join([]string{instanceId, *redisKeySpaceData.Key}, tccommon.FILED_SP)) tmpList = append(tmpList, redisKeySpaceDataMap) } @@ -192,7 +195,7 @@ func dataSourceTencentCloudDbbrainRedisTopBigKeysRead(d *schema.ResourceData, me d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_redis_top_big_keys_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_big_keys_test.go similarity index 86% rename from tencentcloud/data_source_tc_dbbrain_redis_top_big_keys_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_big_keys_test.go index fed3ca4f5e..5f55123ba9 100644 --- a/tencentcloud/data_source_tc_dbbrain_redis_top_big_keys_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_big_keys_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -13,14 +15,14 @@ func TestAccTencentCloudDbbrainRedisTopBigKeysDataSource_basic(t *testing.T) { // queryDate := time.Now().AddDate(0, 0, -20).In(loc).Format("2006-01-02") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccDbbrainRedisTopBigKeysDataSource, "2023-06-13"), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_redis_top_big_keys.redis_top_big_keys"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_redis_top_big_keys.redis_top_big_keys"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_redis_top_big_keys.redis_top_big_keys", "instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_redis_top_big_keys.redis_top_big_keys", "date", "2023-06-13"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_redis_top_big_keys.redis_top_big_keys", "product", "redis"), @@ -41,7 +43,7 @@ func TestAccTencentCloudDbbrainRedisTopBigKeysDataSource_basic(t *testing.T) { }) } -const testAccDbbrainRedisTopBigKeysDataSource = CommonPresetRedis + ` +const testAccDbbrainRedisTopBigKeysDataSource = tcacctest.CommonPresetRedis + ` data "tencentcloud_dbbrain_redis_top_big_keys" "redis_top_big_keys" { instance_id = local.redis_id diff --git a/tencentcloud/data_source_tc_dbbrain_redis_top_key_prefix_list.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_key_prefix_list.go similarity index 84% rename from tencentcloud/data_source_tc_dbbrain_redis_top_key_prefix_list.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_key_prefix_list.go index b9da7a5024..f78c988730 100644 --- a/tencentcloud/data_source_tc_dbbrain_redis_top_key_prefix_list.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_key_prefix_list.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainRedisTopKeyPrefixList() *schema.Resource { +func DataSourceTencentCloudDbbrainRedisTopKeyPrefixList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainRedisTopKeyPrefixListRead, Schema: map[string]*schema.Schema{ @@ -82,12 +85,12 @@ func dataSourceTencentCloudDbbrainRedisTopKeyPrefixList() *schema.Resource { } func dataSourceTencentCloudDbbrainRedisTopKeyPrefixListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_redis_top_key_prefix_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_redis_top_key_prefix_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instanceId string ) @@ -106,14 +109,14 @@ func dataSourceTencentCloudDbbrainRedisTopKeyPrefixListRead(d *schema.ResourceDa paramMap["Product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var items []*dbbrain.RedisPreKeySpaceData - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainRedisTopKeyPrefixListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } items = result return nil @@ -153,7 +156,7 @@ func dataSourceTencentCloudDbbrainRedisTopKeyPrefixListRead(d *schema.ResourceDa redisPreKeySpaceDataMap["max_element_size"] = redisPreKeySpaceData.MaxElementSize } - ids = append(ids, strings.Join([]string{instanceId, *redisPreKeySpaceData.KeyPreIndex}, FILED_SP)) + ids = append(ids, strings.Join([]string{instanceId, *redisPreKeySpaceData.KeyPreIndex}, tccommon.FILED_SP)) tmpList = append(tmpList, redisPreKeySpaceDataMap) } @@ -163,7 +166,7 @@ func dataSourceTencentCloudDbbrainRedisTopKeyPrefixListRead(d *schema.ResourceDa d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_redis_top_key_prefix_list_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_key_prefix_list_test.go similarity index 84% rename from tencentcloud/data_source_tc_dbbrain_redis_top_key_prefix_list_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_key_prefix_list_test.go index 0ad98abbee..f8b099d192 100644 --- a/tencentcloud/data_source_tc_dbbrain_redis_top_key_prefix_list_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_redis_top_key_prefix_list_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -13,14 +15,14 @@ func TestAccTencentCloudDbbrainRedisTopKeyPrefixListDataSource_basic(t *testing. // queryDate := time.Now().AddDate(0, 0, -20).In(loc).Format("2006-01-02") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccDbbrainRedisTopKeyPrefixListDataSource, "2023-06-13"), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_redis_top_key_prefix_list.redis_top_key_prefix_list"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_redis_top_key_prefix_list.redis_top_key_prefix_list"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_redis_top_key_prefix_list.redis_top_key_prefix_list", "instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_redis_top_key_prefix_list.redis_top_key_prefix_list", "date", "2023-06-13"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_redis_top_key_prefix_list.redis_top_key_prefix_list", "product", "redis"), @@ -38,7 +40,7 @@ func TestAccTencentCloudDbbrainRedisTopKeyPrefixListDataSource_basic(t *testing. }) } -const testAccDbbrainRedisTopKeyPrefixListDataSource = CommonPresetRedis + ` +const testAccDbbrainRedisTopKeyPrefixListDataSource = tcacctest.CommonPresetRedis + ` data "tencentcloud_dbbrain_redis_top_key_prefix_list" "redis_top_key_prefix_list" { instance_id = local.redis_id diff --git a/tencentcloud/data_source_tc_dbbrain_security_audit_log_download_urls.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_security_audit_log_download_urls.go similarity index 75% rename from tencentcloud/data_source_tc_dbbrain_security_audit_log_download_urls.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_security_audit_log_download_urls.go index 5a23169331..65db350076 100644 --- a/tencentcloud/data_source_tc_dbbrain_security_audit_log_download_urls.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_security_audit_log_download_urls.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainSecurityAuditLogDownloadUrls() *schema.Resource { +func DataSourceTencentCloudDbbrainSecurityAuditLogDownloadUrls() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainSecurityAuditLogDownloadUrlsRead, Schema: map[string]*schema.Schema{ @@ -50,14 +53,14 @@ func dataSourceTencentCloudDbbrainSecurityAuditLogDownloadUrls() *schema.Resourc } func dataSourceTencentCloudDbbrainSecurityAuditLogDownloadUrlsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_security_audit_log_download_urls.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_security_audit_log_download_urls.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var sagId string var asyncReqId int - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("sec_audit_group_id"); ok { @@ -74,14 +77,14 @@ func dataSourceTencentCloudDbbrainSecurityAuditLogDownloadUrlsRead(d *schema.Res paramMap["product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var urls []*string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { var e error urls, e = service.DescribeDbbrainSecurityAuditLogDownloadUrlsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -93,10 +96,10 @@ func dataSourceTencentCloudDbbrainSecurityAuditLogDownloadUrlsRead(d *schema.Res _ = d.Set("urls", urls) } - d.SetId(strings.Join([]string{sagId, helper.Int64ToStr(int64(asyncReqId))}, FILED_SP)) + d.SetId(strings.Join([]string{sagId, helper.Int64ToStr(int64(asyncReqId))}, tccommon.FILED_SP)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), urls); e != nil { + if e := tccommon.WriteToFile(output.(string), urls); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_security_audit_log_export_tasks.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_security_audit_log_export_tasks.go similarity index 86% rename from tencentcloud/data_source_tc_dbbrain_security_audit_log_export_tasks.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_security_audit_log_export_tasks.go index 0c64b9b5ee..c339895a9b 100644 --- a/tencentcloud/data_source_tc_dbbrain_security_audit_log_export_tasks.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_security_audit_log_export_tasks.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainSecurityAuditLogExportTasks() *schema.Resource { +func DataSourceTencentCloudDbbrainSecurityAuditLogExportTasks() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainSecurityAuditLogExportTasksRead, Schema: map[string]*schema.Schema{ @@ -108,11 +111,11 @@ func dataSourceTencentCloudDbbrainSecurityAuditLogExportTasks() *schema.Resource } func dataSourceTencentCloudDbbrainSecurityAuditLogExportTasksRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_security_audit_log_export_tasks.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_security_audit_log_export_tasks.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var sag_id string paramMap := make(map[string]interface{}) @@ -135,13 +138,13 @@ func dataSourceTencentCloudDbbrainSecurityAuditLogExportTasksRead(d *schema.Reso paramMap["async_request_ids"] = tmpList } - dbbrainService := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + dbbrainService := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var tasks []*dbbrain.SecLogExportTaskInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dbbrainService.DescribeDbbrainSecurityAuditLogExportTasksByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } tasks = results return nil @@ -188,7 +191,7 @@ func dataSourceTencentCloudDbbrainSecurityAuditLogExportTasksRead(d *schema.Reso if task.DangerLevels != nil { taskMap["danger_levels"] = task.DangerLevels } - ids = append(ids, sag_id+FILED_SP+helper.UInt64ToStr(*task.AsyncRequestId)) + ids = append(ids, sag_id+tccommon.FILED_SP+helper.UInt64ToStr(*task.AsyncRequestId)) taskList = append(taskList, taskMap) } d.SetId(helper.DataResourceIdsHash(ids)) @@ -197,7 +200,7 @@ func dataSourceTencentCloudDbbrainSecurityAuditLogExportTasksRead(d *schema.Reso output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), taskList); e != nil { + if e := tccommon.WriteToFile(output.(string), taskList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_security_audit_log_export_tasks_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_security_audit_log_export_tasks_test.go similarity index 76% rename from tencentcloud/data_source_tc_dbbrain_security_audit_log_export_tasks_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_security_audit_log_export_tasks_test.go index 91386861e0..e37e8afaa7 100644 --- a/tencentcloud/data_source_tc_dbbrain_security_audit_log_export_tasks_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_security_audit_log_export_tasks_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,13 +17,13 @@ func TestAccTencentCloudDbbrainSecurityAuditLogExportTasksDataSource(t *testing. endTime := time.Now().Add(2 * time.Hour).In(loc).Format("2006-01-02T15:04:05+08:00") resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceDbbrainSecurityAuditLogExportTasks(startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_security_audit_log_export_tasks.tasks"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_security_audit_log_export_tasks.tasks"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_security_audit_log_export_tasks.tasks", "list.#"), ), }, @@ -46,5 +48,5 @@ data "tencentcloud_dbbrain_security_audit_log_export_tasks" "tasks" { async_request_ids = [tencentcloud_dbbrain_security_audit_log_export_task.task.async_request_id] } -`, defaultDbBrainsagId, st, et, defaultDbBrainsagId) +`, tcacctest.DefaultDbBrainsagId, st, et, tcacctest.DefaultDbBrainsagId) } diff --git a/tencentcloud/data_source_tc_dbbrain_slow_log_time_series_stats.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_time_series_stats.go similarity index 89% rename from tencentcloud/data_source_tc_dbbrain_slow_log_time_series_stats.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_time_series_stats.go index 3789dc84a9..173a75114b 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_log_time_series_stats.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_time_series_stats.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainSlowLogTimeSeriesStats() *schema.Resource { +func DataSourceTencentCloudDbbrainSlowLogTimeSeriesStats() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainSlowLogTimeSeriesStatsRead, Schema: map[string]*schema.Schema{ @@ -119,13 +122,13 @@ func dataSourceTencentCloudDbbrainSlowLogTimeSeriesStats() *schema.Resource { } func dataSourceTencentCloudDbbrainSlowLogTimeSeriesStatsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_slow_log_time_series_stats.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_slow_log_time_series_stats.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var id string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -146,13 +149,13 @@ func dataSourceTencentCloudDbbrainSlowLogTimeSeriesStatsRead(d *schema.ResourceD } var result *dbbrain.DescribeSlowLogTimeSeriesStatsResponseParams - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { var e error result, e = service.DescribeDbbrainSlowLogTimeSeriesStatsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -221,7 +224,7 @@ func dataSourceTencentCloudDbbrainSlowLogTimeSeriesStatsRead(d *schema.ResourceD d.SetId(id) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_slow_log_time_series_stats_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_time_series_stats_test.go similarity index 83% rename from tencentcloud/data_source_tc_dbbrain_slow_log_time_series_stats_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_time_series_stats_test.go index 7c7d55eb53..2e73ae753c 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_log_time_series_stats_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_time_series_stats_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,14 +17,14 @@ func TestAccTencentCloudDbbrainSlowLogTimeSeriesStatsDataSource_basic(t *testing endTime := time.Now().In(loc).Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainSlowLogTimeSeriesStatsDataSource, defaultDbBrainInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainSlowLogTimeSeriesStatsDataSource, tcacctest.DefaultDbBrainInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_log_time_series_stats.test"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_log_time_series_stats.test"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_slow_log_time_series_stats.test", "period"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_slow_log_time_series_stats.test", "time_series.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_slow_log_time_series_stats.test", "time_series.0.count"), diff --git a/tencentcloud/data_source_tc_dbbrain_slow_log_top_sqls.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_top_sqls.go similarity index 94% rename from tencentcloud/data_source_tc_dbbrain_slow_log_top_sqls.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_top_sqls.go index 711a510764..79c67dba94 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_log_top_sqls.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_top_sqls.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainSlowLogTopSqls() *schema.Resource { +func DataSourceTencentCloudDbbrainSlowLogTopSqls() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainSlowLogTopSqlsRead, Schema: map[string]*schema.Schema{ @@ -209,13 +212,13 @@ func dataSourceTencentCloudDbbrainSlowLogTopSqls() *schema.Resource { } func dataSourceTencentCloudDbbrainSlowLogTopSqlsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_slow_log_top_sqls.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_slow_log_top_sqls.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var id string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -259,14 +262,14 @@ func dataSourceTencentCloudDbbrainSlowLogTopSqlsRead(d *schema.ResourceData, met paramMap["product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var rows []*dbbrain.SlowLogTopSqlItem - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainSlowLogTopSqlsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } rows = result return nil @@ -390,7 +393,7 @@ func dataSourceTencentCloudDbbrainSlowLogTopSqlsRead(d *schema.ResourceData, met d.SetId(id) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_slow_log_top_sqls_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_top_sqls_test.go similarity index 90% rename from tencentcloud/data_source_tc_dbbrain_slow_log_top_sqls_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_top_sqls_test.go index 0ea8473b03..545dcd4549 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_log_top_sqls_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_top_sqls_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,14 +17,14 @@ func TestAccTencentCloudDbbrainSlowLogTopSqlsDataSource_basic(t *testing.T) { endTime := time.Now().In(loc).Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainSlowLogTopSqlsDataSource, defaultDbBrainInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainSlowLogTopSqlsDataSource, tcacctest.DefaultDbBrainInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_log_top_sqls.test"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_log_top_sqls.test"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_log_top_sqls.test", "start_time", startTime), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_log_top_sqls.test", "end_time", endTime), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_log_top_sqls.test", "order_by", "ASC"), diff --git a/tencentcloud/data_source_tc_dbbrain_slow_log_user_host_stats.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_host_stats.go similarity index 84% rename from tencentcloud/data_source_tc_dbbrain_slow_log_user_host_stats.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_host_stats.go index faa6b0ad60..852c232f5f 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_log_user_host_stats.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_host_stats.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainSlowLogUserHostStats() *schema.Resource { +func DataSourceTencentCloudDbbrainSlowLogUserHostStats() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainSlowLogUserHostStatsRead, Schema: map[string]*schema.Schema{ @@ -78,13 +81,13 @@ func dataSourceTencentCloudDbbrainSlowLogUserHostStats() *schema.Resource { } func dataSourceTencentCloudDbbrainSlowLogUserHostStatsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_slow_log_user_host_stats.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_slow_log_user_host_stats.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var id string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -108,14 +111,14 @@ func dataSourceTencentCloudDbbrainSlowLogUserHostStatsRead(d *schema.ResourceDat paramMap["md5"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var items []*dbbrain.SlowLogHost - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainSlowLogUserHostStatsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } items = result return nil @@ -151,7 +154,7 @@ func dataSourceTencentCloudDbbrainSlowLogUserHostStatsRead(d *schema.ResourceDat d.SetId(id) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_slow_log_user_host_stats_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_host_stats_test.go similarity index 78% rename from tencentcloud/data_source_tc_dbbrain_slow_log_user_host_stats_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_host_stats_test.go index 66161d274f..2ea9f7ccf9 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_log_user_host_stats_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_host_stats_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,14 +17,14 @@ func TestAccTencentCloudDbbrainSlowLogUserHostStatsDataSource_basic(t *testing.T endTime := time.Now().In(loc).Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainSlowLogUserHostStatsDataSource, defaultDbBrainInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainSlowLogUserHostStatsDataSource, tcacctest.DefaultDbBrainInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_log_user_host_stats.test"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_log_user_host_stats.test"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_log_user_host_stats.test", "start_time", startTime), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_log_user_host_stats.test", "end_time", endTime), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_log_user_host_stats.test", "product", "mysql"), diff --git a/tencentcloud/data_source_tc_dbbrain_slow_log_user_sql_advice.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_sql_advice.go similarity index 85% rename from tencentcloud/data_source_tc_dbbrain_slow_log_user_sql_advice.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_sql_advice.go index 881006402e..78368a9976 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_log_user_sql_advice.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_sql_advice.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainSlowLogUserSqlAdvice() *schema.Resource { +func DataSourceTencentCloudDbbrainSlowLogUserSqlAdvice() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainSlowLogUserSqlAdviceRead, Schema: map[string]*schema.Schema{ @@ -84,13 +87,13 @@ func dataSourceTencentCloudDbbrainSlowLogUserSqlAdvice() *schema.Resource { } func dataSourceTencentCloudDbbrainSlowLogUserSqlAdviceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_slow_log_user_sql_advice.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_slow_log_user_sql_advice.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var id string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -111,13 +114,13 @@ func dataSourceTencentCloudDbbrainSlowLogUserSqlAdviceRead(d *schema.ResourceDat } var result *dbbrain.DescribeUserSqlAdviceResponseParams - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { var e error result, e = service.DescribeDbbrainSlowLogUserSqlAdviceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -159,7 +162,7 @@ func dataSourceTencentCloudDbbrainSlowLogUserSqlAdviceRead(d *schema.ResourceDat d.SetId(id) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_slow_log_user_sql_advice_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_sql_advice_test.go similarity index 80% rename from tencentcloud/data_source_tc_dbbrain_slow_log_user_sql_advice_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_sql_advice_test.go index 8a61806c86..5b15b845b7 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_log_user_sql_advice_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_log_user_sql_advice_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudDbbrainSlowLogUserSqlAdviceDataSource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainSlowLogUserSqlAdviceDataSource, defaultDbBrainInstanceId), + Config: fmt.Sprintf(testAccDbbrainSlowLogUserSqlAdviceDataSource, tcacctest.DefaultDbBrainInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_log_user_sql_advice.test"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_log_user_sql_advice.test"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_log_user_sql_advice.test", "sql_text", "select * from tf_test_ci where 1=1"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_log_user_sql_advice.test", "product", "mysql"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_slow_log_user_sql_advice.test", "advices"), diff --git a/tencentcloud/data_source_tc_dbbrain_slow_logs.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_logs.go similarity index 91% rename from tencentcloud/data_source_tc_dbbrain_slow_logs.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_logs.go index 37575e42ab..b015897a51 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_logs.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_logs.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainSlowLogs() *schema.Resource { +func DataSourceTencentCloudDbbrainSlowLogs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainSlowLogsRead, Schema: map[string]*schema.Schema{ @@ -154,17 +157,17 @@ func dataSourceTencentCloudDbbrainSlowLogs() *schema.Resource { } func dataSourceTencentCloudDbbrainSlowLogsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_slow_logs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_slow_logs.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( md5 string instanceId string product string ) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("product"); ok { @@ -222,14 +225,14 @@ func dataSourceTencentCloudDbbrainSlowLogsRead(d *schema.ResourceData, meta inte paramMap["Time"] = tmpList } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var rows []*dbbrain.SlowLogInfoItem - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainSlowLogsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } rows = result return nil @@ -281,7 +284,7 @@ func dataSourceTencentCloudDbbrainSlowLogsRead(d *schema.ResourceData, meta inte slowLogInfoItemMap["rows_sent"] = slowLogInfoItem.RowsSent } - ids = append(ids, strings.Join([]string{md5, instanceId, product}, FILED_SP)) + ids = append(ids, strings.Join([]string{md5, instanceId, product}, tccommon.FILED_SP)) tmpList = append(tmpList, slowLogInfoItemMap) } @@ -291,7 +294,7 @@ func dataSourceTencentCloudDbbrainSlowLogsRead(d *schema.ResourceData, meta inte d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_slow_logs_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_logs_test.go similarity index 85% rename from tencentcloud/data_source_tc_dbbrain_slow_logs_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_logs_test.go index b17e4ba08e..b7e9ce4e70 100644 --- a/tencentcloud/data_source_tc_dbbrain_slow_logs_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_slow_logs_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -13,15 +15,15 @@ func TestAccTencentCloudDbbrainSlowLogsDataSource_basic(t *testing.T) { endTime := "2023-05-15 17:03:00" resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainSlowLogsDataSource, defaultDbBrainInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainSlowLogsDataSource, tcacctest.DefaultDbBrainInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_logs.slow_logs"), - resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_logs.slow_logs", "instance_id", defaultDbBrainInstanceId), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_slow_logs.slow_logs"), + resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_logs.slow_logs", "instance_id", tcacctest.DefaultDbBrainInstanceId), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_logs.slow_logs", "md5", "4961208426639258265"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_logs.slow_logs", "product", "mysql"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_slow_logs.slow_logs", "start_time", startTime), diff --git a/tencentcloud/data_source_tc_dbbrain_sql_filters.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_filters.go similarity index 88% rename from tencentcloud/data_source_tc_dbbrain_sql_filters.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_filters.go index a228e42efa..0545a3e9b4 100644 --- a/tencentcloud/data_source_tc_dbbrain_sql_filters.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_filters.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainSqlFilters() *schema.Resource { +func DataSourceTencentCloudDbbrainSqlFilters() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainSqlFiltersRead, Schema: map[string]*schema.Schema{ @@ -113,11 +116,11 @@ func dataSourceTencentCloudDbbrainSqlFilters() *schema.Resource { } func dataSourceTencentCloudDbbrainSqlFiltersRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_sql_filters.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_sql_filters.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -144,13 +147,13 @@ func dataSourceTencentCloudDbbrainSqlFiltersRead(d *schema.ResourceData, meta in paramMap["statuses"] = tmpList } - dbbrainService := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + dbbrainService := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var items []*dbbrain.SQLFilter - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dbbrainService.DescribeDbbrainSqlFiltersByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } items = results return nil @@ -208,7 +211,7 @@ func dataSourceTencentCloudDbbrainSqlFiltersRead(d *schema.ResourceData, meta in output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), itemList); e != nil { + if e := tccommon.WriteToFile(output.(string), itemList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_sql_filters_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_filters_test.go similarity index 73% rename from tencentcloud/data_source_tc_dbbrain_sql_filters_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_filters_test.go index b185c0b7fd..6911ea2f09 100644 --- a/tencentcloud/data_source_tc_dbbrain_sql_filters_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_filters_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudDbbrainSqlFiltersDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceDbbrainSqlFilters(), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_sql_filters.sql_filters"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_sql_filters.sql_filters"), resource.TestCheckResourceAttrSet("data.tencentcloud_dbbrain_sql_filters.sql_filters", "list.#"), ), }, @@ -44,5 +46,5 @@ data "tencentcloud_dbbrain_sql_filters" "sql_filters" { instance_id = local.mysql_id filter_ids = [tencentcloud_dbbrain_sql_filter.sql_filter.filter_id] } - `, CommonPresetMysql) + `, tcacctest.CommonPresetMysql) } diff --git a/tencentcloud/data_source_tc_dbbrain_sql_templates.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_templates.go similarity index 81% rename from tencentcloud/data_source_tc_dbbrain_sql_templates.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_templates.go index 7aab3a6800..d39cf40e67 100644 --- a/tencentcloud/data_source_tc_dbbrain_sql_templates.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_templates.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainSqlTemplates() *schema.Resource { +func DataSourceTencentCloudDbbrainSqlTemplates() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainSqlTemplatesRead, Schema: map[string]*schema.Schema{ @@ -65,14 +68,14 @@ func dataSourceTencentCloudDbbrainSqlTemplates() *schema.Resource { } func dataSourceTencentCloudDbbrainSqlTemplatesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_sql_templates.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_sql_templates.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var instanceId string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -92,14 +95,14 @@ func dataSourceTencentCloudDbbrainSqlTemplatesRead(d *schema.ResourceData, meta paramMap["Product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var rows *dbbrain.DescribeSqlTemplateResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainSqlTemplatesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } rows = result return nil @@ -133,7 +136,7 @@ func dataSourceTencentCloudDbbrainSqlTemplatesRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdHash(instanceId)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_sql_templates_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_templates_test.go similarity index 73% rename from tencentcloud/data_source_tc_dbbrain_sql_templates_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_templates_test.go index fe7da0b445..e8a8a10287 100644 --- a/tencentcloud/data_source_tc_dbbrain_sql_templates_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_sql_templates_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,15 +13,15 @@ func TestAccTencentCloudDbbrainSqlTemplatesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainSqlTemplatesDataSource, defaultDbBrainInstanceId), + Config: fmt.Sprintf(testAccDbbrainSqlTemplatesDataSource, tcacctest.DefaultDbBrainInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_sql_templates.sql_templates"), - resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_sql_templates.sql_templates", "instance_id", defaultDbBrainInstanceId), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dbbrain_sql_templates.sql_templates"), + resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_sql_templates.sql_templates", "instance_id", tcacctest.DefaultDbBrainInstanceId), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_sql_templates.sql_templates", "schema", "tf_ci_test"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_sql_templates.sql_templates", "sql_text", "select sleep(5);"), resource.TestCheckResourceAttr("data.tencentcloud_dbbrain_sql_templates.sql_templates", "product", "mysql"), diff --git a/tencentcloud/data_source_tc_dbbrain_top_space_schema_time_series.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schema_time_series.go similarity index 89% rename from tencentcloud/data_source_tc_dbbrain_top_space_schema_time_series.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schema_time_series.go index e7780cd6da..ef5bff0109 100644 --- a/tencentcloud/data_source_tc_dbbrain_top_space_schema_time_series.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schema_time_series.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeries() *schema.Resource { +func DataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeries() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeriesRead, Schema: map[string]*schema.Schema{ @@ -120,12 +123,12 @@ func dataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeries() *schema.Resource { } func dataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeriesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_top_space_schema_time_series.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_top_space_schema_time_series.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) @@ -154,14 +157,14 @@ func dataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeriesRead(d *schema.Resourc paramMap["Product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var topSpaceSchemaTimeSeries []*dbbrain.SchemaSpaceTimeSeries - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainTopSpaceSchemaTimeSeriesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } topSpaceSchemaTimeSeries = result return nil @@ -213,7 +216,7 @@ func dataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeriesRead(d *schema.Resourc schemaSpaceTimeSeriesMap["series_data"] = []interface{}{seriesDataMap} } - ids = append(ids, strings.Join([]string{instanceId, *schemaSpaceTimeSeries.TableSchema}, FILED_SP)) + ids = append(ids, strings.Join([]string{instanceId, *schemaSpaceTimeSeries.TableSchema}, tccommon.FILED_SP)) tmpList = append(tmpList, schemaSpaceTimeSeriesMap) } @@ -223,7 +226,7 @@ func dataSourceTencentCloudDbbrainTopSpaceSchemaTimeSeriesRead(d *schema.Resourc d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_top_space_schema_time_series_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schema_time_series_test.go similarity index 85% rename from tencentcloud/data_source_tc_dbbrain_top_space_schema_time_series_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schema_time_series_test.go index d2add2da70..c04f7ef675 100644 --- a/tencentcloud/data_source_tc_dbbrain_top_space_schema_time_series_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schema_time_series_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,15 +19,15 @@ func TestAccTencentCloudDbbrainTopSpaceSchemaTimeSeriesDataSource_basic(t *testi endTime := time.Now().In(loc).Format("2006-01-02") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainTopSpaceSchemaTimeSeriesDataSource, defaultDbBrainInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainTopSpaceSchemaTimeSeriesDataSource, tcacctest.DefaultDbBrainInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceSchemaTimeSeriesObject), - resource.TestCheckResourceAttr(testAccDbbrainTopSpaceSchemaTimeSeriesObject, "instance_id", defaultDbBrainInstanceId), + tcacctest.AccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceSchemaTimeSeriesObject), + resource.TestCheckResourceAttr(testAccDbbrainTopSpaceSchemaTimeSeriesObject, "instance_id", tcacctest.DefaultDbBrainInstanceId), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceSchemaTimeSeriesObject, "sort_by", "DataLength"), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceSchemaTimeSeriesObject, "product", "mysql"), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceSchemaTimeSeriesObject, "start_date", startTime), diff --git a/tencentcloud/data_source_tc_dbbrain_top_space_schemas.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schemas.go similarity index 88% rename from tencentcloud/data_source_tc_dbbrain_top_space_schemas.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schemas.go index e9079f035f..1f0055c944 100644 --- a/tencentcloud/data_source_tc_dbbrain_top_space_schemas.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schemas.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainTopSpaceSchemas() *schema.Resource { +func DataSourceTencentCloudDbbrainTopSpaceSchemas() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainTopSpaceSchemasRead, Schema: map[string]*schema.Schema{ @@ -105,12 +108,12 @@ func dataSourceTencentCloudDbbrainTopSpaceSchemas() *schema.Resource { } func dataSourceTencentCloudDbbrainTopSpaceSchemasRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_top_space_schemas.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_top_space_schemas.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) @@ -131,15 +134,15 @@ func dataSourceTencentCloudDbbrainTopSpaceSchemasRead(d *schema.ResourceData, me paramMap["Product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var topSpaceSchemas []*dbbrain.SchemaSpaceData var timestamp *int64 - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, ts, e := service.DescribeDbbrainTopSpaceSchemasByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } topSpaceSchemas = result timestamp = ts @@ -188,7 +191,7 @@ func dataSourceTencentCloudDbbrainTopSpaceSchemasRead(d *schema.ResourceData, me schemaSpaceDataMap["physical_file_size"] = schemaSpaceData.PhysicalFileSize } - ids = append(ids, strings.Join([]string{instanceId, *schemaSpaceData.TableSchema}, FILED_SP)) + ids = append(ids, strings.Join([]string{instanceId, *schemaSpaceData.TableSchema}, tccommon.FILED_SP)) tmpList = append(tmpList, schemaSpaceDataMap) } @@ -202,7 +205,7 @@ func dataSourceTencentCloudDbbrainTopSpaceSchemasRead(d *schema.ResourceData, me d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_top_space_schemas_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schemas_test.go similarity index 84% rename from tencentcloud/data_source_tc_dbbrain_top_space_schemas_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schemas_test.go index e1a798e354..ebfd51f764 100644 --- a/tencentcloud/data_source_tc_dbbrain_top_space_schemas_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_schemas_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -13,15 +15,15 @@ func TestAccTencentCloudDbbrainTopSpaceSchemasDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainTopSpaceSchemasDataSource, defaultDbBrainInstanceId), + Config: fmt.Sprintf(testAccDbbrainTopSpaceSchemasDataSource, tcacctest.DefaultDbBrainInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceSchemaObject), - resource.TestCheckResourceAttr(testAccDbbrainTopSpaceSchemaObject, "instance_id", defaultDbBrainInstanceId), + tcacctest.AccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceSchemaObject), + resource.TestCheckResourceAttr(testAccDbbrainTopSpaceSchemaObject, "instance_id", tcacctest.DefaultDbBrainInstanceId), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceSchemaObject, "sort_by", "DataLength"), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceSchemaObject, "product", "mysql"), resource.TestCheckResourceAttrSet(testAccDbbrainTopSpaceSchemaObject, "top_space_schemas.#"), diff --git a/tencentcloud/data_source_tc_dbbrain_top_space_table_time_series.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_table_time_series.go similarity index 89% rename from tencentcloud/data_source_tc_dbbrain_top_space_table_time_series.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_table_time_series.go index 876df1343c..9cd4cc0202 100644 --- a/tencentcloud/data_source_tc_dbbrain_top_space_table_time_series.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_table_time_series.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainTopSpaceTableTimeSeries() *schema.Resource { +func DataSourceTencentCloudDbbrainTopSpaceTableTimeSeries() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainTopSpaceTableTimeSeriesRead, Schema: map[string]*schema.Schema{ @@ -130,12 +133,12 @@ func dataSourceTencentCloudDbbrainTopSpaceTableTimeSeries() *schema.Resource { } func dataSourceTencentCloudDbbrainTopSpaceTableTimeSeriesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_top_space_table_time_series.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_top_space_table_time_series.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) @@ -164,14 +167,14 @@ func dataSourceTencentCloudDbbrainTopSpaceTableTimeSeriesRead(d *schema.Resource paramMap["Product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var topSpaceTableTimeSeries []*dbbrain.TableSpaceTimeSeries - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDbbrainTopSpaceTableTimeSeriesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } topSpaceTableTimeSeries = result return nil @@ -232,7 +235,7 @@ func dataSourceTencentCloudDbbrainTopSpaceTableTimeSeriesRead(d *schema.Resource tableSpaceTimeSeriesMap["series_data"] = []interface{}{seriesDataMap} } - ids = append(ids, strings.Join([]string{instanceId, *tableSpaceTimeSeries.TableSchema, *tableSpaceTimeSeries.TableName}, FILED_SP)) + ids = append(ids, strings.Join([]string{instanceId, *tableSpaceTimeSeries.TableSchema, *tableSpaceTimeSeries.TableName}, tccommon.FILED_SP)) tmpList = append(tmpList, tableSpaceTimeSeriesMap) } @@ -242,7 +245,7 @@ func dataSourceTencentCloudDbbrainTopSpaceTableTimeSeriesRead(d *schema.Resource d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_top_space_table_time_series_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_table_time_series_test.go similarity index 86% rename from tencentcloud/data_source_tc_dbbrain_top_space_table_time_series_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_table_time_series_test.go index 2e04d2fb3f..3735ce2c25 100644 --- a/tencentcloud/data_source_tc_dbbrain_top_space_table_time_series_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_table_time_series_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,15 +19,15 @@ func TestAccTencentCloudDbbrainTopSpaceTableTimeSeriesDataSource_basic(t *testin endTime := time.Now().In(loc).Format("2006-01-02") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainTopSpaceTableTimeSeriesDataSource, defaultDbBrainInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainTopSpaceTableTimeSeriesDataSource, tcacctest.DefaultDbBrainInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceTableTimeSeriesObject), - resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTableTimeSeriesObject, "instance_id", defaultDbBrainInstanceId), + tcacctest.AccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceTableTimeSeriesObject), + resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTableTimeSeriesObject, "instance_id", tcacctest.DefaultDbBrainInstanceId), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTableTimeSeriesObject, "sort_by", "DataLength"), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTableTimeSeriesObject, "product", "mysql"), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTableTimeSeriesObject, "start_date", startTime), diff --git a/tencentcloud/data_source_tc_dbbrain_top_space_tables.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_tables.go similarity index 88% rename from tencentcloud/data_source_tc_dbbrain_top_space_tables.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_tables.go index 67a9259436..7421db0b75 100644 --- a/tencentcloud/data_source_tc_dbbrain_top_space_tables.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_tables.go @@ -1,16 +1,19 @@ -package tencentcloud +package dbbrain import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDbbrainTopSpaceTables() *schema.Resource { +func DataSourceTencentCloudDbbrainTopSpaceTables() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDbbrainTopSpaceTablesRead, Schema: map[string]*schema.Schema{ @@ -115,12 +118,12 @@ func dataSourceTencentCloudDbbrainTopSpaceTables() *schema.Resource { } func dataSourceTencentCloudDbbrainTopSpaceTablesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dbbrain_top_space_tables.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dbbrain_top_space_tables.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) @@ -141,15 +144,15 @@ func dataSourceTencentCloudDbbrainTopSpaceTablesRead(d *schema.ResourceData, met paramMap["Product"] = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var topSpaceTables []*dbbrain.TableSpaceData var timestamp *int64 - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, ts, e := service.DescribeDbbrainTopSpaceTablesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } topSpaceTables = result timestamp = ts @@ -206,7 +209,7 @@ func dataSourceTencentCloudDbbrainTopSpaceTablesRead(d *schema.ResourceData, met tableSpaceDataMap["physical_file_size"] = tableSpaceData.PhysicalFileSize } - ids = append(ids, strings.Join([]string{instanceId, *tableSpaceData.TableSchema, *tableSpaceData.TableName}, FILED_SP)) + ids = append(ids, strings.Join([]string{instanceId, *tableSpaceData.TableSchema, *tableSpaceData.TableName}, tccommon.FILED_SP)) tmpList = append(tmpList, tableSpaceDataMap) } @@ -220,7 +223,7 @@ func dataSourceTencentCloudDbbrainTopSpaceTablesRead(d *schema.ResourceData, met d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dbbrain_top_space_tables_test.go b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_tables_test.go similarity index 87% rename from tencentcloud/data_source_tc_dbbrain_top_space_tables_test.go rename to tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_tables_test.go index 040536b62e..87b301bdc5 100644 --- a/tencentcloud/data_source_tc_dbbrain_top_space_tables_test.go +++ b/tencentcloud/services/dbbrain/data_source_tc_dbbrain_top_space_tables_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -13,15 +15,15 @@ func TestAccTencentCloudDbbrainTopSpaceTablesDataSource_fromDataLength(t *testin t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainTopSpaceTablesDataSource_dataLen, defaultDbBrainInstanceId), + Config: fmt.Sprintf(testAccDbbrainTopSpaceTablesDataSource_dataLen, tcacctest.DefaultDbBrainInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceTablesObject), - resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTablesObject, "instance_id", defaultDbBrainInstanceId), + tcacctest.AccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceTablesObject), + resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTablesObject, "instance_id", tcacctest.DefaultDbBrainInstanceId), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTablesObject, "sort_by", "PhysicalFileSize"), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTablesObject, "product", "mysql"), resource.TestCheckResourceAttrSet(testAccDbbrainTopSpaceTablesObject, "top_space_tables.#"), @@ -46,15 +48,15 @@ func TestAccTencentCloudDbbrainTopSpaceTablesDataSource_fromIndexLength(t *testi t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainTopSpaceTablesDataSource_indexLen, defaultDbBrainInstanceId), + Config: fmt.Sprintf(testAccDbbrainTopSpaceTablesDataSource_indexLen, tcacctest.DefaultDbBrainInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceTablesObject), - resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTablesObject, "instance_id", defaultDbBrainInstanceId), + tcacctest.AccCheckTencentCloudDataSourceID(testAccDbbrainTopSpaceTablesObject), + resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTablesObject, "instance_id", tcacctest.DefaultDbBrainInstanceId), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTablesObject, "sort_by", "TotalLength"), resource.TestCheckResourceAttr(testAccDbbrainTopSpaceTablesObject, "product", "mysql"), resource.TestCheckResourceAttrSet(testAccDbbrainTopSpaceTablesObject, "top_space_tables.#"), diff --git a/tencentcloud/resource_tc_dbbrain_db_diag_report_task.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_db_diag_report_task.go similarity index 77% rename from tencentcloud/resource_tc_dbbrain_db_diag_report_task.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_db_diag_report_task.go index 986a0bf31b..fd4b34c332 100644 --- a/tencentcloud/resource_tc_dbbrain_db_diag_report_task.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_db_diag_report_task.go @@ -1,4 +1,4 @@ -package tencentcloud +package dbbrain import ( "context" @@ -7,13 +7,16 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDbbrainDbDiagReportTask() *schema.Resource { +func ResourceTencentCloudDbbrainDbDiagReportTask() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDbbrainDbDiagReportTaskCreate, Read: resourceTencentCloudDbbrainDbDiagReportTaskRead, @@ -82,10 +85,10 @@ func resourceTencentCloudDbbrainDbDiagReportTask() *schema.Resource { } func resourceTencentCloudDbbrainDbDiagReportTaskCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_db_diag_report_task.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_db_diag_report_task.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dbbrain.NewCreateDBDiagReportTaskRequest() @@ -131,10 +134,10 @@ func resourceTencentCloudDbbrainDbDiagReportTaskCreate(d *schema.ResourceData, m request.Product = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDbbrainClient().CreateDBDiagReportTask(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDbbrainClient().CreateDBDiagReportTask(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -150,11 +153,11 @@ func resourceTencentCloudDbbrainDbDiagReportTaskCreate(d *schema.ResourceData, m } asyncRequestId := response.Response.AsyncRequestId - d.SetId(helper.Int64ToStr(*asyncRequestId) + FILED_SP + instanceId + FILED_SP + product) + d.SetId(helper.Int64ToStr(*asyncRequestId) + tccommon.FILED_SP + instanceId + tccommon.FILED_SP + product) - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"100"}, 3*readRetryTimeout, time.Second, service.DbbrainDbDiagReportTaskStateRefreshFunc(asyncRequestId, instanceId, product, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"100"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DbbrainDbDiagReportTaskStateRefreshFunc(asyncRequestId, instanceId, product, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -164,16 +167,16 @@ func resourceTencentCloudDbbrainDbDiagReportTaskCreate(d *schema.ResourceData, m } func resourceTencentCloudDbbrainDbDiagReportTaskRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_db_diag_report_task.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_db_diag_report_task.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -220,14 +223,14 @@ func resourceTencentCloudDbbrainDbDiagReportTaskRead(d *schema.ResourceData, met } func resourceTencentCloudDbbrainDbDiagReportTaskDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_db_diag_report_task.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_db_diag_report_task.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dbbrain_db_diag_report_task_test.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_db_diag_report_task_test.go similarity index 70% rename from tencentcloud/resource_tc_dbbrain_db_diag_report_task_test.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_db_diag_report_task_test.go index 4449322063..d147c757f2 100644 --- a/tencentcloud/resource_tc_dbbrain_db_diag_report_task_test.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_db_diag_report_task_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dbbrain_test import ( "context" @@ -7,9 +7,15 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + + svcdbbrain "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dbbrain" ) func init() { @@ -21,17 +27,17 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dbbrain_db_diag_report_task func testSweepDbbrainDbDiagReportTask(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - dbbrainService := DbbrainService{client: cli.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + dbbrainService := svcdbbrain.NewDbbrainService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) products := []string{ "cynosdb", "mysql", } for _, product := range products { - ret, err := dbbrainService.DescribeDbbrainDbDiagReportTaskById(ctx, nil, defaultDbBrainInstanceId, product) + ret, err := dbbrainService.DescribeDbbrainDbDiagReportTaskById(ctx, nil, tcacctest.DefaultDbBrainInstanceId, product) if err != nil { return err } @@ -40,16 +46,16 @@ func testSweepDbbrainDbDiagReportTask(r string) error { } delId := *ret.AsyncRequestId - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { - err := dbbrainService.DeleteDbbrainDbDiagReportTaskById(ctx, delId, defaultDbBrainInstanceId, product) + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + err := dbbrainService.DeleteDbbrainDbDiagReportTaskById(ctx, delId, tcacctest.DefaultDbBrainInstanceId, product) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) if err != nil { - return fmt.Errorf("[ERROR] sweeper Dbbrain Db diag report tasks:[AsyncRequestId:%v, instanceId:%s, product:%s] failed! reason:[%s]", delId, defaultDbBrainInstanceId, product, err.Error()) + return fmt.Errorf("[ERROR] sweeper Dbbrain Db diag report tasks:[AsyncRequestId:%v, instanceId:%s, product:%s] failed! reason:[%s]", delId, tcacctest.DefaultDbBrainInstanceId, product, err.Error()) } } return nil @@ -63,17 +69,17 @@ func TestAccTencentCloudDbbrainDbDiagReportTaskResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDbbrainDbDiagReportTaskDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainDbDiagReportTask, defaultDbBrainInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainDbDiagReportTask, tcacctest.DefaultDbBrainInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( testAccCheckDbbrainDbDiagReportTaskExists("tencentcloud_dbbrain_db_diag_report_task.db_diag_report_task"), resource.TestCheckResourceAttrSet("tencentcloud_dbbrain_db_diag_report_task.db_diag_report_task", "id"), - resource.TestCheckResourceAttr("tencentcloud_dbbrain_db_diag_report_task.db_diag_report_task", "instance_id", defaultDbBrainInstanceId), + resource.TestCheckResourceAttr("tencentcloud_dbbrain_db_diag_report_task.db_diag_report_task", "instance_id", tcacctest.DefaultDbBrainInstanceId), resource.TestCheckResourceAttr("tencentcloud_dbbrain_db_diag_report_task.db_diag_report_task", "start_time", startTime), resource.TestCheckResourceAttr("tencentcloud_dbbrain_db_diag_report_task.db_diag_report_task", "end_time", endTime), resource.TestCheckResourceAttr("tencentcloud_dbbrain_db_diag_report_task.db_diag_report_task", "send_mail_flag", "0"), @@ -85,16 +91,16 @@ func TestAccTencentCloudDbbrainDbDiagReportTaskResource_basic(t *testing.T) { } func testAccCheckDbbrainDbDiagReportTaskDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dbbrainService := DbbrainService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dbbrainService := svcdbbrain.NewDbbrainService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dbbrain_sql_filter" { continue } - ids := strings.Split(rs.Primary.ID, FILED_SP) + ids := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(ids) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -116,9 +122,9 @@ func testAccCheckDbbrainDbDiagReportTaskDestroy(s *terraform.State) error { func testAccCheckDbbrainDbDiagReportTaskExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dbbrainService := DbbrainService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dbbrainService := svcdbbrain.NewDbbrainService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rs, ok := s.RootModule().Resources[re] if !ok { @@ -128,7 +134,7 @@ func testAccCheckDbbrainDbDiagReportTaskExists(re string) resource.TestCheckFunc return fmt.Errorf("Dbbrain sql filter id is not set") } - ids := strings.Split(rs.Primary.ID, FILED_SP) + ids := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(ids) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } diff --git a/tencentcloud/resource_tc_dbbrain_modify_diag_db_instance_operation.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_modify_diag_db_instance_operation.go similarity index 80% rename from tencentcloud/resource_tc_dbbrain_modify_diag_db_instance_operation.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_modify_diag_db_instance_operation.go index 1da3e8a473..4756645a13 100644 --- a/tencentcloud/resource_tc_dbbrain_modify_diag_db_instance_operation.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_modify_diag_db_instance_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dbbrain import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDbbrainModifyDiagDbInstanceOperation() *schema.Resource { +func ResourceTencentCloudDbbrainModifyDiagDbInstanceOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDbbrainModifyDiagDbInstanceOperationCreate, Read: resourceTencentCloudDbbrainModifyDiagDbInstanceOperationRead, @@ -66,10 +69,10 @@ func resourceTencentCloudDbbrainModifyDiagDbInstanceOperation() *schema.Resource } func resourceTencentCloudDbbrainModifyDiagDbInstanceOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_modify_diag_db_instance_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_modify_diag_db_instance_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dbbrain.NewModifyDiagDBInstanceConfRequest() @@ -103,10 +106,10 @@ func resourceTencentCloudDbbrainModifyDiagDbInstanceOperationCreate(d *schema.Re } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDbbrainClient().ModifyDiagDBInstanceConf(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDbbrainClient().ModifyDiagDBInstanceConf(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -124,15 +127,15 @@ func resourceTencentCloudDbbrainModifyDiagDbInstanceOperationCreate(d *schema.Re } func resourceTencentCloudDbbrainModifyDiagDbInstanceOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_modify_diag_db_instance_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_modify_diag_db_instance_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDbbrainModifyDiagDbInstanceOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_modify_diag_db_instance_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_modify_diag_db_instance_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dbbrain_modify_diag_db_instance_operation_test.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_modify_diag_db_instance_operation_test.go similarity index 89% rename from tencentcloud/resource_tc_dbbrain_modify_diag_db_instance_operation_test.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_modify_diag_db_instance_operation_test.go index 229383a153..0c1edf33a2 100644 --- a/tencentcloud/resource_tc_dbbrain_modify_diag_db_instance_operation_test.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_modify_diag_db_instance_operation_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dbbrain_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,12 +13,12 @@ func TestAccTencentCloudDbbrainModifyDiagDbInstanceOperationResource_basic_off(t t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainModifyDiagDbInstanceConf_off, defaultDbBrainInstanceId), + Config: fmt.Sprintf(testAccDbbrainModifyDiagDbInstanceConf_off, tcacctest.DefaultDbBrainInstanceId), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_dbbrain_modify_diag_db_instance_operation.off", "id"), resource.TestCheckResourceAttrSet("tencentcloud_dbbrain_modify_diag_db_instance_operation.off", "instance_ids.#"), @@ -34,12 +36,12 @@ func TestAccTencentCloudDbbrainModifyDiagDbInstanceOperationResource_basic_on(t t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainModifyDiagDbInstanceConf_on, defaultDbBrainInstanceId), + Config: fmt.Sprintf(testAccDbbrainModifyDiagDbInstanceConf_on, tcacctest.DefaultDbBrainInstanceId), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_dbbrain_modify_diag_db_instance_operation.on", "id"), resource.TestCheckResourceAttrSet("tencentcloud_dbbrain_modify_diag_db_instance_operation.on", "instance_ids.#"), diff --git a/tencentcloud/resource_tc_dbbrain_security_audit_log_export_task.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_security_audit_log_export_task.go similarity index 75% rename from tencentcloud/resource_tc_dbbrain_security_audit_log_export_task.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_security_audit_log_export_task.go index 9982f0b868..b890f5ad81 100644 --- a/tencentcloud/resource_tc_dbbrain_security_audit_log_export_task.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_security_audit_log_export_task.go @@ -1,4 +1,4 @@ -package tencentcloud +package dbbrain import ( "context" @@ -7,13 +7,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDbbrainSecurityAuditLogExportTask() *schema.Resource { +func ResourceTencentCloudDbbrainSecurityAuditLogExportTask() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudDbbrainSecurityAuditLogExportTaskRead, Create: resourceTencentCloudDbbrainSecurityAuditLogExportTaskCreate, @@ -70,16 +73,16 @@ func resourceTencentCloudDbbrainSecurityAuditLogExportTask() *schema.Resource { } func resourceTencentCloudDbbrainSecurityAuditLogExportTaskCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_security_audit_log_export_task.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_security_audit_log_export_task.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dbbrain.NewCreateSecurityAuditLogExportTaskRequest() response *dbbrain.CreateSecurityAuditLogExportTaskResponse - service = DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} - ctx = context.WithValue(context.TODO(), logIdKey, logId) + service = DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) secAuditGroupId string asyncRequestId string ) @@ -109,10 +112,10 @@ func resourceTencentCloudDbbrainSecurityAuditLogExportTaskCreate(d *schema.Resou } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDbbrainClient().CreateSecurityAuditLogExportTask(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDbbrainClient().CreateSecurityAuditLogExportTask(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -126,12 +129,12 @@ func resourceTencentCloudDbbrainSecurityAuditLogExportTaskCreate(d *schema.Resou } asyncRequestId = helper.UInt64ToStr(*response.Response.AsyncRequestId) - d.SetId(secAuditGroupId + FILED_SP + asyncRequestId) + d.SetId(secAuditGroupId + tccommon.FILED_SP + asyncRequestId) - err = resource.Retry(2*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { ret, err := service.DescribeDbbrainSecurityAuditLogExportTask(ctx, helper.String(secAuditGroupId), helper.String(asyncRequestId), nil) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if ret != nil { log.Printf("[DEBUG]%s task.Status:[%s]\n", logId, *ret.Status) @@ -148,15 +151,15 @@ func resourceTencentCloudDbbrainSecurityAuditLogExportTaskCreate(d *schema.Resou } func resourceTencentCloudDbbrainSecurityAuditLogExportTaskRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_security_audit_log_export_task.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_security_audit_log_export_task.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -195,15 +198,15 @@ func resourceTencentCloudDbbrainSecurityAuditLogExportTaskRead(d *schema.Resourc } func resourceTencentCloudDbbrainSecurityAuditLogExportTaskDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_security_audit_log_export_task.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_security_audit_log_export_task.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dbbrain_security_audit_log_export_task_test.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_security_audit_log_export_task_test.go similarity index 74% rename from tencentcloud/resource_tc_dbbrain_security_audit_log_export_task_test.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_security_audit_log_export_task_test.go index be065436bc..e85aafe739 100644 --- a/tencentcloud/resource_tc_dbbrain_security_audit_log_export_task_test.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_security_audit_log_export_task_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dbbrain_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdbbrain "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dbbrain" + "context" "fmt" "strings" @@ -9,6 +13,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -21,11 +26,11 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dbbrain_security_audit_log_export_task func testSweepDbbrainSecurityAuditLogExportTask(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - dbbrainService := DbbrainService{client: cli.(*TencentCloudClient).apiV3Conn} - sagId := helper.String(defaultDbBrainsagId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + dbbrainService := svcdbbrain.NewDbbrainService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) + sagId := helper.String(tcacctest.DefaultDbBrainsagId) param := map[string]interface{}{ "sec_audit_group_id": sagId, "product": helper.String("mysql"), @@ -42,10 +47,10 @@ func testSweepDbbrainSecurityAuditLogExportTask(r string) error { for _, v := range ret { delId := *v.AsyncRequestId - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { err := dbbrainService.DeleteDbbrainSecurityAuditLogExportTaskById(ctx, sagId, helper.UInt64ToStrPoint(delId), nil) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -63,8 +68,8 @@ func TestAccTencentCloudDbbrainSecurityAuditLogExportTaskResource_basic(t *testi endTime := time.Now().Add(2 * time.Hour).In(loc).Format("2006-01-02T15:04:05+08:00") resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDbbrainSecurityAuditLogExportTaskDestroy, Steps: []resource.TestStep{ { @@ -72,7 +77,7 @@ func TestAccTencentCloudDbbrainSecurityAuditLogExportTaskResource_basic(t *testi Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDbbrainSecurityAuditLogExportTaskExists("tencentcloud_dbbrain_security_audit_log_export_task.task"), resource.TestCheckResourceAttrSet("tencentcloud_dbbrain_security_audit_log_export_task.task", "id"), - resource.TestCheckResourceAttr("tencentcloud_dbbrain_security_audit_log_export_task.task", "sec_audit_group_id", defaultDbBrainsagId), + resource.TestCheckResourceAttr("tencentcloud_dbbrain_security_audit_log_export_task.task", "sec_audit_group_id", tcacctest.DefaultDbBrainsagId), resource.TestCheckResourceAttr("tencentcloud_dbbrain_security_audit_log_export_task.task", "start_time", startTime), resource.TestCheckResourceAttr("tencentcloud_dbbrain_security_audit_log_export_task.task", "end_time", endTime), resource.TestCheckResourceAttr("tencentcloud_dbbrain_security_audit_log_export_task.task", "product", "mysql"), @@ -84,16 +89,16 @@ func TestAccTencentCloudDbbrainSecurityAuditLogExportTaskResource_basic(t *testi } func testAccCheckDbbrainSecurityAuditLogExportTaskDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dbbrainService := DbbrainService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dbbrainService := svcdbbrain.NewDbbrainService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dbbrain_security_audit_log_export_task" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -114,9 +119,9 @@ func testAccCheckDbbrainSecurityAuditLogExportTaskDestroy(s *terraform.State) er func testAccCheckDbbrainSecurityAuditLogExportTaskExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dbbrainService := DbbrainService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dbbrainService := svcdbbrain.NewDbbrainService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rs, ok := s.RootModule().Resources[re] if !ok { @@ -126,7 +131,7 @@ func testAccCheckDbbrainSecurityAuditLogExportTaskExists(re string) resource.Tes return fmt.Errorf("Dbbrain security audit log export task id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -156,5 +161,5 @@ resource "tencentcloud_dbbrain_security_audit_log_export_task" "task" { danger_levels = [0,1,2] } -`, defaultDbBrainsagId, st, et) +`, tcacctest.DefaultDbBrainsagId, st, et) } diff --git a/tencentcloud/resource_tc_dbbrain_sql_filter.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_sql_filter.go similarity index 78% rename from tencentcloud/resource_tc_dbbrain_sql_filter.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_sql_filter.go index e8b1d4e110..f706404f2f 100644 --- a/tencentcloud/resource_tc_dbbrain_sql_filter.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_sql_filter.go @@ -1,4 +1,4 @@ -package tencentcloud +package dbbrain import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDbbrainSqlFilter() *schema.Resource { +func ResourceTencentCloudDbbrainSqlFilter() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudDbbrainSqlFilterRead, Create: resourceTencentCloudDbbrainSqlFilterCreate, @@ -95,13 +98,13 @@ func resourceTencentCloudDbbrainSqlFilter() *schema.Resource { } } func resourceTencentCloudDbbrainSqlFilterCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_sql_filter.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_sql_filter.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( - ctx = context.WithValue(context.TODO(), logIdKey, logId) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request = dbbrain.NewCreateSqlFilterRequest() response *dbbrain.CreateSqlFilterResponse instanceId string @@ -141,10 +144,10 @@ func resourceTencentCloudDbbrainSqlFilterCreate(d *schema.ResourceData, meta int request.SessionToken = sessionToken } - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDbbrainClient().CreateSqlFilter(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDbbrainClient().CreateSqlFilter(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -160,13 +163,13 @@ func resourceTencentCloudDbbrainSqlFilterCreate(d *schema.ResourceData, meta int filterId = helper.Int64ToStr(*response.Response.FilterId) - d.SetId(instanceId + FILED_SP + filterId) + d.SetId(instanceId + tccommon.FILED_SP + filterId) return resourceTencentCloudDbbrainSqlFilterRead(d, meta) } func getSessionToken(d *schema.ResourceData, meta interface{}, ctx context.Context) (sessionToken *string, errRet error) { var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) instanceId *string product *string ) @@ -189,7 +192,7 @@ func getSessionToken(d *schema.ResourceData, meta interface{}, ctx context.Conte pw = helper.String(v.(string)) } - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} sessionToken, errRet = service.getSessionToken(ctx, instanceId, user, pw, product) if errRet != nil { @@ -202,17 +205,17 @@ func getSessionToken(d *schema.ResourceData, meta interface{}, ctx context.Conte } func resourceTencentCloudDbbrainSqlFilterRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_sql_filter.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_sql_filter.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} idSplit []string ) - idSplit = strings.Split(d.Id(), FILED_SP) + idSplit = strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -255,16 +258,16 @@ func resourceTencentCloudDbbrainSqlFilterRead(d *schema.ResourceData, meta inter } func resourceTencentCloudDbbrainSqlFilterUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_sql_filter.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_sql_filter.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request = dbbrain.NewModifySqlFiltersRequest() ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -313,10 +316,10 @@ func resourceTencentCloudDbbrainSqlFilterUpdate(d *schema.ResourceData, meta int request.SessionToken = sessionToken } - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDbbrainClient().ModifySqlFilters(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDbbrainClient().ModifySqlFilters(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -334,16 +337,16 @@ func resourceTencentCloudDbbrainSqlFilterUpdate(d *schema.ResourceData, meta int } func resourceTencentCloudDbbrainSqlFilterDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_sql_filter.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_sql_filter.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dbbrain_sql_filter_test.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_sql_filter_test.go similarity index 82% rename from tencentcloud/resource_tc_dbbrain_sql_filter_test.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_sql_filter_test.go index daf69377cd..ca00afbe08 100644 --- a/tencentcloud/resource_tc_dbbrain_sql_filter_test.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_sql_filter_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dbbrain_test import ( "context" @@ -6,8 +6,13 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdbbrain "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dbbrain" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -15,8 +20,8 @@ func TestAccTencentCloudDbbrainSqlFilterResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDbbrainSqlFilterDestroy, Steps: []resource.TestStep{ { @@ -60,16 +65,16 @@ func TestAccTencentCloudDbbrainSqlFilterResource_basic(t *testing.T) { } func testAccCheckDbbrainSqlFilterDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dbbrainService := DbbrainService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dbbrainService := svcdbbrain.NewDbbrainService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dbbrain_sql_filter" { continue } - ids := strings.Split(rs.Primary.ID, FILED_SP) + ids := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(ids) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -90,9 +95,9 @@ func testAccCheckDbbrainSqlFilterDestroy(s *terraform.State) error { func testAccCheckDbbrainSqlFilterExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dbbrainService := DbbrainService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dbbrainService := svcdbbrain.NewDbbrainService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rs, ok := s.RootModule().Resources[re] if !ok { @@ -102,7 +107,7 @@ func testAccCheckDbbrainSqlFilterExists(re string) resource.TestCheckFunc { return fmt.Errorf("Dbbrain sql filter id is not set") } - ids := strings.Split(rs.Primary.ID, FILED_SP) + ids := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(ids) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -135,7 +140,7 @@ resource "tencentcloud_dbbrain_sql_filter" "sql_filter" { max_concurrency = 10 duration = 3600 } -`, CommonPresetMysql) +`, tcacctest.CommonPresetMysql) } func testAccDbbrainSqlFilter_update() string { @@ -153,5 +158,5 @@ resource "tencentcloud_dbbrain_sql_filter" "sql_filter" { product = "mysql" status = "TERMINATED" } -`, CommonPresetMysql) +`, tcacctest.CommonPresetMysql) } diff --git a/tencentcloud/resource_tc_dbbrain_tdsql_audit_log.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_tdsql_audit_log.go similarity index 83% rename from tencentcloud/resource_tc_dbbrain_tdsql_audit_log.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_tdsql_audit_log.go index dff0677ff3..164b4900b8 100644 --- a/tencentcloud/resource_tc_dbbrain_tdsql_audit_log.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_tdsql_audit_log.go @@ -1,4 +1,4 @@ -package tencentcloud +package dbbrain import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDbbrainTdsqlAuditLog() *schema.Resource { +func ResourceTencentCloudDbbrainTdsqlAuditLog() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDbbrainTdsqlAuditLogCreate, Read: resourceTencentCloudDbbrainTdsqlAuditLogRead, @@ -114,10 +117,10 @@ func resourceTencentCloudDbbrainTdsqlAuditLog() *schema.Resource { } func resourceTencentCloudDbbrainTdsqlAuditLogCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_tdsql_audit_log.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_tdsql_audit_log.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dbbrain.NewCreateAuditLogFileRequest() @@ -183,10 +186,10 @@ func resourceTencentCloudDbbrainTdsqlAuditLogCreate(d *schema.ResourceData, meta request.Filter = &auditLogFilter } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDbbrainClient().CreateAuditLogFile(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDbbrainClient().CreateAuditLogFile(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -199,22 +202,22 @@ func resourceTencentCloudDbbrainTdsqlAuditLogCreate(d *schema.ResourceData, meta } asyncRequestId = helper.Int64ToStr(*response.Response.AsyncRequestId) - d.SetId(strings.Join([]string{asyncRequestId, instanceId, product}, FILED_SP)) + d.SetId(strings.Join([]string{asyncRequestId, instanceId, product}, tccommon.FILED_SP)) return resourceTencentCloudDbbrainTdsqlAuditLogRead(d, meta) } func resourceTencentCloudDbbrainTdsqlAuditLogRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_tdsql_audit_log.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_tdsql_audit_log.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -247,14 +250,14 @@ func resourceTencentCloudDbbrainTdsqlAuditLogRead(d *schema.ResourceData, meta i } func resourceTencentCloudDbbrainTdsqlAuditLogDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dbbrain_tdsql_audit_log.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dbbrain_tdsql_audit_log.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DbbrainService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := DbbrainService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dbbrain_tdsql_audit_log_test.go b/tencentcloud/services/dbbrain/resource_tc_dbbrain_tdsql_audit_log_test.go similarity index 72% rename from tencentcloud/resource_tc_dbbrain_tdsql_audit_log_test.go rename to tencentcloud/services/dbbrain/resource_tc_dbbrain_tdsql_audit_log_test.go index d11dcbdad1..0a32cbe01e 100644 --- a/tencentcloud/resource_tc_dbbrain_tdsql_audit_log_test.go +++ b/tencentcloud/services/dbbrain/resource_tc_dbbrain_tdsql_audit_log_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dbbrain_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdbbrain "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dbbrain" + "context" "fmt" "strings" @@ -9,6 +13,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -21,16 +26,16 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dbbrain_tdsql_audit_log func testSweepDbbrainTdsqlAuditLog(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - dbbrainService := DbbrainService{client: cli.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + dbbrainService := svcdbbrain.NewDbbrainService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) products := []string{ "dcdb", } for _, product := range products { - auditLogs, err := dbbrainService.DescribeDbbrainTdsqlAuditLogById(ctx, nil, defaultDcdbInstanceId, product) + auditLogs, err := dbbrainService.DescribeDbbrainTdsqlAuditLogById(ctx, nil, tcacctest.DefaultDcdbInstanceId, product) if err != nil { return err } @@ -39,16 +44,16 @@ func testSweepDbbrainTdsqlAuditLog(r string) error { } for _, audit := range auditLogs { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { - err := dbbrainService.DeleteDbbrainTdsqlAuditLogById(ctx, helper.Int64ToStr(*audit.AsyncRequestId), defaultDcdbInstanceId, product) + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + err := dbbrainService.DeleteDbbrainTdsqlAuditLogById(ctx, helper.Int64ToStr(*audit.AsyncRequestId), tcacctest.DefaultDcdbInstanceId, product) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) if err != nil { - return fmt.Errorf("[ERROR] sweeper Dbbrain tdsql audit logs:[AsyncRequestId:%v, instanceId:%s, product:%s] failed! reason:[%s]", *audit.AsyncRequestId, defaultDbBrainInstanceId, product, err.Error()) + return fmt.Errorf("[ERROR] sweeper Dbbrain tdsql audit logs:[AsyncRequestId:%v, instanceId:%s, product:%s] failed! reason:[%s]", *audit.AsyncRequestId, tcacctest.DefaultDbBrainInstanceId, product, err.Error()) } } @@ -64,19 +69,19 @@ func TestAccTencentCloudDbbrainTdsqlAuditLogResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDbbrainTdsqlAuditLogDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDbbrainTdsqlAuditLog, defaultDcdbInstanceId, startTime, endTime), + Config: fmt.Sprintf(testAccDbbrainTdsqlAuditLog, tcacctest.DefaultDcdbInstanceId, startTime, endTime), Check: resource.ComposeTestCheckFunc( testAccCheckDbbrainTdsqlAuditLogExists("tencentcloud_dbbrain_tdsql_audit_log.my_log"), resource.TestCheckResourceAttrSet("tencentcloud_dbbrain_tdsql_audit_log.my_log", "id"), resource.TestCheckResourceAttr("tencentcloud_dbbrain_tdsql_audit_log.my_log", "product", "dcdb"), resource.TestCheckResourceAttr("tencentcloud_dbbrain_tdsql_audit_log.my_log", "node_request_type", "dcdb"), - resource.TestCheckResourceAttr("tencentcloud_dbbrain_tdsql_audit_log.my_log", "instance_id", defaultDcdbInstanceId), + resource.TestCheckResourceAttr("tencentcloud_dbbrain_tdsql_audit_log.my_log", "instance_id", tcacctest.DefaultDcdbInstanceId), resource.TestCheckResourceAttr("tencentcloud_dbbrain_tdsql_audit_log.my_log", "start_time", startTime), resource.TestCheckResourceAttr("tencentcloud_dbbrain_tdsql_audit_log.my_log", "end_time", endTime), resource.TestCheckResourceAttr("tencentcloud_dbbrain_tdsql_audit_log.my_log", "filter.#", "1"), @@ -91,16 +96,16 @@ func TestAccTencentCloudDbbrainTdsqlAuditLogResource_basic(t *testing.T) { } func testAccCheckDbbrainTdsqlAuditLogDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dbbrainService := DbbrainService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dbbrainService := svcdbbrain.NewDbbrainService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dbbrain_tdsql_audit_log" { continue } - ids := strings.Split(rs.Primary.ID, FILED_SP) + ids := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(ids) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -122,9 +127,9 @@ func testAccCheckDbbrainTdsqlAuditLogDestroy(s *terraform.State) error { func testAccCheckDbbrainTdsqlAuditLogExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dbbrainService := DbbrainService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dbbrainService := svcdbbrain.NewDbbrainService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rs, ok := s.RootModule().Resources[re] if !ok { @@ -134,7 +139,7 @@ func testAccCheckDbbrainTdsqlAuditLogExists(re string) resource.TestCheckFunc { return fmt.Errorf("Dbbrain tdsql audit log id is not set") } - ids := strings.Split(rs.Primary.ID, FILED_SP) + ids := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(ids) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } diff --git a/tencentcloud/service_tencentcloud_dbbrain.go b/tencentcloud/services/dbbrain/service_tencentcloud_dbbrain.go similarity index 96% rename from tencentcloud/service_tencentcloud_dbbrain.go rename to tencentcloud/services/dbbrain/service_tencentcloud_dbbrain.go index db5f41e769..7b89d03977 100644 --- a/tencentcloud/service_tencentcloud_dbbrain.go +++ b/tencentcloud/services/dbbrain/service_tencentcloud_dbbrain.go @@ -1,17 +1,24 @@ -package tencentcloud +package dbbrain import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" dbbrain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dbbrain/v20210527" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewDbbrainService(client *connectivity.TencentCloudClient) DbbrainService { + return DbbrainService{client: client} +} + type DbbrainService struct { client *connectivity.TencentCloudClient } @@ -37,7 +44,7 @@ func (me *DbbrainService) DescribeDbbrainSqlFilter(ctx context.Context, instance func (me *DbbrainService) DescribeDbbrainSqlFiltersByFilter(ctx context.Context, param map[string]interface{}) (sqlFilters []*dbbrain.SQLFilter, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeSqlFiltersRequest() ) @@ -93,7 +100,7 @@ func (me *DbbrainService) DescribeDbbrainSqlFiltersByFilter(ctx context.Context, } func (me *DbbrainService) getSessionToken(ctx context.Context, instanceId, user, pw, product *string) (sessionToken *string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dbbrain.NewVerifyUserAccountRequest() request.InstanceId = instanceId @@ -124,7 +131,7 @@ func (me *DbbrainService) getSessionToken(ctx context.Context, instanceId, user, } func (me *DbbrainService) DeleteDbbrainSqlFilterById(ctx context.Context, instanceId, filterId, sessionToken *string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dbbrain.NewDeleteSqlFiltersRequest() @@ -177,7 +184,7 @@ func (me *DbbrainService) DescribeDbbrainSecurityAuditLogExportTask(ctx context. func (me *DbbrainService) DescribeDbbrainSecurityAuditLogExportTasksByFilter(ctx context.Context, param map[string]interface{}) (securityAuditLogExportTasks []*dbbrain.SecLogExportTaskInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeSecurityAuditLogExportTasksRequest() ) @@ -233,7 +240,7 @@ func (me *DbbrainService) DescribeDbbrainSecurityAuditLogExportTasksByFilter(ctx } func (me *DbbrainService) DeleteDbbrainSecurityAuditLogExportTaskById(ctx context.Context, secAuditGroupId, asyncRequestId, product *string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dbbrain.NewDeleteSecurityAuditLogExportTasksRequest() @@ -267,7 +274,7 @@ func (me *DbbrainService) DeleteDbbrainSecurityAuditLogExportTaskById(ctx contex func (me *DbbrainService) DescribeDbbrainDiagEventsByFilter(ctx context.Context, param map[string]interface{}) (diagEvents []*dbbrain.DiagHistoryEventItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeDBDiagEventsRequest() ) @@ -324,7 +331,7 @@ func (me *DbbrainService) DescribeDbbrainDiagEventsByFilter(ctx context.Context, func (me *DbbrainService) DescribeDbbrainDiagEventByFilter(ctx context.Context, param map[string]interface{}) (diagEvent *dbbrain.DescribeDBDiagEventResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeDBDiagEventRequest() ) @@ -364,7 +371,7 @@ func (me *DbbrainService) DescribeDbbrainDiagEventByFilter(ctx context.Context, func (me *DbbrainService) DescribeDbbrainDiagHistoryByFilter(ctx context.Context, param map[string]interface{}) (diagHistory []*dbbrain.DiagHistoryEventItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeDBDiagHistoryRequest() ) @@ -407,7 +414,7 @@ func (me *DbbrainService) DescribeDbbrainDiagHistoryByFilter(ctx context.Context func (me *DbbrainService) DescribeDbbrainSecurityAuditLogDownloadUrlsByFilter(ctx context.Context, param map[string]interface{}) (securityAuditLogDownloadUrls []*string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeSecurityAuditLogDownloadUrlsRequest() ) @@ -447,7 +454,7 @@ func (me *DbbrainService) DescribeDbbrainSecurityAuditLogDownloadUrlsByFilter(ct func (me *DbbrainService) DescribeDbbrainSlowLogTimeSeriesStatsByFilter(ctx context.Context, param map[string]interface{}) (slowLogTimeSeriesStats *dbbrain.DescribeSlowLogTimeSeriesStatsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeSlowLogTimeSeriesStatsRequest() ) @@ -490,7 +497,7 @@ func (me *DbbrainService) DescribeDbbrainSlowLogTimeSeriesStatsByFilter(ctx cont func (me *DbbrainService) DescribeDbbrainSlowLogTopSqlsByFilter(ctx context.Context, param map[string]interface{}) (slowLogTopSqls []*dbbrain.SlowLogTopSqlItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeSlowLogTopSqlsRequest() ) @@ -562,7 +569,7 @@ func (me *DbbrainService) DescribeDbbrainSlowLogTopSqlsByFilter(ctx context.Cont func (me *DbbrainService) DescribeDbbrainSlowLogUserHostStatsByFilter(ctx context.Context, param map[string]interface{}) (slowLogUserHostStats []*dbbrain.SlowLogHost, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeSlowLogUserHostStatsRequest() ) @@ -608,7 +615,7 @@ func (me *DbbrainService) DescribeDbbrainSlowLogUserHostStatsByFilter(ctx contex func (me *DbbrainService) DescribeDbbrainSlowLogUserSqlAdviceByFilter(ctx context.Context, param map[string]interface{}) (slowLogUserSqlAdvice *dbbrain.DescribeUserSqlAdviceResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeUserSqlAdviceRequest() ) @@ -650,7 +657,7 @@ func (me *DbbrainService) DescribeDbbrainSlowLogUserSqlAdviceByFilter(ctx contex } func (me *DbbrainService) DescribeDbbrainDbDiagReportTaskById(ctx context.Context, asyncRequestId *int64, instanceId string, product string) (dbDiagReportTask *dbbrain.HealthReportTask, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dbbrain.NewDescribeDBDiagReportTasksRequest() request.InstanceIds = []*string{helper.String(instanceId)} @@ -686,7 +693,7 @@ func (me *DbbrainService) DescribeDbbrainDbDiagReportTaskById(ctx context.Contex } func (me *DbbrainService) DeleteDbbrainDbDiagReportTaskById(ctx context.Context, asyncRequestId int64, instanceId string, product string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dbbrain.NewDeleteDBDiagReportTasksRequest() request.AsyncRequestIds = []*int64{helper.Int64(asyncRequestId)} @@ -713,7 +720,7 @@ func (me *DbbrainService) DeleteDbbrainDbDiagReportTaskById(ctx context.Context, func (me *DbbrainService) DbbrainDbDiagReportTaskStateRefreshFunc(asyncRequestId *int64, instanceId string, product string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDbbrainDbDiagReportTaskById(ctx, asyncRequestId, instanceId, product) if err != nil { @@ -725,7 +732,7 @@ func (me *DbbrainService) DbbrainDbDiagReportTaskStateRefreshFunc(asyncRequestId } func (me *DbbrainService) DescribeDbbrainTdsqlAuditLogById(ctx context.Context, asyncRequestId *string, instanceId string, product string) (tdsqlAuditLog []*dbbrain.AuditLogFile, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dbbrain.NewDescribeAuditLogFilesRequest() request.InstanceId = &instanceId @@ -765,7 +772,7 @@ func (me *DbbrainService) DescribeDbbrainTdsqlAuditLogById(ctx context.Context, } func (me *DbbrainService) DeleteDbbrainTdsqlAuditLogById(ctx context.Context, asyncRequestId string, instanceId string, product string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dbbrain.NewDeleteAuditLogFileRequest() request.AsyncRequestId = helper.StrToInt64Point(asyncRequestId) @@ -793,7 +800,7 @@ func (me *DbbrainService) DeleteDbbrainTdsqlAuditLogById(ctx context.Context, as func (me *DbbrainService) DescribeDbbrainHealthScoresByFilter(ctx context.Context, param map[string]interface{}) (healthScores *dbbrain.HealthScoreInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeHealthScoreRequest() ) @@ -834,7 +841,7 @@ func (me *DbbrainService) DescribeDbbrainHealthScoresByFilter(ctx context.Contex func (me *DbbrainService) DescribeDbbrainSlowLogsByFilter(ctx context.Context, param map[string]interface{}) (SlowLogs []*dbbrain.SlowLogInfoItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeSlowLogsRequest() ) @@ -909,7 +916,7 @@ func (me *DbbrainService) DescribeDbbrainSlowLogsByFilter(ctx context.Context, p func (me *DbbrainService) DescribeDbbrainDbSpaceStatusByFilter(ctx context.Context, param map[string]interface{}) (DbSpaceStatus *dbbrain.DescribeDBSpaceStatusResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeDBSpaceStatusRequest() ) @@ -949,7 +956,7 @@ func (me *DbbrainService) DescribeDbbrainDbSpaceStatusByFilter(ctx context.Conte func (me *DbbrainService) DescribeDbbrainSqlTemplatesByFilter(ctx context.Context, param map[string]interface{}) (SqlTemplate *dbbrain.DescribeSqlTemplateResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeSqlTemplateRequest() ) @@ -992,7 +999,7 @@ func (me *DbbrainService) DescribeDbbrainSqlTemplatesByFilter(ctx context.Contex func (me *DbbrainService) DescribeDbbrainTopSpaceSchemasByFilter(ctx context.Context, param map[string]interface{}) (TopSpaceSchemas []*dbbrain.SchemaSpaceData, Timestamp *int64, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeTopSpaceSchemasRequest() ) @@ -1036,7 +1043,7 @@ func (me *DbbrainService) DescribeDbbrainTopSpaceSchemasByFilter(ctx context.Con func (me *DbbrainService) DescribeDbbrainTopSpaceSchemaTimeSeriesByFilter(ctx context.Context, param map[string]interface{}) (TopSpaceSchemaTimeSeries []*dbbrain.SchemaSpaceTimeSeries, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeTopSpaceSchemaTimeSeriesRequest() ) @@ -1085,7 +1092,7 @@ func (me *DbbrainService) DescribeDbbrainTopSpaceSchemaTimeSeriesByFilter(ctx co func (me *DbbrainService) DescribeDbbrainTopSpaceTableTimeSeriesByFilter(ctx context.Context, param map[string]interface{}) (TopSpaceTableTimeSeries []*dbbrain.TableSpaceTimeSeries, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeTopSpaceTableTimeSeriesRequest() ) @@ -1134,7 +1141,7 @@ func (me *DbbrainService) DescribeDbbrainTopSpaceTableTimeSeriesByFilter(ctx con func (me *DbbrainService) DescribeDbbrainTopSpaceTablesByFilter(ctx context.Context, param map[string]interface{}) (TopSpaceTables []*dbbrain.TableSpaceData, Timestamp *int64, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeTopSpaceTablesRequest() ) @@ -1179,7 +1186,7 @@ func (me *DbbrainService) DescribeDbbrainTopSpaceTablesByFilter(ctx context.Cont func (me *DbbrainService) DescribeDbbrainDiagDbInstancesByFilter(ctx context.Context, param map[string]interface{}) (items []*dbbrain.InstanceInfo, DbScanStatus *int64, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeDiagDBInstancesRequest() ) @@ -1239,7 +1246,7 @@ func (me *DbbrainService) DescribeDbbrainDiagDbInstancesByFilter(ctx context.Con func (me *DbbrainService) DescribeDbbrainMysqlProcessListByFilter(ctx context.Context, param map[string]interface{}) (mysqlProcessList []*dbbrain.MySqlProcess, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeMySqlProcessListRequest() ) @@ -1305,7 +1312,7 @@ func (me *DbbrainService) DescribeDbbrainMysqlProcessListByFilter(ctx context.Co func (me *DbbrainService) DescribeDbbrainNoPrimaryKeyTablesByFilter(ctx context.Context, param map[string]interface{}) (tables []*dbbrain.Table, resp *dbbrain.DescribeNoPrimaryKeyTablesResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeNoPrimaryKeyTablesRequest() ) @@ -1360,7 +1367,7 @@ func (me *DbbrainService) DescribeDbbrainNoPrimaryKeyTablesByFilter(ctx context. func (me *DbbrainService) DescribeDbbrainRedisTopBigKeysByFilter(ctx context.Context, param map[string]interface{}) (redisTopBigKeys []*dbbrain.RedisKeySpaceData, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeRedisTopBigKeysRequest() ) @@ -1411,7 +1418,7 @@ func (me *DbbrainService) DescribeDbbrainRedisTopBigKeysByFilter(ctx context.Con func (me *DbbrainService) DescribeDbbrainRedisTopKeyPrefixListByFilter(ctx context.Context, param map[string]interface{}) (redisTopKeyPrefixList []*dbbrain.RedisPreKeySpaceData, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dbbrain.NewDescribeRedisTopKeyPrefixListRequest() ) diff --git a/tencentcloud/data_source_tc_dc_access_points.go b/tencentcloud/services/dc/data_source_tc_dc_access_points.go similarity index 90% rename from tencentcloud/data_source_tc_dc_access_points.go rename to tencentcloud/services/dc/data_source_tc_dc_access_points.go index 34eb7cf388..69243f76bc 100644 --- a/tencentcloud/data_source_tc_dc_access_points.go +++ b/tencentcloud/services/dc/data_source_tc_dc_access_points.go @@ -1,15 +1,18 @@ -package tencentcloud +package dc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcAccessPoints() *schema.Resource { +func DataSourceTencentCloudDcAccessPoints() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcAccessPointsRead, Schema: map[string]*schema.Schema{ @@ -114,26 +117,26 @@ func dataSourceTencentCloudDcAccessPoints() *schema.Resource { } func dataSourceTencentCloudDcAccessPointsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dc_access_points.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dc_access_points.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("region_id"); ok { paramMap["RegionId"] = helper.String(v.(string)) } - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var accessPointSet []*dc.AccessPoint - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcAccessPointsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } accessPointSet = result return nil @@ -213,7 +216,7 @@ func dataSourceTencentCloudDcAccessPointsRead(d *schema.ResourceData, meta inter d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dc_access_points_test.go b/tencentcloud/services/dc/data_source_tc_dc_access_points_test.go similarity index 59% rename from tencentcloud/data_source_tc_dc_access_points_test.go rename to tencentcloud/services/dc/data_source_tc_dc_access_points_test.go index ee177652c3..18d469e3d4 100644 --- a/tencentcloud/data_source_tc_dc_access_points_test.go +++ b/tencentcloud/services/dc/data_source_tc_dc_access_points_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDcAccessPointsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcAccessPointsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dc_access_points.access_points")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dc_access_points.access_points")), }, }, }) diff --git a/tencentcloud/data_source_tc_dc_instances.go b/tencentcloud/services/dc/data_source_tc_dc_instances.go similarity index 93% rename from tencentcloud/data_source_tc_dc_instances.go rename to tencentcloud/services/dc/data_source_tc_dc_instances.go index a5d39b02e0..54b325fa46 100644 --- a/tencentcloud/data_source_tc_dc_instances.go +++ b/tencentcloud/services/dc/data_source_tc_dc_instances.go @@ -1,4 +1,4 @@ -package tencentcloud +package dc import ( "context" @@ -7,10 +7,12 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func dataSourceTencentCloudDcInstances() *schema.Resource { +func DataSourceTencentCloudDcInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcInstancesRead, @@ -146,12 +148,12 @@ func dataSourceTencentCloudDcInstances() *schema.Resource { } func dataSourceTencentCloudDcInstancesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dc_instances.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dc_instances.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( id = "" @@ -223,7 +225,7 @@ func dataSourceTencentCloudDcInstancesRead(d *schema.ResourceData, meta interfac d.SetId(fmt.Sprintf("%x", m.Sum(nil))) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), instanceList); err != nil { + if err := tccommon.WriteToFile(output.(string), instanceList); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%s]\n", logId, output.(string), err.Error()) return err diff --git a/tencentcloud/data_source_tc_dc_instances_test.go b/tencentcloud/services/dc/data_source_tc_dc_instances_test.go similarity index 70% rename from tencentcloud/data_source_tc_dc_instances_test.go rename to tencentcloud/services/dc/data_source_tc_dc_instances_test.go index 66bf09a35c..070e95d23c 100644 --- a/tencentcloud/data_source_tc_dc_instances_test.go +++ b/tencentcloud/services/dc/data_source_tc_dc_instances_test.go @@ -1,22 +1,24 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccDataSourceTencentCloudDcV3InstancesBasic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudDcInstances, Check: resource.ComposeTestCheckFunc( //name filter - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dc_instances.name_select"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dc_instances.name_select"), resource.TestCheckResourceAttrSet("data.tencentcloud_dc_instances.name_select", "instance_list.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dc_instances.name_select", "name"), ), diff --git a/tencentcloud/data_source_tc_dc_internet_address_quota.go b/tencentcloud/services/dc/data_source_tc_dc_internet_address_quota.go similarity index 79% rename from tencentcloud/data_source_tc_dc_internet_address_quota.go rename to tencentcloud/services/dc/data_source_tc_dc_internet_address_quota.go index ddb5e33f4e..0cda4955ce 100644 --- a/tencentcloud/data_source_tc_dc_internet_address_quota.go +++ b/tencentcloud/services/dc/data_source_tc_dc_internet_address_quota.go @@ -1,15 +1,18 @@ -package tencentcloud +package dc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcInternetAddressQuota() *schema.Resource { +func DataSourceTencentCloudDcInternetAddressQuota() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcInternetAddressQuotaRead, Schema: map[string]*schema.Schema{ @@ -53,21 +56,21 @@ func dataSourceTencentCloudDcInternetAddressQuota() *schema.Resource { } func dataSourceTencentCloudDcInternetAddressQuotaRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dc_internet_address_quota.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dc_internet_address_quota.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var quota *dc.DescribeInternetAddressQuotaResponse - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcInternetAddressQuota(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } quota = result return nil @@ -109,7 +112,7 @@ func dataSourceTencentCloudDcInternetAddressQuotaRead(d *schema.ResourceData, me d.SetId(helper.Int64ToStr(*quota.Response.Ipv4BgpQuota)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dc_internet_address_quota_test.go b/tencentcloud/services/dc/data_source_tc_dc_internet_address_quota_test.go similarity index 58% rename from tencentcloud/data_source_tc_dc_internet_address_quota_test.go rename to tencentcloud/services/dc/data_source_tc_dc_internet_address_quota_test.go index 114dd68619..f548329674 100644 --- a/tencentcloud/data_source_tc_dc_internet_address_quota_test.go +++ b/tencentcloud/services/dc/data_source_tc_dc_internet_address_quota_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDcInternetAddressQuotaDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcInternetAddressQuotaDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dc_internet_address_quota.internet_address_quota")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dc_internet_address_quota.internet_address_quota")), }, }, }) diff --git a/tencentcloud/data_source_tc_dc_internet_address_statistics.go b/tencentcloud/services/dc/data_source_tc_dc_internet_address_statistics.go similarity index 78% rename from tencentcloud/data_source_tc_dc_internet_address_statistics.go rename to tencentcloud/services/dc/data_source_tc_dc_internet_address_statistics.go index a349fafacf..ebc9d0cbbb 100644 --- a/tencentcloud/data_source_tc_dc_internet_address_statistics.go +++ b/tencentcloud/services/dc/data_source_tc_dc_internet_address_statistics.go @@ -1,15 +1,18 @@ -package tencentcloud +package dc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcInternetAddressStatistics() *schema.Resource { +func DataSourceTencentCloudDcInternetAddressStatistics() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcInternetAddressStatisticsRead, Schema: map[string]*schema.Schema{ @@ -43,21 +46,21 @@ func dataSourceTencentCloudDcInternetAddressStatistics() *schema.Resource { } func dataSourceTencentCloudDcInternetAddressStatisticsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dc_internet_address_statistics.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dc_internet_address_statistics.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var internetAddressStatistics []*dc.InternetAddressStatistics - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcInternetAddressStatistics(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } internetAddressStatistics = result return nil @@ -91,7 +94,7 @@ func dataSourceTencentCloudDcInternetAddressStatisticsRead(d *schema.ResourceDat d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dc_internet_address_statistics_test.go b/tencentcloud/services/dc/data_source_tc_dc_internet_address_statistics_test.go similarity index 59% rename from tencentcloud/data_source_tc_dc_internet_address_statistics_test.go rename to tencentcloud/services/dc/data_source_tc_dc_internet_address_statistics_test.go index 06bd76da9f..2856ce0ae7 100644 --- a/tencentcloud/data_source_tc_dc_internet_address_statistics_test.go +++ b/tencentcloud/services/dc/data_source_tc_dc_internet_address_statistics_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDcInternetAddressStatisticsDataSource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcInternetAddressStatisticsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dc_internet_address_statistics.internet_address_statistics")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dc_internet_address_statistics.internet_address_statistics")), }, }, }) diff --git a/tencentcloud/data_source_tc_dc_public_direct_connect_tunnel_routes.go b/tencentcloud/services/dc/data_source_tc_dc_public_direct_connect_tunnel_routes.go similarity index 87% rename from tencentcloud/data_source_tc_dc_public_direct_connect_tunnel_routes.go rename to tencentcloud/services/dc/data_source_tc_dc_public_direct_connect_tunnel_routes.go index a68ea06c50..b889d2a528 100644 --- a/tencentcloud/data_source_tc_dc_public_direct_connect_tunnel_routes.go +++ b/tencentcloud/services/dc/data_source_tc_dc_public_direct_connect_tunnel_routes.go @@ -1,15 +1,18 @@ -package tencentcloud +package dc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcPublicDirectConnectTunnelRoutes() *schema.Resource { +func DataSourceTencentCloudDcPublicDirectConnectTunnelRoutes() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcPublicDirectConnectTunnelRoutesRead, Schema: map[string]*schema.Schema{ @@ -95,12 +98,12 @@ func dataSourceTencentCloudDcPublicDirectConnectTunnelRoutes() *schema.Resource } func dataSourceTencentCloudDcPublicDirectConnectTunnelRoutesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dc_public_direct_connect_tunnel_routes.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dc_public_direct_connect_tunnel_routes.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("direct_connect_tunnel_id"); ok { @@ -127,14 +130,14 @@ func dataSourceTencentCloudDcPublicDirectConnectTunnelRoutesRead(d *schema.Resou paramMap["filters"] = tmpSet } - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var routes []*dc.DirectConnectTunnelRoute - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcPublicDirectConnectTunnelRoutesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } routes = result return nil @@ -184,7 +187,7 @@ func dataSourceTencentCloudDcPublicDirectConnectTunnelRoutesRead(d *schema.Resou d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dc_public_direct_connect_tunnel_routes_test.go b/tencentcloud/services/dc/data_source_tc_dc_public_direct_connect_tunnel_routes_test.go similarity index 62% rename from tencentcloud/data_source_tc_dc_public_direct_connect_tunnel_routes_test.go rename to tencentcloud/services/dc/data_source_tc_dc_public_direct_connect_tunnel_routes_test.go index a9ab7c6ecc..7f34e10986 100644 --- a/tencentcloud/data_source_tc_dc_public_direct_connect_tunnel_routes_test.go +++ b/tencentcloud/services/dc/data_source_tc_dc_public_direct_connect_tunnel_routes_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudNeedFixDcPublicDirectConnectTunnelRoutesDataSource_basic t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcPublicDirectConnectTunnelRoutesDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dc_public_direct_connect_tunnel_routes.public_direct_connect_tunnel_routes")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dc_public_direct_connect_tunnel_routes.public_direct_connect_tunnel_routes")), }, }, }) diff --git a/tencentcloud/data_source_tc_dcx_instances.go b/tencentcloud/services/dc/data_source_tc_dcx_instances.go similarity index 92% rename from tencentcloud/data_source_tc_dcx_instances.go rename to tencentcloud/services/dc/data_source_tc_dcx_instances.go index 1e48f3ef0a..2590b0e5da 100644 --- a/tencentcloud/data_source_tc_dcx_instances.go +++ b/tencentcloud/services/dc/data_source_tc_dcx_instances.go @@ -1,4 +1,4 @@ -package tencentcloud +package dc import ( "context" @@ -7,10 +7,12 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func dataSourceTencentCloudDcxInstances() *schema.Resource { +func DataSourceTencentCloudDcxInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcxInstancesRead, @@ -134,12 +136,12 @@ func dataSourceTencentCloudDcxInstances() *schema.Resource { } func dataSourceTencentCloudDcxInstancesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcx_instances.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dcx_instances.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( id = "" @@ -219,7 +221,7 @@ func dataSourceTencentCloudDcxInstancesRead(d *schema.ResourceData, meta interfa d.SetId(fmt.Sprintf("%x", m.Sum(nil))) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), instanceList); err != nil { + if err := tccommon.WriteToFile(output.(string), instanceList); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%s]\n", logId, output.(string), err.Error()) return err diff --git a/tencentcloud/data_source_tc_dcx_instances_test.go b/tencentcloud/services/dc/data_source_tc_dcx_instances_test.go similarity index 70% rename from tencentcloud/data_source_tc_dcx_instances_test.go rename to tencentcloud/services/dc/data_source_tc_dcx_instances_test.go index 2b38f98436..af417b3480 100644 --- a/tencentcloud/data_source_tc_dcx_instances_test.go +++ b/tencentcloud/services/dc/data_source_tc_dcx_instances_test.go @@ -1,22 +1,24 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccDataSourceTencentCloudDcxV3InstancesBasic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudDcxInstances, Check: resource.ComposeTestCheckFunc( //name filter - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcx_instances.name_select"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcx_instances.name_select"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcx_instances.name_select", "instance_list.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcx_instances.name_select", "name"), ), diff --git a/tencentcloud/extension_dc.go b/tencentcloud/services/dc/extension_dc.go similarity index 94% rename from tencentcloud/extension_dc.go rename to tencentcloud/services/dc/extension_dc.go index 5ef0958e78..043feedc69 100644 --- a/tencentcloud/extension_dc.go +++ b/tencentcloud/services/dc/extension_dc.go @@ -1,4 +1,4 @@ -package tencentcloud +package dc const ( DC_NETWORK_TYPE_VPC = "VPC" diff --git a/tencentcloud/resource_tc_dc_instance.go b/tencentcloud/services/dc/resource_tc_dc_instance.go similarity index 88% rename from tencentcloud/resource_tc_dc_instance.go rename to tencentcloud/services/dc/resource_tc_dc_instance.go index e5856e8baa..550cb6e799 100644 --- a/tencentcloud/resource_tc_dc_instance.go +++ b/tencentcloud/services/dc/resource_tc_dc_instance.go @@ -1,17 +1,20 @@ -package tencentcloud +package dc import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcInstance() *schema.Resource { +func ResourceTencentCloudDcInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcInstanceCreate, Read: resourceTencentCloudDcInstanceRead, @@ -127,10 +130,10 @@ func resourceTencentCloudDcInstance() *schema.Resource { } func resourceTencentCloudDcInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dc.NewCreateDirectConnectRequest() @@ -204,10 +207,10 @@ func resourceTencentCloudDcInstanceCreate(d *schema.ResourceData, meta interface request.SignLaw = helper.Bool(v.(bool)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcClient().CreateDirectConnect(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcClient().CreateDirectConnect(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -230,14 +233,14 @@ func resourceTencentCloudDcInstanceCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudDcInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} directConnectId := d.Id() @@ -326,10 +329,10 @@ func resourceTencentCloudDcInstanceRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudDcInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_instance.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_instance.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dc.NewModifyDirectConnectAttributeRequest() @@ -413,10 +416,10 @@ func resourceTencentCloudDcInstanceUpdate(d *schema.ResourceData, meta interface request.SignLaw = helper.Bool(v.(bool)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcClient().ModifyDirectConnectAttribute(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcClient().ModifyDirectConnectAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -432,13 +435,13 @@ func resourceTencentCloudDcInstanceUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudDcInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} directConnectId := d.Id() if err := service.DeleteDcInstanceById(ctx, directConnectId); err != nil { diff --git a/tencentcloud/resource_tc_dc_instance_test.go b/tencentcloud/services/dc/resource_tc_dc_instance_test.go similarity index 84% rename from tencentcloud/resource_tc_dc_instance_test.go rename to tencentcloud/services/dc/resource_tc_dc_instance_test.go index 4c21e90546..1fe187b156 100644 --- a/tencentcloud/resource_tc_dc_instance_test.go +++ b/tencentcloud/services/dc/resource_tc_dc_instance_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDcInstanceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcInstance, diff --git a/tencentcloud/resource_tc_dc_internet_address.go b/tencentcloud/services/dc/resource_tc_dc_internet_address.go similarity index 71% rename from tencentcloud/resource_tc_dc_internet_address.go rename to tencentcloud/services/dc/resource_tc_dc_internet_address.go index ce3fe7db8f..69983d998b 100644 --- a/tencentcloud/resource_tc_dc_internet_address.go +++ b/tencentcloud/services/dc/resource_tc_dc_internet_address.go @@ -1,16 +1,19 @@ -package tencentcloud +package dc import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcInternetAddress() *schema.Resource { +func ResourceTencentCloudDcInternetAddress() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcInternetAddressCreate, Read: resourceTencentCloudDcInternetAddressRead, @@ -44,10 +47,10 @@ func resourceTencentCloudDcInternetAddress() *schema.Resource { } func resourceTencentCloudDcInternetAddressCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_internet_address.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_internet_address.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dc.NewApplyInternetAddressRequest() @@ -66,10 +69,10 @@ func resourceTencentCloudDcInternetAddressCreate(d *schema.ResourceData, meta in request.AddrProto = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcClient().ApplyInternetAddress(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcClient().ApplyInternetAddress(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -88,14 +91,14 @@ func resourceTencentCloudDcInternetAddressCreate(d *schema.ResourceData, meta in } func resourceTencentCloudDcInternetAddressRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_internet_address.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_internet_address.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -126,13 +129,13 @@ func resourceTencentCloudDcInternetAddressRead(d *schema.ResourceData, meta inte } func resourceTencentCloudDcInternetAddressDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_internet_address.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_internet_address.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() if err := service.DeleteDcInternetAddressById(ctx, instanceId); err != nil { diff --git a/tencentcloud/resource_tc_dc_internet_address_config.go b/tencentcloud/services/dc/resource_tc_dc_internet_address_config.go similarity index 69% rename from tencentcloud/resource_tc_dc_internet_address_config.go rename to tencentcloud/services/dc/resource_tc_dc_internet_address_config.go index d3f3e54407..5a658f3948 100644 --- a/tencentcloud/resource_tc_dc_internet_address_config.go +++ b/tencentcloud/services/dc/resource_tc_dc_internet_address_config.go @@ -1,15 +1,17 @@ -package tencentcloud +package dc import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" ) -func resourceTencentCloudDcInternetAddressConfig() *schema.Resource { +func ResourceTencentCloudDcInternetAddressConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcInternetAddressConfigCreate, Read: resourceTencentCloudDcInternetAddressConfigRead, @@ -35,8 +37,8 @@ func resourceTencentCloudDcInternetAddressConfig() *schema.Resource { } func resourceTencentCloudDcInternetAddressConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_internet_address_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_internet_address_config.create")() + defer tccommon.InconsistentCheck(d, meta)() instanceId := d.Get("instance_id").(string) @@ -46,14 +48,14 @@ func resourceTencentCloudDcInternetAddressConfigCreate(d *schema.ResourceData, m } func resourceTencentCloudDcInternetAddressConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_internet_address_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_internet_address_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -82,10 +84,10 @@ func resourceTencentCloudDcInternetAddressConfigRead(d *schema.ResourceData, met } func resourceTencentCloudDcInternetAddressConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_internet_address_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_internet_address_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( enable bool @@ -102,10 +104,10 @@ func resourceTencentCloudDcInternetAddressConfigUpdate(d *schema.ResourceData, m if enable { enableRequest.InstanceId = &instanceId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcClient().EnableInternetAddress(enableRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcClient().EnableInternetAddress(enableRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, enableRequest.GetAction(), enableRequest.ToJsonString(), result.ToJsonString()) } @@ -118,10 +120,10 @@ func resourceTencentCloudDcInternetAddressConfigUpdate(d *schema.ResourceData, m } else { disableRequest.InstanceId = &instanceId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcClient().DisableInternetAddress(disableRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcClient().DisableInternetAddress(disableRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, disableRequest.GetAction(), disableRequest.ToJsonString(), result.ToJsonString()) } @@ -137,8 +139,8 @@ func resourceTencentCloudDcInternetAddressConfigUpdate(d *schema.ResourceData, m } func resourceTencentCloudDcInternetAddressConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_internet_address_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_internet_address_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dc_internet_address_config_test.go b/tencentcloud/services/dc/resource_tc_dc_internet_address_config_test.go similarity index 84% rename from tencentcloud/resource_tc_dc_internet_address_config_test.go rename to tencentcloud/services/dc/resource_tc_dc_internet_address_config_test.go index 1d65566611..b9d7cc673a 100644 --- a/tencentcloud/resource_tc_dc_internet_address_config_test.go +++ b/tencentcloud/services/dc/resource_tc_dc_internet_address_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixDcInternetAddressConfigResource_basic(t *testing. t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcInternetAddressConfig, diff --git a/tencentcloud/resource_tc_dc_internet_address_test.go b/tencentcloud/services/dc/resource_tc_dc_internet_address_test.go similarity index 81% rename from tencentcloud/resource_tc_dc_internet_address_test.go rename to tencentcloud/services/dc/resource_tc_dc_internet_address_test.go index eebc129cc6..d19e65bd4e 100644 --- a/tencentcloud/resource_tc_dc_internet_address_test.go +++ b/tencentcloud/services/dc/resource_tc_dc_internet_address_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixDcInternetAddressResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcInternetAddress, diff --git a/tencentcloud/resource_tc_dc_share_dcx_config.go b/tencentcloud/services/dc/resource_tc_dc_share_dcx_config.go similarity index 69% rename from tencentcloud/resource_tc_dc_share_dcx_config.go rename to tencentcloud/services/dc/resource_tc_dc_share_dcx_config.go index 35cbfbf38f..6ee23d56a4 100644 --- a/tencentcloud/resource_tc_dc_share_dcx_config.go +++ b/tencentcloud/services/dc/resource_tc_dc_share_dcx_config.go @@ -1,15 +1,17 @@ -package tencentcloud +package dc import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" ) -func resourceTencentCloudDcShareDcxConfig() *schema.Resource { +func ResourceTencentCloudDcShareDcxConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcShareDcxConfigCreate, Read: resourceTencentCloudDcShareDcxConfigRead, @@ -35,8 +37,8 @@ func resourceTencentCloudDcShareDcxConfig() *schema.Resource { } func resourceTencentCloudDcShareDcxConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_share_dcx_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_share_dcx_config.create")() + defer tccommon.InconsistentCheck(d, meta)() dcxId := d.Get("direct_connect_tunnel_id").(string) @@ -46,14 +48,14 @@ func resourceTencentCloudDcShareDcxConfigCreate(d *schema.ResourceData, meta int } func resourceTencentCloudDcShareDcxConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_share_dcx_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_share_dcx_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} dcxId := d.Id() @@ -84,10 +86,10 @@ func resourceTencentCloudDcShareDcxConfigRead(d *schema.ResourceData, meta inter } func resourceTencentCloudDcShareDcxConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_share_dcx_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_share_dcx_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( enable bool @@ -104,10 +106,10 @@ func resourceTencentCloudDcShareDcxConfigUpdate(d *schema.ResourceData, meta int if enable { acceptRequest.DirectConnectTunnelId = &dcxId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcClient().AcceptDirectConnectTunnel(acceptRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcClient().AcceptDirectConnectTunnel(acceptRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, acceptRequest.GetAction(), acceptRequest.ToJsonString(), result.ToJsonString()) } @@ -120,10 +122,10 @@ func resourceTencentCloudDcShareDcxConfigUpdate(d *schema.ResourceData, meta int } else { rejectRequest.DirectConnectTunnelId = &dcxId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcClient().RejectDirectConnectTunnel(rejectRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcClient().RejectDirectConnectTunnel(rejectRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, rejectRequest.GetAction(), rejectRequest.ToJsonString(), result.ToJsonString()) } @@ -139,8 +141,8 @@ func resourceTencentCloudDcShareDcxConfigUpdate(d *schema.ResourceData, meta int } func resourceTencentCloudDcShareDcxConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_share_dcx_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_share_dcx_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dc_share_dcx_config_test.go b/tencentcloud/services/dc/resource_tc_dc_share_dcx_config_test.go similarity index 81% rename from tencentcloud/resource_tc_dc_share_dcx_config_test.go rename to tencentcloud/services/dc/resource_tc_dc_share_dcx_config_test.go index 6c408115d1..e68517afc6 100644 --- a/tencentcloud/resource_tc_dc_share_dcx_config_test.go +++ b/tencentcloud/services/dc/resource_tc_dc_share_dcx_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixDcShareDcxConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcShareDcxConfig, diff --git a/tencentcloud/resource_tc_dcx.go b/tencentcloud/services/dc/resource_tc_dcx.go similarity index 84% rename from tencentcloud/resource_tc_dcx.go rename to tencentcloud/services/dc/resource_tc_dcx.go index 4d990324df..22c11aabcc 100644 --- a/tencentcloud/resource_tc_dcx.go +++ b/tencentcloud/services/dc/resource_tc_dcx.go @@ -1,16 +1,19 @@ -package tencentcloud +package dc import ( "context" "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcxInstance() *schema.Resource { +func ResourceTencentCloudDcxInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcxInstanceCreate, Read: resourceTencentCloudDcxInstanceRead, @@ -25,13 +28,13 @@ func resourceTencentCloudDcxInstance() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateStringLengthInRange(1, 60), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 60), Description: "ID of the DC to be queried, application deployment offline.", }, "name": { Type: schema.TypeString, Required: true, - ValidateFunc: validateStringLengthInRange(1, 60), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 60), Description: "Name of the dedicated tunnel.", }, "dc_owner_account": { @@ -46,7 +49,7 @@ func resourceTencentCloudDcxInstance() *schema.Resource { Optional: true, ForceNew: true, Default: DC_NETWORK_TYPE_VPC, - ValidateFunc: validateAllowedStringValue(DC_NETWORK_TYPES), + ValidateFunc: tccommon.ValidateAllowedStringValue(DC_NETWORK_TYPES), Description: "Type of the network. Valid value: `VPC`, `BMVPC` and `CCN`. The default value is `VPC`.", }, "vpc_id": { @@ -60,7 +63,7 @@ func resourceTencentCloudDcxInstance() *schema.Resource { Optional: true, ForceNew: true, Default: DC_ROUTE_TYPE_BGP, - ValidateFunc: validateAllowedStringValue(DC_ROUTE_TYPES), + ValidateFunc: tccommon.ValidateAllowedStringValue(DC_ROUTE_TYPES), Description: "Type of the route, and available values include BGP and STATIC. The default value is `BGP`.", }, "dcg_id": { @@ -136,12 +139,12 @@ func resourceTencentCloudDcxInstance() *schema.Resource { } func resourceTencentCloudDcxInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcx.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dcx.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( dcId = d.Get("dc_id").(string) @@ -224,21 +227,21 @@ func resourceTencentCloudDcxInstanceCreate(d *schema.ResourceData, meta interfac } func resourceTencentCloudDcxInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcx.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcx.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( dcxId = d.Id() ) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { item, has, e := service.DescribeDirectConnectTunnel(ctx, dcxId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if has == 0 { @@ -291,12 +294,12 @@ func resourceTencentCloudDcxInstanceRead(d *schema.ResourceData, meta interface{ } func resourceTencentCloudDcxInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcx.update")() + defer tccommon.LogElapsed("resource.tencentcloud_dcx.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( dcxId = d.Id() @@ -316,12 +319,12 @@ func resourceTencentCloudDcxInstanceUpdate(d *schema.ResourceData, meta interfac } func resourceTencentCloudDcxInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcx.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dcx.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( dcxId = d.Id() diff --git a/tencentcloud/resource_tc_dcx_extra_config.go b/tencentcloud/services/dc/resource_tc_dcx_extra_config.go similarity index 90% rename from tencentcloud/resource_tc_dcx_extra_config.go rename to tencentcloud/services/dc/resource_tc_dcx_extra_config.go index be548f3c98..a9a734eafa 100644 --- a/tencentcloud/resource_tc_dcx_extra_config.go +++ b/tencentcloud/services/dc/resource_tc_dcx_extra_config.go @@ -1,16 +1,19 @@ -package tencentcloud +package dc import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcxExtraConfig() *schema.Resource { +func ResourceTencentCloudDcxExtraConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcxExtraConfigCreate, Read: resourceTencentCloudDcxExtraConfigRead, @@ -174,8 +177,8 @@ func resourceTencentCloudDcxExtraConfig() *schema.Resource { } func resourceTencentCloudDcxExtraConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcx_extra_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcx_extra_config.create")() + defer tccommon.InconsistentCheck(d, meta)() directConnectTunnelId := d.Get("direct_connect_tunnel_id").(string) @@ -185,14 +188,14 @@ func resourceTencentCloudDcxExtraConfigCreate(d *schema.ResourceData, meta inter } func resourceTencentCloudDcxExtraConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcx_extra_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcx_extra_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} directConnectTunnelId := d.Id() @@ -312,10 +315,10 @@ func resourceTencentCloudDcxExtraConfigRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudDcxExtraConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcx_extra_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcx_extra_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dc.NewModifyDirectConnectTunnelExtraRequest() @@ -410,10 +413,10 @@ func resourceTencentCloudDcxExtraConfigUpdate(d *schema.ResourceData, meta inter request.JumboEnable = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcClient().ModifyDirectConnectTunnelExtra(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcClient().ModifyDirectConnectTunnelExtra(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -428,8 +431,8 @@ func resourceTencentCloudDcxExtraConfigUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudDcxExtraConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcx_extra_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcx_extra_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcx_extra_config_test.go b/tencentcloud/services/dc/resource_tc_dcx_extra_config_test.go similarity index 88% rename from tencentcloud/resource_tc_dcx_extra_config_test.go rename to tencentcloud/services/dc/resource_tc_dcx_extra_config_test.go index 487656abcd..2a6568be82 100644 --- a/tencentcloud/resource_tc_dcx_extra_config_test.go +++ b/tencentcloud/services/dc/resource_tc_dcx_extra_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixDcxExtraConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcxExtraConfig, diff --git a/tencentcloud/service_tencentcloud_dc.go b/tencentcloud/services/dc/service_tencentcloud_dc.go similarity index 96% rename from tencentcloud/service_tencentcloud_dc.go rename to tencentcloud/services/dc/service_tencentcloud_dc.go index 6d52bba0f2..644c4bc879 100644 --- a/tencentcloud/service_tencentcloud_dc.go +++ b/tencentcloud/services/dc/service_tencentcloud_dc.go @@ -1,11 +1,14 @@ -package tencentcloud +package dc import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) @@ -14,7 +17,7 @@ type DcService struct { client *connectivity.TencentCloudClient } -/////////common +// ///////common func (me *DcService) fillFilter(ins []*dc.Filter, key, value string) (outs []*dc.Filter) { if ins == nil { ins = make([]*dc.Filter, 0, 2) @@ -55,7 +58,7 @@ func (me *DcService) int64Pt2int64(pt *int64) (ret int64) { func (me *DcService) DescribeDirectConnects(ctx context.Context, dcId, name string) (infos []dc.DirectConnect, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewDescribeDirectConnectsRequest() defer func() { if errRet != nil { @@ -135,7 +138,7 @@ func (me *DcService) DescribeDirectConnectTunnel(ctx context.Context, dcxId stri func (me *DcService) DescribeDirectConnectTunnels(ctx context.Context, dcxId, name string) (infos []dc.DirectConnectTunnel, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewDescribeDirectConnectTunnelsRequest() defer func() { if errRet != nil { @@ -199,7 +202,7 @@ func (me *DcService) CreateDirectConnectTunnel(ctx context.Context, dcId, dcxNam bgpAsn, vlan, bandwidth int64, routeFilterPrefixes []string) (dcxId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewCreateDirectConnectTunnelRequest() defer func() { if errRet != nil { @@ -265,7 +268,7 @@ func (me *DcService) CreateDirectConnectTunnel(ctx context.Context, dcId, dcxNam func (me *DcService) DeleteDirectConnectTunnel(ctx context.Context, dcxId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewDeleteDirectConnectTunnelRequest() defer func() { if errRet != nil { @@ -288,7 +291,7 @@ func (me *DcService) ModifyDirectConnectTunnelAttribute(ctx context.Context, dcx bandwidth, bgpAsn int64, routeFilterPrefixes []string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewModifyDirectConnectTunnelAttributeRequest() defer func() { if errRet != nil { @@ -336,7 +339,7 @@ func (me *DcService) ModifyDirectConnectTunnelAttribute(ctx context.Context, dcx } func (me *DcService) DescribeDcShareDcxConfigById(ctx context.Context, directConnectTunnelId string) (ShareDcxConfig *dc.DirectConnectTunnel, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewDescribeDirectConnectTunnelsRequest() request.DirectConnectTunnelIds = []*string{&directConnectTunnelId} @@ -365,7 +368,7 @@ func (me *DcService) DescribeDcShareDcxConfigById(ctx context.Context, directCon } func (me *DcService) DescribeDcInternetAddressById(ctx context.Context, instanceId string) (internetAddress *dc.InternetAddressDetail, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewDescribeInternetAddressRequest() @@ -394,7 +397,7 @@ func (me *DcService) DescribeDcInternetAddressById(ctx context.Context, instance } func (me *DcService) DeleteDcInternetAddressById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewReleaseInternetAddressRequest() request.InstanceId = &instanceId @@ -418,7 +421,7 @@ func (me *DcService) DeleteDcInternetAddressById(ctx context.Context, instanceId } func (me *DcService) DescribeDcxExtraConfigById(ctx context.Context, directConnectTunnelId string) (dcxExtraConfig *dc.DirectConnectTunnelExtra, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewDescribeDirectConnectTunnelExtraRequest() request.DirectConnectTunnelId = &directConnectTunnelId @@ -444,7 +447,7 @@ func (me *DcService) DescribeDcxExtraConfigById(ctx context.Context, directConne func (me *DcService) DescribeDcInternetAddressQuota(ctx context.Context) (InternetAddressQuota *dc.DescribeInternetAddressQuotaResponse, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dc.NewDescribeInternetAddressQuotaRequest() ) @@ -470,7 +473,7 @@ func (me *DcService) DescribeDcInternetAddressQuota(ctx context.Context) (Intern func (me *DcService) DescribeDcInternetAddressStatistics(ctx context.Context) (statistics []*dc.InternetAddressStatistics, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dc.NewDescribeInternetAddressStatisticsRequest() ) @@ -495,7 +498,7 @@ func (me *DcService) DescribeDcInternetAddressStatistics(ctx context.Context) (s func (me *DcService) DescribeDcPublicDirectConnectTunnelRoutesByFilter(ctx context.Context, param map[string]interface{}) (PublicDirectConnectTunnelRoutes []*dc.DirectConnectTunnelRoute, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dc.NewDescribePublicDirectConnectTunnelRoutesRequest() ) @@ -545,7 +548,7 @@ func (me *DcService) DescribeDcPublicDirectConnectTunnelRoutesByFilter(ctx conte } func (me *DcService) DeleteDcInstanceById(ctx context.Context, directConnectId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dc.NewDeleteDirectConnectRequest() request.DirectConnectId = &directConnectId @@ -570,7 +573,7 @@ func (me *DcService) DeleteDcInstanceById(ctx context.Context, directConnectId s func (me *DcService) DescribeDcAccessPointsByFilter(ctx context.Context, param map[string]interface{}) (AccessPoints []*dc.AccessPoint, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dc.NewDescribeAccessPointsRequest() ) diff --git a/tencentcloud/data_source_tc_dcdb_accounts.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_accounts.go similarity index 86% rename from tencentcloud/data_source_tc_dcdb_accounts.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_accounts.go index 03c3ef3d9b..a3679bc5f6 100644 --- a/tencentcloud/data_source_tc_dcdb_accounts.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_accounts.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbAccounts() *schema.Resource { +func DataSourceTencentCloudDcdbAccounts() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbAccountsRead, Schema: map[string]*schema.Schema{ @@ -78,24 +81,24 @@ func dataSourceTencentCloudDcdbAccounts() *schema.Resource { } func dataSourceTencentCloudDcdbAccountsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_accounts.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_accounts.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { paramMap["instance_id"] = helper.String(v.(string)) } - dcdbService := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + dcdbService := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var dbAccountList []*dcdb.DBAccount - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dcdbService.DescribeDcdbAccountsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } dbAccountList = results return nil @@ -134,7 +137,7 @@ func dataSourceTencentCloudDcdbAccountsRead(d *schema.ResourceData, meta interfa if dbA.SlaveConst != nil { listMap["slave_const"] = dbA.SlaveConst } - ids = append(ids, *dbA.UserName+FILED_SP+*dbA.Host) + ids = append(ids, *dbA.UserName+tccommon.FILED_SP+*dbA.Host) retList = append(retList, listMap) } @@ -144,7 +147,7 @@ func dataSourceTencentCloudDcdbAccountsRead(d *schema.ResourceData, meta interfa output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), retList); e != nil { + if e := tccommon.WriteToFile(output.(string), retList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_accounts_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_accounts_test.go similarity index 82% rename from tencentcloud/data_source_tc_dcdb_accounts_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_accounts_test.go index 6c1c1d6a96..7d519f5f73 100644 --- a/tencentcloud/data_source_tc_dcdb_accounts_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_accounts_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudDCDBAccountsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDcdbAccountDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDataSourceDcdbAccounts, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDataSourceDcdbAccounts, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_accounts.basic"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_accounts.basic"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_accounts.basic", "list.#", "1"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_accounts.basic", "list.0.user_name"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_accounts.basic", "list.0.user_name", "mysql_ds"), diff --git a/tencentcloud/data_source_tc_dcdb_database_objects.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_database_objects.go similarity index 86% rename from tencentcloud/data_source_tc_dcdb_database_objects.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_database_objects.go index 27562d0a92..31c1786f7e 100644 --- a/tencentcloud/data_source_tc_dcdb_database_objects.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_database_objects.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbDatabaseObjects() *schema.Resource { +func DataSourceTencentCloudDcdbDatabaseObjects() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbDatabaseObjectsRead, Schema: map[string]*schema.Schema{ @@ -96,12 +99,12 @@ func dataSourceTencentCloudDcdbDatabaseObjects() *schema.Resource { } func dataSourceTencentCloudDcdbDatabaseObjectsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_database_objects.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_database_objects.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -112,14 +115,14 @@ func dataSourceTencentCloudDcdbDatabaseObjectsRead(d *schema.ResourceData, meta paramMap["db_name"] = helper.String(v.(string)) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *dcdb.DescribeDatabaseObjectsResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { var e error result, e = service.DescribeDcdbDBObjectsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -192,12 +195,12 @@ func dataSourceTencentCloudDcdbDatabaseObjectsRead(d *schema.ResourceData, meta } } - ids = append(ids, strings.Join([]string{*result.InstanceId, *result.DbName}, FILED_SP)) + ids = append(ids, strings.Join([]string{*result.InstanceId, *result.DbName}, tccommon.FILED_SP)) d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), data); e != nil { + if e := tccommon.WriteToFile(output.(string), data); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_database_objects_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_database_objects_test.go similarity index 73% rename from tencentcloud/data_source_tc_dcdb_database_objects_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_database_objects_test.go index 29da52568f..8664bf44d5 100644 --- a/tencentcloud/data_source_tc_dcdb_database_objects_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_database_objects_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudDCDBDatabaseObjectsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDCDBDatabaseObjectsDataSource, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDCDBDatabaseObjectsDataSource, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_database_objects.database_objects"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_database_objects.database_objects"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_database_objects.database_objects", "tables.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_database_objects.database_objects", "views.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_database_objects.database_objects", "procs.#"), diff --git a/tencentcloud/data_source_tc_dcdb_database_tables.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_database_tables.go similarity index 80% rename from tencentcloud/data_source_tc_dcdb_database_tables.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_database_tables.go index 7562c72e14..571b27f433 100644 --- a/tencentcloud/data_source_tc_dcdb_database_tables.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_database_tables.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbDatabaseTables() *schema.Resource { +func DataSourceTencentCloudDcdbDatabaseTables() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbDatabaseTablesRead, Schema: map[string]*schema.Schema{ @@ -62,12 +65,12 @@ func dataSourceTencentCloudDcdbDatabaseTables() *schema.Resource { } func dataSourceTencentCloudDcdbDatabaseTablesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_database_tables.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_database_tables.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -82,14 +85,14 @@ func dataSourceTencentCloudDcdbDatabaseTablesRead(d *schema.ResourceData, meta i paramMap["table"] = helper.String(v.(string)) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *dcdb.DescribeDatabaseTableResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { var e error result, e = service.DescribeDcdbDBTablesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -120,12 +123,12 @@ func dataSourceTencentCloudDcdbDatabaseTablesRead(d *schema.ResourceData, meta i } } - ids = append(ids, strings.Join([]string{*result.InstanceId, *result.DbName}, FILED_SP)) + ids = append(ids, strings.Join([]string{*result.InstanceId, *result.DbName}, tccommon.FILED_SP)) d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), data); e != nil { + if e := tccommon.WriteToFile(output.(string), data); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_database_tables_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_database_tables_test.go similarity index 69% rename from tencentcloud/data_source_tc_dcdb_database_tables_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_database_tables_test.go index 18d547ff26..04f3bee9b9 100644 --- a/tencentcloud/data_source_tc_dcdb_database_tables_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_database_tables_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudDCDBDatabaseTablesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDCDBDatabaseTablesDataSource, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDCDBDatabaseTablesDataSource, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_database_tables.database_tables"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_database_tables.database_tables"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_database_tables.database_tables", "cols.#"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_database_tables.database_tables", "db_name", "tf_test_db"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_database_tables.database_tables", "table", "tf_test_table"), diff --git a/tencentcloud/data_source_tc_dcdb_databases.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_databases.go similarity index 75% rename from tencentcloud/data_source_tc_dcdb_databases.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_databases.go index 15882e7bbb..265784d21a 100644 --- a/tencentcloud/data_source_tc_dcdb_databases.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_databases.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbDatabases() *schema.Resource { +func DataSourceTencentCloudDcdbDatabases() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbDatabasesRead, Schema: map[string]*schema.Schema{ @@ -45,24 +48,24 @@ func dataSourceTencentCloudDcdbDatabases() *schema.Resource { } func dataSourceTencentCloudDcdbDatabasesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_databases.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_databases.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { paramMap["instance_id"] = helper.String(v.(string)) } - dcdbService := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + dcdbService := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var dbs []*dcdb.Database - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dcdbService.DescribeDcdbDatabasesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } dbs = results return nil @@ -89,7 +92,7 @@ func dataSourceTencentCloudDcdbDatabasesRead(d *schema.ResourceData, meta interf output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), list); e != nil { + if e := tccommon.WriteToFile(output.(string), list); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_databases_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_databases_test.go similarity index 74% rename from tencentcloud/data_source_tc_dcdb_databases_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_databases_test.go index fdd9644163..ffdff9595d 100644 --- a/tencentcloud/data_source_tc_dcdb_databases_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_databases_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudDCDBDatabasesDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, // CheckDestroy: testAccCheckDcdbAccountDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDataSourceDcdbDatabases, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDataSourceDcdbDatabases, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_databases.databases"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_databases.databases"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_databases.databases", "list.#"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_databases.databases", "list.0.db_name", "mysql"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_databases.databases", "list.1.db_name", "performance_schema"), diff --git a/tencentcloud/data_source_tc_dcdb_file_download_url.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_file_download_url.go similarity index 73% rename from tencentcloud/data_source_tc_dcdb_file_download_url.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_file_download_url.go index 3ade6cfc57..6f0806dc91 100644 --- a/tencentcloud/data_source_tc_dcdb_file_download_url.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_file_download_url.go @@ -1,14 +1,17 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbFileDownloadUrl() *schema.Resource { +func DataSourceTencentCloudDcdbFileDownloadUrl() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbFileDownloadUrlRead, Schema: map[string]*schema.Schema{ @@ -46,12 +49,12 @@ func dataSourceTencentCloudDcdbFileDownloadUrl() *schema.Resource { } func dataSourceTencentCloudDcdbFileDownloadUrlRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_file_download_url.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_file_download_url.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( preSignedUrl *string instanceId string @@ -71,12 +74,12 @@ func dataSourceTencentCloudDcdbFileDownloadUrlRead(d *schema.ResourceData, meta paramMap["FilePath"] = helper.String(v.(string)) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcdbFileDownloadUrlByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } preSignedUrl = result return nil @@ -92,7 +95,7 @@ func dataSourceTencentCloudDcdbFileDownloadUrlRead(d *schema.ResourceData, meta d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), preSignedUrl); e != nil { + if e := tccommon.WriteToFile(output.(string), preSignedUrl); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_file_download_url_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_file_download_url_test.go similarity index 70% rename from tencentcloud/data_source_tc_dcdb_file_download_url_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_file_download_url_test.go index 3967257c8b..2478680ab6 100644 --- a/tencentcloud/data_source_tc_dcdb_file_download_url_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_file_download_url_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDcdbNeedFixFileDownloadUrlDataSource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbFileDownloadUrlDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_file_download_url.file_download_url"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_file_download_url.file_download_url"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_log_files.log_files", "shard_id", "shard-1b5r04az"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_log_files.log_files", "file_path"), // resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_log_files.log_files", "pre_signed_url"), @@ -27,7 +29,7 @@ func TestAccTencentCloudDcdbNeedFixFileDownloadUrlDataSource_basic(t *testing.T) }) } -const testAccDcdbFileDownloadUrlDataSource = CommonPresetDcdb + ` +const testAccDcdbFileDownloadUrlDataSource = tcacctest.CommonPresetDcdb + ` data "tencentcloud_dcdb_file_download_url" "file_download_url" { instance_id = local.dcdb_id diff --git a/tencentcloud/data_source_tc_dcdb_instance_node_info.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_instance_node_info.go similarity index 79% rename from tencentcloud/data_source_tc_dcdb_instance_node_info.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_instance_node_info.go index 82913a2f25..54fc119fe1 100644 --- a/tencentcloud/data_source_tc_dcdb_instance_node_info.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_instance_node_info.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbInstanceNodeInfo() *schema.Resource { +func DataSourceTencentCloudDcdbInstanceNodeInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbInstanceNodeInfoRead, Schema: map[string]*schema.Schema{ @@ -54,12 +57,12 @@ func dataSourceTencentCloudDcdbInstanceNodeInfo() *schema.Resource { } func dataSourceTencentCloudDcdbInstanceNodeInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_instance_node_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_instance_node_info.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instanceId string ) @@ -70,14 +73,14 @@ func dataSourceTencentCloudDcdbInstanceNodeInfoRead(d *schema.ResourceData, meta instanceId = v.(string) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var nodesInfo []*dcdb.BriefNodeInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcdbInstanceNodeInfoByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } nodesInfo = result return nil @@ -113,7 +116,7 @@ func dataSourceTencentCloudDcdbInstanceNodeInfoRead(d *schema.ResourceData, meta d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_instance_node_info_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_instance_node_info_test.go similarity index 62% rename from tencentcloud/data_source_tc_dcdb_instance_node_info_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_instance_node_info_test.go index 8c1def24fb..ae4d2e7cc9 100644 --- a/tencentcloud/data_source_tc_dcdb_instance_node_info_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_instance_node_info_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDcdbInstanceNodeInfoDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbInstanceNodeInfoDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instance_node_info.instance_node_info"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instance_node_info.instance_node_info"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_instance_node_info.instance_node_info", "nodes_info.#"), ), }, @@ -25,7 +27,7 @@ func TestAccTencentCloudDcdbInstanceNodeInfoDataSource_basic(t *testing.T) { }) } -const testAccDcdbInstanceNodeInfoDataSource = CommonPresetDcdb + ` +const testAccDcdbInstanceNodeInfoDataSource = tcacctest.CommonPresetDcdb + ` data "tencentcloud_dcdb_instance_node_info" "instance_node_info" { instance_id = local.dcdb_id diff --git a/tencentcloud/data_source_tc_dcdb_instances.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_instances.go similarity index 95% rename from tencentcloud/data_source_tc_dcdb_instances.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_instances.go index b808fb024d..2f4cb56728 100644 --- a/tencentcloud/data_source_tc_dcdb_instances.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_instances.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbInstances() *schema.Resource { +func DataSourceTencentCloudDcdbInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbInstancesRead, Schema: map[string]*schema.Schema{ @@ -323,11 +326,11 @@ func dataSourceTencentCloudDcdbInstances() *schema.Resource { } func dataSourceTencentCloudDcdbInstancesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_instances.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_instances.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_ids"); ok { @@ -376,13 +379,13 @@ func dataSourceTencentCloudDcdbInstancesRead(d *schema.ResourceData, meta interf paramMap["subnet_id"] = helper.String(v.(string)) } - dcdbService := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + dcdbService := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var instances []*dcdb.DCDBInstanceInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dcdbService.DescribeDcdbInstancesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } instances = results return nil @@ -550,7 +553,7 @@ func dataSourceTencentCloudDcdbInstancesRead(d *schema.ResourceData, meta interf output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), instanceList); e != nil { + if e := tccommon.WriteToFile(output.(string), instanceList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_instances_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_instances_test.go similarity index 81% rename from tencentcloud/data_source_tc_dcdb_instances_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_instances_test.go index f558a84f28..847db2af4c 100644 --- a/tencentcloud/data_source_tc_dcdb_instances_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_instances_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,17 +13,17 @@ func TestAccTencentCloudDCDBInstancesDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDataSourceDcdbInstances_basic, defaultDcdbInstanceId, defaultDcdbInstanceName, defaultDcdbInsVpcId, defaultDcdbInsIdSubnetId), + Config: fmt.Sprintf(testAccDataSourceDcdbInstances_basic, tcacctest.DefaultDcdbInstanceId, tcacctest.DefaultDcdbInstanceName, tcacctest.DefaultDcdbInsVpcId, tcacctest.DefaultDcdbInsIdSubnetId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_instances.instances", "list.#"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_instances.instances", "list.#", "1"), - resource.TestCheckResourceAttr("data.tencentcloud_dcdb_instances.instances", "list.0.instance_id", defaultDcdbInstanceId), - resource.TestCheckResourceAttr("data.tencentcloud_dcdb_instances.instances", "list.0.instance_name", defaultDcdbInstanceName), + resource.TestCheckResourceAttr("data.tencentcloud_dcdb_instances.instances", "list.0.instance_id", tcacctest.DefaultDcdbInstanceId), + resource.TestCheckResourceAttr("data.tencentcloud_dcdb_instances.instances", "list.0.instance_name", tcacctest.DefaultDcdbInstanceName), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_instances.instances", "list.0.app_id"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_instances.instances", "list.0.project_id", "0"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_instances.instances", "list.0.region", "ap-guangzhou"), @@ -57,30 +59,30 @@ func TestAccTencentCloudDCDBInstancesDataSource(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccDataSourceDcdbInstances_id, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDataSourceDcdbInstances_id, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_instances.instances", "list.#"), ), }, { - Config: fmt.Sprintf(testAccDataSourceDcdbInstances_name, defaultDcdbInstanceName), + Config: fmt.Sprintf(testAccDataSourceDcdbInstances_name, tcacctest.DefaultDcdbInstanceName), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_instances.instances", "list.#"), ), }, { - Config: fmt.Sprintf(testAccDataSourceDcdbInstances_disable_excluster, defaultDcdbInstanceName), + Config: fmt.Sprintf(testAccDataSourceDcdbInstances_disable_excluster, tcacctest.DefaultDcdbInstanceName), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_instances.instances", "list.#"), ), }, { - Config: fmt.Sprintf(testAccDataSourceDcdbInstances_disable_vpc_filter, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDataSourceDcdbInstances_disable_vpc_filter, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_instances.instances"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_instances.instances", "list.#"), ), }, diff --git a/tencentcloud/data_source_tc_dcdb_log_files.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_log_files.go similarity index 85% rename from tencentcloud/data_source_tc_dcdb_log_files.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_log_files.go index f57b0919da..e68c02612d 100644 --- a/tencentcloud/data_source_tc_dcdb_log_files.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_log_files.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbLogFiles() *schema.Resource { +func DataSourceTencentCloudDcdbLogFiles() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbLogFilesRead, Schema: map[string]*schema.Schema{ @@ -83,12 +86,12 @@ func dataSourceTencentCloudDcdbLogFiles() *schema.Resource { } func dataSourceTencentCloudDcdbLogFilesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_log_files.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_log_files.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instanceId string shardId string @@ -110,14 +113,14 @@ func dataSourceTencentCloudDcdbLogFilesRead(d *schema.ResourceData, meta interfa paramMap["Type"] = helper.IntInt64(v.(int)) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *dcdb.DescribeDBLogFilesResponseParams var e error - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e = service.DescribeDcdbLogFilesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -165,7 +168,7 @@ func dataSourceTencentCloudDcdbLogFilesRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_log_files_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_log_files_test.go similarity index 70% rename from tencentcloud/data_source_tc_dcdb_log_files_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_log_files_test.go index f4111871a5..7bd26c4009 100644 --- a/tencentcloud/data_source_tc_dcdb_log_files_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_log_files_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDcdbLogFilesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbLogFilesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_log_files.log_files"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_log_files.log_files"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_log_files.log_files", "shard_id", "shard-1b5r04az"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_log_files.log_files", "type", "1"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_log_files.log_files", "files.#"), @@ -27,7 +29,7 @@ func TestAccTencentCloudDcdbLogFilesDataSource_basic(t *testing.T) { }) } -const testAccDcdbLogFilesDataSource = CommonPresetDcdb + ` +const testAccDcdbLogFilesDataSource = tcacctest.CommonPresetDcdb + ` data "tencentcloud_dcdb_log_files" "log_files" { instance_id = local.dcdb_id diff --git a/tencentcloud/data_source_tc_dcdb_orders.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_orders.go similarity index 84% rename from tencentcloud/data_source_tc_dcdb_orders.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_orders.go index 777241ca68..444a386e91 100644 --- a/tencentcloud/data_source_tc_dcdb_orders.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_orders.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbOrders() *schema.Resource { +func DataSourceTencentCloudDcdbOrders() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbOrdersRead, Schema: map[string]*schema.Schema{ @@ -75,12 +78,12 @@ func dataSourceTencentCloudDcdbOrders() *schema.Resource { } func dataSourceTencentCloudDcdbOrdersRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_orders.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_orders.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("deal_names"); ok { @@ -88,14 +91,14 @@ func dataSourceTencentCloudDcdbOrdersRead(d *schema.ResourceData, meta interface paramMap["DealNames"] = helper.InterfacesStringsPoint(dealNamesSet) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var deals []*dcdb.Deal - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcdbOrdersByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } deals = result return nil @@ -145,7 +148,7 @@ func dataSourceTencentCloudDcdbOrdersRead(d *schema.ResourceData, meta interface d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_orders_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_orders_test.go similarity index 72% rename from tencentcloud/data_source_tc_dcdb_orders_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_orders_test.go index d9003af880..7473b4bb39 100644 --- a/tencentcloud/data_source_tc_dcdb_orders_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_orders_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDcdbOrdersDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbOrdersDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_orders.orders"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_orders.orders"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_orders.orders", "deal_names.#", "1"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_orders.orders", "deals.#"), ), diff --git a/tencentcloud/data_source_tc_dcdb_parameters.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_parameters.go similarity index 86% rename from tencentcloud/data_source_tc_dcdb_parameters.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_parameters.go index 6c48af3b17..1137f633d6 100644 --- a/tencentcloud/data_source_tc_dcdb_parameters.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_parameters.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbParameters() *schema.Resource { +func DataSourceTencentCloudDcdbParameters() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbParametersRead, Schema: map[string]*schema.Schema{ @@ -108,24 +111,24 @@ func dataSourceTencentCloudDcdbParameters() *schema.Resource { } func dataSourceTencentCloudDcdbParametersRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_parameters.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_parameters.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { paramMap["instance_id"] = helper.String(v.(string)) } - dcdbService := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + dcdbService := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var params []*dcdb.ParamDesc - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dcdbService.DescribeDcdbParametersByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } params = results return nil @@ -180,7 +183,7 @@ func dataSourceTencentCloudDcdbParametersRead(d *schema.ResourceData, meta inter if param.NeedRestart != nil { paramMap["need_restart"] = param.NeedRestart } - ids = append(ids, *param.Param+FILED_SP+*param.Value) + ids = append(ids, *param.Param+tccommon.FILED_SP+*param.Value) paramList = append(paramList, paramMap) } d.SetId(helper.DataResourceIdsHash(ids)) @@ -189,7 +192,7 @@ func dataSourceTencentCloudDcdbParametersRead(d *schema.ResourceData, meta inter output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), paramList); e != nil { + if e := tccommon.WriteToFile(output.(string), paramList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_parameters_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_parameters_test.go similarity index 65% rename from tencentcloud/data_source_tc_dcdb_parameters_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_parameters_test.go index cc6de76c1f..a54b5c06f8 100644 --- a/tencentcloud/data_source_tc_dcdb_parameters_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_parameters_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudDCDBParametersDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDataSourceDcdbParameters_basic, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDataSourceDcdbParameters_basic, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_parameters.parameters"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_parameters.parameters"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_parameters.parameters", "list.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_parameters.parameters", "list.0.param"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_parameters.parameters", "list.0.value"), diff --git a/tencentcloud/data_source_tc_dcdb_price.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_price.go similarity index 86% rename from tencentcloud/data_source_tc_dcdb_price.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_price.go index f0471934a2..44e7341ccd 100644 --- a/tencentcloud/data_source_tc_dcdb_price.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_price.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbPrice() *schema.Resource { +func DataSourceTencentCloudDcdbPrice() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbPriceRead, Schema: map[string]*schema.Schema{ @@ -89,12 +92,12 @@ func dataSourceTencentCloudDcdbPrice() *schema.Resource { } func dataSourceTencentCloudDcdbPriceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_price.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_price.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( ids []string ) @@ -142,14 +145,14 @@ func dataSourceTencentCloudDcdbPriceRead(d *schema.ResourceData, meta interface{ paramMap["AmountUnit"] = helper.String(v.(string)) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *dcdb.DescribeDCDBPriceResponseParams var e error - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e = service.DescribeDcdbPriceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -170,7 +173,7 @@ func dataSourceTencentCloudDcdbPriceRead(d *schema.ResourceData, meta interface{ d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_price_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_price_test.go similarity index 83% rename from tencentcloud/data_source_tc_dcdb_price_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_price_test.go index 874f442fdf..09fadd2889 100644 --- a/tencentcloud/data_source_tc_dcdb_price_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_price_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDcdbPriceDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbPriceDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_price.price"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_price.price"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_price.price", "zone"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_price.price", "instance_count", "1"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_price.price", "period", "1"), @@ -35,7 +37,7 @@ func TestAccTencentCloudDcdbPriceDataSource_basic(t *testing.T) { }) } -const testAccDcdbPriceDataSource = defaultAzVariable + ` +const testAccDcdbPriceDataSource = tcacctest.DefaultAzVariable + ` data "tencentcloud_dcdb_price" "price" { instance_count = 1 diff --git a/tencentcloud/data_source_tc_dcdb_project_security_groups.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_project_security_groups.go similarity index 90% rename from tencentcloud/data_source_tc_dcdb_project_security_groups.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_project_security_groups.go index 2fefecf555..7037d0d95b 100644 --- a/tencentcloud/data_source_tc_dcdb_project_security_groups.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_project_security_groups.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbProjectSecurityGroups() *schema.Resource { +func DataSourceTencentCloudDcdbProjectSecurityGroups() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbProjectSecurityGroupsRead, Schema: map[string]*schema.Schema{ @@ -128,12 +131,12 @@ func dataSourceTencentCloudDcdbProjectSecurityGroups() *schema.Resource { } func dataSourceTencentCloudDcdbProjectSecurityGroupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_project_security_groups.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_project_security_groups.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("product"); ok { @@ -144,14 +147,14 @@ func dataSourceTencentCloudDcdbProjectSecurityGroupsRead(d *schema.ResourceData, paramMap["ProjectId"] = helper.IntInt64(v.(int)) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var groups []*dcdb.SecurityGroup - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcdbProjectSecurityGroupsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } groups = result return nil @@ -251,7 +254,7 @@ func dataSourceTencentCloudDcdbProjectSecurityGroupsRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_project_security_groups_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_project_security_groups_test.go similarity index 84% rename from tencentcloud/data_source_tc_dcdb_project_security_groups_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_project_security_groups_test.go index c09ee58fe4..b502e0bd4d 100644 --- a/tencentcloud/data_source_tc_dcdb_project_security_groups_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_project_security_groups_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDcdbProjectSecurityGroupsDataSource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbProjectSecurityGroupsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_project_security_groups.project_security_groups"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_project_security_groups.project_security_groups"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_project_security_groups.project_security_groups", "product", "dcdb"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_project_security_groups.project_security_groups", "project_id", "0"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_project_security_groups.project_security_groups", "groups.#"), diff --git a/tencentcloud/data_source_tc_dcdb_projects.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_projects.go similarity index 85% rename from tencentcloud/data_source_tc_dcdb_projects.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_projects.go index 10ccffbfd0..8a707810ba 100644 --- a/tencentcloud/data_source_tc_dcdb_projects.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_projects.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbProjects() *schema.Resource { +func DataSourceTencentCloudDcdbProjects() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbProjectsRead, Schema: map[string]*schema.Schema{ @@ -88,21 +91,21 @@ func dataSourceTencentCloudDcdbProjects() *schema.Resource { } func dataSourceTencentCloudDcdbProjectsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_projects.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_projects.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var projects []*dcdb.Project - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcdbProjectsByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } projects = result return nil @@ -172,7 +175,7 @@ func dataSourceTencentCloudDcdbProjectsRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_projects_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_projects_test.go similarity index 81% rename from tencentcloud/data_source_tc_dcdb_projects_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_projects_test.go index 75774b9aab..c0ba434550 100644 --- a/tencentcloud/data_source_tc_dcdb_projects_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_projects_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDcdbProjectsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbProjectsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_projects.projects"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_projects.projects"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_projects.projects", "projects.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_projects.projects", "projects.0.project_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_projects.projects", "projects.0.owner_uin"), diff --git a/tencentcloud/data_source_tc_dcdb_renewal_price.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_renewal_price.go similarity index 79% rename from tencentcloud/data_source_tc_dcdb_renewal_price.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_renewal_price.go index dad36d6a7c..c21d4a8502 100644 --- a/tencentcloud/data_source_tc_dcdb_renewal_price.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_renewal_price.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbRenewalPrice() *schema.Resource { +func DataSourceTencentCloudDcdbRenewalPrice() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbRenewalPriceRead, Schema: map[string]*schema.Schema{ @@ -53,12 +56,12 @@ func dataSourceTencentCloudDcdbRenewalPrice() *schema.Resource { } func dataSourceTencentCloudDcdbRenewalPriceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_renewal_price.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_renewal_price.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instanceId string ) @@ -79,12 +82,12 @@ func dataSourceTencentCloudDcdbRenewalPriceRead(d *schema.ResourceData, meta int var result *dcdb.DescribeDCDBRenewalPriceResponseParams var e error - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e = service.DescribeDcdbRenewalPriceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -105,7 +108,7 @@ func dataSourceTencentCloudDcdbRenewalPriceRead(d *schema.ResourceData, meta int d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_renewal_price_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_renewal_price_test.go similarity index 54% rename from tencentcloud/data_source_tc_dcdb_renewal_price_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_renewal_price_test.go index 08a622df3a..43e097f6d8 100644 --- a/tencentcloud/data_source_tc_dcdb_renewal_price_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_renewal_price_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,19 +12,19 @@ func TestAccTencentCloudDcdbRenewalPriceDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbRenewalPriceDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_renewal_price.renewal_price")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_renewal_price.renewal_price")), }, }, }) } -const testAccDcdbRenewalPriceDataSource = CommonPresetDcdb + ` +const testAccDcdbRenewalPriceDataSource = tcacctest.CommonPresetDcdb + ` data "tencentcloud_dcdb_renewal_price" "renewal_price" { instance_id = local.dcdb_id diff --git a/tencentcloud/data_source_tc_dcdb_sale_info.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_sale_info.go similarity index 91% rename from tencentcloud/data_source_tc_dcdb_sale_info.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_sale_info.go index 0e4792b633..3b191d60df 100644 --- a/tencentcloud/data_source_tc_dcdb_sale_info.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_sale_info.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbSaleInfo() *schema.Resource { +func DataSourceTencentCloudDcdbSaleInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbSaleInfoRead, Schema: map[string]*schema.Schema{ @@ -144,22 +147,22 @@ func dataSourceTencentCloudDcdbSaleInfo() *schema.Resource { } func dataSourceTencentCloudDcdbSaleInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_sale_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_sale_info.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var regionList []*dcdb.RegionInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcdbSaleInfoByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } regionList = result return nil @@ -284,7 +287,7 @@ func dataSourceTencentCloudDcdbSaleInfoRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_sale_info_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_sale_info_test.go similarity index 90% rename from tencentcloud/data_source_tc_dcdb_sale_info_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_sale_info_test.go index 04f2b628cd..cbfd6de4ca 100644 --- a/tencentcloud/data_source_tc_dcdb_sale_info_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_sale_info_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDcdbSaleInfoDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbSaleInfoDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_sale_info.sale_info"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_sale_info.sale_info"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_sale_info.sale_info", "region_list.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_sale_info.sale_info", "region_list.0.region"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_sale_info.sale_info", "region_list.0.region_id"), diff --git a/tencentcloud/data_source_tc_dcdb_security_groups.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_security_groups.go similarity index 89% rename from tencentcloud/data_source_tc_dcdb_security_groups.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_security_groups.go index f53466bee7..c6c5f724f8 100644 --- a/tencentcloud/data_source_tc_dcdb_security_groups.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_security_groups.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbSecurityGroups() *schema.Resource { +func DataSourceTencentCloudDcdbSecurityGroups() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbSecurityGroupsRead, Schema: map[string]*schema.Schema{ @@ -118,24 +121,24 @@ func dataSourceTencentCloudDcdbSecurityGroups() *schema.Resource { } func dataSourceTencentCloudDcdbSecurityGroupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_security_groups.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_security_groups.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { paramMap["instance_id"] = helper.String(v.(string)) } - dcdbService := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + dcdbService := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var groups []*dcdb.SecurityGroup - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dcdbService.DescribeDcdbSecurityGroupsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } groups = results return nil @@ -213,7 +216,7 @@ func dataSourceTencentCloudDcdbSecurityGroupsRead(d *schema.ResourceData, meta i output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), groupList); e != nil { + if e := tccommon.WriteToFile(output.(string), groupList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_security_groups_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_security_groups_test.go similarity index 68% rename from tencentcloud/data_source_tc_dcdb_security_groups_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_security_groups_test.go index 969ca7408b..52f89446b7 100644 --- a/tencentcloud/data_source_tc_dcdb_security_groups_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_security_groups_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,17 +13,17 @@ func TestAccTencentCloudDCDBSecurityGroupsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDataSourceDcdbSecurityGroups_basic, defaultDcdbSGId, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDataSourceDcdbSecurityGroups_basic, tcacctest.DefaultDcdbSGId, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_security_groups.security_groups"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_security_groups.security_groups"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_security_groups.security_groups", "list.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_security_groups.security_groups", "list.0.create_time"), - resource.TestCheckResourceAttr("data.tencentcloud_dcdb_security_groups.security_groups", "list.0.security_group_id", defaultDcdbSGId), - resource.TestCheckResourceAttr("data.tencentcloud_dcdb_security_groups.security_groups", "list.0.security_group_name", defaultDcdbSGName), + resource.TestCheckResourceAttr("data.tencentcloud_dcdb_security_groups.security_groups", "list.0.security_group_id", tcacctest.DefaultDcdbSGId), + resource.TestCheckResourceAttr("data.tencentcloud_dcdb_security_groups.security_groups", "list.0.security_group_name", tcacctest.DefaultDcdbSGName), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_security_groups.security_groups", "list.0.inbound.#"), ), }, diff --git a/tencentcloud/data_source_tc_dcdb_shard_spec.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_shard_spec.go similarity index 87% rename from tencentcloud/data_source_tc_dcdb_shard_spec.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_shard_spec.go index 83e52c70fa..b716765a68 100644 --- a/tencentcloud/data_source_tc_dcdb_shard_spec.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_shard_spec.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbShardSpec() *schema.Resource { +func DataSourceTencentCloudDcdbShardSpec() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbShardSpecRead, Schema: map[string]*schema.Schema{ @@ -87,22 +90,22 @@ func dataSourceTencentCloudDcdbShardSpec() *schema.Resource { } func dataSourceTencentCloudDcdbShardSpecRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_shard_spec.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_shard_spec.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var specConfig []*dcdb.SpecConfig - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDcdbShardSpecByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } specConfig = result return nil @@ -175,7 +178,7 @@ func dataSourceTencentCloudDcdbShardSpecRead(d *schema.ResourceData, meta interf d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_shard_spec_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_shard_spec_test.go similarity index 87% rename from tencentcloud/data_source_tc_dcdb_shard_spec_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_shard_spec_test.go index 864f440587..8bae08a3ae 100644 --- a/tencentcloud/data_source_tc_dcdb_shard_spec_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_shard_spec_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudDcdbShardSpecDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbShardSpecDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_shard_spec.shard_spec"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_shard_spec.shard_spec"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_shard_spec.shard_spec", "spec_config.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_shard_spec.shard_spec", "spec_config.0.machine"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_shard_spec.shard_spec", "spec_config.0.spec_config_infos.#"), diff --git a/tencentcloud/data_source_tc_dcdb_shards.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_shards.go similarity index 91% rename from tencentcloud/data_source_tc_dcdb_shards.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_shards.go index fa0f2cb013..4bf2496d41 100644 --- a/tencentcloud/data_source_tc_dcdb_shards.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_shards.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbShards() *schema.Resource { +func DataSourceTencentCloudDcdbShards() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbShardsRead, Schema: map[string]*schema.Schema{ @@ -167,11 +170,11 @@ func dataSourceTencentCloudDcdbShards() *schema.Resource { } func dataSourceTencentCloudDcdbShardsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_shards.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_shards.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -187,13 +190,13 @@ func dataSourceTencentCloudDcdbShardsRead(d *schema.ResourceData, meta interface paramMap["shard_instance_ids"] = ids } - dcdbService := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + dcdbService := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var shards []*dcdb.DCDBShardInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dcdbService.DescribeDcdbShardsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } shards = results return nil @@ -292,7 +295,7 @@ func dataSourceTencentCloudDcdbShardsRead(d *schema.ResourceData, meta interface output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), shardList); e != nil { + if e := tccommon.WriteToFile(output.(string), shardList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_shards_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_shards_test.go similarity index 69% rename from tencentcloud/data_source_tc_dcdb_shards_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_shards_test.go index 1cf0959d20..0f18435b71 100644 --- a/tencentcloud/data_source_tc_dcdb_shards_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_shards_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,17 +13,17 @@ func TestAccTencentCloudDCDBShardsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDataSourceDcdbShards_basic, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDataSourceDcdbShards_basic, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_shards.shards"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_shards.shards"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_shards.shards", "list.#", "2"), - resource.TestCheckResourceAttr("data.tencentcloud_dcdb_shards.shards", "list.0.instance_id", defaultDcdbInstanceId), + resource.TestCheckResourceAttr("data.tencentcloud_dcdb_shards.shards", "list.0.instance_id", tcacctest.DefaultDcdbInstanceId), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_shards.shards", "list.0.shard_instance_id"), - resource.TestCheckResourceAttr("data.tencentcloud_dcdb_shards.shards", "list.1.instance_id", defaultDcdbInstanceId), + resource.TestCheckResourceAttr("data.tencentcloud_dcdb_shards.shards", "list.1.instance_id", tcacctest.DefaultDcdbInstanceId), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_shards.shards", "list.1.shard_instance_id"), ), }, diff --git a/tencentcloud/data_source_tc_dcdb_slow_logs.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_slow_logs.go similarity index 93% rename from tencentcloud/data_source_tc_dcdb_slow_logs.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_slow_logs.go index 4c383e9986..1ea813d146 100644 --- a/tencentcloud/data_source_tc_dcdb_slow_logs.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_slow_logs.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbSlowLogs() *schema.Resource { +func DataSourceTencentCloudDcdbSlowLogs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbSlowLogsRead, Schema: map[string]*schema.Schema{ @@ -195,12 +198,12 @@ func dataSourceTencentCloudDcdbSlowLogs() *schema.Resource { } func dataSourceTencentCloudDcdbSlowLogsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_slow_logs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_slow_logs.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instanceId string ) @@ -239,17 +242,17 @@ func dataSourceTencentCloudDcdbSlowLogsRead(d *schema.ResourceData, meta interfa paramMap["Slave"] = helper.IntInt64(v.(int)) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( resp *dcdb.DescribeDBSlowLogsResponseParams slowLogs []*dcdb.SlowLogData e error ) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { slowLogs, resp, e = service.DescribeDcdbSlowLogsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -365,7 +368,7 @@ func dataSourceTencentCloudDcdbSlowLogsRead(d *schema.ResourceData, meta interfa d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), slowLogs); e != nil { + if e := tccommon.WriteToFile(output.(string), slowLogs); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_slow_logs_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_slow_logs_test.go similarity index 91% rename from tencentcloud/data_source_tc_dcdb_slow_logs_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_slow_logs_test.go index 0be97e95f1..de9fae8e0d 100644 --- a/tencentcloud/data_source_tc_dcdb_slow_logs_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_slow_logs_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,14 +17,14 @@ func TestAccTencentCloudDcdbSlowLogsDataSource_basic(t *testing.T) { endTime := time.Now().In(loc).Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccDcdbSlowLogsDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_slow_logs.slow_logs"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_slow_logs.slow_logs"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_slow_logs.slow_logs", "instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_slow_logs.slow_logs", "start_time", startTime), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_slow_logs.slow_logs", "end_time", endTime), @@ -57,7 +59,7 @@ func TestAccTencentCloudDcdbSlowLogsDataSource_basic(t *testing.T) { }) } -const testAccDcdbSlowLogsDataSource = CommonPresetDcdb + ` +const testAccDcdbSlowLogsDataSource = tcacctest.CommonPresetDcdb + ` data "tencentcloud_dcdb_slow_logs" "slow_logs" { instance_id = local.dcdb_id diff --git a/tencentcloud/data_source_tc_dcdb_upgrade_price.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_upgrade_price.go similarity index 91% rename from tencentcloud/data_source_tc_dcdb_upgrade_price.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_upgrade_price.go index c235c99567..fe8f9b5c57 100644 --- a/tencentcloud/data_source_tc_dcdb_upgrade_price.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_upgrade_price.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDcdbUpgradePrice() *schema.Resource { +func DataSourceTencentCloudDcdbUpgradePrice() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcdbUpgradePriceRead, Schema: map[string]*schema.Schema{ @@ -153,12 +156,12 @@ func dataSourceTencentCloudDcdbUpgradePrice() *schema.Resource { } func dataSourceTencentCloudDcdbUpgradePriceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dcdb_upgrade_price.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dcdb_upgrade_price.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instanceId string ) @@ -227,14 +230,14 @@ func dataSourceTencentCloudDcdbUpgradePriceRead(d *schema.ResourceData, meta int paramMap["AmountUnit"] = helper.String(v.(string)) } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *dcdb.DescribeDCDBUpgradePriceResponseParams var e error - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e = service.DescribeDcdbUpgradePriceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -259,7 +262,7 @@ func dataSourceTencentCloudDcdbUpgradePriceRead(d *schema.ResourceData, meta int d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dcdb_upgrade_price_test.go b/tencentcloud/services/dcdb/data_source_tc_dcdb_upgrade_price_test.go similarity index 87% rename from tencentcloud/data_source_tc_dcdb_upgrade_price_test.go rename to tencentcloud/services/dcdb/data_source_tc_dcdb_upgrade_price_test.go index 1008639aaf..647cdb17f1 100644 --- a/tencentcloud/data_source_tc_dcdb_upgrade_price_test.go +++ b/tencentcloud/services/dcdb/data_source_tc_dcdb_upgrade_price_test.go @@ -1,22 +1,24 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDcdbUpgradePriceDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbUpgradePriceDataSourceAdd, - PreConfig: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_upgrade_price.add_upgrade_price"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_upgrade_price.add_upgrade_price"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_upgrade_price.add_upgrade_price", "instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_upgrade_price.add_upgrade_price", "upgrade_type", "ADD"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_upgrade_price.add_upgrade_price", "add_shard_config.#"), @@ -32,9 +34,9 @@ func TestAccTencentCloudDcdbUpgradePriceDataSource_basic(t *testing.T) { }, { Config: testAccDcdbUpgradePriceDataSourceExpand, - PreConfig: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_upgrade_price.expand_upgrade_price"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_upgrade_price.expand_upgrade_price"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_upgrade_price.expand_upgrade_price", "instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_upgrade_price.expand_upgrade_price", "upgrade_type", "EXPAND"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_upgrade_price.expand_upgrade_price", "expand_shard_config.#"), @@ -51,9 +53,9 @@ func TestAccTencentCloudDcdbUpgradePriceDataSource_basic(t *testing.T) { }, { Config: testAccDcdbUpgradePriceDataSourceSplit, - PreConfig: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_upgrade_price.split_upgrade_price"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dcdb_upgrade_price.split_upgrade_price"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_upgrade_price.split_upgrade_price", "instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_dcdb_upgrade_price.split_upgrade_price", "upgrade_type", "SPLIT"), resource.TestCheckResourceAttrSet("data.tencentcloud_dcdb_upgrade_price.split_upgrade_price", "split_shard_config.#"), diff --git a/tencentcloud/extension_dcdb.go b/tencentcloud/services/dcdb/extension_dcdb.go similarity index 90% rename from tencentcloud/extension_dcdb.go rename to tencentcloud/services/dcdb/extension_dcdb.go index 6d1e56d376..bbe99c6bc4 100644 --- a/tencentcloud/extension_dcdb.go +++ b/tencentcloud/services/dcdb/extension_dcdb.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcdb const ( DCDB_WAN_STATUS_UNOPEN = 0 diff --git a/tencentcloud/resource_tc_dcdb_account.go b/tencentcloud/services/dcdb/resource_tc_dcdb_account.go similarity index 74% rename from tencentcloud/resource_tc_dcdb_account.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_account.go index ecae0fedab..a9a8446ccb 100644 --- a/tencentcloud/resource_tc_dcdb_account.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_account.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcdb import ( "context" @@ -7,13 +7,16 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbAccount() *schema.Resource { +func ResourceTencentCloudDcdbAccount() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudDcdbAccountRead, Create: resourceTencentCloudDcdbAccountCreate, @@ -70,10 +73,10 @@ func resourceTencentCloudDcdbAccount() *schema.Resource { } func resourceTencentCloudDcdbAccountCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_account.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_account.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dcdb.NewCreateAccountRequest() @@ -114,10 +117,10 @@ func resourceTencentCloudDcdbAccountCreate(d *schema.ResourceData, meta interfac request.MaxUserConnections = helper.IntUint64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().CreateAccount(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().CreateAccount(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -133,20 +136,20 @@ func resourceTencentCloudDcdbAccountCreate(d *schema.ResourceData, meta interfac instanceId = *response.Response.InstanceId - d.SetId(instanceId + FILED_SP + userName) + d.SetId(instanceId + tccommon.FILED_SP + userName) return resourceTencentCloudDcdbAccountRead(d, meta) } func resourceTencentCloudDcdbAccountRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_account.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_account.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -191,15 +194,15 @@ func resourceTencentCloudDcdbAccountRead(d *schema.ResourceData, meta interface{ } func resourceTencentCloudDcdbAccountUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_account.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_account.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - // ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + // ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request := dcdb.NewModifyAccountDescriptionRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -228,10 +231,10 @@ func resourceTencentCloudDcdbAccountUpdate(d *schema.ResourceData, meta interfac } request.Password = helper.String(v.(string)) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ResetAccountPassword(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ResetAccountPassword(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -261,10 +264,10 @@ func resourceTencentCloudDcdbAccountUpdate(d *schema.ResourceData, meta interfac return fmt.Errorf("`max_user_connections` do not support change now.") } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ModifyAccountDescription(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ModifyAccountDescription(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -281,15 +284,15 @@ func resourceTencentCloudDcdbAccountUpdate(d *schema.ResourceData, meta interfac } func resourceTencentCloudDcdbAccountDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_account.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_account.delete")() + defer tccommon.InconsistentCheck(d, meta)() var host string - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken, %s", d.Id()) } @@ -307,7 +310,7 @@ func resourceTencentCloudDcdbAccountDelete(d *schema.ResourceData, meta interfac return err } - conf := BuildStateChangeConf([]string{}, []string{"deleted"}, readRetryTimeout, time.Second, service.DcdbAccountRefreshFunc(instanceId, userName, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"deleted"}, tccommon.ReadRetryTimeout, time.Second, service.DcdbAccountRefreshFunc(instanceId, userName, []string{})) if _, e := conf.WaitForState(); e != nil { return e } diff --git a/tencentcloud/resource_tc_dcdb_account_privileges.go b/tencentcloud/services/dcdb/resource_tc_dcdb_account_privileges.go similarity index 91% rename from tencentcloud/resource_tc_dcdb_account_privileges.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_account_privileges.go index 99a139beed..c6ef7406f5 100644 --- a/tencentcloud/resource_tc_dcdb_account_privileges.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_account_privileges.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcdb import ( "context" @@ -7,13 +7,16 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbAccountPrivileges() *schema.Resource { +func ResourceTencentCloudDcdbAccountPrivileges() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbAccountPrivilegesCreate, Read: resourceTencentCloudDcdbAccountPrivilegesRead, @@ -179,21 +182,21 @@ func resourceTencentCloudDcdbAccountPrivileges() *schema.Resource { } func resourceTencentCloudDcdbAccountPrivilegesCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_account_privileges.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_account_privileges.create")() + defer tccommon.InconsistentCheck(d, meta)() return resourceTencentCloudDcdbAccountPrivilegesUpdate(d, meta) } func resourceTencentCloudDcdbAccountPrivilegesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_account_privileges.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_account_privileges.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 7 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -364,10 +367,10 @@ func resourceTencentCloudDcdbAccountPrivilegesRead(d *schema.ResourceData, meta } func resourceTencentCloudDcdbAccountPrivilegesUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_account_privileges.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_account_privileges.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dcdb.NewModifyAccountPrivilegesRequest() @@ -380,7 +383,7 @@ func resourceTencentCloudDcdbAccountPrivilegesUpdate(d *schema.ResourceData, met viewName string colName string flowId *int64 - service = DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service = DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) if v, ok := d.GetOk("instance_id"); ok { @@ -514,11 +517,11 @@ func resourceTencentCloudDcdbAccountPrivilegesUpdate(d *schema.ResourceData, met }, } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - response, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ModifyAccountPrivileges(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + response, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ModifyAccountPrivileges(request) flowId = response.Response.FlowId if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) } @@ -532,20 +535,20 @@ func resourceTencentCloudDcdbAccountPrivilegesUpdate(d *schema.ResourceData, met if flowId != nil { // need to wait modify operation success // 0:success; 1:failed, 2:running - conf := BuildStateChangeConf([]string{}, []string{"0"}, 3*readRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(flowId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"0"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(flowId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } } - d.SetId(strings.Join([]string{instanceId, userName, host, dbName, tabName, viewName, colName}, FILED_SP)) + d.SetId(strings.Join([]string{instanceId, userName, host, dbName, tabName, viewName, colName}, tccommon.FILED_SP)) return resourceTencentCloudDcdbAccountPrivilegesRead(d, meta) } func resourceTencentCloudDcdbAccountPrivilegesDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_account_privileges.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_account_privileges.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_account_privileges_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_account_privileges_test.go similarity index 77% rename from tencentcloud/resource_tc_dcdb_account_privileges_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_account_privileges_test.go index 5b2f956d03..b7e7db4af8 100644 --- a/tencentcloud/resource_tc_dcdb_account_privileges_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_account_privileges_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dcdb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdcdb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcdb" + "context" "fmt" "testing" @@ -13,12 +17,12 @@ func TestAccTencentCloudDCDBAccountPrivilegesResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDCDBAccountPrivileges_basic, defaultDcdbInstanceId, "%"), + Config: fmt.Sprintf(testAccDCDBAccountPrivileges_basic, tcacctest.DefaultDcdbInstanceId, "%"), Check: resource.ComposeTestCheckFunc( testAccCheckDCDBAccountPrivilegesExists("tencentcloud_dcdb_account_privileges.account_privileges"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_account_privileges.account_privileges", "account.#"), @@ -39,8 +43,8 @@ func TestAccTencentCloudDCDBAccountPrivilegesResource_basic(t *testing.T) { func testAccCheckDCDBAccountPrivilegesExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[re] if !ok { @@ -50,7 +54,7 @@ func testAccCheckDCDBAccountPrivilegesExists(re string) resource.TestCheckFunc { return fmt.Errorf("dcdb account privileges id is not set") } - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) ret, err := dcdbService.DescribeDcdbAccountPrivilegesById(ctx, rs.Primary.ID, nil, nil, nil, nil) if err != nil { return err diff --git a/tencentcloud/resource_tc_dcdb_account_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_account_test.go similarity index 71% rename from tencentcloud/resource_tc_dcdb_account_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_account_test.go index 272710aacd..f6c9ccbc5c 100644 --- a/tencentcloud/resource_tc_dcdb_account_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_account_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dcdb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdcdb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcdb" + "context" "fmt" "strings" @@ -20,24 +24,24 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dcdb_account func testSweepDCDBAccount(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - dcdbService := DcdbService{client: cli.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + dcdbService := svcdcdb.NewDcdbService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) - account, err := dcdbService.DescribeDcdbAccount(ctx, defaultDcdbInstanceId, "") + account, err := dcdbService.DescribeDcdbAccount(ctx, tcacctest.DefaultDcdbInstanceId, "") if err != nil { return err } if account == nil { - return fmt.Errorf("dcdb account not exists. instanceId:[%s]", defaultDcdbInstanceId) + return fmt.Errorf("dcdb account not exists. instanceId:[%s]", tcacctest.DefaultDcdbInstanceId) } for _, v := range account.Users { - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - err := dcdbService.DeleteDcdbAccountById(ctx, defaultDcdbInstanceId, *v.UserName, *v.Host) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + err := dcdbService.DeleteDcdbAccountById(ctx, tcacctest.DefaultDcdbInstanceId, *v.UserName, *v.Host) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -52,12 +56,12 @@ func TestAccTencentCloudDcdbAccountResource_basic(t *testing.T) { t.Parallel() timestamp := time.Now().Nanosecond() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDcdbAccountDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDcdbAccount_basic, defaultDcdbInstanceId, timestamp), + Config: fmt.Sprintf(testAccDcdbAccount_basic, tcacctest.DefaultDcdbInstanceId, timestamp), Check: resource.ComposeTestCheckFunc( testAccCheckDcdbAccountExists("tencentcloud_dcdb_account.basic"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_account.basic", "instance_id"), @@ -70,7 +74,7 @@ func TestAccTencentCloudDcdbAccountResource_basic(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccDcdbAccount_update, defaultDcdbInstanceId, timestamp), + Config: fmt.Sprintf(testAccDcdbAccount_update, tcacctest.DefaultDcdbInstanceId, timestamp), Check: resource.ComposeTestCheckFunc( testAccCheckDcdbAccountExists("tencentcloud_dcdb_account.basic"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_account.basic", "instance_id"), @@ -90,15 +94,15 @@ func TestAccTencentCloudDcdbAccountResource_basic(t *testing.T) { } func testAccCheckDcdbAccountDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dcdb_account" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) instanceId := idSplit[0] userName := idSplit[1] @@ -115,8 +119,8 @@ func testAccCheckDcdbAccountDestroy(s *terraform.State) error { func testAccCheckDcdbAccountExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[re] if !ok { @@ -125,11 +129,11 @@ func testAccCheckDcdbAccountExists(re string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("dcdb account id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) instanceId := idSplit[0] userName := idSplit[1] - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) account, err := dcdbService.DescribeDcdbAccount(ctx, instanceId, userName) if err != nil { return err diff --git a/tencentcloud/resource_tc_dcdb_activate_hour_instance_operation.go b/tencentcloud/services/dcdb/resource_tc_dcdb_activate_hour_instance_operation.go similarity index 68% rename from tencentcloud/resource_tc_dcdb_activate_hour_instance_operation.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_activate_hour_instance_operation.go index eddc1e78fd..0a0d757fbd 100644 --- a/tencentcloud/resource_tc_dcdb_activate_hour_instance_operation.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_activate_hour_instance_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbActivateHourInstanceOperation() *schema.Resource { +func ResourceTencentCloudDcdbActivateHourInstanceOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbActivateHourInstanceOperationCreate, Read: resourceTencentCloudDcdbActivateHourInstanceOperationRead, @@ -26,10 +29,10 @@ func resourceTencentCloudDcdbActivateHourInstanceOperation() *schema.Resource { } func resourceTencentCloudDcdbActivateHourInstanceOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_activate_hour_instance_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_activate_hour_instance_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dcdb.NewActiveHourDCDBInstanceRequest() @@ -40,10 +43,10 @@ func resourceTencentCloudDcdbActivateHourInstanceOperationCreate(d *schema.Resou request.InstanceIds = []*string{helper.String(instanceId)} } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ActiveHourDCDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ActiveHourDCDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -60,15 +63,15 @@ func resourceTencentCloudDcdbActivateHourInstanceOperationCreate(d *schema.Resou } func resourceTencentCloudDcdbActivateHourInstanceOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_activate_hour_instance_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_activate_hour_instance_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDcdbActivateHourInstanceOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_activate_hour_instance_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_activate_hour_instance_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_activate_hour_instance_operation_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_activate_hour_instance_operation_test.go similarity index 90% rename from tencentcloud/resource_tc_dcdb_activate_hour_instance_operation_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_activate_hour_instance_operation_test.go index dcf677cd5c..0f66ef14b0 100644 --- a/tencentcloud/resource_tc_dcdb_activate_hour_instance_operation_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_activate_hour_instance_operation_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudDcdbActivateHourInstanceOperationResource_basic(t *testi t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccDcdbIsolateHourInstanceOperation, "oper_isolate"), @@ -33,7 +35,7 @@ func TestAccTencentCloudDcdbActivateHourInstanceOperationResource_basic(t *testi }) } -const testAccDcdbHourInsOperation = defaultAzVariable + ` +const testAccDcdbHourInsOperation = tcacctest.DefaultAzVariable + ` data "tencentcloud_security_groups" "internal" { name = "default" } diff --git a/tencentcloud/resource_tc_dcdb_cancel_dcn_job_operation.go b/tencentcloud/services/dcdb/resource_tc_dcdb_cancel_dcn_job_operation.go similarity index 63% rename from tencentcloud/resource_tc_dcdb_cancel_dcn_job_operation.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_cancel_dcn_job_operation.go index 1ec7ce45a0..64248ecc3c 100644 --- a/tencentcloud/resource_tc_dcdb_cancel_dcn_job_operation.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_cancel_dcn_job_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbCancelDcnJobOperation() *schema.Resource { +func ResourceTencentCloudDcdbCancelDcnJobOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbCancelDcnJobOperationCreate, Read: resourceTencentCloudDcdbCancelDcnJobOperationRead, @@ -27,26 +30,26 @@ func resourceTencentCloudDcdbCancelDcnJobOperation() *schema.Resource { } func resourceTencentCloudDcdbCancelDcnJobOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_cancel_dcn_job_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_cancel_dcn_job_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dcdb.NewCancelDcnJobRequest() instanceId string flowId *int64 - service = DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service = DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) if v, ok := d.GetOk("instance_id"); ok { request.InstanceId = helper.String(v.(string)) instanceId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().CancelDcnJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().CancelDcnJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -60,7 +63,7 @@ func resourceTencentCloudDcdbCancelDcnJobOperationCreate(d *schema.ResourceData, // need to wait flow success // 0:success; 1:failed, 2:running - conf := BuildStateChangeConf([]string{}, []string{"0"}, 3*readRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(flowId, []string{"1"})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"0"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(flowId, []string{"1"})) if _, e := conf.WaitForState(); e != nil { return e } @@ -71,15 +74,15 @@ func resourceTencentCloudDcdbCancelDcnJobOperationCreate(d *schema.ResourceData, } func resourceTencentCloudDcdbCancelDcnJobOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_cancel_dcn_job_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_cancel_dcn_job_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDcdbCancelDcnJobOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_cancel_dcn_job_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_cancel_dcn_job_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_cancel_dcn_job_operation_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_cancel_dcn_job_operation_test.go similarity index 89% rename from tencentcloud/resource_tc_dcdb_cancel_dcn_job_operation_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_cancel_dcn_job_operation_test.go index 2410afce2e..c18cac35c2 100644 --- a/tencentcloud/resource_tc_dcdb_cancel_dcn_job_operation_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_cancel_dcn_job_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDcdbCancelDcnJobOperationResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbCancelDcnJobOperation, @@ -25,7 +27,7 @@ func TestAccTencentCloudDcdbCancelDcnJobOperationResource_basic(t *testing.T) { }) } -const testAccDcdbHourInsOperation_dcn = defaultAzVariable + CommonPresetDcdb + ` +const testAccDcdbHourInsOperation_dcn = tcacctest.DefaultAzVariable + tcacctest.CommonPresetDcdb + ` data "tencentcloud_security_groups" "internal" { name = "default" } diff --git a/tencentcloud/resource_tc_dcdb_db_instance.go b/tencentcloud/services/dcdb/resource_tc_dcdb_db_instance.go similarity index 87% rename from tencentcloud/resource_tc_dcdb_db_instance.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_db_instance.go index b44f1c122c..8469661a8b 100644 --- a/tencentcloud/resource_tc_dcdb_db_instance.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_db_instance.go @@ -1,53 +1,4 @@ -/* -Provides a resource to create a dcdb db_instance - -Example Usage - -```hcl -resource "tencentcloud_dcdb_db_instance" "db_instance" { - instance_name = "test_dcdb_db_instance" - zones = ["ap-guangzhou-5"] - period = 1 - shard_memory = "2" - shard_storage = "10" - shard_node_count = "2" - shard_count = "2" - vpc_id = local.vpc_id - subnet_id = local.subnet_id - db_version_id = "8.0" - resource_tags { - tag_key = "aaa" - tag_value = "bbb" - } - init_params { - param = "character_set_server" - value = "utf8mb4" - } - init_params { - param = "lower_case_table_names" - value = "1" - } - init_params { - param = "sync_mode" - value = "2" - } - init_params { - param = "innodb_page_size" - value = "16384" - } - security_group_ids = [local.sg_id] -} -``` - -Import - -dcdb db_instance can be imported using the id, e.g. - -``` -terraform import tencentcloud_dcdb_db_instance.db_instance db_instance_id -``` -*/ -package tencentcloud +package dcdb import ( "context" @@ -58,10 +9,12 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbDbInstance() *schema.Resource { +func ResourceTencentCloudDcdbDbInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbDbInstanceCreate, Read: resourceTencentCloudDcdbDbInstanceRead, @@ -264,11 +217,11 @@ func resourceTencentCloudDcdbDbInstance() *schema.Resource { } func resourceTencentCloudDcdbDbInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = dcdb.NewCreateDCDBInstanceRequest() @@ -278,7 +231,7 @@ func resourceTencentCloudDcdbDbInstanceCreate(d *schema.ResourceData, meta inter vpcId string subnetId string ipv6Flag int - service = DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service = DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) if v, ok := d.GetOk("zones"); ok { zonesSet := v.(*schema.Set).List() @@ -385,10 +338,10 @@ func resourceTencentCloudDcdbDbInstanceCreate(d *schema.ResourceData, meta inter request.SecurityGroupIds = helper.InterfacesStringsPoint(securityGroupIdsSet) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().CreateDCDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().CreateDCDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -441,7 +394,7 @@ func resourceTencentCloudDcdbDbInstanceCreate(d *schema.ResourceData, meta inter if flowId != nil { // need to wait init operation success // 0:success; 1:failed, 2:running - conf := BuildStateChangeConf([]string{}, []string{"0"}, 3*readRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(helper.UInt64Int64(*flowId), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"0"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(helper.UInt64Int64(*flowId), []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -450,7 +403,7 @@ func resourceTencentCloudDcdbDbInstanceCreate(d *schema.ResourceData, meta inter if dcnInstanceId != "" { // need to wait dcn init processing complete // 0:none; 1:creating, 2:running - conf := BuildStateChangeConf([]string{}, []string{"2"}, 3*readRetryTimeout, time.Second, service.DcdbDcnStateRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"2"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DcdbDcnStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -491,14 +444,14 @@ func resourceTencentCloudDcdbDbInstanceCreate(d *schema.ResourceData, meta inter } func resourceTencentCloudDcdbDbInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -681,15 +634,15 @@ func resourceTencentCloudDcdbDbInstanceRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudDcdbDbInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_instance.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_instance.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = dcdb.NewModifyDBInstanceNameRequest() - service = DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service = DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) instanceId := d.Id() @@ -718,10 +671,10 @@ func resourceTencentCloudDcdbDbInstanceUpdate(d *schema.ResourceData, meta inter } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().RenewDCDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().RenewDCDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -768,10 +721,10 @@ func resourceTencentCloudDcdbDbInstanceUpdate(d *schema.ResourceData, meta inter request.InstanceIds = []*string{&instanceId} request.ProjectId = helper.IntInt64(projectId.(int)) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ModifyDBInstancesProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ModifyDBInstancesProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -844,10 +797,10 @@ func resourceTencentCloudDcdbDbInstanceUpdate(d *schema.ResourceData, meta inter if v, ok := d.GetOk("instance_name"); ok { request.InstanceName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ModifyDBInstanceName(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ModifyDBInstanceName(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -862,13 +815,13 @@ func resourceTencentCloudDcdbDbInstanceUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudDcdbDbInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() if err := service.DeleteDcdbDbInstanceById(ctx, instanceId); err != nil { diff --git a/tencentcloud/services/dcdb/resource_tc_dcdb_db_instance.md b/tencentcloud/services/dcdb/resource_tc_dcdb_db_instance.md new file mode 100644 index 0000000000..6cb0971a5f --- /dev/null +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_db_instance.md @@ -0,0 +1,47 @@ +Provides a resource to create a dcdb db_instance + +Example Usage + +```hcl +resource "tencentcloud_dcdb_db_instance" "db_instance" { + instance_name = "test_dcdb_db_instance" + zones = ["ap-guangzhou-5"] + period = 1 + shard_memory = "2" + shard_storage = "10" + shard_node_count = "2" + shard_count = "2" + vpc_id = local.vpc_id + subnet_id = local.subnet_id + db_version_id = "8.0" + resource_tags { + tag_key = "aaa" + tag_value = "bbb" + } + init_params { + param = "character_set_server" + value = "utf8mb4" + } + init_params { + param = "lower_case_table_names" + value = "1" + } + init_params { + param = "sync_mode" + value = "2" + } + init_params { + param = "innodb_page_size" + value = "16384" + } + security_group_ids = [local.sg_id] +} +``` + +Import + +dcdb db_instance can be imported using the id, e.g. + +``` +terraform import tencentcloud_dcdb_db_instance.db_instance db_instance_id +``` diff --git a/tencentcloud/resource_tc_dcdb_db_instance_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_db_instance_test.go similarity index 85% rename from tencentcloud/resource_tc_dcdb_db_instance_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_db_instance_test.go index 4eea5e3ed1..067a96134a 100644 --- a/tencentcloud/resource_tc_dcdb_db_instance_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_db_instance_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcdb_test import ( "context" @@ -8,6 +8,10 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdcdb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcdb" ) func init() { @@ -19,10 +23,10 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dcdb_db_instance func testSweepDcdbDbInstance(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - dcdbService := DcdbService{client: cli.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + dcdbService := svcdcdb.NewDcdbService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) instances, err := dcdbService.DescribeDcdbInstancesByFilter(ctx, nil) if err != nil { @@ -37,10 +41,10 @@ func testSweepDcdbDbInstance(r string) error { delName := *v.InstanceName if strings.HasPrefix(delName, "test_dcdb_") { - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { err := dcdbService.DeleteDcdbDbInstanceById(ctx, delId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -55,8 +59,8 @@ func testSweepDcdbDbInstance(r string) error { func TestAccTencentCloudNeedFixDcdbDbInstanceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDCDBDbInstanceDestroy, Steps: []resource.TestStep{ { @@ -99,7 +103,7 @@ func TestAccTencentCloudNeedFixDcdbDbInstanceResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_dcdb_db_instance.db_instance", "instance_name", "test_dcdb_db_instance"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_db_instance.db_instance", "vpc_id"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_db_instance.db_instance", "subnet_id"), - resource.TestCheckResourceAttr("tencentcloud_dcdb_db_instance.db_instance", "project_id", defaultProjectId), + resource.TestCheckResourceAttr("tencentcloud_dcdb_db_instance.db_instance", "project_id", tcacctest.DefaultProjectId), // resource.TestCheckResourceAttr("tencentcloud_dcdb_db_instance.db_instance", "extranet_access", "false"), ), }, @@ -113,10 +117,10 @@ func TestAccTencentCloudNeedFixDcdbDbInstanceResource_basic(t *testing.T) { } func testAccCheckDCDBDbInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dcdb_db_instance" { continue @@ -136,8 +140,8 @@ func testAccCheckDCDBDbInstanceDestroy(s *terraform.State) error { func testAccCheckDCDBDbInstanceExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[re] if !ok { @@ -147,7 +151,7 @@ func testAccCheckDCDBDbInstanceExists(re string) resource.TestCheckFunc { return fmt.Errorf("dcdb db instance id is not set") } - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) ret, err := dcdbService.DescribeDcdbDbInstance(ctx, rs.Primary.ID) if err != nil { return err @@ -161,7 +165,7 @@ func testAccCheckDCDBDbInstanceExists(re string) resource.TestCheckFunc { } } -const testAccDcdbDbInstance_vpc_config = defaultAzVariable + ` +const testAccDcdbDbInstance_vpc_config = tcacctest.DefaultAzVariable + ` data "tencentcloud_security_groups" "internal" { name = "default" } @@ -236,7 +240,7 @@ resource "tencentcloud_dcdb_db_instance" "db_instance" { ` -const testAccDcdbDbInstance_update = testAccDcdbDbInstance_vpc_config + defaultProjectVariable + ` +const testAccDcdbDbInstance_update = testAccDcdbDbInstance_vpc_config + tcacctest.DefaultProjectVariable + ` resource "tencentcloud_dcdb_db_instance" "db_instance" { instance_name = "test_dcdb_db_instance_CHANGED" diff --git a/tencentcloud/resource_tc_dcdb_db_parameters.go b/tencentcloud/services/dcdb/resource_tc_dcdb_db_parameters.go similarity index 74% rename from tencentcloud/resource_tc_dcdb_db_parameters.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_db_parameters.go index 269457c864..b6a027da49 100644 --- a/tencentcloud/resource_tc_dcdb_db_parameters.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_db_parameters.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcdb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbDbParameters() *schema.Resource { +func ResourceTencentCloudDcdbDbParameters() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbDbParametersCreate, Read: resourceTencentCloudDcdbDbParametersRead, @@ -53,21 +56,21 @@ func resourceTencentCloudDcdbDbParameters() *schema.Resource { } func resourceTencentCloudDcdbDbParametersCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_parameters.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_parameters.create")() + defer tccommon.InconsistentCheck(d, meta)() return resourceTencentCloudDcdbDbParametersUpdate(d, meta) } func resourceTencentCloudDcdbDbParametersRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_parameters.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_parameters.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -107,17 +110,17 @@ func resourceTencentCloudDcdbDbParametersRead(d *schema.ResourceData, meta inter } func resourceTencentCloudDcdbDbParametersUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_parameters.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_parameters.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( instanceId string paramName string request = dcdb.NewModifyDBParametersRequest() - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) if v, ok := d.GetOk("instance_id"); ok { @@ -139,10 +142,10 @@ func resourceTencentCloudDcdbDbParametersUpdate(d *schema.ResourceData, meta int } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ModifyDBParameters(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ModifyDBParameters(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -153,10 +156,10 @@ func resourceTencentCloudDcdbDbParametersUpdate(d *schema.ResourceData, meta int return err } - err = resource.Retry(3*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError { dbParameters, err := service.DescribeDcdbDbParametersById(ctx, instanceId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if dbParameters == nil || dbParameters.Params == nil { @@ -178,14 +181,14 @@ func resourceTencentCloudDcdbDbParametersUpdate(d *schema.ResourceData, meta int return err } - d.SetId(strings.Join([]string{instanceId, paramName}, FILED_SP)) + d.SetId(strings.Join([]string{instanceId, paramName}, tccommon.FILED_SP)) return resourceTencentCloudDcdbDbParametersRead(d, meta) } func resourceTencentCloudDcdbDbParametersDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_parameters.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_parameters.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_db_parameters_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_db_parameters_test.go similarity index 76% rename from tencentcloud/resource_tc_dcdb_db_parameters_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_db_parameters_test.go index 7e7a1ae7cb..025ae81b2c 100644 --- a/tencentcloud/resource_tc_dcdb_db_parameters_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_db_parameters_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dcdb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdcdb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcdb" + "context" "fmt" "strings" @@ -14,12 +18,12 @@ func TestAccTencentCloudDCDBDbParametersResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDCDBDbParameters_basic, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDCDBDbParameters_basic, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( testAccCheckDCDBDbParametersExists("tencentcloud_dcdb_db_parameters.db_parameters"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_db_parameters.db_parameters", "instance_id"), @@ -29,7 +33,7 @@ func TestAccTencentCloudDCDBDbParametersResource_basic(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccDCDBDbParameters_update, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDCDBDbParameters_update, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( testAccCheckDCDBDbParametersExists("tencentcloud_dcdb_db_parameters.db_parameters"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_db_parameters.db_parameters", "instance_id"), @@ -49,8 +53,8 @@ func TestAccTencentCloudDCDBDbParametersResource_basic(t *testing.T) { func testAccCheckDCDBDbParametersExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[re] if !ok { @@ -60,14 +64,14 @@ func testAccCheckDCDBDbParametersExists(re string) resource.TestCheckFunc { return fmt.Errorf("dcdb db parameters id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } instanceId := idSplit[0] - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) ret, err := dcdbService.DescribeDcdbDbParametersById(ctx, instanceId) if err != nil { return err diff --git a/tencentcloud/resource_tc_dcdb_db_sync_mode_config.go b/tencentcloud/services/dcdb/resource_tc_dcdb_db_sync_mode_config.go similarity index 67% rename from tencentcloud/resource_tc_dcdb_db_sync_mode_config.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_db_sync_mode_config.go index 4e21f130e2..7e788516d7 100644 --- a/tencentcloud/resource_tc_dcdb_db_sync_mode_config.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_db_sync_mode_config.go @@ -1,17 +1,20 @@ -package tencentcloud +package dcdb import ( "context" "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbDbSyncModeConfig() *schema.Resource { +func ResourceTencentCloudDcdbDbSyncModeConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbDbSyncModeConfigCreate, Read: resourceTencentCloudDcdbDbSyncModeConfigRead, @@ -37,8 +40,8 @@ func resourceTencentCloudDcdbDbSyncModeConfig() *schema.Resource { } func resourceTencentCloudDcdbDbSyncModeConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_sync_mode_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_sync_mode_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string if v, ok := d.GetOk("instance_id"); ok { @@ -50,14 +53,14 @@ func resourceTencentCloudDcdbDbSyncModeConfigCreate(d *schema.ResourceData, meta } func resourceTencentCloudDcdbDbSyncModeConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_sync_mode_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_sync_mode_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -82,10 +85,10 @@ func resourceTencentCloudDcdbDbSyncModeConfigRead(d *schema.ResourceData, meta i } func resourceTencentCloudDcdbDbSyncModeConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_sync_mode_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_sync_mode_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dcdb.NewModifyDBSyncModeRequest() @@ -99,10 +102,10 @@ func resourceTencentCloudDcdbDbSyncModeConfigUpdate(d *schema.ResourceData, meta } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ModifyDBSyncMode(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ModifyDBSyncMode(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -113,9 +116,9 @@ func resourceTencentCloudDcdbDbSyncModeConfigUpdate(d *schema.ResourceData, meta return err } - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"0"}, 2*readRetryTimeout, time.Second, service.DcdbDbSyncModeConfigStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"0"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DcdbDbSyncModeConfigStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -125,8 +128,8 @@ func resourceTencentCloudDcdbDbSyncModeConfigUpdate(d *schema.ResourceData, meta } func resourceTencentCloudDcdbDbSyncModeConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_db_sync_mode_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_db_sync_mode_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_db_sync_mode_config_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_db_sync_mode_config_test.go similarity index 76% rename from tencentcloud/resource_tc_dcdb_db_sync_mode_config_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_db_sync_mode_config_test.go index c73b08b1cd..808ee26209 100644 --- a/tencentcloud/resource_tc_dcdb_db_sync_mode_config_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_db_sync_mode_config_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudDcdbDbSyncModeConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - // PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + // PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDcdbDbSyncModeConfig, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDcdbDbSyncModeConfig, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_dcdb_db_sync_mode_config.config", "id"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_db_sync_mode_config.config", "instance_id"), @@ -25,7 +27,7 @@ func TestAccTencentCloudDcdbDbSyncModeConfigResource_basic(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccDcdbDbSyncModeConfig_update, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDcdbDbSyncModeConfig_update, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_dcdb_db_sync_mode_config.config", "id"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_db_sync_mode_config.config", "instance_id"), diff --git a/tencentcloud/resource_tc_dcdb_encrypt_attributes_config.go b/tencentcloud/services/dcdb/resource_tc_dcdb_encrypt_attributes_config.go similarity index 71% rename from tencentcloud/resource_tc_dcdb_encrypt_attributes_config.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_encrypt_attributes_config.go index 91e538acd0..47d3de9272 100644 --- a/tencentcloud/resource_tc_dcdb_encrypt_attributes_config.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_encrypt_attributes_config.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbEncryptAttributesConfig() *schema.Resource { +func ResourceTencentCloudDcdbEncryptAttributesConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbEncryptAttributesConfigCreate, Read: resourceTencentCloudDcdbEncryptAttributesConfigRead, @@ -36,8 +39,8 @@ func resourceTencentCloudDcdbEncryptAttributesConfig() *schema.Resource { } func resourceTencentCloudDcdbEncryptAttributesConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_encrypt_attributes_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_encrypt_attributes_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string if v, ok := d.GetOk("instance_id"); ok { @@ -49,14 +52,14 @@ func resourceTencentCloudDcdbEncryptAttributesConfigCreate(d *schema.ResourceDat } func resourceTencentCloudDcdbEncryptAttributesConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_encrypt_attributes_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_encrypt_attributes_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -81,10 +84,10 @@ func resourceTencentCloudDcdbEncryptAttributesConfigRead(d *schema.ResourceData, } func resourceTencentCloudDcdbEncryptAttributesConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_encrypt_attributes_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_encrypt_attributes_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dcdb.NewModifyDBEncryptAttributesRequest() @@ -98,10 +101,10 @@ func resourceTencentCloudDcdbEncryptAttributesConfigUpdate(d *schema.ResourceDat } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ModifyDBEncryptAttributes(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ModifyDBEncryptAttributes(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -116,8 +119,8 @@ func resourceTencentCloudDcdbEncryptAttributesConfigUpdate(d *schema.ResourceDat } func resourceTencentCloudDcdbEncryptAttributesConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_encrypt_attributes_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_encrypt_attributes_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_encrypt_attributes_config_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_encrypt_attributes_config_test.go similarity index 84% rename from tencentcloud/resource_tc_dcdb_encrypt_attributes_config_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_encrypt_attributes_config_test.go index ce36e2fa9b..3d76e5d8bd 100644 --- a/tencentcloud/resource_tc_dcdb_encrypt_attributes_config_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_encrypt_attributes_config_test.go @@ -1,18 +1,20 @@ -package tencentcloud +package dcdb_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDcdbEncryptAttributesConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - // PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + // PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccDcdbEncryptAttributesConfig, "encrypt_attributes"), @@ -32,8 +34,8 @@ func TestAccTencentCloudDcdbEncryptAttributesConfigResource_basic(t *testing.T) }) } -// const testAccDcdbConfig_common_ins = defaultVpcSubnets + defaultSecurityGroupData + ` -const testAccDcdbConfig_common_ins = defaultAzVariable + ` +// const testAccDcdbConfig_common_ins = tcacctest.DefaultVpcSubnets + tcacctest.DefaultSecurityGroupData + ` +const testAccDcdbConfig_common_ins = tcacctest.DefaultAzVariable + ` data "tencentcloud_security_groups" "internal" { name = "default" } diff --git a/tencentcloud/resource_tc_dcdb_flush_binlog_operation.go b/tencentcloud/services/dcdb/resource_tc_dcdb_flush_binlog_operation.go similarity index 67% rename from tencentcloud/resource_tc_dcdb_flush_binlog_operation.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_flush_binlog_operation.go index 83bb609990..18c3e2d5a8 100644 --- a/tencentcloud/resource_tc_dcdb_flush_binlog_operation.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_flush_binlog_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbFlushBinlogOperation() *schema.Resource { +func ResourceTencentCloudDcdbFlushBinlogOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbFlushBinlogOperationCreate, Read: resourceTencentCloudDcdbFlushBinlogOperationRead, @@ -26,10 +29,10 @@ func resourceTencentCloudDcdbFlushBinlogOperation() *schema.Resource { } func resourceTencentCloudDcdbFlushBinlogOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_flush_binlog_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_flush_binlog_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dcdb.NewFlushBinlogRequest() @@ -40,10 +43,10 @@ func resourceTencentCloudDcdbFlushBinlogOperationCreate(d *schema.ResourceData, instanceId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().FlushBinlog(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().FlushBinlog(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -60,15 +63,15 @@ func resourceTencentCloudDcdbFlushBinlogOperationCreate(d *schema.ResourceData, } func resourceTencentCloudDcdbFlushBinlogOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_flush_binlog_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_flush_binlog_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDcdbFlushBinlogOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_flush_binlog_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_flush_binlog_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_flush_binlog_operation_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_flush_binlog_operation_test.go similarity index 74% rename from tencentcloud/resource_tc_dcdb_flush_binlog_operation_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_flush_binlog_operation_test.go index 23385b2095..e726bf730c 100644 --- a/tencentcloud/resource_tc_dcdb_flush_binlog_operation_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_flush_binlog_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDcdbFlushBinlogOperationResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbFlushBinlogOperation, @@ -25,7 +27,7 @@ func TestAccTencentCloudDcdbFlushBinlogOperationResource_basic(t *testing.T) { }) } -const testAccDcdbFlushBinlogOperation = CommonPresetDcdb + ` +const testAccDcdbFlushBinlogOperation = tcacctest.CommonPresetDcdb + ` resource "tencentcloud_dcdb_flush_binlog_operation" "flush_operation" { instance_id = local.dcdb_id diff --git a/tencentcloud/resource_tc_dcdb_hourdb_instance.go b/tencentcloud/services/dcdb/resource_tc_dcdb_hourdb_instance.go similarity index 86% rename from tencentcloud/resource_tc_dcdb_hourdb_instance.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_hourdb_instance.go index c383047f09..37c8a0e462 100644 --- a/tencentcloud/resource_tc_dcdb_hourdb_instance.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_hourdb_instance.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcdb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbHourdbInstance() *schema.Resource { +func ResourceTencentCloudDcdbHourdbInstance() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudDcdbHourdbInstanceRead, Create: resourceTencentCloudDcdbHourdbInstanceCreate, @@ -159,8 +162,8 @@ func resourceTencentCloudDcdbHourdbInstance() *schema.Resource { } func resourceTencentCloudDcdbHourdbInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_hourdb_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_hourdb_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( request = dcdb.NewCreateHourDCDBInstanceRequest() @@ -170,9 +173,9 @@ func resourceTencentCloudDcdbHourdbInstanceCreate(d *schema.ResourceData, meta i vpcId string subnetId string ipv6Flag int - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) if v, ok := d.GetOk("zones"); ok { @@ -254,10 +257,10 @@ func resourceTencentCloudDcdbHourdbInstanceCreate(d *schema.ResourceData, meta i dcnInstanceId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().CreateHourDCDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().CreateHourDCDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -305,7 +308,7 @@ func resourceTencentCloudDcdbHourdbInstanceCreate(d *schema.ResourceData, meta i if flowId != nil { // need to wait init operation success // 0:success; 1:failed, 2:running - conf := BuildStateChangeConf([]string{}, []string{"0"}, 3*readRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(helper.UInt64Int64(*flowId), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"0"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(helper.UInt64Int64(*flowId), []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -314,7 +317,7 @@ func resourceTencentCloudDcdbHourdbInstanceCreate(d *schema.ResourceData, meta i if dcnInstanceId != "" { // need to wait dcn init processing complete // 0:none; 1:creating, 2:running - conf := BuildStateChangeConf([]string{}, []string{"2"}, 3*readRetryTimeout, time.Second, service.DcdbDcnStateRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"2"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DcdbDcnStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -355,13 +358,13 @@ func resourceTencentCloudDcdbHourdbInstanceCreate(d *schema.ResourceData, meta i } func resourceTencentCloudDcdbHourdbInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_hourdb_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_hourdb_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -501,15 +504,15 @@ func resourceTencentCloudDcdbHourdbInstanceRead(d *schema.ResourceData, meta int } func resourceTencentCloudDcdbHourdbInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_hourdb_instance.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_hourdb_instance.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = dcdb.NewModifyDBInstanceNameRequest() - service = DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service = DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) instanceId := d.Id() @@ -565,10 +568,10 @@ func resourceTencentCloudDcdbHourdbInstanceUpdate(d *schema.ResourceData, meta i request.InstanceIds = []*string{&instanceId} request.ProjectId = helper.IntInt64(projectId.(int)) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ModifyDBInstancesProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ModifyDBInstancesProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -627,10 +630,10 @@ func resourceTencentCloudDcdbHourdbInstanceUpdate(d *schema.ResourceData, meta i if v, ok := d.GetOk("instance_name"); ok { request.InstanceName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().ModifyDBInstanceName(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().ModifyDBInstanceName(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -648,13 +651,13 @@ func resourceTencentCloudDcdbHourdbInstanceUpdate(d *schema.ResourceData, meta i } func resourceTencentCloudDcdbHourdbInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_hourdb_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_hourdb_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() diff --git a/tencentcloud/resource_tc_dcdb_hourdb_instance_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_hourdb_instance_test.go similarity index 84% rename from tencentcloud/resource_tc_dcdb_hourdb_instance_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_hourdb_instance_test.go index dfc70f7504..cfd730bd0f 100644 --- a/tencentcloud/resource_tc_dcdb_hourdb_instance_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_hourdb_instance_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcdb_test import ( "context" @@ -6,8 +6,13 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcdcdb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcdb" ) func init() { @@ -19,10 +24,10 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dcdb_hourdb_instance func testSweepDcdbHourdbInstance(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - dcdbService := DcdbService{client: cli.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + dcdbService := svcdcdb.NewDcdbService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) instances, err := dcdbService.DescribeDcdbInstancesByFilter(ctx, nil) if err != nil { @@ -37,10 +42,10 @@ func testSweepDcdbHourdbInstance(r string) error { delName := *v.InstanceName if strings.HasPrefix(delName, "test_dcdb_") { - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { err := dcdbService.DeleteDcdbHourdbInstanceById(ctx, delId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -56,8 +61,8 @@ func TestAccTencentCloudDcdbHourdbInstanceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDcdbHourdbInstanceDestroy, Steps: []resource.TestStep{ { @@ -87,7 +92,7 @@ func TestAccTencentCloudDcdbHourdbInstanceResource_basic(t *testing.T) { testAccCheckDcdbHourdbInstanceExists("tencentcloud_dcdb_hourdb_instance.hourdb_instance"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "vpc_id"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "subnet_id"), - resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "project_id", defaultProjectId), + resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "project_id", tcacctest.DefaultProjectId), // resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "extranet_access", "false"), resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "vip", "172.18.111.10"), resource.TestCheckResourceAttr("tencentcloud_dcdb_hourdb_instance.hourdb_instance", "instance_name", "test_dcdb_hourdb_instance_CHANGED"), @@ -103,10 +108,10 @@ func TestAccTencentCloudDcdbHourdbInstanceResource_basic(t *testing.T) { } func testAccCheckDcdbHourdbInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dcdb_hourdb_instance" { continue @@ -126,8 +131,8 @@ func testAccCheckDcdbHourdbInstanceDestroy(s *terraform.State) error { func testAccCheckDcdbHourdbInstanceExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[re] if !ok { @@ -137,7 +142,7 @@ func testAccCheckDcdbHourdbInstanceExists(re string) resource.TestCheckFunc { return fmt.Errorf("dcdb hourdb instance id is not set") } - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) ret, err := dcdbService.DescribeDcdbHourdbInstance(ctx, rs.Primary.ID) if err != nil { return err @@ -151,7 +156,7 @@ func testAccCheckDcdbHourdbInstanceExists(re string) resource.TestCheckFunc { } } -const testAccDcdbHourdb_vpc_config = defaultAzVariable + ` +const testAccDcdbHourdb_vpc_config = tcacctest.DefaultAzVariable + ` data "tencentcloud_security_groups" "internal" { name = "default" } @@ -208,7 +213,7 @@ resource "tencentcloud_dcdb_hourdb_instance" "hourdb_instance" { ` -const testAccDcdbHourdbInstance_update = testAccDcdbHourdb_vpc_config + defaultProjectVariable + ` +const testAccDcdbHourdbInstance_update = testAccDcdbHourdb_vpc_config + tcacctest.DefaultProjectVariable + ` resource "tencentcloud_dcdb_hourdb_instance" "hourdb_instance" { instance_name = "test_dcdb_hourdb_instance_CHANGED" diff --git a/tencentcloud/resource_tc_dcdb_instance_config.go b/tencentcloud/services/dcdb/resource_tc_dcdb_instance_config.go similarity index 67% rename from tencentcloud/resource_tc_dcdb_instance_config.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_instance_config.go index 9f7764cc20..817a0e5feb 100644 --- a/tencentcloud/resource_tc_dcdb_instance_config.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_instance_config.go @@ -1,13 +1,15 @@ -package tencentcloud +package dcdb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func resourceTencentCloudDcdbInstanceConfig() *schema.Resource { +func ResourceTencentCloudDcdbInstanceConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbInstanceConfigCreate, Read: resourceTencentCloudDcdbInstanceConfigRead, @@ -33,8 +35,8 @@ func resourceTencentCloudDcdbInstanceConfig() *schema.Resource { } func resourceTencentCloudDcdbInstanceConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_instance_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_instance_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string if v, ok := d.GetOk("instance_id"); ok { @@ -46,14 +48,14 @@ func resourceTencentCloudDcdbInstanceConfigCreate(d *schema.ResourceData, meta i } func resourceTencentCloudDcdbInstanceConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_instance_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_instance_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -78,14 +80,14 @@ func resourceTencentCloudDcdbInstanceConfigRead(d *schema.ResourceData, meta int } func resourceTencentCloudDcdbInstanceConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_instance_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_instance_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( - service = DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service = DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} rsStrategy int ) @@ -107,8 +109,8 @@ func resourceTencentCloudDcdbInstanceConfigUpdate(d *schema.ResourceData, meta i } func resourceTencentCloudDcdbInstanceConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_instance_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_instance_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_instance_config_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_instance_config_test.go similarity index 80% rename from tencentcloud/resource_tc_dcdb_instance_config_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_instance_config_test.go index aaa8b9b9fb..a60f61b56d 100644 --- a/tencentcloud/resource_tc_dcdb_instance_config_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_instance_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDcdbInstanceConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbInstanceConfig, @@ -37,7 +39,7 @@ func TestAccTencentCloudDcdbInstanceConfigResource_basic(t *testing.T) { }) } -const testAccDcdbInstanceConfig = CommonPresetDcdb + ` +const testAccDcdbInstanceConfig = tcacctest.CommonPresetDcdb + ` resource "tencentcloud_dcdb_instance_config" "instance_config" { instance_id = local.dcdb_id @@ -46,7 +48,7 @@ resource "tencentcloud_dcdb_instance_config" "instance_config" { ` -const testAccDcdbInstanceConfig_update = CommonPresetDcdb + ` +const testAccDcdbInstanceConfig_update = tcacctest.CommonPresetDcdb + ` resource "tencentcloud_dcdb_instance_config" "instance_config" { instance_id = local.dcdb_id diff --git a/tencentcloud/resource_tc_dcdb_isolate_hour_instance_operation.go b/tencentcloud/services/dcdb/resource_tc_dcdb_isolate_hour_instance_operation.go similarity index 67% rename from tencentcloud/resource_tc_dcdb_isolate_hour_instance_operation.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_isolate_hour_instance_operation.go index a23f3095ee..7485fa572a 100644 --- a/tencentcloud/resource_tc_dcdb_isolate_hour_instance_operation.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_isolate_hour_instance_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dcdb import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbIsolateHourInstanceOperation() *schema.Resource { +func ResourceTencentCloudDcdbIsolateHourInstanceOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbIsolateHourInstanceOperationCreate, Read: resourceTencentCloudDcdbIsolateHourInstanceOperationRead, @@ -26,10 +29,10 @@ func resourceTencentCloudDcdbIsolateHourInstanceOperation() *schema.Resource { } func resourceTencentCloudDcdbIsolateHourInstanceOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_isolate_hour_instance_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_isolate_hour_instance_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dcdb.NewIsolateHourDCDBInstanceRequest() @@ -40,10 +43,10 @@ func resourceTencentCloudDcdbIsolateHourInstanceOperationCreate(d *schema.Resour request.InstanceIds = []*string{helper.String(instanceId)} } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().IsolateHourDCDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().IsolateHourDCDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -60,15 +63,15 @@ func resourceTencentCloudDcdbIsolateHourInstanceOperationCreate(d *schema.Resour } func resourceTencentCloudDcdbIsolateHourInstanceOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_isolate_hour_instance_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_isolate_hour_instance_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDcdbIsolateHourInstanceOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_isolate_hour_instance_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_isolate_hour_instance_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_security_group_attachment.go b/tencentcloud/services/dcdb/resource_tc_dcdb_security_group_attachment.go similarity index 69% rename from tencentcloud/resource_tc_dcdb_security_group_attachment.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_security_group_attachment.go index ae91bee5f2..83fd02f051 100644 --- a/tencentcloud/resource_tc_dcdb_security_group_attachment.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_security_group_attachment.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcdb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbSecurityGroupAttachment() *schema.Resource { +func ResourceTencentCloudDcdbSecurityGroupAttachment() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudDcdbSecurityGroupAttachmentRead, Create: resourceTencentCloudDcdbSecurityGroupAttachmentCreate, @@ -38,10 +41,10 @@ func resourceTencentCloudDcdbSecurityGroupAttachment() *schema.Resource { } func resourceTencentCloudDcdbSecurityGroupAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_security_group_attachment.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_security_group_attachment.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dcdb.NewAssociateSecurityGroupsRequest() @@ -62,10 +65,10 @@ func resourceTencentCloudDcdbSecurityGroupAttachmentCreate(d *schema.ResourceDat request.InstanceIds = []*string{helper.String(v.(string))} } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().AssociateSecurityGroups(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().AssociateSecurityGroups(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -79,20 +82,20 @@ func resourceTencentCloudDcdbSecurityGroupAttachmentCreate(d *schema.ResourceDat return err } - d.SetId(instanceId + FILED_SP + securityGroupId) + d.SetId(instanceId + tccommon.FILED_SP + securityGroupId) return resourceTencentCloudDcdbSecurityGroupAttachmentRead(d, meta) } func resourceTencentCloudDcdbSecurityGroupAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_security_group_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_security_group_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -122,15 +125,15 @@ func resourceTencentCloudDcdbSecurityGroupAttachmentRead(d *schema.ResourceData, } func resourceTencentCloudDcdbSecurityGroupAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_security_group_attachment.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_security_group_attachment.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dcdb_security_group_attachment_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_security_group_attachment_test.go similarity index 71% rename from tencentcloud/resource_tc_dcdb_security_group_attachment_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_security_group_attachment_test.go index b067acfbb6..1fa913a108 100644 --- a/tencentcloud/resource_tc_dcdb_security_group_attachment_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_security_group_attachment_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dcdb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdcdb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcdb" + "context" "fmt" "strings" @@ -14,12 +18,12 @@ func TestAccTencentCloudDCDBSecurityGroupAttachmentResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDcdbSecurityGroupAttachmentDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDcdbSecurityGroupAttachment, defaultDcdbSGName, defaultDcdbInstanceId), + Config: fmt.Sprintf(testAccDcdbSecurityGroupAttachment, tcacctest.DefaultDcdbSGName, tcacctest.DefaultDcdbInstanceId), Check: resource.ComposeTestCheckFunc( testAccCheckDcdbSecurityGroupAttachmentExists("tencentcloud_dcdb_security_group_attachment.security_group_attachment"), resource.TestCheckResourceAttrSet("tencentcloud_dcdb_security_group_attachment.security_group_attachment", "security_group_id"), @@ -36,16 +40,16 @@ func TestAccTencentCloudDCDBSecurityGroupAttachmentResource(t *testing.T) { } func testAccCheckDcdbSecurityGroupAttachmentDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dcdb_security_group_attachment" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) instanceId := idSplit[0] securityGroupId := idSplit[1] @@ -65,9 +69,9 @@ func testAccCheckDcdbSecurityGroupAttachmentDestroy(s *terraform.State) error { func testAccCheckDcdbSecurityGroupAttachmentExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dcdbService := DcdbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dcdbService := svcdcdb.NewDcdbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rs, ok := s.RootModule().Resources[re] if !ok { @@ -77,7 +81,7 @@ func testAccCheckDcdbSecurityGroupAttachmentExists(re string) resource.TestCheck return fmt.Errorf("dcdb sg attachment instance id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) instanceId := idSplit[0] securityGroupId := idSplit[1] diff --git a/tencentcloud/resource_tc_dcdb_switch_db_instance_ha_operation.go b/tencentcloud/services/dcdb/resource_tc_dcdb_switch_db_instance_ha_operation.go similarity index 67% rename from tencentcloud/resource_tc_dcdb_switch_db_instance_ha_operation.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_switch_db_instance_ha_operation.go index abde361680..c60bd71bbe 100644 --- a/tencentcloud/resource_tc_dcdb_switch_db_instance_ha_operation.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_switch_db_instance_ha_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dcdb import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcdbSwitchDbInstanceHaOperation() *schema.Resource { +func ResourceTencentCloudDcdbSwitchDbInstanceHaOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcdbSwitchDbInstanceHaOperationCreate, Read: resourceTencentCloudDcdbSwitchDbInstanceHaOperationRead, @@ -34,14 +37,14 @@ func resourceTencentCloudDcdbSwitchDbInstanceHaOperation() *schema.Resource { } func resourceTencentCloudDcdbSwitchDbInstanceHaOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_switch_db_instance_ha_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_switch_db_instance_ha_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dcdb.NewSwitchDBInstanceHARequest() - service = DcdbService{client: meta.(*TencentCloudClient).apiV3Conn} + service = DcdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId string flowId *uint64 ) @@ -54,10 +57,10 @@ func resourceTencentCloudDcdbSwitchDbInstanceHaOperationCreate(d *schema.Resourc request.Zone = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDcdbClient().SwitchDBInstanceHA(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDcdbClient().SwitchDBInstanceHA(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -72,7 +75,7 @@ func resourceTencentCloudDcdbSwitchDbInstanceHaOperationCreate(d *schema.Resourc if flowId != nil { // need to wait init operation success // 0:success; 1:failed, 2:running - conf := BuildStateChangeConf([]string{}, []string{"0"}, 3*readRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(helper.UInt64Int64(*flowId), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"0"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DcdbDbInstanceStateRefreshFunc(helper.UInt64Int64(*flowId), []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -84,15 +87,15 @@ func resourceTencentCloudDcdbSwitchDbInstanceHaOperationCreate(d *schema.Resourc } func resourceTencentCloudDcdbSwitchDbInstanceHaOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_switch_db_instance_ha_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_switch_db_instance_ha_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDcdbSwitchDbInstanceHaOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dcdb_switch_db_instance_ha_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dcdb_switch_db_instance_ha_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dcdb_switch_db_instance_ha_operation_test.go b/tencentcloud/services/dcdb/resource_tc_dcdb_switch_db_instance_ha_operation_test.go similarity index 82% rename from tencentcloud/resource_tc_dcdb_switch_db_instance_ha_operation_test.go rename to tencentcloud/services/dcdb/resource_tc_dcdb_switch_db_instance_ha_operation_test.go index 3702ddb4a2..c8df3f2ceb 100644 --- a/tencentcloud/resource_tc_dcdb_switch_db_instance_ha_operation_test.go +++ b/tencentcloud/services/dcdb/resource_tc_dcdb_switch_db_instance_ha_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcdb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDcdbSwitchDbInstanceHaOperationResource_basic(t *testing t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcdbSwitchDbInstanceHaOperation, @@ -34,7 +36,7 @@ func TestAccTencentCloudDcdbSwitchDbInstanceHaOperationResource_basic(t *testing }) } -const testAccDcdbSwitchDbInstanceHaOperation = CommonPresetDcdb + ` +const testAccDcdbSwitchDbInstanceHaOperation = tcacctest.CommonPresetDcdb + ` resource "tencentcloud_dcdb_switch_db_instance_ha_operation" "switch_operation" { instance_id = local.dcdb_id @@ -43,7 +45,7 @@ resource "tencentcloud_dcdb_switch_db_instance_ha_operation" "switch_operation" ` -const testAccDcdbSwitchDbInstanceHaOperation_update = CommonPresetDcdb + ` +const testAccDcdbSwitchDbInstanceHaOperation_update = tcacctest.CommonPresetDcdb + ` resource "tencentcloud_dcdb_switch_db_instance_ha_operation" "switch_operation" { instance_id = local.dcdb_id diff --git a/tencentcloud/service_tencentcloud_dcdb.go b/tencentcloud/services/dcdb/service_tencentcloud_dcdb.go similarity index 94% rename from tencentcloud/service_tencentcloud_dcdb.go rename to tencentcloud/services/dcdb/service_tencentcloud_dcdb.go index 04694989be..8cc73421e1 100644 --- a/tencentcloud/service_tencentcloud_dcdb.go +++ b/tencentcloud/services/dcdb/service_tencentcloud_dcdb.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcdb import ( "context" @@ -7,21 +7,28 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" dcdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dcdb/v20180411" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewDcdbService(client *connectivity.TencentCloudClient) DcdbService { + return DcdbService{client: client} +} + type DcdbService struct { client *connectivity.TencentCloudClient } -//dc_account +// dc_account func (me *DcdbService) DescribeDcdbAccount(ctx context.Context, instanceId, userName string) (account *dcdb.DescribeAccountsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeAccountsRequest() ) @@ -63,7 +70,7 @@ func (me *DcdbService) DescribeDcdbAccount(ctx context.Context, instanceId, user } func (me *DcdbService) DeleteDcdbAccountById(ctx context.Context, instanceId, userName, host string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDeleteAccountRequest() @@ -90,7 +97,7 @@ func (me *DcdbService) DeleteDcdbAccountById(ctx context.Context, instanceId, us return } -//dc_db_instance +// dc_db_instance func (me *DcdbService) DescribeDcdbDbInstance(ctx context.Context, instanceId string) (instances *dcdb.DescribeDCDBInstancesResponseParams, errRet error) { params := make(map[string]interface{}) params["instance_ids"] = []*string{&instanceId} @@ -110,7 +117,7 @@ func (me *DcdbService) DescribeDcdbDbInstance(ctx context.Context, instanceId st func (me *DcdbService) InitDcdbDbInstance(ctx context.Context, instanceId string, params []*dcdb.DBParamValue) (initRet bool, flowId *uint64, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDCDBInstancesRequest() ) @@ -121,10 +128,10 @@ func (me *DcdbService) InitDcdbDbInstance(ctx context.Context, instanceId string } }() - err := resource.Retry(15*readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(15*tccommon.ReadRetryTimeout, func() *resource.RetryError { dbInstances, errResp := me.DescribeDcdbDbInstance(ctx, instanceId) if errResp != nil { - return retryError(errResp, InternalError) + return tccommon.RetryError(errResp, tccommon.InternalError) } if dbInstances.Instances[0] == nil { return resource.NonRetryableError(fmt.Errorf("DescribeDcdbDbInstance return result(dcdb instance) is nil!")) @@ -141,10 +148,10 @@ func (me *DcdbService) InitDcdbDbInstance(ctx context.Context, instanceId string iniRequest := dcdb.NewInitDCDBInstancesRequest() iniRequest.InstanceIds = []*string{&instanceId} iniRequest.Params = params - initErr := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + initErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := me.client.UseDcdbClient().InitDCDBInstances(iniRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -166,13 +173,13 @@ func (me *DcdbService) InitDcdbDbInstance(ctx context.Context, instanceId string return true, flowId, nil } -//dc_hourdb_instance +// dc_hourdb_instance func (me *DcdbService) DescribeDcdbHourdbInstance(ctx context.Context, instanceId string) (hourdbInstance *dcdb.DescribeDCDBInstancesResponseParams, errRet error) { return me.DescribeDcdbDbInstance(ctx, instanceId) } func (me *DcdbService) DeleteDcdbHourdbInstanceById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDestroyHourDCDBInstanceRequest() @@ -197,10 +204,10 @@ func (me *DcdbService) DeleteDcdbHourdbInstanceById(ctx context.Context, instanc return } -//dc_sg +// dc_sg func (me *DcdbService) DescribeDcdbSecurityGroup(ctx context.Context, instanceId string) (securityGroup *dcdb.DescribeDBSecurityGroupsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDBSecurityGroupsRequest() ) @@ -229,7 +236,7 @@ func (me *DcdbService) DescribeDcdbSecurityGroup(ctx context.Context, instanceId } func (me *DcdbService) DeleteDcdbSecurityGroupAttachmentById(ctx context.Context, instanceId, securityGroupId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDisassociateSecurityGroupsRequest() @@ -260,7 +267,7 @@ func (me *DcdbService) DeleteDcdbSecurityGroupAttachmentById(ctx context.Context // tencentcloud_dcdb_instances func (me *DcdbService) DescribeDcdbInstancesByFilter(ctx context.Context, params map[string]interface{}) (instances []*dcdb.DCDBInstanceInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDCDBInstancesRequest() ) @@ -348,7 +355,7 @@ func (me *DcdbService) DescribeDcdbInstancesByFilter(ctx context.Context, params // tencentcloud_dcdb_accounts func (me *DcdbService) DescribeDcdbAccountsByFilter(ctx context.Context, param map[string]interface{}) (accounts []*dcdb.DBAccount, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeAccountsRequest() ) @@ -396,7 +403,7 @@ func (me *DcdbService) DescribeDcdbAccountsByFilter(ctx context.Context, param m // tencentcloud_dcdb_databases func (me *DcdbService) DescribeDcdbDatabasesByFilter(ctx context.Context, param map[string]interface{}) (databases []*dcdb.Database, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDatabasesRequest() ) @@ -444,7 +451,7 @@ func (me *DcdbService) DescribeDcdbDatabasesByFilter(ctx context.Context, param // tencentcloud_dcdb_parameters func (me *DcdbService) DescribeDcdbParametersByFilter(ctx context.Context, param map[string]interface{}) (parameters []*dcdb.ParamDesc, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDBParametersRequest() ) @@ -480,7 +487,7 @@ func (me *DcdbService) DescribeDcdbParametersByFilter(ctx context.Context, param // tencentcloud_dcdb_shards func (me *DcdbService) DescribeDcdbShardsByFilter(ctx context.Context, param map[string]interface{}) (shards []*dcdb.DCDBShardInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDCDBShardsRequest() ) @@ -534,7 +541,7 @@ func (me *DcdbService) DescribeDcdbShardsByFilter(ctx context.Context, param map // tencentcloud_dcdb_security_groups func (me *DcdbService) DescribeDcdbSecurityGroupsByFilter(ctx context.Context, param map[string]interface{}) (securityGroups []*dcdb.SecurityGroup, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDBSecurityGroupsRequest() ) @@ -570,7 +577,7 @@ func (me *DcdbService) DescribeDcdbSecurityGroupsByFilter(ctx context.Context, p // tencentcloud_dcdb_db_instance func (me *DcdbService) DeleteDcdbDbInstanceById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDestroyDCDBInstanceRequest() request.InstanceId = &instanceId @@ -594,7 +601,7 @@ func (me *DcdbService) DeleteDcdbDbInstanceById(ctx context.Context, instanceId } func (me *DcdbService) DescribeDcnDetailById(ctx context.Context, instanceId string) (dcnDetails []*dcdb.DcnDetailItem, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeDcnDetailRequest() request.InstanceId = &instanceId @@ -634,7 +641,7 @@ func (me *DcdbService) DescribeDcnDetailById(ctx context.Context, instanceId str } func (me *DcdbService) DescribeDcdbFlowById(ctx context.Context, flowId *int64) (dbInstance *dcdb.DescribeFlowResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeFlowRequest() if flowId != nil { @@ -662,7 +669,7 @@ func (me *DcdbService) DescribeDcdbFlowById(ctx context.Context, flowId *int64) func (me *DcdbService) DcdbDbInstanceStateRefreshFunc(flowId *int64, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil if *flowId == 0 { return &dcdb.DescribeFlowResponseParams{}, "0", nil @@ -686,7 +693,7 @@ func (me *DcdbService) DcdbDbInstanceStateRefreshFunc(flowId *int64, failStates // tencentcloud_dcdb_account_privileges func (me *DcdbService) DescribeDcdbAccountPrivilegesById(ctx context.Context, ids string, dbName, aType, object, colName *string) (accountPrivileges *dcdb.DescribeAccountPrivilegesResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeAccountPrivilegesRequest() defer func() { @@ -695,7 +702,7 @@ func (me *DcdbService) DescribeDcdbAccountPrivilegesById(ctx context.Context, id } }() - idSplit := strings.Split(ids, FILED_SP) + idSplit := strings.Split(ids, tccommon.FILED_SP) if len(idSplit) != 7 { return nil, fmt.Errorf("[service_tc_dbdb]id is broken,%s", ids) } @@ -744,7 +751,7 @@ func (me *DcdbService) DescribeDcdbAccountPrivilegesById(ctx context.Context, id } func (me *DcdbService) DescribeDcdbDatabases(ctx context.Context, instanceId string) (rets *dcdb.DescribeDatabasesResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeDatabasesRequest() request.InstanceId = &instanceId @@ -769,7 +776,7 @@ func (me *DcdbService) DescribeDcdbDatabases(ctx context.Context, instanceId str } func (me *DcdbService) DescribeDcdbDBTables(ctx context.Context, instanceId string, dbName string, tableName string) (rets *dcdb.DescribeDatabaseTableResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeDatabaseTableRequest() request.InstanceId = &instanceId @@ -796,7 +803,7 @@ func (me *DcdbService) DescribeDcdbDBTables(ctx context.Context, instanceId stri } func (me *DcdbService) DescribeDcdbDBObjects(ctx context.Context, instanceId string, dbName string) (rets *dcdb.DescribeDatabaseObjectsResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeDatabaseObjectsRequest() request.InstanceId = &instanceId @@ -823,7 +830,7 @@ func (me *DcdbService) DescribeDcdbDBObjects(ctx context.Context, instanceId str // tencentcloud_dcdb_db_parameters func (me *DcdbService) DescribeDcdbDbParametersById(ctx context.Context, instanceId string) (dbParameters *dcdb.DescribeDBParametersResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeDBParametersRequest() request.InstanceId = &instanceId @@ -850,7 +857,7 @@ func (me *DcdbService) DescribeDcdbDbParametersById(ctx context.Context, instanc // tencentcloud_dcdb_database_objects func (me *DcdbService) DescribeDcdbDBObjectsByFilter(ctx context.Context, param map[string]interface{}) (response *dcdb.DescribeDatabaseObjectsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) instanceId *string dbName *string ) @@ -882,7 +889,7 @@ func (me *DcdbService) DescribeDcdbDBObjectsByFilter(ctx context.Context, param // tencentcloud_dcdb_database_tables func (me *DcdbService) DescribeDcdbDBTablesByFilter(ctx context.Context, param map[string]interface{}) (response *dcdb.DescribeDatabaseTableResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) instanceId *string dbName *string tableName *string @@ -916,7 +923,7 @@ func (me *DcdbService) DescribeDcdbDBTablesByFilter(ctx context.Context, param m } func (me *DcdbService) DescribeDcdbDbInstanceDetailById(ctx context.Context, instanceId string) (dedicatedClusterDbInstance *dcdb.DescribeDCDBInstanceDetailResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeDCDBInstanceDetailRequest() request.InstanceId = &instanceId @@ -941,7 +948,7 @@ func (me *DcdbService) DescribeDcdbDbInstanceDetailById(ctx context.Context, ins } func (me *DcdbService) DeleteDcdbDedicatedClusterDbInstanceById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewTerminateDedicatedDBInstanceRequest() request.InstanceId = &instanceId @@ -965,7 +972,7 @@ func (me *DcdbService) DeleteDcdbDedicatedClusterDbInstanceById(ctx context.Cont } func (me *DcdbService) DescribeDcdbEncryptAttributesConfigById(ctx context.Context, instanceId string) (encryptAttributesConfig *dcdb.DescribeDBEncryptAttributesResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeDBEncryptAttributesRequest() request.InstanceId = &instanceId @@ -990,7 +997,7 @@ func (me *DcdbService) DescribeDcdbEncryptAttributesConfigById(ctx context.Conte } func (me *DcdbService) DescribeDcdbDbSyncModeConfigById(ctx context.Context, instanceId string) (dbSyncModeConfig *dcdb.DescribeDBSyncModeResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewDescribeDBSyncModeRequest() request.InstanceId = &instanceId @@ -1016,7 +1023,7 @@ func (me *DcdbService) DescribeDcdbDbSyncModeConfigById(ctx context.Context, ins func (me *DcdbService) DcdbDbSyncModeConfigStateRefreshFunc(instanceId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDcdbDbSyncModeConfigById(ctx, instanceId) @@ -1030,7 +1037,7 @@ func (me *DcdbService) DcdbDbSyncModeConfigStateRefreshFunc(instanceId string, f func (me *DcdbService) DcdbDcnStateRefreshFunc(instanceId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil rets, err := me.DescribeDcnDetailById(ctx, instanceId) if err != nil { @@ -1048,7 +1055,7 @@ func (me *DcdbService) DcdbDcnStateRefreshFunc(instanceId string, failStates []s func (me *DcdbService) DcdbAccountRefreshFunc(instanceId string, userName string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDcdbAccount(ctx, instanceId, userName) @@ -1066,7 +1073,7 @@ func (me *DcdbService) DcdbAccountRefreshFunc(instanceId string, userName string } func (me *DcdbService) SetDcdbExtranetAccess(ctx context.Context, instanceId string, ipv6Flag int, enable bool) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) var flowId *int64 if enable { @@ -1074,10 +1081,10 @@ func (me *DcdbService) SetDcdbExtranetAccess(ctx context.Context, instanceId str request.InstanceId = &instanceId request.Ipv6Flag = helper.IntInt64(ipv6Flag) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := me.client.UseDcdbClient().OpenDBExtranetAccess(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -1095,10 +1102,10 @@ func (me *DcdbService) SetDcdbExtranetAccess(ctx context.Context, instanceId str request.InstanceId = &instanceId request.Ipv6Flag = helper.IntInt64(ipv6Flag) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := me.client.UseDcdbClient().CloseDBExtranetAccess(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -1115,7 +1122,7 @@ func (me *DcdbService) SetDcdbExtranetAccess(ctx context.Context, instanceId str if flowId != nil { // need to wait operation complete // 0:success; 1:failed, 2:running - conf := BuildStateChangeConf([]string{}, []string{"0"}, 2*readRetryTimeout, time.Second, me.DcdbDbInstanceStateRefreshFunc(flowId, []string{"1"})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"0"}, 2*tccommon.ReadRetryTimeout, time.Second, me.DcdbDbInstanceStateRefreshFunc(flowId, []string{"1"})) if _, e := conf.WaitForState(); e != nil { return e } @@ -1124,15 +1131,15 @@ func (me *DcdbService) SetDcdbExtranetAccess(ctx context.Context, instanceId str } func (me *DcdbService) SetRealServerAccessStrategy(ctx context.Context, instanceId string, rsAccessStrategy int) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dcdb.NewModifyRealServerAccessStrategyRequest() request.InstanceId = &instanceId request.RsAccessStrategy = helper.IntInt64(rsAccessStrategy) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := me.client.UseDcdbClient().ModifyRealServerAccessStrategy(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -1147,7 +1154,7 @@ func (me *DcdbService) SetRealServerAccessStrategy(ctx context.Context, instance } func (me *DcdbService) SetNetworkVip(ctx context.Context, instanceId, vpcId, subnetId, vip, vipv6 string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) var flowId *int64 request := dcdb.NewModifyInstanceNetworkRequest() @@ -1162,10 +1169,10 @@ func (me *DcdbService) SetNetworkVip(ctx context.Context, instanceId, vpcId, sub request.Vipv6 = &vipv6 } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := me.client.UseDcdbClient().ModifyInstanceNetwork(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -1180,7 +1187,7 @@ func (me *DcdbService) SetNetworkVip(ctx context.Context, instanceId, vpcId, sub if flowId != nil { // need to wait operation complete // 0:success; 1:failed, 2:running - conf := BuildStateChangeConf([]string{}, []string{"0"}, 2*readRetryTimeout, time.Second, me.DcdbDbInstanceStateRefreshFunc(flowId, []string{"1"})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"0"}, 2*tccommon.ReadRetryTimeout, time.Second, me.DcdbDbInstanceStateRefreshFunc(flowId, []string{"1"})) if _, e := conf.WaitForState(); e != nil { return e } @@ -1191,7 +1198,7 @@ func (me *DcdbService) SetNetworkVip(ctx context.Context, instanceId, vpcId, sub func (me *DcdbService) DescribeDcdbFileDownloadUrlByFilter(ctx context.Context, param map[string]interface{}) (fileDownloadUrl *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeFileDownloadUrlRequest() ) @@ -1232,7 +1239,7 @@ func (me *DcdbService) DescribeDcdbFileDownloadUrlByFilter(ctx context.Context, func (me *DcdbService) DescribeDcdbLogFilesByFilter(ctx context.Context, param map[string]interface{}) (ret *dcdb.DescribeDBLogFilesResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDBLogFilesRequest() ) @@ -1273,7 +1280,7 @@ func (me *DcdbService) DescribeDcdbLogFilesByFilter(ctx context.Context, param m func (me *DcdbService) DescribeDcdbInstanceNodeInfoByFilter(ctx context.Context, param map[string]interface{}) (instanceNodeInfo []*dcdb.BriefNodeInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDCDBInstanceNodeInfoRequest() ) @@ -1321,7 +1328,7 @@ func (me *DcdbService) DescribeDcdbInstanceNodeInfoByFilter(ctx context.Context, func (me *DcdbService) DescribeDcdbOrdersByFilter(ctx context.Context, param map[string]interface{}) (orders []*dcdb.Deal, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeOrdersRequest() ) @@ -1357,7 +1364,7 @@ func (me *DcdbService) DescribeDcdbOrdersByFilter(ctx context.Context, param map func (me *DcdbService) DescribeDcdbPriceByFilter(ctx context.Context, param map[string]interface{}) (ret *dcdb.DescribeDCDBPriceResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDCDBPriceRequest() ) @@ -1416,7 +1423,7 @@ func (me *DcdbService) DescribeDcdbPriceByFilter(ctx context.Context, param map[ func (me *DcdbService) DescribeDcdbProjectsByFilter(ctx context.Context) (projects []*dcdb.Project, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeProjectsRequest() ) @@ -1445,7 +1452,7 @@ func (me *DcdbService) DescribeDcdbProjectsByFilter(ctx context.Context) (projec func (me *DcdbService) DescribeDcdbProjectSecurityGroupsByFilter(ctx context.Context, param map[string]interface{}) (projectSecurityGroups []*dcdb.SecurityGroup, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeProjectSecurityGroupsRequest() ) @@ -1483,7 +1490,7 @@ func (me *DcdbService) DescribeDcdbProjectSecurityGroupsByFilter(ctx context.Con func (me *DcdbService) DescribeDcdbRenewalPriceByFilter(ctx context.Context, param map[string]interface{}) (ret *dcdb.DescribeDCDBRenewalPriceResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDCDBRenewalPriceRequest() ) @@ -1524,7 +1531,7 @@ func (me *DcdbService) DescribeDcdbRenewalPriceByFilter(ctx context.Context, par func (me *DcdbService) DescribeDcdbSaleInfoByFilter(ctx context.Context, param map[string]interface{}) (regionInfo []*dcdb.RegionInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDCDBSaleInfoRequest() ) @@ -1554,7 +1561,7 @@ func (me *DcdbService) DescribeDcdbSaleInfoByFilter(ctx context.Context, param m func (me *DcdbService) DescribeDcdbShardSpecByFilter(ctx context.Context, param map[string]interface{}) (specConfigs []*dcdb.SpecConfig, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeShardSpecRequest() ) @@ -1582,7 +1589,7 @@ func (me *DcdbService) DescribeDcdbShardSpecByFilter(ctx context.Context, param func (me *DcdbService) DescribeDcdbSlowLogsByFilter(ctx context.Context, param map[string]interface{}) (slowLogs []*dcdb.SlowLogData, ret *dcdb.DescribeDBSlowLogsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDBSlowLogsRequest() ) @@ -1652,7 +1659,7 @@ func (me *DcdbService) DescribeDcdbSlowLogsByFilter(ctx context.Context, param m func (me *DcdbService) DescribeDcdbUpgradePriceByFilter(ctx context.Context, param map[string]interface{}) (ret *dcdb.DescribeDCDBUpgradePriceResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dcdb.NewDescribeDCDBUpgradePriceRequest() ) diff --git a/tencentcloud/data_source_tc_dc_gateway_ccn_routes.go b/tencentcloud/services/dcg/data_source_tc_dc_gateway_ccn_routes.go similarity index 81% rename from tencentcloud/data_source_tc_dc_gateway_ccn_routes.go rename to tencentcloud/services/dcg/data_source_tc_dc_gateway_ccn_routes.go index 0cd0b1064b..4e644c344f 100644 --- a/tencentcloud/data_source_tc_dc_gateway_ccn_routes.go +++ b/tencentcloud/services/dcg/data_source_tc_dc_gateway_ccn_routes.go @@ -1,13 +1,15 @@ -package tencentcloud +package dcg import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func dataSourceTencentCloudDcGatewayCCNRoutes() *schema.Resource { +func DataSourceTencentCloudDcGatewayCCNRoutes() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcGatewayCCNRoutesRead, Schema: map[string]*schema.Schema{ @@ -59,12 +61,12 @@ func dataSourceTencentCloudDcGatewayCCNRoutes() *schema.Resource { } func dataSourceTencentCloudDcGatewayCCNRoutesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dc_gateway_ccn_routes.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dc_gateway_ccn_routes.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( id = d.Get("dcg_id").(string) @@ -95,7 +97,7 @@ func dataSourceTencentCloudDcGatewayCCNRoutesRead(d *schema.ResourceData, meta i d.SetId(id) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), infoList); err != nil { + if err := tccommon.WriteToFile(output.(string), infoList); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%s]\n", logId, output.(string), diff --git a/tencentcloud/data_source_tc_dc_gateway_ccn_routes_test.go b/tencentcloud/services/dcg/data_source_tc_dc_gateway_ccn_routes_test.go similarity index 84% rename from tencentcloud/data_source_tc_dc_gateway_ccn_routes_test.go rename to tencentcloud/services/dcg/data_source_tc_dc_gateway_ccn_routes_test.go index d01f29b3ea..61a4c2469b 100644 --- a/tencentcloud/data_source_tc_dc_gateway_ccn_routes_test.go +++ b/tencentcloud/services/dcg/data_source_tc_dc_gateway_ccn_routes_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcg_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,14 +14,14 @@ func TestAccDataSourceTencentCloudDcgV3CcnRoutesInstancesBasic(t *testing.T) { var rKey = "data.tencentcloud_dc_gateway_ccn_routes.test" resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudDcgCcnRoutesInstances, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(rKey), + tcacctest.AccCheckTencentCloudDataSourceID(rKey), resource.TestCheckResourceAttrSet(rKey, "instance_list.#"), ), }, diff --git a/tencentcloud/data_source_tc_dc_gateway_instances.go b/tencentcloud/services/dcg/data_source_tc_dc_gateway_instances.go similarity index 88% rename from tencentcloud/data_source_tc_dc_gateway_instances.go rename to tencentcloud/services/dcg/data_source_tc_dc_gateway_instances.go index 7db83fc84f..ebbde12038 100644 --- a/tencentcloud/data_source_tc_dc_gateway_instances.go +++ b/tencentcloud/services/dcg/data_source_tc_dc_gateway_instances.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcg import ( "context" @@ -6,10 +6,12 @@ import ( "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func dataSourceTencentCloudDcGatewayInstances() *schema.Resource { +func DataSourceTencentCloudDcGatewayInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDcGatewayInstancesRead, Schema: map[string]*schema.Schema{ @@ -89,12 +91,12 @@ func dataSourceTencentCloudDcGatewayInstances() *schema.Resource { } func dataSourceTencentCloudDcGatewayInstancesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dc_gateway_instances.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_dc_gateway_instances.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( id = "" @@ -147,7 +149,7 @@ func dataSourceTencentCloudDcGatewayInstancesRead(d *schema.ResourceData, meta i d.SetId(fmt.Sprintf("%x", m.Sum(nil))) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), infoList); err != nil { + if err := tccommon.WriteToFile(output.(string), infoList); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%s]\n", logId, output.(string), diff --git a/tencentcloud/data_source_tc_dc_gateway_instances_test.go b/tencentcloud/services/dcg/data_source_tc_dc_gateway_instances_test.go similarity index 85% rename from tencentcloud/data_source_tc_dc_gateway_instances_test.go rename to tencentcloud/services/dcg/data_source_tc_dc_gateway_instances_test.go index 2b8bd3d82e..4f46273f60 100644 --- a/tencentcloud/data_source_tc_dc_gateway_instances_test.go +++ b/tencentcloud/services/dcg/data_source_tc_dc_gateway_instances_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcg_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -13,18 +15,18 @@ func TestAccDataSourceTencentCloudDcgV3InstancesBasic(t *testing.T) { var idKey = "data.tencentcloud_dc_gateway_instances.id_select" resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudDcgInstances, Check: resource.ComposeTestCheckFunc( //name filter - testAccCheckTencentCloudDataSourceID(nameKey), + tcacctest.AccCheckTencentCloudDataSourceID(nameKey), resource.TestCheckResourceAttrSet(nameKey, "instance_list.#"), //id filter - testAccCheckTencentCloudDataSourceID(idKey), + tcacctest.AccCheckTencentCloudDataSourceID(idKey), resource.TestCheckResourceAttr(idKey, "instance_list.#", "1"), resource.TestCheckResourceAttr(idKey, "instance_list.0.gateway_type", "NORMAL"), diff --git a/tencentcloud/extension_dc_gateway.go b/tencentcloud/services/dcg/extension_dc_gateway.go similarity index 74% rename from tencentcloud/extension_dc_gateway.go rename to tencentcloud/services/dcg/extension_dc_gateway.go index 7dffd9fad8..3a825a5a61 100644 --- a/tencentcloud/extension_dc_gateway.go +++ b/tencentcloud/services/dcg/extension_dc_gateway.go @@ -1,6 +1,6 @@ -package tencentcloud +package dcg -//https://cloud.tencent.com/document/product/215/19192 +// https://cloud.tencent.com/document/product/215/19192 const ( DCG_NETWORK_TYPE_VPC = "VPC" DCG_NETWORK_TYPE_CCN = "CCN" @@ -10,7 +10,7 @@ const ( DCG_GATEWAY_TYPE_NAT = "NAT" ) -//https://cloud.tencent.com/document/product/215/30643 +// https://cloud.tencent.com/document/product/215/30643 const ( DCG_CCN_ROUTE_TYPE_BGP = "BGP" DCG_CCN_ROUTE_TYPE_STATIC = "STATIC" diff --git a/tencentcloud/services/dcg/extension_security_group.go b/tencentcloud/services/dcg/extension_security_group.go new file mode 100644 index 0000000000..56ef72bd5a --- /dev/null +++ b/tencentcloud/services/dcg/extension_security_group.go @@ -0,0 +1,3 @@ +package dcg + +const DESCRIBE_SECURITY_GROUP_LIMIT = 50 diff --git a/tencentcloud/services/dcg/extension_vpc.go b/tencentcloud/services/dcg/extension_vpc.go new file mode 100644 index 0000000000..c7e7abe78c --- /dev/null +++ b/tencentcloud/services/dcg/extension_vpc.go @@ -0,0 +1,327 @@ +package dcg + +/* +all gate way types +https://cloud.tencent.com/document/api/215/15824#Route +*/ +const GATE_WAY_TYPE_CVM = "CVM" +const GATE_WAY_TYPE_VPN = "VPN" +const GATE_WAY_TYPE_DIRECTCONNECT = "DIRECTCONNECT" +const GATE_WAY_TYPE_PEERCONNECTION = "PEERCONNECTION" +const GATE_WAY_TYPE_SSLVPN = "SSLVPN" +const GATE_WAY_TYPE_HAVIP = "HAVIP" +const GATE_WAY_TYPE_NAT = "NAT" +const GATE_WAY_TYPE_NORMAL_CVM = "NORMAL_CVM" +const GATE_WAY_TYPE_EIP = "EIP" +const GATE_WAY_TYPE_CCN = "CCN" +const GATE_WAY_TYPE_LOCAL_GATEWAY = "LOCAL_GATEWAY" + +var ALL_GATE_WAY_TYPES = []string{ + GATE_WAY_TYPE_CVM, + GATE_WAY_TYPE_VPN, + GATE_WAY_TYPE_DIRECTCONNECT, + GATE_WAY_TYPE_PEERCONNECTION, + GATE_WAY_TYPE_SSLVPN, + GATE_WAY_TYPE_HAVIP, + GATE_WAY_TYPE_NAT, + GATE_WAY_TYPE_NORMAL_CVM, + GATE_WAY_TYPE_EIP, + GATE_WAY_TYPE_CCN, + GATE_WAY_TYPE_LOCAL_GATEWAY, +} + +const VPC_SERVICE_TYPE = "vpc" + +/* +EIP +*/ +const ( + EIP_STATUS_CREATING = "CREATING" + EIP_STATUS_BINDING = "BINDING" + EIP_STATUS_BIND = "BIND" + EIP_STATUS_UNBINDING = "UNBINDING" + EIP_STATUS_UNBIND = "UNBIND" + EIP_STATUS_OFFLINING = "OFFLINING" + EIP_STATUS_BIND_ENI = "BIND_ENI" + + EIP_TYPE_EIP = "EIP" + EIP_TYPE_ANYCAST = "AnycastEIP" + EIP_TYPE_HIGH_QUALITY = "HighQualityEIP" + EIP_TYPE_ANTI_DDOS = "AntiDDoSEIP" + + EIP_ANYCAST_ZONE_GLOBAL = "ANYCAST_ZONE_GLOBAL" + EIP_ANYCAST_ZONE_OVERSEAS = "ANYCAST_ZONE_OVERSEAS" + + EIP_INTERNET_PROVIDER_BGP = "BGP" + EIP_INTERNET_PROVIDER_CMCC = "CMCC" + EIP_INTERNET_PROVIDER_CTCC = "CTCC" + EIP_INTERNET_PROVIDER_CUCC = "CUCC" + + EIP_RESOURCE_TYPE = "eip" + + EIP_TASK_STATUS_SUCCESS = "SUCCESS" + EIP_TASK_STATUS_RUNNING = "RUNNING" + EIP_TASK_STATUS_FAILED = "FAILED" +) + +var EIP_INTERNET_PROVIDER = []string{ + EIP_INTERNET_PROVIDER_BGP, + EIP_INTERNET_PROVIDER_CMCC, + EIP_INTERNET_PROVIDER_CTCC, + EIP_INTERNET_PROVIDER_CUCC, +} + +var EIP_TYPE = []string{ + EIP_TYPE_EIP, + EIP_TYPE_ANYCAST, + EIP_TYPE_HIGH_QUALITY, + EIP_TYPE_ANTI_DDOS, +} + +var EIP_ANYCAST_ZONE = []string{ + EIP_ANYCAST_ZONE_GLOBAL, + EIP_ANYCAST_ZONE_OVERSEAS, +} + +var EIP_AVAILABLE_PERIOD = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36} + +// ENI +const ( + ENI_DESCRIBE_LIMIT = 100 +) + +const ( + ENI_STATE_PENDING = "PENDING" + ENI_STATE_AVAILABLE = "AVAILABLE" + ENI_STATE_ATTACHING = "ATTACHING" + ENI_STATE_DETACHING = "DETACHING" + ENI_STATE_DELETING = "DELETING" +) + +const ( + ENI_IP_PENDING = "PENDING" + ENI_IP_AVAILABLE = "AVAILABLE" + ENI_IP_ATTACHING = "ATTACHING" + ENI_IP_DETACHING = "DETACHING" + ENI_IP_DELETING = "DELETING" +) + +/* +NAT +*/ + +const ( + NAT_DESCRIBE_LIMIT = 100 + NAT_EIP_MAX_LIMIT = 10 +) + +const ( + NAT_FAILED_STATE = "FAILED" +) + +const ( + NAT_GATEWAY_TYPE_SUBNET = "SUBNET" + NAT_GATEWAY_TYPE_NETWORK_INTERFACE = "NETWORKINTERFACE" +) + +/* +VPN +*/ + +const ( + VPN_DESCRIBE_LIMIT = 100 +) + +const ( + VPN_TASK_STATUS_SUCCESS = "SUCCESS" + VPN_TASK_STATUS_RUNNING = "RUNNING" + VPN_TASK_STATUS_FAILED = "FAILED" +) + +const ( + VPN_STATE_PENDING = "PENDING" + VPN_STATE_DELETING = "DELETING" + VPN_STATE_AVAILABLE = "AVAILABLE" +) + +var VPN_STATE = []string{ + VPN_STATE_PENDING, + VPN_STATE_DELETING, + VPN_STATE_AVAILABLE, +} + +const ( + VPN_PERIOD_PREPAID_RENEW_FLAG_AUTO_NOTIFY = "NOTIFY_AND_AUTO_RENEW" + VPN_PERIOD_PREPAID_RENEW_FLAG_NOT = "NOTIFY_AND_MANUAL_RENEW" +) + +var VPN_PERIOD_PREPAID_RENEW_FLAG = []string{ + VPN_PERIOD_PREPAID_RENEW_FLAG_AUTO_NOTIFY, + VPN_PERIOD_PREPAID_RENEW_FLAG_NOT, +} + +const ( + VPN_CHARGE_TYPE_PREPAID = "PREPAID" + VPN_CHARGE_TYPE_POSTPAID_BY_HOUR = "POSTPAID_BY_HOUR" +) + +var VPN_CHARGE_TYPE = []string{ + VPN_CHARGE_TYPE_PREPAID, + VPN_CHARGE_TYPE_POSTPAID_BY_HOUR, +} + +const ( + VPN_PURCHASE_PLAN_PRE_POST = "PREPAID_TO_POSTPAID" +) + +var VPN_PURCHASE_PLAN = []string{ + VPN_PURCHASE_PLAN_PRE_POST, +} + +const ( + VPN_RESTRICT_STATE_NORMAL = "NORMAL" + VPN_RESTRICT_STATE_ISOLATE = "PRETECIVELY_ISOLATED" +) + +var VPN_RESTRICT_STATE = []string{ + VPN_RESTRICT_STATE_NORMAL, + VPN_RESTRICT_STATE_ISOLATE, +} + +const ( + VPN_IKE_PROPO_ENCRY_ALGORITHM_3DESCBC = "3DES-CBC" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC128 = "AES-CBC-128" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC192 = "AES-CBS-192`" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC256 = "AES-CBC-256" + VPN_IKE_PROPO_ENCRY_ALGORITHM_DESCBC = "DES-CBC" +) + +var VPN_IKE_PROPO_ENCRY_ALGORITHM = []string{ + VPN_IKE_PROPO_ENCRY_ALGORITHM_3DESCBC, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC128, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC192, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC256, + VPN_IKE_PROPO_ENCRY_ALGORITHM_DESCBC, +} + +const ( + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA = "SHA" + VPN_IKE_PROPO_AUTHEN_ALGORITHM_MD5 = "MD5" + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA256 = "SHA-256" +) + +var VPN_IKE_PROPO_AUTHEN_ALGORITHM = []string{ + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA, + VPN_IKE_PROPO_AUTHEN_ALGORITHM_MD5, + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA256, +} + +const ( + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA1 = "SHA1" + VPN_IPSEC_INTEGRITY_ALGORITHM_MD5 = "MD5" + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA256 = "SHA-256" +) + +var VPN_IPSEC_INTEGRITY_ALGORITHM = []string{ + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA1, + VPN_IPSEC_INTEGRITY_ALGORITHM_MD5, + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA256, +} + +const ( + VPN_IKE_EXCHANGE_MODE_AGGRESSIVE = "AGGRESSIVE" + VPN_IKE_EXCHANGE_MODE_MAIN = "MAIN" +) + +var VPN_IKE_EXCHANGE_MODE = []string{ + VPN_IKE_EXCHANGE_MODE_AGGRESSIVE, + VPN_IKE_EXCHANGE_MODE_MAIN, +} + +const ( + VPN_IKE_IDENTITY_ADDRESS = "ADDRESS" + VPN_IKE_IDENTITY_FQDN = "FQDN" +) + +var VPN_IKE_IDENTITY = []string{ + VPN_IKE_IDENTITY_ADDRESS, + VPN_IKE_IDENTITY_FQDN, +} + +const ( + VPN_IKE_DH_GROUP_NAME_GROUP1 = "GROUP1" + VPN_IKE_DH_GROUP_NAME_GROUP2 = "GROUP2" + VPN_IKE_DH_GROUP_NAME_GROUP5 = "GROUP5" + VPN_IKE_DH_GROUP_NAME_GROUP14 = "GROUP14" + VPN_IKE_DH_GROUP_NAME_GROUP24 = "GROUP24" +) + +var VPN_IKE_DH_GROUP_NAME = []string{ + VPN_IKE_DH_GROUP_NAME_GROUP1, + VPN_IKE_DH_GROUP_NAME_GROUP2, + VPN_IKE_DH_GROUP_NAME_GROUP5, + VPN_IKE_DH_GROUP_NAME_GROUP14, + VPN_IKE_DH_GROUP_NAME_GROUP24, +} + +const ( + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP1 = "DH-GROUP1" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP2 = "DH-GROUP2" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP5 = "DH-GROUP5" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP14 = "DH-GROUP14" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP24 = "DH-GROUP24" + VPN_IPSEC_PFS_DH_GROUP_NAME_NULL = "NULL" +) + +var VPN_IPSEC_PFS_DH_GROUP_NAME = []string{ + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP1, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP2, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP5, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP14, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP24, + VPN_IPSEC_PFS_DH_GROUP_NAME_NULL, +} + +const ( + VPN_IPSEC_ENCRY_ALGORITHM_3DESCBC = "3DES-CBC" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC128 = "AES-CBC-128" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC192 = "AES-CBS-192`" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC256 = "AES-CBC-256" + VPN_IPSEC_ENCRY_ALGORITHM_DESCBC = "DES-CBC" + VPN_IPSEC_ENCRY_ALGORITHM_NULL = "NULL" +) + +var VPN_IPSEC_ENCRY_ALGORITHM = []string{ + VPN_IPSEC_ENCRY_ALGORITHM_3DESCBC, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC128, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC192, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC256, + VPN_IPSEC_ENCRY_ALGORITHM_DESCBC, + VPN_IPSEC_ENCRY_ALGORITHM_NULL, +} + +/* +HAVIP +*/ + +const ( + HAVIP_DESCRIBE_LIMIT = 100 +) + +/* +COMMON +*/ +const ( + VPCNotFound = "ResourceNotFound" + VPCUnsupportedOperation = "UnsupportedOperation" +) + +const ( + DPD_ACTION_CLEAR = "clear" + DPD_ACTION_RESTART = "restart" +) + +var DPD_ACTIONS = []string{ + DPD_ACTION_CLEAR, + DPD_ACTION_RESTART, +} diff --git a/tencentcloud/resource_tc_dc_gateway.go b/tencentcloud/services/dcg/resource_tc_dc_gateway.go similarity index 73% rename from tencentcloud/resource_tc_dc_gateway.go rename to tencentcloud/services/dcg/resource_tc_dc_gateway.go index 4f2db27c6c..86626e1539 100644 --- a/tencentcloud/resource_tc_dc_gateway.go +++ b/tencentcloud/services/dcg/resource_tc_dc_gateway.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcg import ( "context" @@ -6,11 +6,13 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func resourceTencentCloudDcGatewayInstance() *schema.Resource { +func ResourceTencentCloudDcGatewayInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcGatewayCreate, Read: resourceTencentCloudDcGatewayRead, @@ -24,14 +26,14 @@ func resourceTencentCloudDcGatewayInstance() *schema.Resource { "name": { Type: schema.TypeString, Required: true, - ValidateFunc: validateStringLengthInRange(1, 60), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 60), Description: "Name of the DCG.", }, "network_type": { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateAllowedStringValue(DCG_NETWORK_TYPES), + ValidateFunc: tccommon.ValidateAllowedStringValue(DCG_NETWORK_TYPES), Description: "Type of associated network. Valid value: `VPC` and `CCN`.", }, "network_instance_id": { @@ -45,7 +47,7 @@ func resourceTencentCloudDcGatewayInstance() *schema.Resource { Optional: true, ForceNew: true, Default: DCG_GATEWAY_TYPE_NORMAL, - ValidateFunc: validateAllowedStringValue(DCG_GATEWAY_TYPES), + ValidateFunc: tccommon.ValidateAllowedStringValue(DCG_GATEWAY_TYPES), Description: "Type of the gateway. Valid value: `NORMAL` and `NAT`. Default is `NORMAL`. NOTES: CCN only supports `NORMAL` and a VPC can create two DCGs, the one is NAT type and the other is non-NAT type.", }, @@ -70,12 +72,12 @@ func resourceTencentCloudDcGatewayInstance() *schema.Resource { } func resourceTencentCloudDcGatewayCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_gateway.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dc_gateway.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( name = d.Get("name").(string) @@ -119,16 +121,16 @@ func resourceTencentCloudDcGatewayCreate(d *schema.ResourceData, meta interface{ } func resourceTencentCloudDcGatewayRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_gateway.read")() + defer tccommon.LogElapsed("resource.tencentcloud_dc_gateway.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { info, has, e := service.DescribeDirectConnectGateway(ctx, d.Id()) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if has == 0 { @@ -152,12 +154,12 @@ func resourceTencentCloudDcGatewayRead(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudDcGatewayUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_gateway.update")() + defer tccommon.LogElapsed("resource.tencentcloud_dc_gateway.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if d.HasChange("name") { var name = d.Get("name").(string) return service.ModifyDirectConnectGatewayAttribute(ctx, d.Id(), name) @@ -167,16 +169,16 @@ func resourceTencentCloudDcGatewayUpdate(d *schema.ResourceData, meta interface{ } func resourceTencentCloudDcGatewayDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_gateway.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dc_gateway.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, e := service.DescribeDirectConnectGateway(ctx, d.Id()) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if has == 0 { diff --git a/tencentcloud/resource_tc_dc_gateway_attachment.go b/tencentcloud/services/dcg/resource_tc_dc_gateway_attachment.go similarity index 71% rename from tencentcloud/resource_tc_dc_gateway_attachment.go rename to tencentcloud/services/dcg/resource_tc_dc_gateway_attachment.go index 544759a107..c8b1b4d734 100644 --- a/tencentcloud/resource_tc_dc_gateway_attachment.go +++ b/tencentcloud/services/dcg/resource_tc_dc_gateway_attachment.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcg import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDcGatewayAttachment() *schema.Resource { +func ResourceTencentCloudDcGatewayAttachment() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcGatewayAttachmentCreate, Read: resourceTencentCloudDcGatewayAttachmentRead, @@ -46,10 +49,10 @@ func resourceTencentCloudDcGatewayAttachment() *schema.Resource { } func resourceTencentCloudDcGatewayAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_gateway_attachment.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_gateway_attachment.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = vpc.NewAssociateDirectConnectGatewayNatGatewayRequest() @@ -72,10 +75,10 @@ func resourceTencentCloudDcGatewayAttachmentCreate(d *schema.ResourceData, meta request.DirectConnectGatewayId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().AssociateDirectConnectGatewayNatGateway(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().AssociateDirectConnectGatewayNatGateway(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -86,22 +89,22 @@ func resourceTencentCloudDcGatewayAttachmentCreate(d *schema.ResourceData, meta return err } - d.SetId(vpcId + FILED_SP + directConnectGatewayId + FILED_SP + natGatewayId) + d.SetId(vpcId + tccommon.FILED_SP + directConnectGatewayId + tccommon.FILED_SP + natGatewayId) return resourceTencentCloudDcGatewayAttachmentRead(d, meta) } func resourceTencentCloudDcGatewayAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_dc_gateway_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_dc_gateway_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -136,14 +139,14 @@ func resourceTencentCloudDcGatewayAttachmentRead(d *schema.ResourceData, meta in } func resourceTencentCloudDcGatewayAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_dc_gateway_attachment.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_dc_gateway_attachment.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dc_gateway_attachment_test.go b/tencentcloud/services/dcg/resource_tc_dc_gateway_attachment_test.go similarity index 82% rename from tencentcloud/resource_tc_dc_gateway_attachment_test.go rename to tencentcloud/services/dcg/resource_tc_dc_gateway_attachment_test.go index 1f7191cb5d..b193b06aec 100644 --- a/tencentcloud/resource_tc_dc_gateway_attachment_test.go +++ b/tencentcloud/services/dcg/resource_tc_dc_gateway_attachment_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dcg_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDcGatewayAttachmentResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDcGatewayAttachment, diff --git a/tencentcloud/resource_tc_dc_gateway_ccn_route.go b/tencentcloud/services/dcg/resource_tc_dc_gateway_ccn_route.go similarity index 68% rename from tencentcloud/resource_tc_dc_gateway_ccn_route.go rename to tencentcloud/services/dcg/resource_tc_dc_gateway_ccn_route.go index fe2564c0e7..f127025c91 100644 --- a/tencentcloud/resource_tc_dc_gateway_ccn_route.go +++ b/tencentcloud/services/dcg/resource_tc_dc_gateway_ccn_route.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcg import ( "context" @@ -6,11 +6,13 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func resourceTencentCloudDcGatewayCcnRouteInstance() *schema.Resource { +func ResourceTencentCloudDcGatewayCcnRouteInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDcGatewayCcnRouteCreate, Read: resourceTencentCloudDcGatewayCcnRouteRead, @@ -26,7 +28,7 @@ func resourceTencentCloudDcGatewayCcnRouteInstance() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateCIDRNetworkAddress, + ValidateFunc: tccommon.ValidateCIDRNetworkAddress, Description: "A network address segment of IDC.", }, @@ -44,12 +46,12 @@ func resourceTencentCloudDcGatewayCcnRouteInstance() *schema.Resource { } func resourceTencentCloudDcGatewayCcnRouteCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_gateway_ccn_route.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dc_gateway_ccn_route.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( dcgId = d.Get("dcg_id").(string) @@ -72,13 +74,13 @@ func resourceTencentCloudDcGatewayCcnRouteCreate(d *schema.ResourceData, meta in } func resourceTencentCloudDcGatewayCcnRouteRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_gateway_ccn_route.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dc_gateway_ccn_route.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} items := strings.Split(d.Id(), "#") if len(items) != 2 { @@ -86,10 +88,10 @@ func resourceTencentCloudDcGatewayCcnRouteRead(d *schema.ResourceData, meta inte } dcgId, routeId := items[0], items[1] - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { info, has, e := service.DescribeDirectConnectGatewayCcnRoute(ctx, dcgId, routeId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if has == 0 { @@ -109,12 +111,12 @@ func resourceTencentCloudDcGatewayCcnRouteRead(d *schema.ResourceData, meta inte } func resourceTencentCloudDcGatewayCcnRouteDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dc_gateway_ccn_route.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dc_gateway_ccn_route.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} items := strings.Split(d.Id(), "#") if len(items) != 2 { diff --git a/tencentcloud/resource_tc_dc_gateway_ccn_route_test.go b/tencentcloud/services/dcg/resource_tc_dc_gateway_ccn_route_test.go similarity index 79% rename from tencentcloud/resource_tc_dc_gateway_ccn_route_test.go rename to tencentcloud/services/dcg/resource_tc_dc_gateway_ccn_route_test.go index e8034d9458..9216a658f0 100644 --- a/tencentcloud/resource_tc_dc_gateway_ccn_route_test.go +++ b/tencentcloud/services/dcg/resource_tc_dc_gateway_ccn_route_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcg_test import ( "context" @@ -7,8 +7,13 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcdcg "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcg" ) func TestAccTencentCloudDcgV3RouteBasic(t *testing.T) { @@ -17,8 +22,8 @@ func TestAccTencentCloudDcgV3RouteBasic(t *testing.T) { var rKey = "tencentcloud_dc_gateway_ccn_route.route" resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccTencentCloudCdgRouteDestroy, Steps: []resource.TestStep{ { @@ -38,14 +43,14 @@ func TestAccTencentCloudDcgV3RouteBasic(t *testing.T) { func testAccTencentCloudCdgRouteExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - service := VpcService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdcg.NewVpcService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) items := strings.Split(rs.Primary.ID, "#") @@ -80,10 +85,10 @@ func testAccTencentCloudCdgRouteExists(r string) resource.TestCheckFunc { func testAccTencentCloudCdgRouteDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdcg.NewVpcService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dc_gateway_ccn_route" { continue diff --git a/tencentcloud/resource_tc_dc_gateway_test.go b/tencentcloud/services/dcg/resource_tc_dc_gateway_test.go similarity index 81% rename from tencentcloud/resource_tc_dc_gateway_test.go rename to tencentcloud/services/dcg/resource_tc_dc_gateway_test.go index 0154cca3a4..00b5650c42 100644 --- a/tencentcloud/resource_tc_dc_gateway_test.go +++ b/tencentcloud/services/dcg/resource_tc_dc_gateway_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dcg_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdcg "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dcg" + "context" "fmt" "testing" @@ -16,8 +20,8 @@ func TestAccTencentCloudDcgV3InstancesBasic(t *testing.T) { var rKey = "tencentcloud_dc_gateway.ccn_main" resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccTencentCloudCdgInstanceDestroy, Steps: []resource.TestStep{ { @@ -63,15 +67,15 @@ func TestAccTencentCloudDcgV3InstancesBasic(t *testing.T) { func testAccTencentCloudCdgInstanceExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - service := VpcService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdcg.NewVpcService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribeDirectConnectGateway(ctx, rs.Primary.ID) @@ -88,10 +92,10 @@ func testAccTencentCloudCdgInstanceExists(r string) resource.TestCheckFunc { func testAccTencentCloudCdgInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcdcg.NewVpcService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dc_gateway" { continue diff --git a/tencentcloud/service_tencentcloud_dcg.go b/tencentcloud/services/dcg/service_tencentcloud_dcg.go similarity index 96% rename from tencentcloud/service_tencentcloud_dcg.go rename to tencentcloud/services/dcg/service_tencentcloud_dcg.go index 3bce8f9f25..502c244ac0 100644 --- a/tencentcloud/service_tencentcloud_dcg.go +++ b/tencentcloud/services/dcg/service_tencentcloud_dcg.go @@ -1,4 +1,4 @@ -package tencentcloud +package dcg import ( "context" @@ -7,6 +7,8 @@ import ( "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) @@ -23,7 +25,7 @@ type DcgInstanceInfo struct { enableBGP bool } -//info for direct connect gateway[ ccn type] route. +// info for direct connect gateway[ ccn type] route. type DcgRouteInfo struct { dcgId string routeId string @@ -55,7 +57,7 @@ func (me *VpcService) DescribeDirectConnectGateway(ctx context.Context, dcgId st func (me *VpcService) DescribeDirectConnectGateways(ctx context.Context, dcgId, name string) ( infos []DcgInstanceInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewDescribeDirectConnectGatewaysRequest() defer func() { @@ -231,7 +233,7 @@ func (me *VpcService) DescribeDirectConnectGatewayCcnRoute(ctx context.Context, } func (me *VpcService) DescribeDirectConnectGatewayCcnRoutes(ctx context.Context, dcgId string) (infos []DcgRouteInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewDescribeDirectConnectGatewayCcnRoutesRequest() defer func() { @@ -318,7 +320,7 @@ getMoreData: func (me *VpcService) CreateDirectConnectGateway(ctx context.Context, name, networkType, networkInstanceId, gatewayType string) ( dcgId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewCreateDirectConnectGatewayRequest() @@ -363,7 +365,7 @@ func (me *VpcService) ModifyDirectConnectGatewayAttribute(ctx context.Context, d return } - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewModifyDirectConnectGatewayAttributeRequest() request.DirectConnectGatewayId = &dcgId @@ -392,7 +394,7 @@ func (me *VpcService) ModifyDirectConnectGatewayAttribute(ctx context.Context, d func (me *VpcService) DeleteDirectConnectGateway(ctx context.Context, dcgId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewDeleteDirectConnectGatewayRequest() request.DirectConnectGatewayId = &dcgId ratelimit.Check(request.GetAction()) @@ -419,7 +421,7 @@ func (me *VpcService) DeleteDirectConnectGateway(ctx context.Context, dcgId stri func (me *VpcService) CreateDirectConnectGatewayCcnRoute(ctx context.Context, dcgId, cidr string, asPaths []string) (routeId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewCreateDirectConnectGatewayCcnRoutesRequest() request.DirectConnectGatewayId = &dcgId @@ -474,7 +476,7 @@ func (me *VpcService) CreateDirectConnectGatewayCcnRoute(ctx context.Context, dc // not used, because if support, it will cause resource destroyed func (me *VpcService) ReplaceDirectConnectGatewayCcnRoute(ctx context.Context, dcgId, cidr string, asPaths []string) (routeId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewReplaceDirectConnectGatewayCcnRoutesRequest() request.DirectConnectGatewayId = &dcgId @@ -528,7 +530,7 @@ func (me *VpcService) ReplaceDirectConnectGatewayCcnRoute(ctx context.Context, d func (me *VpcService) DeleteDirectConnectGatewayCcnRoute(ctx context.Context, dcgId, routeId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewDeleteDirectConnectGatewayCcnRoutesRequest() request.DirectConnectGatewayId = &dcgId @@ -556,7 +558,7 @@ func (me *VpcService) DeleteDirectConnectGatewayCcnRoute(ctx context.Context, dc } func (me *VpcService) DescribeDcGatewayAttachmentById(ctx context.Context, vpcId string, directConnectGatewayId string, natGatewayId string) (dcGateway *vpc.DirectConnectGateway, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewDescribeDirectConnectGatewaysRequest() request.DirectConnectGatewayIds = []*string{&directConnectGatewayId} @@ -586,7 +588,7 @@ func (me *VpcService) DescribeDcGatewayAttachmentById(ctx context.Context, vpcId } func (me *VpcService) DeleteDcGatewayAttachmentById(ctx context.Context, vpcId string, directConnectGatewayId string, natGatewayId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := vpc.NewDisassociateDirectConnectGatewayNatGatewayRequest() request.VpcId = &vpcId diff --git a/tencentcloud/services/dcg/service_tencentcloud_vpc.go b/tencentcloud/services/dcg/service_tencentcloud_vpc.go new file mode 100644 index 0000000000..e4fcd27c23 --- /dev/null +++ b/tencentcloud/services/dcg/service_tencentcloud_vpc.go @@ -0,0 +1,8075 @@ +package dcg + +import ( + "context" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "log" + "net" + "regexp" + "strconv" + "strings" + "sync" + "time" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +var eipUnattachLocker = &sync.Mutex{} + +/* For Adun Sake please DO NOT Declare the redundant Type STRUCT!! */ +// VPC basic information +type VpcBasicInfo struct { + vpcId string + name string + cidr string + isMulticast bool + isDefault bool + dnsServers []string + createTime string + tags []*vpc.Tag + assistantCidrs []string + dockerAssistantCidrs []string +} + +// subnet basic information +type VpcSubnetBasicInfo struct { + vpcId string + subnetId string + routeTableId string + name string + cidr string + isMulticast bool + isDefault bool + zone string + availableIpCount int64 + createTime string +} + +// route entry basic information +type VpcRouteEntryBasicInfo struct { + routeEntryId int64 + destinationCidr string + nextType string + nextBub string + description string + entryType string + enabled bool +} + +// route table basic information +type VpcRouteTableBasicInfo struct { + routeTableId string + name string + vpcId string + isDefault bool + subnetIds []string + entryInfos []VpcRouteEntryBasicInfo + createTime string +} + +type VpcSecurityGroupLiteRule struct { + action string + cidrIp string + port string + protocol string + addressId string + addressGroupId string + securityGroupId string + protocolTemplateId string + protocolTemplateGroupId string +} + +var securityGroupIdRE = regexp.MustCompile(`^sg-\w{8}$`) +var ipAddressIdRE = regexp.MustCompile(`^ipm-\w{8}$`) +var ipAddressGroupIdRE = regexp.MustCompile(`^ipmg-\w{8}$`) +var protocolTemplateRE = regexp.MustCompile(`^ppmg?-\w{8}$`) +var protocolTemplateIdRE = regexp.MustCompile(`^ppm-\w{8}$`) +var protocolTemplateGroupIdRE = regexp.MustCompile(`^ppmg-\w{8}$`) +var portRE = regexp.MustCompile(`^(\d{1,5},)*\d{1,5}$|^\d{1,5}-\d{1,5}$`) + +// acl rule +type VpcACLRule struct { + action string + cidrIp string + port string + protocol string +} + +type VpcEniIP struct { + ip net.IP + primary bool + desc *string +} + +func (rule VpcSecurityGroupLiteRule) String() string { + + var source string + + if rule.cidrIp != "" { + source = rule.cidrIp + } + if rule.securityGroupId != "" { + source = rule.securityGroupId + } + if rule.addressId != "" { + source = rule.addressId + } + if rule.addressGroupId != "" { + source = rule.addressGroupId + } + + protocol := rule.protocol + + if protocol == "" && rule.protocolTemplateId != "" { + protocol = rule.protocolTemplateId + } else if protocol == "" && rule.protocolTemplateGroupId != "" { + protocol = rule.protocolTemplateGroupId + } + + return fmt.Sprintf("%s#%s#%s#%s", rule.action, source, rule.port, protocol) +} + +func getSecurityGroupPolicies(rules []VpcSecurityGroupLiteRule) []*vpc.SecurityGroupPolicy { + policies := make([]*vpc.SecurityGroupPolicy, 0) + + for i := range rules { + rule := rules[i] + policy := &vpc.SecurityGroupPolicy{ + Action: &rule.action, + } + + if rule.securityGroupId != "" { + policy.SecurityGroupId = &rule.securityGroupId + } else if rule.addressId != "" || rule.addressGroupId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + if rule.addressId != "" { + policy.AddressTemplate.AddressId = &rule.addressId + } + if rule.addressGroupId != "" { + policy.AddressTemplate.AddressGroupId = &rule.addressGroupId + } + } else { + policy.CidrBlock = &rule.cidrIp + } + + usingProtocolTemplate := rule.protocolTemplateId != "" || rule.protocolTemplateGroupId != "" + + if usingProtocolTemplate { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + if rule.protocolTemplateId != "" { + policy.ServiceTemplate.ServiceId = &rule.protocolTemplateId + } + if rule.protocolTemplateGroupId != "" { + policy.ServiceTemplate.ServiceGroupId = &rule.protocolTemplateGroupId + } + } + + if !usingProtocolTemplate { + policy.Protocol = &rule.protocol + } + + if !usingProtocolTemplate && rule.port != "" { + policy.Port = &rule.port + } + + policies = append(policies, policy) + } + return policies +} + +func NewVpcService(client *connectivity.TencentCloudClient) VpcService { + return VpcService{client: client} +} + +type VpcService struct { + client *connectivity.TencentCloudClient +} + +// ///////common +func (me *VpcService) fillFilter(ins []*vpc.Filter, key, value string) (outs []*vpc.Filter) { + if ins == nil { + ins = make([]*vpc.Filter, 0, 2) + } + + var filter = vpc.Filter{Name: &key, Values: []*string{&value}} + ins = append(ins, &filter) + outs = ins + return +} + +// ////////api +func (me *VpcService) CreateVpc(ctx context.Context, name, cidr string, + isMulticast bool, dnsServers []string, tags map[string]string) (vpcId string, isDefault bool, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateVpcRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcName = &name + request.CidrBlock = &cidr + + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + request.EnableMulticast = &enableMulticast + + if len(dnsServers) > 0 { + request.DnsServers = make([]*string, 0, len(dnsServers)) + for index := range dnsServers { + request.DnsServers = append(request.DnsServers, &dnsServers[index]) + } + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + var response *vpc.CreateVpcResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().CreateVpc(request) + if err != nil { + return tccommon.RetryError(err) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s create vpc failed, reason: %v", logId, err) + errRet = err + return + } + vpcId, isDefault = *response.Response.Vpc.VpcId, *response.Response.Vpc.IsDefault + return +} + +func (me *VpcService) DescribeVpc(ctx context.Context, + vpcId string, + tagKey string, + cidrBlock string) (info VpcBasicInfo, has int, errRet error) { + infos, err := me.DescribeVpcs(ctx, vpcId, "", nil, nil, tagKey, cidrBlock) + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return +} + +func (me *VpcService) DescribeVpcs(ctx context.Context, + vpcId, name string, + tags map[string]string, + isDefaultPtr *bool, + tagKey string, + cidrBlock string) (infos []VpcBasicInfo, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpcsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + infos = make([]VpcBasicInfo, 0, 100) + + var ( + offset = 0 + limit = 100 + total = -1 + hasVpc = map[string]bool{} + filters []*vpc.Filter + ) + + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + + if name != "" { + filters = me.fillFilter(filters, "vpc-name", name) + } + + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + + if cidrBlock != "" { + filters = me.fillFilter(filters, "cidr-block", cidrBlock) + } + + if isDefaultPtr != nil { + filters = me.fillFilter(filters, "is-default", map[bool]string{true: "true", false: "false"}[*isDefaultPtr]) + } + + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + var response *vpc.DescribeVpcsResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().DescribeVpcs(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s read vpc failed, reason: %v", logId, err) + return nil, err + } + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.VpcSet) > 0 { + offset += limit + } else { + // get empty VpcInfo, we're done + return + } + for _, item := range response.Response.VpcSet { + var basicInfo VpcBasicInfo + basicInfo.cidr = *item.CidrBlock + basicInfo.createTime = *item.CreatedTime + basicInfo.dnsServers = make([]string, 0, len(item.DnsServerSet)) + + for _, v := range item.DnsServerSet { + basicInfo.dnsServers = append(basicInfo.dnsServers, *v) + } + basicInfo.isDefault = *item.IsDefault + basicInfo.isMulticast = *item.EnableMulticast + basicInfo.name = *item.VpcName + basicInfo.vpcId = *item.VpcId + + if hasVpc[basicInfo.vpcId] { + errRet = fmt.Errorf("get repeated vpc_id[%s] when doing DescribeVpcs", basicInfo.vpcId) + return + } + hasVpc[basicInfo.vpcId] = true + + if len(item.AssistantCidrSet) > 0 { + for i := range item.AssistantCidrSet { + kind := item.AssistantCidrSet[i].AssistantType + cidr := item.AssistantCidrSet[i].CidrBlock + if kind != nil && *kind == 0 { + basicInfo.assistantCidrs = append(basicInfo.assistantCidrs, *cidr) + } else { + basicInfo.dockerAssistantCidrs = append(basicInfo.dockerAssistantCidrs, *cidr) + } + } + } + + if len(item.TagSet) > 0 { + basicInfo.tags = item.TagSet + } + + infos = append(infos, basicInfo) + } + goto getMoreData + +} +func (me *VpcService) DescribeSubnet(ctx context.Context, + subnetId string, + isRemoteVpcSNAT *bool, + tagKey, + cidrBlock string) (info VpcSubnetBasicInfo, has int, errRet error) { + infos, err := me.DescribeSubnets(ctx, subnetId, "", "", "", nil, nil, isRemoteVpcSNAT, tagKey, cidrBlock) + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return +} + +func (me *VpcService) DescribeSubnets(ctx context.Context, + subnetId, + vpcId, + subnetName, + zone string, + tags map[string]string, + isDefaultPtr *bool, + isRemoteVpcSNAT *bool, + tagKey, + cidrBlock string) (infos []VpcSubnetBasicInfo, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeSubnetsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var ( + offset = 0 + limit = 100 + total = -1 + hasSubnet = map[string]bool{} + filters []*vpc.Filter + ) + + if subnetId != "" { + filters = me.fillFilter(filters, "subnet-id", subnetId) + } + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + if subnetName != "" { + filters = me.fillFilter(filters, "subnet-name", subnetName) + } + if zone != "" { + filters = me.fillFilter(filters, "zone", zone) + } + + if isDefaultPtr != nil { + filters = me.fillFilter(filters, "is-default", map[bool]string{true: "true", false: "false"}[*isDefaultPtr]) + } + + if isRemoteVpcSNAT != nil { + filters = me.fillFilter(filters, "is-remote-vpc-snat", map[bool]string{true: "true", false: "false"}[*isRemoteVpcSNAT]) + } + + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + if cidrBlock != "" { + filters = me.fillFilter(filters, "cidr-block", cidrBlock) + } + + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + var response *vpc.DescribeSubnetsResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().DescribeSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s read subnets failed, reason: %v", logId, err) + return nil, err + } + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.SubnetSet) > 0 { + offset += limit + } else { + // get empty subnet, we're done + return + } + for _, item := range response.Response.SubnetSet { + var basicInfo VpcSubnetBasicInfo + + basicInfo.cidr = *item.CidrBlock + basicInfo.createTime = *item.CreatedTime + basicInfo.vpcId = *item.VpcId + basicInfo.subnetId = *item.SubnetId + basicInfo.routeTableId = *item.RouteTableId + + basicInfo.name = *item.SubnetName + basicInfo.isDefault = *item.IsDefault + basicInfo.isMulticast = *item.EnableBroadcast + + basicInfo.zone = *item.Zone + basicInfo.availableIpCount = int64(*item.AvailableIpAddressCount) + + if hasSubnet[basicInfo.subnetId] { + errRet = fmt.Errorf("get repeated subnetId[%s] when doing DescribeSubnets", basicInfo.subnetId) + return + } + hasSubnet[basicInfo.subnetId] = true + infos = append(infos, basicInfo) + } + goto getMoreData +} + +func (me *VpcService) ModifyVpcAttribute(ctx context.Context, vpcId, name string, isMulticast bool, dnsServers []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyVpcAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcId = &vpcId + request.VpcName = &name + + if len(dnsServers) > 0 { + request.DnsServers = make([]*string, 0, len(dnsServers)) + for index := range dnsServers { + request.DnsServers = append(request.DnsServers, &dnsServers[index]) + } + } + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + request.EnableMulticast = &enableMulticast + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyVpcAttribute(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify vpc failed, reason: %v", logId, err) + return err + } + + return +} + +func (me *VpcService) DeleteVpc(ctx context.Context, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpcRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + if vpcId == "" { + errRet = fmt.Errorf("DeleteVpc can not delete empty vpc_id.") + return + } + + request.VpcId = &vpcId + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteVpc(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete vpc failed, reason: %v", logId, err) + return err + } + return + +} + +func (me *VpcService) CreateSubnet(ctx context.Context, vpcId, name, cidr, zone string, tags map[string]string) (subnetId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateSubnetRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if vpcId == "" { + errRet = fmt.Errorf("CreateSubnet can not invoke by empty vpc_id.") + return + } + request.VpcId = &vpcId + request.SubnetName = &name + request.CidrBlock = &cidr + request.Zone = &zone + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + var response *vpc.CreateSubnetResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().CreateSubnet(request) + if err != nil { + return tccommon.RetryError(err) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s create subnet failed, reason: %v", logId, err) + return "", err + } + + subnetId = *response.Response.Subnet.SubnetId + + return +} + +func (me *VpcService) ModifySubnetAttribute(ctx context.Context, subnetId, name string, isMulticast bool) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifySubnetAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + + request.SubnetId = &subnetId + request.SubnetName = &name + request.EnableBroadcast = &enableMulticast + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifySubnetAttribute(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify subnet failed, reason: %v", logId, err) + return err + } + return +} + +func (me *VpcService) DeleteSubnet(ctx context.Context, subnetId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteSubnetRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SubnetId = &subnetId + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteSubnet(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete subnet failed, reason: %v", logId, err) + return err + } + return + +} + +func (me *VpcService) ReplaceRouteTableAssociation(ctx context.Context, subnetId string, routeTableId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewReplaceRouteTableAssociationRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SubnetId = &subnetId + request.RouteTableId = &routeTableId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ReplaceRouteTableAssociation(request) + + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return +} + +func (me *VpcService) IsRouteTableInVpc(ctx context.Context, routeTableId, vpcId string) (info VpcRouteTableBasicInfo, has int, errRet error) { + + infos, err := me.DescribeRouteTables(ctx, routeTableId, "", vpcId, nil, nil, "") + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return + +} + +func (me *VpcService) DescribeRouteTable(ctx context.Context, routeTableId string) (info VpcRouteTableBasicInfo, has int, errRet error) { + + infos, err := me.DescribeRouteTables(ctx, routeTableId, "", "", nil, nil, "") + if err != nil { + errRet = err + return + } + + has = len(infos) + + if has == 0 { + return + } + info = infos[0] + return +} +func (me *VpcService) DescribeRouteTables(ctx context.Context, + routeTableId, + routeTableName, + vpcId string, + tags map[string]string, + associationMain *bool, + tagKey string) (infos []VpcRouteTableBasicInfo, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeRouteTablesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + infos = make([]VpcRouteTableBasicInfo, 0, 100) + var offset = 0 + var limit = 100 + var total = -1 + var hasTableMap = map[string]bool{} + + var filters []*vpc.Filter + if routeTableId != "" { + filters = me.fillFilter(filters, "route-table-id", routeTableId) + } + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + if routeTableName != "" { + filters = me.fillFilter(filters, "route-table-name", routeTableName) + } + if associationMain != nil { + filters = me.fillFilter(filters, "association.main", map[bool]string{true: "true", false: "false"}[*associationMain]) + } + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteTables(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.RouteTableSet) > 0 { + offset += limit + } else { + // get empty Vpcinfo, we're done + return + } + for _, item := range response.Response.RouteTableSet { + var basicInfo VpcRouteTableBasicInfo + basicInfo.createTime = *item.CreatedTime + basicInfo.isDefault = *item.Main + basicInfo.name = *item.RouteTableName + basicInfo.routeTableId = *item.RouteTableId + basicInfo.vpcId = *item.VpcId + + basicInfo.subnetIds = make([]string, 0, len(item.AssociationSet)) + for _, v := range item.AssociationSet { + basicInfo.subnetIds = append(basicInfo.subnetIds, *v.SubnetId) + } + + basicInfo.entryInfos = make([]VpcRouteEntryBasicInfo, 0, len(item.RouteSet)) + + for _, v := range item.RouteSet { + var entry VpcRouteEntryBasicInfo + entry.destinationCidr = *v.DestinationCidrBlock + entry.nextBub = *v.GatewayId + entry.nextType = *v.GatewayType + entry.description = *v.RouteDescription + entry.routeEntryId = int64(*v.RouteId) + entry.entryType = *v.RouteType + entry.enabled = *v.Enabled + basicInfo.entryInfos = append(basicInfo.entryInfos, entry) + } + if hasTableMap[basicInfo.routeTableId] { + errRet = fmt.Errorf("get repeated route_table_id[%s] when doing DescribeRouteTables", basicInfo.routeTableId) + return + } + hasTableMap[basicInfo.routeTableId] = true + infos = append(infos, basicInfo) + } + goto getMoreData + +} + +func (me *VpcService) CreateRouteTable(ctx context.Context, name, vpcId string, tags map[string]string) (routeTableId string, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateRouteTableRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if vpcId == "" { + errRet = fmt.Errorf("CreateRouteTable can not invoke by empty vpc_id.") + return + } + request.VpcId = &vpcId + request.RouteTableName = &name + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateRouteTable(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + routeTableId = *response.Response.RouteTable.RouteTableId + } + return +} + +func (me *VpcService) DeleteRouteTable(ctx context.Context, routeTableId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteRouteTableRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("DeleteRouteTable can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteRouteTable(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + return +} + +func (me *VpcService) ModifyRouteTableAttribute(ctx context.Context, routeTableId string, name string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyRouteTableAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("ModifyRouteTableAttribute can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + request.RouteTableName = &name + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyRouteTableAttribute(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + return +} + +func (me *VpcService) GetRouteId(ctx context.Context, + routeTableId, destinationCidrBlock, nextType, nextHub, description string) (entryId int64, errRet error) { + + logId := tccommon.GetLogId(ctx) + + info, has, err := me.DescribeRouteTable(ctx, routeTableId) + if err != nil { + errRet = err + return + } + if has == 0 { + errRet = fmt.Errorf("not fonud the route table of this route entry") + return + } + + if has != 1 { + errRet = fmt.Errorf("one routeTableId id get %d routeTableId infos", has) + return + } + + for _, v := range info.entryInfos { + + if v.destinationCidr == destinationCidrBlock && v.nextType == nextType && v.nextBub == nextHub { + entryId = v.routeEntryId + return + } + } + errRet = fmt.Errorf("not found route entry id from route table [%s]", routeTableId) + + for _, v := range info.entryInfos { + log.Printf("%s[WARN] GetRouteId [%+v] vs [%+v],[%+v] vs [%+v],[%+v] vs [%+v] %+v\n", + logId, + v.destinationCidr, + destinationCidrBlock, + v.nextType, + nextType, + v.nextBub, + nextHub, + v.destinationCidr == destinationCidrBlock && v.nextType == nextType && v.nextBub == nextHub) + } + + return + +} + +func (me *VpcService) DeleteRoutes(ctx context.Context, routeTableId string, entryId uint64) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("DeleteRoutes can not invoke by empty routeTableId.") + return + } + + request.RouteTableId = &routeTableId + var route vpc.Route + route.RouteId = &entryId + request.Routes = []*vpc.Route{&route} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteRoutes(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return +} + +func (me *VpcService) CreateRoutes(ctx context.Context, + routeTableId, destinationCidrBlock, nextType, nextHub, description string, enabled bool) (entryId int64, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("CreateRoutes can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + var route vpc.Route + route.DestinationCidrBlock = &destinationCidrBlock + route.RouteDescription = &description + route.GatewayType = &nextType + route.GatewayId = &nextHub + route.Enabled = &enabled + request.Routes = []*vpc.Route{&route} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateRoutes(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } else { + return + } + + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + + if errRet != nil { + time.Sleep(3 * time.Second) + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + } + + if errRet != nil { + time.Sleep(5 * time.Second) + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + } + + /* + if *(response.Response.TotalCount) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTable . but we only request 1.", *response.Response.TotalCount) + return + } + + if len(response.Response.RouteTableSet) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTable info . but we only request 1.", len(response.Response.RouteTableSet)) + return + } + + if len(response.Response.RouteTableSet[0].RouteSet) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTableSet info . but we only create 1.", len(response.Response.RouteTableSet[0].RouteSet)) + return + } + + entryId = int64(*response.Response.RouteTableSet[0].RouteSet[0].RouteId) + */ + + return +} + +func (me *VpcService) SwitchRouteEnabled(ctx context.Context, routeTableId string, routeId uint64, enabled bool) error { + if enabled { + request := vpc.NewEnableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.EnableRoutes(ctx, request) + } else { + request := vpc.NewDisableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.DisableRoutes(ctx, request) + } +} + +func (me *VpcService) EnableRoutes(ctx context.Context, request *vpc.EnableRoutesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().EnableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *VpcService) DisableRoutes(ctx context.Context, request *vpc.DisableRoutesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *VpcService) CreateSecurityGroup(ctx context.Context, name, desc string, projectId *int, tags map[string]string) (id string, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewCreateSecurityGroupRequest() + + request.GroupName = &name + request.GroupDescription = &desc + + if projectId != nil { + request.ProjectId = helper.String(strconv.Itoa(*projectId)) + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().CreateSecurityGroup(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + if response.Response.SecurityGroup == nil || response.Response.SecurityGroup.SecurityGroupId == nil { + err := fmt.Errorf("api[%s] return security group id is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + id = *response.Response.SecurityGroup.SecurityGroupId + return nil + }); err != nil { + log.Printf("[CRITAL]%s create security group failed, reason: %v", logId, err) + return "", err + } + + return +} + +func (me *VpcService) DescribeSecurityGroup(ctx context.Context, id string) (sg *vpc.SecurityGroup, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupsRequest() + request.SecurityGroupIds = []*string{&id} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroups(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err, tccommon.InternalError) + } + + if len(response.Response.SecurityGroupSet) == 0 { + return nil + } + + sg = response.Response.SecurityGroupSet[0] + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read security group failed, reason: %v", logId, err) + return nil, err + } + + return +} + +func (me *VpcService) ModifySecurityGroup(ctx context.Context, id string, newName, newDesc *string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupAttributeRequest() + + request.SecurityGroupId = &id + request.GroupName = newName + request.GroupDescription = newDesc + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifySecurityGroupAttribute(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify security group failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DeleteSecurityGroup(ctx context.Context, id string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupRequest() + request.SecurityGroupId = &id + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().DeleteSecurityGroup(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete security group failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DescribeSecurityGroupsAssociate(ctx context.Context, ids []string) ([]*vpc.SecurityGroupAssociationStatistics, error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupAssociationStatisticsRequest() + request.SecurityGroupIds = common.StringPtrs(ids) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupAssociationStatistics(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil, err + } + + return response.Response.SecurityGroupAssociationStatisticsSet, nil +} + +// Deprecated: the redundant type struct cause cause unnecessary mental burden, use sdk request directly +func (me *VpcService) CreateSecurityGroupPolicy(ctx context.Context, info securityGroupRuleBasicInfoWithPolicyIndex) (ruleId string, err error) { + logId := tccommon.GetLogId(ctx) + + createRequest := vpc.NewCreateSecurityGroupPoliciesRequest() + createRequest.SecurityGroupId = &info.SgId + + createRequest.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + + policy.CidrBlock = info.CidrIp + policy.SecurityGroupId = info.SourceSgId + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + policy.AddressTemplate.AddressId = info.AddressTemplateId + } + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + policy.AddressTemplate.AddressGroupId = info.AddressTemplateGroupId + } + + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + policy.ServiceTemplate.ServiceId = info.ProtocolTemplateId + } + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + policy.ServiceTemplate.ServiceGroupId = info.ProtocolTemplateGroupId + } + + if info.Protocol != nil { + policy.Protocol = common.StringPtr(strings.ToUpper(*info.Protocol)) + } + policy.PolicyIndex = helper.Int64(info.PolicyIndex) + policy.Port = info.PortRange + policy.PolicyDescription = info.Description + policy.Action = common.StringPtr(strings.ToUpper(info.Action)) + + switch strings.ToLower(info.PolicyType) { + case "ingress": + createRequest.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + createRequest.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(createRequest.GetAction()) + if _, err := me.client.UseVpcClient().CreateSecurityGroupPolicies(createRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, createRequest.GetAction(), createRequest.ToJsonString(), err) + return "", err + } + + if info.CidrIp == nil { + info.CidrIp = common.StringPtr("") + } + if info.Protocol == nil { + info.Protocol = common.StringPtr("ALL") + } + if info.PortRange == nil { + info.PortRange = common.StringPtr("ALL") + } + if info.SourceSgId == nil { + info.SourceSgId = common.StringPtr("") + } + + ruleId, err = buildSecurityGroupRuleId(info.securityGroupRuleBasicInfo) + if err != nil { + return "", fmt.Errorf("build rule id error, reason: %v", err) + } + + return ruleId, nil +} + +func (me *VpcService) CreateSecurityGroupPolicies(ctx context.Context, request *vpc.CreateSecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +// Deprecated: use DescribeSecurityGroupPolicies instead +func (me *VpcService) DescribeSecurityGroupPolicy(ctx context.Context, ruleId string) (sgId string, policyType string, policy *vpc.SecurityGroupPolicy, errRet error) { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + errRet = err + return + } + + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + request.SecurityGroupId = &info.SgId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + // if security group does not exist, security group rule does not exist too + if sdkError.Code == "ResourceNotFound" { + return + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + policySet := response.Response.SecurityGroupPolicySet + + if policySet == nil { + log.Printf("[DEBUG]%s policy set is nil", logId) + return + } + + var policies []*vpc.SecurityGroupPolicy + + switch strings.ToLower(info.PolicyType) { + case "ingress": + policies = policySet.Ingress + + case "egress": + policies = policySet.Egress + } + + for _, pl := range policies { + if comparePolicyAndSecurityGroupInfo(pl, info) { + policy = pl + break + } + } + + if policy == nil { + log.Printf("[DEBUG]%s can't find security group rule, maybe user modify rules on web console", logId) + return + } + + return info.SgId, info.PolicyType, policy, nil +} + +func (me *VpcService) DescribeSecurityGroupPolicies(ctx context.Context, sgId string) (result *vpc.SecurityGroupPolicySet, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SecurityGroupId = &sgId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + result = response.Response.SecurityGroupPolicySet + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteSecurityGroupPolicy(ctx context.Context, ruleId string) error { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + return err + } + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = &info.SgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + policy.Action = common.StringPtr(strings.ToUpper(info.Action)) + + if *info.CidrIp != "" { + policy.CidrBlock = info.CidrIp + } + + if *info.Protocol != "ALL" { + policy.Protocol = common.StringPtr(strings.ToUpper(*info.Protocol)) + } + + if *info.PortRange != "ALL" { + policy.Port = info.PortRange + } + + if *info.SourceSgId != "" { + policy.SecurityGroupId = info.SourceSgId + } + + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + policy.AddressTemplate.AddressGroupId = info.AddressTemplateGroupId + } + + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + policy.AddressTemplate.AddressId = info.AddressTemplateId + } + + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + policy.ServiceTemplate.ServiceGroupId = info.ProtocolTemplateGroupId + } + + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + policy.ServiceTemplate.ServiceId = info.ProtocolTemplateId + } + + if info.Description != nil && *info.Description != "" { + policy.PolicyDescription = info.Description + } + + switch strings.ToLower(info.PolicyType) { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + + return nil +} + +func (me *VpcService) DeleteSecurityGroupPolicies(ctx context.Context, request *vpc.DeleteSecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteSecurityGroupPolicyByPolicyIndex(ctx context.Context, policyIndex int64, sgId, policyType string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = helper.String(sgId) + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + policy.PolicyIndex = helper.Int64(policyIndex) + switch strings.ToLower(policyType) { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + return nil + +} + +func (me *VpcService) DeleteSecurityGroupPolicyByPolicyIndexList(ctx context.Context, sgId string, policyIndexList []*int64, policyType string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = helper.String(sgId) + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + tmpList := make([]*vpc.SecurityGroupPolicy, 0) + for _, v := range policyIndexList { + policy := new(vpc.SecurityGroupPolicy) + policy.PolicyIndex = v + tmpList = append(tmpList, policy) + } + + switch strings.ToLower(policyType) { + + case "ingress": + request.SecurityGroupPolicySet.Ingress = tmpList + + case "egress": + request.SecurityGroupPolicySet.Egress = tmpList + } + + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + return nil + +} + +// Deprecated: Use ModifySecurityGroupPolicies instead +func (me *VpcService) ModifySecurityGroupPolicy(ctx context.Context, ruleId string, desc *string) error { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + return err + } + + request := vpc.NewReplaceSecurityGroupPolicyRequest() + request.SecurityGroupId = &info.SgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := &vpc.SecurityGroupPolicy{ + Action: &info.Action, + CidrBlock: info.CidrIp, + Protocol: info.Protocol, + Port: info.PortRange, + SecurityGroupId: info.SourceSgId, + PolicyDescription: desc, + } + + switch info.PolicyType { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().ReplaceSecurityGroupPolicy(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + + return nil +} + +func (me *VpcService) ModifySecurityGroupPolicies(ctx context.Context, request *vpc.ModifySecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeSecurityGroups(ctx context.Context, sgId, sgName *string, projectId *int, tags map[string]string) (sgs []*vpc.SecurityGroup, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupsRequest() + + if sgId != nil { + request.SecurityGroupIds = []*string{sgId} + } else { + if sgName != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("security-group-name"), + Values: []*string{sgName}, + }) + } + + if projectId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("project-id"), + Values: []*string{helper.String(strconv.Itoa(*projectId))}, + }) + } + + for k, v := range tags { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("tag:" + k), + Values: []*string{helper.String(v)}, + }) + } + } + + request.Limit = helper.String(strconv.Itoa(DESCRIBE_SECURITY_GROUP_LIMIT)) + + offset := 0 + count := DESCRIBE_SECURITY_GROUP_LIMIT + // run loop at least once + for count == DESCRIBE_SECURITY_GROUP_LIMIT { + request.Offset = helper.String(strconv.Itoa(offset)) + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroups(request) + if err != nil { + count = 0 + + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err, tccommon.InternalError) + } + + set := response.Response.SecurityGroupSet + count = len(set) + sgs = append(sgs, set...) + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read security groups failed, reason: %v", logId, err) + return nil, err + } + + offset += count + } + + return +} + +func (me *VpcService) modifyLiteRulesInSecurityGroup(ctx context.Context, sgId string, ingress, egress []VpcSecurityGroupLiteRule) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + request.SecurityGroupPolicySet.Egress = getSecurityGroupPolicies(egress) + request.SecurityGroupPolicySet.Ingress = getSecurityGroupPolicies(ingress) + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }) +} + +func (me *VpcService) DeleteLiteRules(ctx context.Context, sgId string, rules []VpcSecurityGroupLiteRule, isIngress bool) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + if isIngress { + request.SecurityGroupPolicySet.Ingress = getSecurityGroupPolicies(rules) + } else { + request.SecurityGroupPolicySet.Egress = getSecurityGroupPolicies(rules) + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + + return tccommon.RetryError(err) + } + + return nil + }) +} + +func (me *VpcService) AttachLiteRulesToSecurityGroup(ctx context.Context, sgId string, ingress, egress []VpcSecurityGroupLiteRule) error { + logId := tccommon.GetLogId(ctx) + + if err := me.modifyLiteRulesInSecurityGroup(ctx, sgId, ingress, egress); err != nil { + log.Printf("[CRITAL]%s attach lite rules to security group failed, reason: %v", logId, err) + + return err + } + + return nil +} + +func (me *VpcService) DescribeSecurityGroupPolices(ctx context.Context, sgId string) (ingress, egress []VpcSecurityGroupLiteRule, exist bool, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + policySet := response.Response.SecurityGroupPolicySet + + for _, in := range policySet.Ingress { + if nilFields := tccommon.CheckNil(in, map[string]string{ + "Action": "action", + "SecurityGroupId": "nested security group id", + }); len(nilFields) > 0 { + err := fmt.Errorf("api[%s] security group ingress %v are nil", request.GetAction(), nilFields) + log.Printf("[CRITAL]%s %v", logId, err) + } + + liteRule := VpcSecurityGroupLiteRule{ + //protocol: strings.ToUpper(*in.Protocol), + //port: *in.Port, + cidrIp: *in.CidrBlock, + action: *in.Action, + securityGroupId: *in.SecurityGroupId, + } + + if in.Protocol != nil { + liteRule.protocol = strings.ToUpper(*in.Protocol) + } + + if in.Port != nil { + liteRule.port = *in.Port + } + + if in.AddressTemplate != nil { + liteRule.addressId = *in.AddressTemplate.AddressId + liteRule.addressGroupId = *in.AddressTemplate.AddressGroupId + } + + if in.ServiceTemplate != nil { + liteRule.protocolTemplateId = *in.ServiceTemplate.ServiceId + liteRule.protocolTemplateGroupId = *in.ServiceTemplate.ServiceGroupId + } + + ingress = append(ingress, liteRule) + } + + for _, eg := range policySet.Egress { + if nilFields := tccommon.CheckNil(eg, map[string]string{ + "Action": "action", + "SecurityGroupId": "nested security group id", + }); len(nilFields) > 0 { + err := fmt.Errorf("api[%s] security group egress %v are nil", request.GetAction(), nilFields) + log.Printf("[CRITAL]%s %v", logId, err) + } + + liteRule := VpcSecurityGroupLiteRule{ + action: *eg.Action, + cidrIp: *eg.CidrBlock, + securityGroupId: *eg.SecurityGroupId, + } + + if eg.Port != nil { + liteRule.port = *eg.Port + } + + if eg.Protocol != nil { + liteRule.protocol = strings.ToUpper(*eg.Protocol) + } + + if eg.AddressTemplate != nil { + liteRule.addressId = *eg.AddressTemplate.AddressId + liteRule.addressGroupId = *eg.AddressTemplate.AddressGroupId + } + + if eg.ServiceTemplate != nil { + liteRule.protocolTemplateId = *eg.ServiceTemplate.ServiceId + liteRule.protocolTemplateGroupId = *eg.ServiceTemplate.ServiceGroupId + } + + egress = append(egress, liteRule) + } + + exist = true + + return nil + }); err != nil { + log.Printf("[CRITAL]%s describe security group policies failed, rason: %v", logId, err) + return nil, nil, false, err + } + + return +} + +func (me *VpcService) DetachAllLiteRulesFromSecurityGroup(ctx context.Context, sgId string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = &vpc.SecurityGroupPolicySet{ + Version: helper.String("0"), + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }) +} + +type securityGroupRuleBasicInfo struct { + SgId string `json:"sg_id"` + PolicyType string `json:"policy_type"` + CidrIp *string `json:"cidr_ip,omitempty"` + Protocol *string `json:"protocol"` + PortRange *string `json:"port_range"` + Action string `json:"action"` + SourceSgId *string `json:"source_sg_id"` + Description *string `json:"description,omitempty"` + AddressTemplateId *string `json:"address_template_id,omitempty"` + AddressTemplateGroupId *string `json:"address_template_group_id,omitempty"` + ProtocolTemplateId *string `json:"protocol_template_id,omitempty"` + ProtocolTemplateGroupId *string `json:"protocol_template_group_id,omitempty"` +} + +type securityGroupRuleBasicInfoWithPolicyIndex struct { + securityGroupRuleBasicInfo + PolicyIndex int64 `json:"policy_index"` +} + +// Build an ID for a Security Group Rule (new version) +func buildSecurityGroupRuleId(info securityGroupRuleBasicInfo) (ruleId string, err error) { + b, err := json.Marshal(info) + if err != nil { + return "", err + } + + log.Printf("[DEBUG] build rule is %s", string(b)) + + return base64.StdEncoding.EncodeToString(b), nil +} + +// Parse Security Group Rule ID +func parseSecurityGroupRuleId(ruleId string) (info securityGroupRuleBasicInfo, errRet error) { + log.Printf("[DEBUG] parseSecurityGroupRuleId before: %v", ruleId) + + // new version ID + if b, err := base64.StdEncoding.DecodeString(ruleId); err == nil { + errRet = json.Unmarshal(b, &info) + return + } + + // old version ID + m := make(map[string]string) + ruleQueryStrings := strings.Split(ruleId, "&") + if len(ruleQueryStrings) == 0 { + errRet = errors.New("ruleId is invalid") + return + } + for _, str := range ruleQueryStrings { + arr := strings.Split(str, "=") + if len(arr) != 2 { + errRet = errors.New("ruleId is invalid") + return + } + m[arr[0]] = arr[1] + } + + info.SgId = m["sgId"] + info.PolicyType = m["direction"] + info.Action = m["action"] + + // the newest version include template + addressTemplateId, addressTemplateOk := m["address_template_id"] + addressGroupTemplateId, addressTemplateGroupOk := m["address_template_group_id"] + if addressTemplateOk || addressTemplateGroupOk { + if addressTemplateGroupOk { + info.AddressTemplateGroupId = common.StringPtr(addressGroupTemplateId) + } else { + info.AddressTemplateId = common.StringPtr(addressTemplateId) + } + info.CidrIp = common.StringPtr("") + info.SourceSgId = common.StringPtr("") + } else { + if m["sourceSgid"] == "" { + info.CidrIp = common.StringPtr(m["cidrIp"]) + } else { + info.CidrIp = common.StringPtr("") + } + info.SourceSgId = common.StringPtr(m["sourceSgid"]) + } + + protocolTemplateId, protocolTemplateOk := m["protocol_template_id"] + protocolGroupTemplateId, protocolTemplateGroupOk := m["protocol_template_group_id"] + if protocolTemplateOk || protocolTemplateGroupOk { + if protocolTemplateGroupOk { + info.ProtocolTemplateGroupId = common.StringPtr(protocolGroupTemplateId) + } else { + info.ProtocolTemplateId = common.StringPtr(protocolTemplateId) + } + info.Protocol = common.StringPtr("") + info.PortRange = common.StringPtr("") + } else { + info.Protocol = common.StringPtr(m["ipProtocol"]) + info.PortRange = common.StringPtr(m["portRange"]) + } + + info.Description = common.StringPtr(m["description"]) + + log.Printf("[DEBUG] parseSecurityGroupRuleId after: %v", info) + return +} + +func comparePolicyAndSecurityGroupInfo(policy *vpc.SecurityGroupPolicy, info securityGroupRuleBasicInfo) bool { + if policy.PolicyDescription != nil && *policy.PolicyDescription != "" { + if info.Description == nil || *policy.PolicyDescription != *info.Description { + return false + } + } else { + if info.Description != nil && *info.Description != "" { + return false + } + } + // policy.CidrBlock will be nil if address template is set + if policy.CidrBlock != nil && *policy.CidrBlock != "" { + if info.CidrIp == nil || *policy.CidrBlock != *info.CidrIp { + return false + } + } else { + if info.CidrIp != nil && *info.CidrIp != "" { + return false + } + } + + // policy.Port will be nil if protocol template is set + if policy.Port != nil && *policy.Port != "" { + if info.PortRange == nil || *policy.Port != *info.PortRange { + return false + } + } else { + if info.PortRange != nil && *info.PortRange != "" && *info.PortRange != "ALL" { + return false + } + } + + // policy.Protocol will be nil if protocol template is set + if policy.Protocol != nil && *policy.Protocol != "" { + if info.Protocol == nil || !strings.EqualFold(*policy.Protocol, *info.Protocol) { + return false + } + } else { + if info.Protocol != nil && *info.Protocol != "" && *info.Protocol != "ALL" { + return false + } + } + + // policy.SecurityGroupId always not nil + if *policy.SecurityGroupId != *info.SourceSgId { + return false + } + + if !strings.EqualFold(*policy.Action, info.Action) { + return false + } + + // if template is not null it must be compared + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + if policy.ServiceTemplate == nil || policy.ServiceTemplate.ServiceId == nil || *info.ProtocolTemplateId != *policy.ServiceTemplate.ServiceId { + log.Printf("%s %v test", *info.ProtocolTemplateId, policy.ServiceTemplate) + return false + } + } else { + if policy.ServiceTemplate != nil && policy.ServiceTemplate.ServiceId != nil && *policy.ServiceTemplate.ServiceId != "" { + return false + } + } + + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + if policy.ServiceTemplate == nil || policy.ServiceTemplate.ServiceGroupId == nil || *info.ProtocolTemplateGroupId != *policy.ServiceTemplate.ServiceGroupId { + log.Printf("%s %v test", *info.ProtocolTemplateGroupId, policy.ServiceTemplate) + return false + } + } else { + if policy.ServiceTemplate != nil && policy.ServiceTemplate.ServiceGroupId != nil && *policy.ServiceTemplate.ServiceGroupId != "" { + return false + } + } + + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + if policy.AddressTemplate == nil || policy.AddressTemplate.AddressGroupId == nil || *info.AddressTemplateGroupId != *policy.AddressTemplate.AddressGroupId { + return false + } + } else { + if policy.AddressTemplate != nil && policy.AddressTemplate.AddressGroupId != nil && *policy.AddressTemplate.AddressGroupId != "" { + return false + } + } + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + if policy.AddressTemplate == nil || policy.AddressTemplate.AddressId == nil || *info.AddressTemplateId != *policy.AddressTemplate.AddressId { + return false + } + } else { + if policy.AddressTemplate != nil && policy.AddressTemplate.AddressId != nil && *policy.AddressTemplate.AddressId != "" { + return false + } + } + + return true +} + +func parseRule(str string) (liteRule VpcSecurityGroupLiteRule, err error) { + split := strings.Split(str, "#") + if len(split) != 4 { + err = fmt.Errorf("invalid security group rule %s", str) + return + } + + var ( + source string + port string + protocol string + // source is "sg-xxxxxx" / "ipm-xxxxxx" / "ipmg-xxxxxx" formatted + isInstanceIdSource = true + ) + + liteRule.action, source, port, protocol = split[0], split[1], split[2], split[3] + + if securityGroupIdRE.MatchString(source) { + liteRule.securityGroupId = source + } else if ipAddressIdRE.MatchString(source) { + liteRule.addressId = source + } else if ipAddressGroupIdRE.MatchString(source) { + liteRule.addressGroupId = source + } else { + isInstanceIdSource = false + liteRule.cidrIp = source + } + + if v := liteRule.action; v != "ACCEPT" && v != "DROP" { + err = fmt.Errorf("invalid action `%s`, available actions: `ACCEPT`, `DROP`", v) + return + } + + if net.ParseIP(liteRule.cidrIp) == nil && !isInstanceIdSource { + if _, _, err = net.ParseCIDR(liteRule.cidrIp); err != nil { + err = fmt.Errorf("invalid cidr_ip %s, allow cidr_ip format is `8.8.8.8` or `10.0.1.0/24`", liteRule.cidrIp) + return + } + } + + liteRule.port = port + if port != "ALL" && !portRE.MatchString(port) && !protocolTemplateRE.MatchString(protocol) { + err = fmt.Errorf("invalid port %s, allow port format is `ALL`, `53`, `80,443` or `80-90`", liteRule.port) + return + } + + liteRule.protocol = protocol + if protocolTemplateRE.MatchString(protocol) { + liteRule.port = "" + liteRule.protocol = "" + if protocolTemplateIdRE.MatchString(protocol) { + liteRule.protocolTemplateId = protocol + } else if protocolTemplateGroupIdRE.MatchString(protocol) { + liteRule.protocolTemplateGroupId = protocol + } + } else if protocol != "TCP" && protocol != "UDP" && protocol != "ALL" && protocol != "ICMP" { + err = fmt.Errorf("invalid protocol %s, allow protocol is `ALL`, `TCP`, `UDP`, `ICMP` or `ppm(g?)-xxxxxxxx`", liteRule.protocol) + } else if protocol == "ALL" || protocol == "ICMP" { + if liteRule.port != "ALL" { + err = fmt.Errorf("when protocol is %s, port must be ALL", protocol) + } else { + liteRule.port = "" + } + } + + if err != nil { + return + } + + return +} + +/* +EIP +*/ +func (me *VpcService) DescribeEipById(ctx context.Context, eipId string) (eip *vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressesRequest() + request.AddressIds = []*string{&eipId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AddressSet) < 1 { + return + } + eip = response.Response.AddressSet[0] + return +} + +func (me *VpcService) DescribeEipByFilter(ctx context.Context, filters map[string][]string) (eips []*vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressesRequest() + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := &vpc.Filter{ + Name: helper.String(k), + Values: []*string{}, + } + for _, vv := range v { + filter.Values = append(filter.Values, helper.String(vv)) + } + request.Filters = append(request.Filters, filter) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + eips = response.Response.AddressSet + return +} + +func (me *VpcService) ModifyEipName(ctx context.Context, eipId, eipName string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressAttributeRequest() + request.AddressId = &eipId + request.AddressName = &eipName + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressAttribute(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) ModifyEipBandwidthOut(ctx context.Context, eipId string, bandwidthOut int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressesBandwidthRequest() + request.AddressIds = []*string{&eipId} + request.InternetMaxBandwidthOut = helper.IntInt64(bandwidthOut) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressesBandwidth(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) ModifyEipInternetChargeType(ctx context.Context, eipId string, internetChargeType string, bandwidthOut, period, renewFlag int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressInternetChargeTypeRequest() + request.AddressId = &eipId + request.InternetChargeType = &internetChargeType + request.InternetMaxBandwidthOut = helper.IntUint64(bandwidthOut) + + if internetChargeType == "BANDWIDTH_PREPAID_BY_MONTH" { + addressChargePrepaid := vpc.AddressChargePrepaid{} + addressChargePrepaid.AutoRenewFlag = helper.IntInt64(renewFlag) + addressChargePrepaid.Period = helper.IntInt64(period) + request.AddressChargePrepaid = &addressChargePrepaid + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressInternetChargeType(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) RenewAddress(ctx context.Context, eipId string, period int, renewFlag int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewRenewAddressesRequest() + request.AddressIds = []*string{&eipId} + addressChargePrepaid := vpc.AddressChargePrepaid{} + addressChargePrepaid.AutoRenewFlag = helper.IntInt64(renewFlag) + addressChargePrepaid.Period = helper.IntInt64(period) + request.AddressChargePrepaid = &addressChargePrepaid + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().RenewAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) DeleteEip(ctx context.Context, eipId string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewReleaseAddressesRequest() + request.AddressIds = []*string{&eipId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ReleaseAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) AttachEip(ctx context.Context, eipId, instanceId string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewAssociateAddressRequest() + request.AddressId = &eipId + request.InstanceId = &instanceId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().AssociateAddress(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) DescribeNatGatewayById(ctx context.Context, natGateWayId string) (natGateWay *vpc.NatGateway, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeNatGatewaysRequest() + request.NatGatewayIds = []*string{&natGateWayId} + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeNatGateways(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NatGatewaySet) > 0 { + natGateWay = response.Response.NatGatewaySet[0] + } + + return +} + +func (me *VpcService) DescribeNatGatewayByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.NatGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNatGatewaysRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.NatGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeNatGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NatGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.NatGatewaySet...) + if len(response.Response.NatGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteNatGateway(ctx context.Context, natGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteNatGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteNatGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DisassociateNatGatewayAddress(ctx context.Context, request *vpc.DisassociateNatGatewayAddressRequest) (result *vpc.DisassociateNatGatewayAddressResponse, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + // Check if Nat Gateway Ip still associate + gateway, err := me.DescribeNatGatewayById(ctx, *request.NatGatewayId) + + if err != nil { + errRet = err + return + } + + if gateway == nil || len(gateway.PublicIpAddressSet) == 0 { + return + } + + var gatewayAddresses []string + var candidates []*string + + for i := range gateway.PublicIpAddressSet { + addr := gateway.PublicIpAddressSet[i].PublicIpAddress + gatewayAddresses = append(gatewayAddresses, *addr) + } + + for i := range request.PublicIpAddresses { + addr := request.PublicIpAddresses[i] + if helper.StringsContain(gatewayAddresses, *addr) { + candidates = append(candidates, addr) + } + } + + if len(candidates) == 0 { + return nil, nil + } + + request.PublicIpAddresses = candidates + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisassociateNatGatewayAddress(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + result = response + return +} + +func (me *VpcService) UnattachEip(ctx context.Context, eipId string) error { + eipUnattachLocker.Lock() + defer eipUnattachLocker.Unlock() + + logId := tccommon.GetLogId(ctx) + eip, err := me.DescribeEipById(ctx, eipId) + if err != nil { + return err + } + if eip == nil || *eip.AddressStatus == EIP_STATUS_UNBIND { + return nil + } + + // DisassociateAddress Doesn't support Disassociate NAT Address + if eip.InstanceId != nil && strings.HasPrefix(*eip.InstanceId, "nat-") { + request := vpc.NewDisassociateNatGatewayAddressRequest() + request.NatGatewayId = eip.InstanceId + request.PublicIpAddresses = []*string{eip.AddressIp} + _, err := me.DisassociateNatGatewayAddress(ctx, request) + if err != nil { + return err + } + + outErr := resource.Retry(tccommon.ReadRetryTimeout*3, func() *resource.RetryError { + eip, err := me.DescribeEipById(ctx, eipId) + if err != nil { + return tccommon.RetryError(err) + } + if eip != nil && *eip.AddressStatus != EIP_STATUS_UNBIND { + return resource.RetryableError(fmt.Errorf("eip is still %s", EIP_STATUS_UNBIND)) + } + return nil + }) + + if outErr != nil { + return outErr + } + } + + request := vpc.NewDisassociateAddressRequest() + request.AddressId = &eipId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisassociateAddress(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + if response.Response.TaskId == nil { + return nil + } + taskId, err := strconv.ParseUint(*response.Response.TaskId, 10, 64) + if err != nil { + return nil + } + + taskRequest := vpc.NewDescribeTaskResultRequest() + taskRequest.TaskId = &taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(taskRequest.GetAction()) + taskResponse, err := me.client.UseVpcClient().DescribeTaskResult(taskRequest) + if err != nil { + return tccommon.RetryError(err) + } + if taskResponse.Response.Result != nil && *taskResponse.Response.Result == EIP_TASK_STATUS_RUNNING { + return resource.RetryableError(errors.New("eip task is running")) + } + return nil + }) + if err != nil { + return err + } + + return nil +} + +func (me *VpcService) CreateEni( + ctx context.Context, + name, vpcId, subnetId, desc string, + securityGroups []string, + ipv4Count *int, + ipv4s []VpcEniIP, + tags map[string]string, +) (id string, err error) { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + createRequest := vpc.NewCreateNetworkInterfaceRequest() + createRequest.NetworkInterfaceName = &name + createRequest.VpcId = &vpcId + createRequest.SubnetId = &subnetId + createRequest.NetworkInterfaceDescription = &desc + + if len(securityGroups) > 0 { + createRequest.SecurityGroupIds = common.StringPtrs(securityGroups) + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + createRequest.Tags = append(createRequest.Tags, &tag) + } + } + + if ipv4Count != nil { + // create will assign a primary ip, secondary ip count is *ipv4Count-1 + createRequest.SecondaryPrivateIpAddressCount = helper.IntUint64(*ipv4Count - 1) + } + + var wantIpv4 []string + + for _, ipv4 := range ipv4s { + wantIpv4 = append(wantIpv4, ipv4.ip.String()) + createRequest.PrivateIpAddresses = append(createRequest.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4.ip.String()), + Primary: helper.Bool(ipv4.primary), + Description: ipv4.desc, + }) + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(createRequest.GetAction()) + + response, err := client.CreateNetworkInterface(createRequest) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, createRequest.GetAction(), createRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + eni := response.Response.NetworkInterface + + if eni == nil { + err := fmt.Errorf("api[%s] eni is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + ipv4Set := eni.PrivateIpAddressSet + + if len(wantIpv4) > 0 { + checkMap := make(map[string]bool, len(wantIpv4)) + for _, ipv4 := range wantIpv4 { + checkMap[ipv4] = false + } + + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + checkMap[*ipv4.PrivateIpAddress] = true + } + + for ipv4, checked := range checkMap { + if !checked { + err := fmt.Errorf("api[%s] doesn't assign %s ip", createRequest.GetAction(), ipv4) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + } + } else { + if len(ipv4Set) != *ipv4Count { + err := fmt.Errorf("api[%s] doesn't assign enough ip", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = make([]string, 0, *ipv4Count) + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = append(wantIpv4, *ipv4.PrivateIpAddress) + } + } + + id = *eni.NetworkInterfaceId + + return nil + }); err != nil { + log.Printf("[CRITAL]%s create eni failed, reason: %v", logId, err) + return "", err + } + + if err := waitEniReady(ctx, id, client, wantIpv4, nil); err != nil { + log.Printf("[CRITAL]%s create eni failed, reason: %v", logId, err) + return "", err + } + + return +} + +func (me *VpcService) describeEnis( + ctx context.Context, + ids []string, + vpcId, subnetId, id, cvmId, sgId, name, desc, ipv4 *string, + tags map[string]string, +) (enis []*vpc.NetworkInterface, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkInterfacesRequest() + + if len(ids) > 0 { + request.NetworkInterfaceIds = common.StringPtrs(ids) + } + + if vpcId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("vpc-id"), + Values: []*string{vpcId}, + }) + } + + if subnetId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("subnet-id"), + Values: []*string{subnetId}, + }) + } + + if id != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-id"), + Values: []*string{id}, + }) + } + + if cvmId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("attachment.instance-id"), + Values: []*string{cvmId}, + }) + } + + if sgId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("groups.security-group-id"), + Values: []*string{sgId}, + }) + } + + if name != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-name"), + Values: []*string{name}, + }) + } + + if desc != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-description"), + Values: []*string{desc}, + }) + } + + if ipv4 != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("address-ip"), + Values: []*string{ipv4}, + }) + } + + for k, v := range tags { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("tag:" + k), + Values: []*string{helper.String(v)}, + }) + } + + var offset uint64 + request.Offset = &offset + request.Limit = helper.IntUint64(ENI_DESCRIBE_LIMIT) + + count := ENI_DESCRIBE_LIMIT + for count == ENI_DESCRIBE_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkInterfaces(request) + if err != nil { + count = 0 + + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + eniSet := response.Response.NetworkInterfaceSet + count = len(eniSet) + enis = append(enis, eniSet...) + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read eni list failed, reason: %v", logId, err) + return nil, err + } + + offset += uint64(count) + } + + return +} + +func (me *VpcService) DescribeEniById(ctx context.Context, ids []string) (enis []*vpc.NetworkInterface, err error) { + return me.describeEnis(ctx, ids, nil, nil, nil, nil, nil, nil, nil, nil, nil) +} + +func (me *VpcService) ModifyEniAttribute(ctx context.Context, id string, name, desc *string, sgs []string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewModifyNetworkInterfaceAttributeRequest() + request.NetworkInterfaceId = &id + request.NetworkInterfaceName = name + request.NetworkInterfaceDescription = desc + request.SecurityGroupIds = common.StringPtrs(sgs) + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.ModifyNetworkInterfaceAttribute(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify eni attribute failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, nil, nil); err != nil { + log.Printf("[CRITAL]%s modify eni attribute failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) UnAssignIpv4FromEni(ctx context.Context, id string, ipv4s []string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewUnassignPrivateIpAddressesRequest() + request.NetworkInterfaceId = &id + request.PrivateIpAddresses = make([]*vpc.PrivateIpAddressSpecification, 0, len(ipv4s)) + for _, ipv4 := range ipv4s { + request.PrivateIpAddresses = append(request.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4), + }) + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.UnassignPrivateIpAddresses(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s unassign ipv4 from eni failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, nil, ipv4s); err != nil { + log.Printf("[CRITAL]%s unassign ipv4 from eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) AssignIpv4ToEni(ctx context.Context, id string, ipv4s []VpcEniIP, ipv4Count *int) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewAssignPrivateIpAddressesRequest() + request.NetworkInterfaceId = &id + + if ipv4Count != nil { + request.SecondaryPrivateIpAddressCount = helper.IntUint64(*ipv4Count) + } + + var wantIpv4 []string + + if len(ipv4s) > 0 { + request.PrivateIpAddresses = make([]*vpc.PrivateIpAddressSpecification, 0, len(ipv4s)) + wantIpv4 = make([]string, 0, len(ipv4s)) + + for _, ipv4 := range ipv4s { + wantIpv4 = append(wantIpv4, ipv4.ip.String()) + request.PrivateIpAddresses = append(request.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4.ip.String()), + Primary: helper.Bool(ipv4.primary), + Description: ipv4.desc, + }) + } + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.AssignPrivateIpAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + ipv4Set := response.Response.PrivateIpAddressSet + + if len(wantIpv4) > 0 { + checkMap := make(map[string]bool, len(wantIpv4)) + for _, ipv4 := range wantIpv4 { + checkMap[ipv4] = false + } + + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + checkMap[*ipv4.PrivateIpAddress] = true + } + + for ipv4, checked := range checkMap { + if !checked { + err := fmt.Errorf("api[%s] doesn't assign %s ip", request.GetAction(), ipv4) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + } + } else { + if len(ipv4Set) != *ipv4Count { + err := fmt.Errorf("api[%s] doesn't assign enough ip", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = make([]string, 0, *ipv4Count) + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = append(wantIpv4, *ipv4.PrivateIpAddress) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s assign ipv4 to eni failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, wantIpv4, nil); err != nil { + log.Printf("[CRITAL]%s assign ipv4 to eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DeleteEni(ctx context.Context, id string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + deleteRequest := vpc.NewDeleteNetworkInterfaceRequest() + deleteRequest.NetworkInterfaceId = &id + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(deleteRequest.GetAction()) + + if _, err := client.DeleteNetworkInterface(deleteRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete eni failed, reason: %v", logId, err) + return err + } + + describeRequest := vpc.NewDescribeNetworkInterfacesRequest() + describeRequest.NetworkInterfaceIds = []*string{&id} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(describeRequest.GetAction()) + + response, err := client.DescribeNetworkInterfaces(describeRequest) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + for _, eni := range response.Response.NetworkInterfaceSet { + if eni.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.NetworkInterfaceId == id { + err := errors.New("eni still exists") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) AttachEniToCvm(ctx context.Context, eniId, cvmId string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + attachRequest := vpc.NewAttachNetworkInterfaceRequest() + attachRequest.NetworkInterfaceId = &eniId + attachRequest.InstanceId = &cvmId + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(attachRequest.GetAction()) + + if _, err := client.AttachNetworkInterface(attachRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, attachRequest.GetAction(), attachRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s attach eni to instance failed, reason: %v", logId, err) + return err + } + + describeRequest := vpc.NewDescribeNetworkInterfacesRequest() + describeRequest.NetworkInterfaceIds = []*string{&eniId} + + if err := resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(describeRequest.GetAction()) + + response, err := client.DescribeNetworkInterfaces(describeRequest) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + var eni *vpc.NetworkInterface + for _, e := range response.Response.NetworkInterfaceSet { + if e.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *e.NetworkInterfaceId == eniId { + eni = e + break + } + } + + if eni == nil { + err := fmt.Errorf("api[%s] eni not found", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.Attachment == nil { + err := fmt.Errorf("api[%s] eni attachment is not ready", describeRequest.GetAction()) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + if eni.Attachment.InstanceId == nil { + err := fmt.Errorf("api[%s] eni attach instance id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.Attachment.InstanceId != cvmId { + err := fmt.Errorf("api[%s] eni attach instance id is not right", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.State == nil { + err := fmt.Errorf("api[%s] eni state is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.State != ENI_STATE_AVAILABLE { + err := errors.New("eni is not ready") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s attach eni to instance failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DetachEniFromCvm(ctx context.Context, eniId, cvmId string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewDetachNetworkInterfaceRequest() + request.NetworkInterfaceId = &eniId + request.InstanceId = &cvmId + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.DetachNetworkInterface(request); err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + switch sdkError.Code { + case "UnsupportedOperation.InvalidState": + return resource.RetryableError(errors.New("cvm may still bind eni")) + + case "ResourceNotFound": + // eni or cvm doesn't exist + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s detach eni from instance failed, reason: %v", logId, err) + return err + } + + if err := waitEniDetach(ctx, eniId, client); err != nil { + log.Printf("[CRITAL]%s detach eni from instance failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) ModifyEniPrimaryIpv4Desc(ctx context.Context, id, ip string, desc *string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewModifyPrivateIpAddressesAttributeRequest() + request.NetworkInterfaceId = &id + request.PrivateIpAddresses = []*vpc.PrivateIpAddressSpecification{ + { + PrivateIpAddress: &ip, + Description: desc, + }, + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.ModifyPrivateIpAddressesAttribute(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify eni primary ipv4 description failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, []string{ip}, nil); err != nil { + log.Printf("[CRITAL]%s modify eni primary ipv4 description failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DescribeEniByFilters( + ctx context.Context, + vpcId, subnetId, cvmId, sgId, name, desc, ipv4 *string, + tags map[string]string, +) (enis []*vpc.NetworkInterface, err error) { + return me.describeEnis(ctx, nil, vpcId, subnetId, nil, cvmId, sgId, name, desc, ipv4, tags) +} + +func (me *VpcService) DescribeHaVipByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.HaVip, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeHaVipsRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.HaVip, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeHaVips(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.HaVipSet) < 1 { + break + } + instances = append(instances, response.Response.HaVipSet...) + if len(response.Response.HaVipSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DescribeHaVipEipById(ctx context.Context, haVipEipAttachmentId string) (eip string, haVip string, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + items := strings.Split(haVipEipAttachmentId, "#") + if len(items) != 2 { + errRet = fmt.Errorf("decode HA VIP EIP attachment ID error %s", haVipEipAttachmentId) + return + } + haVipId := items[0] + addressIp := items[1] + + request := vpc.NewDescribeHaVipsRequest() + request.HaVipIds = []*string{&haVipId} + eip = "" + haVip = "" + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if result, err := client.DescribeHaVips(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } else { + length := len(result.Response.HaVipSet) + if length != 1 { + if length == 0 { + return nil + } else { + err = fmt.Errorf("query havip %s eip %s failed, the SDK returns %d HaVips", haVipId, addressIp, length) + return resource.NonRetryableError(err) + } + } else { + eip = *result.Response.HaVipSet[0].AddressIp + if addressIp != eip { + return nil + } + has = true + haVip = haVipId + } + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s describe HA VIP attachment failed, reason: %v", logId, err) + errRet = err + } + return eip, haVip, has, errRet +} + +func (me *VpcService) DeleteHaVip(ctx context.Context, haVipId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteHaVipRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.HaVipId = &haVipId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteHaVip(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func waitEniReady(ctx context.Context, id string, client *vpc.Client, wantIpv4s []string, dropIpv4s []string) error { + logId := tccommon.GetLogId(ctx) + + wantCheckMap := make(map[string]bool, len(wantIpv4s)) + for _, ipv4 := range wantIpv4s { + wantCheckMap[ipv4] = false + } + + dropCheckMap := make(map[string]struct{}, len(dropIpv4s)) + for _, ipv4 := range dropIpv4s { + dropCheckMap[ipv4] = struct{}{} + } + + request := vpc.NewDescribeNetworkInterfacesRequest() + request.NetworkInterfaceIds = []*string{helper.String(id)} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.DescribeNetworkInterfaces(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + var eni *vpc.NetworkInterface + for _, networkInterface := range response.Response.NetworkInterfaceSet { + if networkInterface.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *networkInterface.NetworkInterfaceId == id { + eni = networkInterface + break + } + } + + if eni == nil { + err := fmt.Errorf("api[%s] eni not exist", request.GetAction()) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + if eni.State == nil { + err := fmt.Errorf("api[%s] eni state is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.State != ENI_STATE_AVAILABLE { + err := errors.New("eni is not available") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + for _, ipv4 := range eni.PrivateIpAddressSet { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + // check drop + if _, ok := dropCheckMap[*ipv4.PrivateIpAddress]; ok { + err := fmt.Errorf("api[%s] drop ip %s still exists", request.GetAction(), *ipv4.PrivateIpAddress) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + // check want + if _, ok := wantCheckMap[*ipv4.PrivateIpAddress]; ok { + wantCheckMap[*ipv4.PrivateIpAddress] = true + } + + if ipv4.State == nil { + err := fmt.Errorf("api[%s] eni ipv4 state is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *ipv4.State != ENI_IP_AVAILABLE { + err := errors.New("eni ipv4 is not available") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + for ipv4, checked := range wantCheckMap { + if !checked { + err := fmt.Errorf("api[%s] ipv4 %s is no ready", request.GetAction(), ipv4) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s eni is not available failed, reason: %v", logId, err) + return err + } + + return nil +} + +func flattenVpnSPDList(spd []*vpc.SecurityPolicyDatabase) (mapping []*map[string]interface{}) { + mapping = make([]*map[string]interface{}, 0, len(spd)) + for _, spg := range spd { + item := make(map[string]interface{}) + item["local_cidr_block"] = spg.LocalCidrBlock + item["remote_cidr_block"] = spg.RemoteCidrBlock + mapping = append(mapping, &item) + } + return +} + +func waitEniDetach(ctx context.Context, id string, client *vpc.Client) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkInterfacesRequest() + request.NetworkInterfaceIds = []*string{helper.String(id)} + + return resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.DescribeNetworkInterfaces(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok && sdkError.Code == "ResourceNotFound" { + return nil + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + enis := response.Response.NetworkInterfaceSet + + if len(enis) == 0 { + return nil + } + + eni := enis[0] + + if eni.Attachment == nil { + return nil + } + + if eni.Attachment.InstanceId != nil && *eni.Attachment.InstanceId != "" { + return resource.RetryableError(fmt.Errorf("eni %s still bind in cvm %s", id, *eni.Attachment.InstanceId)) + } + + if eni.State == nil { + return resource.NonRetryableError(fmt.Errorf("eni %s state is nil", id)) + } + + if *eni.State != ENI_STATE_AVAILABLE { + return resource.RetryableError(errors.New("eni is not available")) + } + + return nil + }) +} + +// deal acl +func parseACLRule(str string) (liteRule VpcACLRule, err error) { + split := strings.Split(str, "#") + if len(split) != 4 { + err = fmt.Errorf("invalid acl rule %s", str) + return + } + + liteRule.action, liteRule.cidrIp, liteRule.port, liteRule.protocol = split[0], split[1], split[2], split[3] + + switch liteRule.action { + default: + err = fmt.Errorf("invalid action %s, allow action is `ACCEPT` or `DROP`", liteRule.action) + return + case "ACCEPT", "DROP": + } + + if net.ParseIP(liteRule.cidrIp) == nil { + if _, _, err = net.ParseCIDR(liteRule.cidrIp); err != nil { + err = fmt.Errorf("invalid cidr_ip %s, allow cidr_ip format is `8.8.8.8` or `10.0.1.0/24`", liteRule.cidrIp) + return + } + } + + if liteRule.port != "ALL" && !regexp.MustCompile(`^(\d{1,5},)*\d{1,5}$|^\d{1,5}-\d{1,5}$`).MatchString(liteRule.port) { + err = fmt.Errorf("invalid port %s, allow port format is `ALL`, `53`, `80,443` or `80-90`", liteRule.port) + return + } + + switch liteRule.protocol { + default: + err = fmt.Errorf("invalid protocol %s, allow protocol is `ALL`, `TCP`, `UDP` or `ICMP`", liteRule.protocol) + return + + case "ALL", "ICMP": + if liteRule.port != "ALL" { + err = fmt.Errorf("when protocol is %s, port must be ALL", liteRule.protocol) + return + } + + // when protocol is ALL or ICMP, port should be "" to avoid sdk error + liteRule.port = "" + + case "TCP", "UDP": + } + + return +} + +func (me *VpcService) CreateVpcNetworkAcl(ctx context.Context, vpcID string, name string, tags map[string]string) (aclID string, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewCreateNetworkAclRequest() + response *vpc.CreateNetworkAclResponse + err error + ) + + request.VpcId = &vpcID + request.NetworkAclName = &name + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err = me.client.UseVpcClient().CreateNetworkAcl(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + aclID = *response.Response.NetworkAcl.NetworkAclId + return +} + +func (me *VpcService) AttachRulesToACL(ctx context.Context, aclID string, ingressParm, egressParm []VpcACLRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + + if len(ingressParm) == 0 && len(egressParm) == 0 { + return + } + if errRet = me.ModifyNetWorkAclRules(ctx, aclID, ingressParm, egressParm); errRet != nil { + log.Printf("[CRITAL]%s attach rules to acl failed, reason: %v", logId, errRet) + } + return +} + +func (me *VpcService) ModifyNetWorkAclRules(ctx context.Context, aclID string, ingressParm, egressParm []VpcACLRule) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewModifyNetworkAclEntriesRequest() + err error + ingress []*vpc.NetworkAclEntry + egress []*vpc.NetworkAclEntry + ) + + for i := range ingressParm { + policy := &vpc.NetworkAclEntry{ + Protocol: &ingressParm[i].protocol, + CidrBlock: &ingressParm[i].cidrIp, + Action: &ingressParm[i].action, + } + + if ingressParm[i].port != "" { + policy.Port = &ingressParm[i].port + } + + ingress = append(ingress, policy) + } + + for i := range egressParm { + policy := &vpc.NetworkAclEntry{ + Protocol: &egressParm[i].protocol, + CidrBlock: &egressParm[i].cidrIp, + Action: &egressParm[i].action, + } + + if egressParm[i].port != "" { + policy.Port = &egressParm[i].port + } + + egress = append(egress, policy) + } + + request.NetworkAclId = &aclID + request.NetworkAclEntrySet = &vpc.NetworkAclEntrySet{ + Ingress: ingress, + Egress: egress, + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().ModifyNetworkAclEntries(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) DescribeNetWorkByACLID(ctx context.Context, aclID string) (info *vpc.NetworkAcl, has int, errRet error) { + results, err := me.DescribeNetWorkAcls(ctx, aclID, "", "") + if err != nil { + errRet = err + return + } + + has = len(results) + if has == 0 { + return + } + + info = results[0] + return +} + +func (me *VpcService) DeleteAcl(ctx context.Context, aclID string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + err error + networkAcls []*vpc.NetworkAcl + request = vpc.NewDeleteNetworkAclRequest() + ) + + // Disassociate Network Acl Subnets + networkAcls, err = me.DescribeNetWorkAcls(ctx, aclID, "", "") + if err != nil { + errRet = err + return + } + + if len(networkAcls) > 0 { + subnets := networkAcls[0].SubnetSet + if len(subnets) > 0 { + requestSubnet := vpc.NewDisassociateNetworkAclSubnetsRequest() + requestSubnet.NetworkAclId = &aclID + + for i := range subnets { + requestSubnet.SubnetIds = append(requestSubnet.SubnetIds, subnets[i].SubnetId) + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DisassociateNetworkAclSubnets(requestSubnet) + if err != nil { + if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil + } + } + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + if err != nil { + errRet = err + return + } + } + } + + // delete acl + request.NetworkAclId = &aclID + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DeleteNetworkAcl(request) + + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err, tccommon.InternalError) + } + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil + } + return tccommon.RetryError(err, tccommon.InternalError) + } + + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) ModifyVpcNetworkAcl(ctx context.Context, id *string, name *string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + err error + request = vpc.NewModifyNetworkAclAttributeRequest() + ) + + request.NetworkAclId = id + request.NetworkAclName = name + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().ModifyNetworkAclAttribute(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err, tccommon.InternalError) + } + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return resource.NonRetryableError(err) + } + return tccommon.RetryError(err, tccommon.InternalError) + } + + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) AssociateAclSubnets(ctx context.Context, aclId string, subnetIds []string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewAssociateNetworkAclSubnetsRequest() + err error + subIds []*string + ) + + for _, i := range subnetIds { + subIds = append(subIds, &i) + } + + request.NetworkAclId = &aclId + request.SubnetIds = subIds + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().AssociateNetworkAclSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + return +} + +func (me *VpcService) DescribeNetWorkAcls(ctx context.Context, aclID, vpcID, name string) (info []*vpc.NetworkAcl, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkAclsRequest() + response *vpc.DescribeNetworkAclsResponse + err error + filters []*vpc.Filter + offset, pageSize uint64 = 0, 100 + ) + + if vpcID != "" { + filters = me.fillFilter(filters, "vpc-id", vpcID) + } + if aclID != "" { + filters = me.fillFilter(filters, "network-acl-id", aclID) + } + if name != "" { + filters = me.fillFilter(filters, "network-acl-name", name) + } + + if len(filters) > 0 { + request.Filters = filters + } + + request.Offset = &offset + request.Limit = &pageSize + for { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err = me.client.UseVpcClient().DescribeNetworkAcls(request) + if err != nil { + if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if ee.Code == VPCNotFound { + return nil + } + } + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + if response.Response == nil { + return + } + + info = append(info, response.Response.NetworkAclSet...) + if len(response.Response.NetworkAclSet) < int(pageSize) { + break + } + + offset += pageSize + } + + return +} + +func (me *VpcService) DescribeByAclId(ctx context.Context, attachmentAcl string) (has bool, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDisassociateNetworkAclSubnetsRequest() + aclId string + ) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + if attachmentAcl == "" { + errRet = fmt.Errorf("DisassociateNetworkAclSubnets can not invoke by empty routeTableId.") + return + } + + aclId = strings.Split(attachmentAcl, "#")[0] + + results, err := me.DescribeNetWorkAcls(ctx, aclId, "", "") + if err != nil { + errRet = err + return + } + if len(results) < 1 || len(results[0].SubnetSet) < 1 { + return + } + + has = true + return +} + +func (me *VpcService) DeleteAclAttachment(ctx context.Context, attachmentAcl string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDisassociateNetworkAclSubnetsRequest() + err error + ) + + if attachmentAcl == "" { + errRet = fmt.Errorf("DeleteRouteTable can not invoke by empty NetworkAclId.") + return + } + + items := strings.Split(attachmentAcl, "#") + request.NetworkAclId = &items[0] + request.SubnetIds = helper.Strings(items[1:]) + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DisassociateNetworkAclSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + return +} + +func (me *VpcService) DescribeVpngwById(ctx context.Context, vpngwId string) (has bool, gateway *vpc.VpnGateway, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaysRequest() + response *vpc.DescribeVpnGatewaysResponse + ) + request.VpnGatewayIds = []*string{&vpngwId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGateways(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.VpnGatewaySet) < 1 { + has = false + return + } + + gateway = response.Response.VpnGatewaySet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.VpnGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaysRequest() + ) + request.Filters = make([]*vpc.FilterObject, 0, len(filters)) + for k, v := range filters { + filter := vpc.FilterObject{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.VpnGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpnGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.VpnGatewaySet...) + if len(response.Response.VpnGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGateway(ctx context.Context, vpnGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteVpnGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeCustomerGatewayByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.CustomerGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCustomerGatewaysRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.CustomerGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeCustomerGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CustomerGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.CustomerGatewaySet...) + if len(response.Response.CustomerGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteCustomerGateway(ctx context.Context, customerGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteCustomerGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.CustomerGatewayId = &customerGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteCustomerGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) CreateAddressTemplate(ctx context.Context, name string, addresses []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateAddressTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateName = &name + request.Addresses = make([]*string, len(addresses)) + for i, v := range addresses { + request.Addresses[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAddressTemplate(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.AddressTemplate == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.AddressTemplate.AddressTemplateId + return +} + +func (me *VpcService) DescribeAddressTemplateById(ctx context.Context, templateId string) (template *vpc.AddressTemplate, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("address-template-id"), Values: []*string{&templateId}} + templates, err := me.DescribeAddressTemplates(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeAddressTemplates(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.AddressTemplate, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressTemplatesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddressTemplates(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.AddressTemplateSet...) + if len(response.Response.AddressTemplateSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) ModifyAddressTemplate(ctx context.Context, templateId string, name string, addresses []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressTemplateAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateId = &templateId + request.AddressTemplateName = &name + request.Addresses = make([]*string, len(addresses)) + for i, v := range addresses { + request.Addresses[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyAddressTemplateAttribute(request) + return err +} + +func (me *VpcService) DeleteAddressTemplate(ctx context.Context, templateId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteAddressTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.AddressTemplateId = &templateId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteAddressTemplate(request) + return err +} + +func (me *VpcService) CreateAddressTemplateGroup(ctx context.Context, name string, addressTemplate []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateAddressTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateGroupName = &name + request.AddressTemplateIds = make([]*string, len(addressTemplate)) + for i, v := range addressTemplate { + request.AddressTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAddressTemplateGroup(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.AddressTemplateGroup == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.AddressTemplateGroup.AddressTemplateGroupId + return +} + +func (me *VpcService) ModifyAddressTemplateGroup(ctx context.Context, templateGroupId string, name string, templateIds []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressTemplateGroupAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateGroupId = &templateGroupId + request.AddressTemplateGroupName = &name + request.AddressTemplateIds = make([]*string, len(templateIds)) + for i, v := range templateIds { + request.AddressTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyAddressTemplateGroupAttribute(request) + return err +} + +func (me *VpcService) DescribeAddressTemplateGroupById(ctx context.Context, templateGroupId string) (templateGroup *vpc.AddressTemplateGroup, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("address-template-group-id"), Values: []*string{&templateGroupId}} + templateGroups, err := me.DescribeAddressTemplateGroups(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templateGroups) == 0 { + return + } + if len(templateGroups) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one template group, instanceId %s", templateGroupId) + } + + has = true + templateGroup = templateGroups[0] + return +} + +func (me *VpcService) DescribeAddressTemplateGroups(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.AddressTemplateGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressTemplateGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddressTemplateGroups(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.AddressTemplateGroupSet...) + if len(response.Response.AddressTemplateGroupSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) DeleteAddressTemplateGroup(ctx context.Context, templateGroupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteAddressTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.AddressTemplateGroupId = &templateGroupId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteAddressTemplateGroup(request) + return err +} + +func (me *VpcService) CreateServiceTemplate(ctx context.Context, name string, services []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateServiceTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateName = &name + request.Services = make([]*string, len(services)) + for i, v := range services { + request.Services[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateServiceTemplate(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.ServiceTemplate == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.ServiceTemplate.ServiceTemplateId + return +} + +func (me *VpcService) ModifyServiceTemplate(ctx context.Context, templateId string, name string, services []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyServiceTemplateAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateId = &templateId + request.ServiceTemplateName = &name + request.Services = make([]*string, len(services)) + for i, v := range services { + request.Services[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyServiceTemplateAttribute(request) + return err +} + +func (me *VpcService) DescribeServiceTemplateById(ctx context.Context, templateId string) (template *vpc.ServiceTemplate, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("service-template-id"), Values: []*string{&templateId}} + templates, err := me.DescribeServiceTemplates(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeServiceTemplates(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.ServiceTemplate, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeServiceTemplatesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeServiceTemplates(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.ServiceTemplateSet...) + if len(response.Response.ServiceTemplateSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) DeleteServiceTemplate(ctx context.Context, templateId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteServiceTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.ServiceTemplateId = &templateId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteServiceTemplate(request) + return err +} + +func (me *VpcService) CreateServiceTemplateGroup(ctx context.Context, name string, serviceTemplate []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateServiceTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateGroupName = &name + request.ServiceTemplateIds = make([]*string, len(serviceTemplate)) + for i, v := range serviceTemplate { + request.ServiceTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateServiceTemplateGroup(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.ServiceTemplateGroup == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.ServiceTemplateGroup.ServiceTemplateGroupId + return +} + +func (me *VpcService) DescribeServiceTemplateGroupById(ctx context.Context, templateGroupId string) (template *vpc.ServiceTemplateGroup, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("service-template-group-id"), Values: []*string{&templateGroupId}} + templates, err := me.DescribeServiceTemplateGroups(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateGroupId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeServiceTemplateGroups(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.ServiceTemplateGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeServiceTemplateGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeServiceTemplateGroups(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.ServiceTemplateGroupSet...) + if len(response.Response.ServiceTemplateGroupSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) ModifyServiceTemplateGroup(ctx context.Context, serviceGroupId string, name string, templateIds []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyServiceTemplateGroupAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateGroupId = &serviceGroupId + request.ServiceTemplateGroupName = &name + request.ServiceTemplateIds = make([]*string, len(templateIds)) + for i, v := range templateIds { + request.ServiceTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyServiceTemplateGroupAttribute(request) + return err +} + +func (me *VpcService) DeleteServiceTemplateGroup(ctx context.Context, templateGroupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteServiceTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.ServiceTemplateGroupId = &templateGroupId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteServiceTemplateGroup(request) + return err +} + +func (me *VpcService) CreateVpnGatewayRoute(ctx context.Context, vpnGatewayId string, vpnGwRoutes []*vpc.VpnGatewayRoute) (errRet error, routes []*vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.Routes = vpnGwRoutes + + var response *vpc.CreateVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().CreateVpnGatewayRoutes(request) + if errRet != nil { + log.Printf("[CRITAL]%s create vpn gateway route failed, reason: %v", logId, errRet) + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil || response.Response.Routes == nil || len(response.Response.Routes) == 0 { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %+v, %s", response, request.GetAction()) + } else { + routes = response.Response.Routes + } + return +} + +func (me *VpcService) ModifyVpnGatewayRoute(ctx context.Context, vpnGatewayId, routeId, status string) (errRet error, routes *vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.Routes = []*vpc.VpnGatewayRouteModify{{ + RouteId: &routeId, + Status: &status, + }} + + var response *vpc.ModifyVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().ModifyVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil || response.Response.Routes == nil || len(response.Response.Routes) == 0 { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } else { + routes = response.Response.Routes[0] + } + return +} + +func (me *VpcService) DeleteVpnGatewayRoutes(ctx context.Context, vpnGatewayId string, routeIds []*string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.RouteIds = routeIds + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeVpnGatewayRoutes(ctx context.Context, vpnGatewayId string, filters []*vpc.Filter) (errRet error, result []*vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + if len(filters) > 0 { + request.Filters = filters + } + + offset := int64(0) + limit := int64(VPN_DESCRIBE_LIMIT) + for { + request.Offset = &offset + request.Limit = &limit + var response *vpc.DescribeVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().DescribeVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil { + return fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()), nil + } else if len(response.Response.Routes) > 0 { + result = append(result, response.Response.Routes...) + } else { + return + } + offset = offset + limit + } +} + +func (me *VpcService) DescribeVpcTaskResult(ctx context.Context, taskId *string) (err error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpcTaskResultRequest() + defer func() { + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), err.Error()) + } + }() + request.TaskId = taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpcTaskResult(request) + if err != nil { + return tccommon.RetryError(err) + } + if response.Response.Status != nil && *response.Response.Status == VPN_TASK_STATUS_RUNNING { + return resource.RetryableError(errors.New("VPN task is running")) + } + return nil + }) + if err != nil { + return err + } + return +} + +func (me *VpcService) DescribeTaskResult(ctx context.Context, taskId *uint64) (result *vpc.DescribeTaskResultResponse, err error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeTaskResultRequest() + defer func() { + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), err.Error()) + } + }() + request.TaskId = taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeTaskResult(request) + if err != nil { + return tccommon.RetryError(err) + } + result = response + return nil + }) + if err != nil { + return nil, err + } + return +} + +func (me *VpcService) DescribeVpnSslServerById(ctx context.Context, sslId string) (has bool, gateway *vpc.SslVpnSever, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslServersRequest() + response *vpc.DescribeVpnGatewaySslServersResponse + ) + request.SslVpnServerIds = []*string{&sslId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGatewaySslServers(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.SslVpnSeverSet) < 1 { + has = false + return + } + + gateway = response.Response.SslVpnSeverSet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwSslServerByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.SslVpnSever, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslServersRequest() + ) + request.Filters = make([]*vpc.FilterObject, 0, len(filters)) + for k, v := range filters { + filter := vpc.FilterObject{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.SslVpnSever, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGatewaySslServers(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SslVpnSeverSet) < 1 { + break + } + instances = append(instances, response.Response.SslVpnSeverSet...) + if len(response.Response.SslVpnSeverSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGatewaySslServer(ctx context.Context, SslServerId string) (taskId uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewaySslServerRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SslVpnServerId = &SslServerId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslServer(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + taskId = *response.Response.TaskId + return nil + }) + return +} + +func (me *VpcService) DescribeVpnSslClientById(ctx context.Context, sslId string) (has bool, gateway *vpc.SslVpnClient, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslClientsRequest() + response *vpc.DescribeVpnGatewaySslClientsResponse + ) + request.SslVpnClientIds = []*string{&sslId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGatewaySslClients(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.SslVpnClientSet) < 1 { + has = false + return + } + + gateway = response.Response.SslVpnClientSet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwSslClientByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.SslVpnClient, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslClientsRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.SslVpnClient, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGatewaySslClients(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SslVpnClientSet) < 1 { + break + } + instances = append(instances, response.Response.SslVpnClientSet...) + if len(response.Response.SslVpnClientSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGatewaySslClient(ctx context.Context, SslClientId string) (taskId *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewaySslClientRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SslVpnClientId = &SslClientId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslClient(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + taskId = response.Response.TaskId + return nil + }) + return +} + +func (me *VpcService) CreateNatGatewaySnat(ctx context.Context, natGatewayId string, snat *vpc.SourceIpTranslationNatRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.SourceIpTranslationNatRules = []*vpc.SourceIpTranslationNatRule{snat} + + var response *vpc.CreateNatGatewaySourceIpTranslationNatRuleResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().CreateNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + log.Printf("[CRITAL]%s create nat gateway source ip translation nat rule failed, reason: %v", logId, errRet) + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %+v, %s", response, request.GetAction()) + } + return +} + +func (me *VpcService) ModifyNatGatewaySnat(ctx context.Context, natGatewayId string, snat *vpc.SourceIpTranslationNatRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.SourceIpTranslationNatRule = snat + + var response *vpc.ModifyNatGatewaySourceIpTranslationNatRuleResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().ModifyNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + return +} + +func (me *VpcService) DeleteNatGatewaySnat(ctx context.Context, natGatewayId string, snatId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.NatGatewaySnatIds = []*string{&snatId} + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeNatGatewaySnats(ctx context.Context, natGatewayId string, filters []*vpc.Filter) (errRet error, result []*vpc.SourceIpTranslationNatRule) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeNatGatewaySourceIpTranslationNatRulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + if len(filters) > 0 { + request.Filters = filters + } + + offset := int64(0) + limit := int64(VPN_DESCRIBE_LIMIT) + for { + request.Offset = &offset + request.Limit = &limit + var response *vpc.DescribeNatGatewaySourceIpTranslationNatRulesResponse + errRet = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().DescribeNatGatewaySourceIpTranslationNatRules(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil { + return fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()), nil + } else if len(response.Response.SourceIpTranslationNatRuleSet) > 0 { + result = append(result, response.Response.SourceIpTranslationNatRuleSet...) + } else { + return + } + offset = offset + limit + } +} + +func (me *VpcService) DescribeAssistantCidr(ctx context.Context, vpcId string) (info []*vpc.AssistantCidr, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAssistantCidrRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcIds = []*string{&vpcId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.AssistantCidrSet + + return +} + +// CheckAssistantCidr used for check if cidr conflict +func (me *VpcService) CheckAssistantCidr(ctx context.Context, request *vpc.CheckAssistantCidrRequest) (info []*vpc.ConflictSource, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CheckAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.ConflictSourceSet + + return +} + +func (me *VpcService) CreateAssistantCidr(ctx context.Context, request *vpc.CreateAssistantCidrRequest) (info []*vpc.AssistantCidr, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.AssistantCidrSet + + return +} + +func (me *VpcService) ModifyAssistantCidr(ctx context.Context, request *vpc.ModifyAssistantCidrRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteAssistantCidr(ctx context.Context, request *vpc.DeleteAssistantCidrRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackage(ctx context.Context, bandwidthPackageId string) (resource *vpc.BandwidthPackage, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackagesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.BandwidthPackageIds = []*string{&bandwidthPackageId} + //request.Filters = append( + // request.Filters, + // &bwp.Filter{ + // Name: helper.String("bandwidth-package_id"), + // Values: []*string{&bandwidthPackageId}, + // }, + //) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackages(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil && len(response.Response.BandwidthPackageSet) > 0 { + resource = response.Response.BandwidthPackageSet[0] + } + + return +} + +func (me *VpcService) DeleteVpcBandwidthPackageById(ctx context.Context, bandwidthPackageId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteBandwidthPackageRequest() + + request.BandwidthPackageId = &bandwidthPackageId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteBandwidthPackage(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageAttachment(ctx context.Context, bandwidthPackageId, resourceId string) (bandwidthPackageResources *vpc.Resource, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageResourcesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.BandwidthPackageId = &bandwidthPackageId + request.Filters = append( + request.Filters, + &vpc.Filter{ + Name: helper.String("resource-id"), + Values: []*string{&resourceId}, + }, + ) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackageResources(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.ResourceSet) < 1 { + return + } + bandwidthPackageResources = response.Response.ResourceSet[0] + + return + +} + +func (me *VpcService) DeleteVpcBandwidthPackageAttachmentById(ctx context.Context, bandwidthPackageId, resourceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewRemoveBandwidthPackageResourcesRequest() + + if strings.HasPrefix(resourceId, "eip") { + request.ResourceType = helper.String("Address") + } else { + request.ResourceType = helper.String("LoadBalance") + } + + request.BandwidthPackageId = &bandwidthPackageId + request.ResourceIds = []*string{&resourceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().RemoveBandwidthPackageResources(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeFlowLogs(ctx context.Context, request *vpc.DescribeFlowLogsRequest) (result []*vpc.FlowLog, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeFlowLogs(request) + + if err != nil { + errRet = err + return + } + + result = response.Response.FlowLog + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcFlowLogById(ctx context.Context, flowLogId, vpcId string) (FlowLog *vpc.FlowLog, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeFlowLogRequest() + request.FlowLogId = &flowLogId + + if vpcId != "" { + request.VpcId = &vpcId + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeFlowLog(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.FlowLog) < 1 { + return + } + + FlowLog = response.Response.FlowLog[0] + return +} + +func (me *VpcService) DeleteVpcFlowLogById(ctx context.Context, flowLogId, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteFlowLogRequest() + request.FlowLogId = &flowLogId + if vpcId != "" { + request.VpcId = &vpcId + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteFlowLog(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointServiceById(ctx context.Context, endPointServiceId string) (endPointService *vpc.EndPointService, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointServiceRequest() + request.EndPointServiceIds = []*string{&endPointServiceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.EndPointService, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPointService(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.EndPointServiceSet) < 1 { + break + } + instances = append(instances, response.Response.EndPointServiceSet...) + if len(response.Response.EndPointServiceSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPointService = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointServiceById(ctx context.Context, endPointServiceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointServiceRequest() + request.EndPointServiceId = &endPointServiceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPointService(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointById(ctx context.Context, endPointId string) (endPoint *vpc.EndPoint, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointRequest() + request.EndPointId = []*string{&endPointId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.EndPoint, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPoint(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.EndPointSet) < 1 { + break + } + instances = append(instances, response.Response.EndPointSet...) + if len(response.Response.EndPointSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPoint = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointById(ctx context.Context, endPointId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointRequest() + request.EndPointId = &endPointId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPoint(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointServiceWhiteListById(ctx context.Context, userUin string, endPointServiceId string) (endPointServiceWhiteList *vpc.VpcEndPointServiceUser, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointServiceWhiteListRequest() + + request.Filters = make([]*vpc.Filter, 0) + if userUin != "" { + filter := &vpc.Filter{ + Name: helper.String("user-uin"), + Values: []*string{&userUin}, + } + request.Filters = append(request.Filters, filter) + } + if endPointServiceId != "" { + filter := &vpc.Filter{ + Name: helper.String("end-point-service-id"), + Values: []*string{&endPointServiceId}, + } + request.Filters = append(request.Filters, filter) + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.VpcEndPointServiceUser, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPointServiceWhiteList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpcEndpointServiceUserSet) < 1 { + break + } + instances = append(instances, response.Response.VpcEndpointServiceUserSet...) + if len(response.Response.VpcEndpointServiceUserSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPointServiceWhiteList = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointServiceWhiteListById(ctx context.Context, userUin string, endPointServiceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointServiceWhiteListRequest() + request.UserUin = []*string{&userUin} + request.EndPointServiceId = &endPointServiceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPointServiceWhiteList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageByEip(ctx context.Context, eipId string) (resource *vpc.BandwidthPackage, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackagesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.Filters = append( + request.Filters, + &vpc.Filter{ + Name: helper.String("resource.resource-id"), + Values: []*string{&eipId}, + }, + ) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackages(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil && len(response.Response.BandwidthPackageSet) > 0 { + resource = response.Response.BandwidthPackageSet[0] + } + + return +} + +func (me *VpcService) DescribeVpcCcnRoutesById(ctx context.Context, ccnId string, routeId string) (ccnRoutes *vpc.CcnRoute, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeCcnRoutesRequest() + request.CcnId = &ccnId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCcnRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + for _, route := range response.Response.RouteSet { + if *route.RouteId == routeId { + ccnRoutes = route + return + } + } + + return +} + +func (me *VpcService) DescribeCcnCrossBorderComplianceByFilter(ctx context.Context, param map[string]interface{}) (crossBorderCompliance []*vpc.CrossBorderCompliance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderComplianceRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "service_provider" { + request.ServiceProvider = v.(*string) + } + if k == "compliance_id" { + if *v.(*uint64) != 0 { + request.ComplianceId = v.(*uint64) + } + } + if k == "company" { + request.Company = v.(*string) + } + if k == "uniform_social_credit_code" { + request.UniformSocialCreditCode = v.(*string) + } + if k == "legal_person" { + request.LegalPerson = v.(*string) + } + if k == "issuing_authority" { + request.IssuingAuthority = v.(*string) + } + if k == "business_address" { + request.BusinessAddress = v.(*string) + } + if k == "post_code" { + if *v.(*uint64) != 0 { + request.PostCode = v.(*uint64) + } + } + if k == "manager" { + request.Manager = v.(*string) + } + if k == "manager_id" { + request.ManagerId = v.(*string) + } + if k == "manager_address" { + request.ManagerAddress = v.(*string) + } + if k == "manager_telephone" { + request.ManagerTelephone = v.(*string) + } + if k == "email" { + request.Email = v.(*string) + } + if k == "service_start_date" { + request.ServiceStartDate = v.(*string) + } + if k == "service_end_date" { + request.ServiceEndDate = v.(*string) + } + if k == "state" { + request.State = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeCrossBorderCompliance(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CrossBorderComplianceSet) < 1 { + break + } + crossBorderCompliance = append(crossBorderCompliance, response.Response.CrossBorderComplianceSet...) + if len(response.Response.CrossBorderComplianceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeTenantCcnByFilter(ctx context.Context, param map[string]interface{}) (tenantCcn []*vpc.CcnInstanceInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeTenantCcnsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.Filters = make([]*vpc.Filter, 0, len(param)) + for k, v := range param { + filter := &vpc.Filter{ + Name: helper.String(k), + Values: v.([]*string), + } + request.Filters = append(request.Filters, filter) + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeTenantCcns(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CcnSet) < 1 { + break + } + tenantCcn = append(tenantCcn, response.Response.CcnSet...) + if len(response.Response.CcnSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeCcnCrossBorderFlowMonitorByFilter(ctx context.Context, param map[string]interface{}) (crossBorderFlowMonitor []*vpc.CrossBorderFlowMonitorData, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderFlowMonitorRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "source_region" { + request.SourceRegion = v.(*string) + } + if k == "destination_region" { + request.DestinationRegion = v.(*string) + } + if k == "ccn_id" { + request.CcnId = v.(*string) + } + if k == "ccn_uin" { + request.CcnUin = v.(*string) + } + if k == "period" { + if *v.(*int64) != 0 { + request.Period = v.(*int64) + } + } + if k == "start_time" { + request.StartTime = v.(*string) + } + if k == "end_time" { + request.EndTime = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCrossBorderFlowMonitor(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CrossBorderFlowMonitorData) < 1 { + return + } + + crossBorderFlowMonitor = response.Response.CrossBorderFlowMonitorData + + return +} + +func (me *VpcService) DescribeVpnCustomerGatewayVendors(ctx context.Context) (vpnCustomerGatewayVendors []*vpc.CustomerGatewayVendor, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCustomerGatewayVendorsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCustomerGatewayVendors(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CustomerGatewayVendorSet) < 1 { + return + } + + vpnCustomerGatewayVendors = response.Response.CustomerGatewayVendorSet + return +} + +func (me *VpcService) DescribeVpcVpnGatewayCcnRoutesById(ctx context.Context, vpnGatewayId string, routeId string) (vpnGatewayCcnRoutes *vpc.VpngwCcnRoutes, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpnGatewayCcnRoutesRequest() + request.VpnGatewayId = &vpnGatewayId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpnGatewayCcnRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.RouteSet) < 1 { + return + } + + for _, route := range response.Response.RouteSet { + if *route.RouteId == routeId { + vpnGatewayCcnRoutes = route + break + } + } + return +} + +func (me *VpcService) DescribeVpcIpv6AddressById(ctx context.Context, ip6AddressId string) (ipv6Address *vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeIp6AddressesRequest() + request.Ip6AddressIds = []*string{&ip6AddressId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeIp6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AddressSet) < 1 { + return + } + + ipv6Address = response.Response.AddressSet[0] + return +} + +func (me *VpcService) DeleteVpcIpv6AddressById(ctx context.Context, ip6AddressId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewReleaseIp6AddressesBandwidthRequest() + request.Ip6AddressIds = []*string{&ip6AddressId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().ReleaseIp6AddressesBandwidth(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) VpcIpv6AddressStateRefreshFunc(taskId string, failStates []string) resource.StateRefreshFunc { + return func() (interface{}, string, error) { + ctx := tccommon.ContextNil + + taskId := helper.StrToUint64Point(taskId) + + object, err := me.DescribeTaskResult(ctx, taskId) + + if err != nil { + return nil, "", err + } + + return object, helper.PString(object.Response.Result), nil + } +} + +func (me *VpcService) DescribeVpcCcnRegionBandwidthLimitsByFilter(ctx context.Context, param map[string]interface{}) (CcnRegionBandwidthLimits []*vpc.CcnBandwidth, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderCcnRegionBandwidthLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeCrossBorderCcnRegionBandwidthLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CcnBandwidthSet) < 1 { + break + } + CcnRegionBandwidthLimits = append(CcnRegionBandwidthLimits, response.Response.CcnBandwidthSet...) + if len(response.Response.CcnBandwidthSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeNatDcRouteByFilter(ctx context.Context, param map[string]interface{}) (natDcRoute []*vpc.NatDirectConnectGatewayRoute, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNatGatewayDirectConnectGatewayRouteRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "NatGatewayId" { + request.NatGatewayId = v.(*string) + } + if k == "VpcId" { + request.VpcId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeNatGatewayDirectConnectGatewayRoute(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NatDirectConnectGatewayRouteSet) < 1 { + break + } + natDcRoute = append(natDcRoute, response.Response.NatDirectConnectGatewayRouteSet...) + if len(response.Response.NatDirectConnectGatewayRouteSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeEipAddressQuota(ctx context.Context) (addressQuota []*vpc.Quota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeAddressQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeAddressQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + addressQuota = append(addressQuota, response.Response.QuotaSet...) + + return +} + +func (me *VpcService) DescribeEipNetworkAccountType(ctx context.Context) (networkAccountType *string, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkAccountTypeRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkAccountType(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + networkAccountType = response.Response.NetworkAccountType + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageQuota(ctx context.Context) (bandwidthPackageQuota []*vpc.Quota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeBandwidthPackageQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + bandwidthPackageQuota = append(bandwidthPackageQuota, response.Response.QuotaSet...) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageBillUsageByFilter(ctx context.Context, param map[string]interface{}) (bandwidthPackageBillUsage []*vpc.BandwidthPackageBillBandwidth, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageBillUsageRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "BandwidthPackageId" { + request.BandwidthPackageId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeBandwidthPackageBillUsage(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + bandwidthPackageBillUsage = append(bandwidthPackageBillUsage, response.Response.BandwidthPackageBillBandwidthSet...) + + return +} + +func (me *VpcService) DescribeVpcTrafficPackageById(ctx context.Context, trafficPackageId string) (TrafficPackage *vpc.TrafficPackage, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeTrafficPackagesRequest() + request.TrafficPackageIds = []*string{&trafficPackageId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeTrafficPackages(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.TrafficPackageSet) < 1 { + return + } + + TrafficPackage = response.Response.TrafficPackageSet[0] + return +} + +func (me *VpcService) DeleteVpcTrafficPackageById(ctx context.Context, trafficPackageId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteTrafficPackagesRequest() + request.TrafficPackageIds = []*string{&trafficPackageId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteTrafficPackages(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcSnapshotPoliciesById(ctx context.Context, snapshotPolicyId string) (snapshotPolices []*vpc.SnapshotPolicy, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSnapshotPoliciesRequest() + request.SnapshotPolicyIds = []*string{&snapshotPolicyId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSnapshotPolicies(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + snapshotPolices = response.Response.SnapshotPolicySet + return +} + +func (me *VpcService) DeleteVpcSnapshotPoliciesById(ctx context.Context, snapshotPolicyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSnapshotPoliciesRequest() + request.SnapshotPolicyIds = []*string{&snapshotPolicyId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteSnapshotPolicies(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcSnapshotPolicyAttachmentById(ctx context.Context, snapshotPolicyId string) (snapshotPolicyAttachment []*vpc.SnapshotInstance, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSnapshotAttachedInstancesRequest() + request.SnapshotPolicyId = &snapshotPolicyId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSnapshotAttachedInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.InstanceSet) < 1 { + return + } + + snapshotPolicyAttachment = response.Response.InstanceSet + return +} + +func (me *VpcService) DeleteVpcSnapshotPolicyAttachmentById(ctx context.Context, snapshotPolicyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDetachSnapshotInstancesRequest() + request.SnapshotPolicyId = &snapshotPolicyId + + snapshotInstace, err := me.DescribeVpcSnapshotPolicyAttachmentById(ctx, snapshotPolicyId) + if err != nil { + errRet = err + return + } + request.Instances = snapshotInstace + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DetachSnapshotInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcNetDetectById(ctx context.Context, netDetectId string) (netDetect *vpc.NetDetect, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetDetectsRequest() + request.NetDetectIds = []*string{&netDetectId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetDetects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NetDetectSet) < 1 { + return + } + + netDetect = response.Response.NetDetectSet[0] + return +} + +func (me *VpcService) DeleteVpcNetDetectById(ctx context.Context, netDetectId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteNetDetectRequest() + request.NetDetectId = &netDetectId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteNetDetect(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcClassicLinkAttachmentById(ctx context.Context, vpcId string, instanceId string) (classicLinkAttachment *vpc.ClassicLinkInstance, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeClassicLinkInstancesRequest() + filter := vpc.FilterObject{ + Name: helper.String("vpc-id"), + Values: []*string{&vpcId}, + } + request.Filters = append(request.Filters, &filter) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.ClassicLinkInstance, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeClassicLinkInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.ClassicLinkInstanceSet) < 1 { + break + } + instances = append(instances, response.Response.ClassicLinkInstanceSet...) + if len(response.Response.ClassicLinkInstanceSet) < int(limit) { + break + } + offset += limit + } + + if len(instances) < 1 { + return + } + + for _, instance := range instances { + if *instance.InstanceId == instanceId { + classicLinkAttachment = instance + } + } + + return +} + +func (me *VpcService) DeleteVpcClassicLinkAttachmentById(ctx context.Context, vpcId string, instanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDetachClassicLinkVpcRequest() + request.VpcId = &vpcId + request.InstanceIds = []*string{&instanceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DetachClassicLinkVpc(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcDhcpIpById(ctx context.Context, dhcpIpId string) (dhcpIp *vpc.DhcpIp, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeDhcpIpsRequest() + request.DhcpIpIds = []*string{&dhcpIpId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeDhcpIps(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.DhcpIpSet) < 1 { + return + } + + dhcpIp = response.Response.DhcpIpSet[0] + return +} + +func (me *VpcService) DeleteVpcDhcpIpById(ctx context.Context, dhcpIpId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteDhcpIpRequest() + request.DhcpIpId = &dhcpIpId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteDhcpIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcDhcpAssociateAddressById(ctx context.Context, dhcpIpId string, addressIp string) (dhcpAssociateAddress *vpc.DhcpIp, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeDhcpIpsRequest() + request.DhcpIpIds = []*string{&dhcpIpId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeDhcpIps(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.DhcpIpSet) < 1 { + return + } + + dhcpIp := response.Response.DhcpIpSet[0] + if *dhcpIp.AddressIp != addressIp { + return + } + dhcpAssociateAddress = dhcpIp + + return +} + +func (me *VpcService) DeleteVpcDhcpAssociateAddressById(ctx context.Context, dhcpIpId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDisassociateDhcpIpWithAddressIpRequest() + request.DhcpIpId = &dhcpIpId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DisassociateDhcpIpWithAddressIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcById(ctx context.Context, vpcId string) (instance *vpc.Vpc, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcsRequest() + request.VpcIds = []*string{&vpcId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.Vpc, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeVpcs(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpcSet) < 1 { + break + } + instances = append(instances, response.Response.VpcSet...) + if len(response.Response.VpcSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + instance = instances[0] + return +} + +func (me *VpcService) DeleteVpcIpv6CidrBlockById(ctx context.Context, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6CidrBlockRequest() + request.VpcId = &vpcId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6CidrBlock(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeSubnetById(ctx context.Context, subnetId string) (instance *vpc.Subnet, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSubnetsRequest() + request.SubnetIds = []*string{&subnetId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.Subnet, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeSubnets(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SubnetSet) < 1 { + break + } + instances = append(instances, response.Response.SubnetSet...) + if len(response.Response.SubnetSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + instance = instances[0] + return +} + +func (me *VpcService) DeleteVpcIpv6SubnetCidrBlockById(ctx context.Context, vpcId string, subnetId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6SubnetCidrBlockRequest() + request.VpcId = &vpcId + + ipv6SubnetCidrBlock := vpc.Ipv6SubnetCidrBlock{} + ipv6SubnetCidrBlock.SubnetId = &subnetId + request.Ipv6SubnetCidrBlocks = append(request.Ipv6SubnetCidrBlocks, &ipv6SubnetCidrBlock) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6SubnetCidrBlock(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcIpv6EniAddressById(ctx context.Context, vpcId string, ipv6Address string) (ipv6EniAddress *vpc.VpcIpv6Address, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcIpv6AddressesRequest() + request.VpcId = &vpcId + request.Ipv6Addresses = []*string{&ipv6Address} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcIpv6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.Ipv6AddressSet) < 1 { + return + } + + ipv6EniAddress = response.Response.Ipv6AddressSet[0] + return +} + +func (me *VpcService) DeleteVpcIpv6EniAddressById(ctx context.Context, networkInterfaceId string, ipv6Address string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6AddressesRequest() + request.NetworkInterfaceId = &networkInterfaceId + address := vpc.Ipv6Address{} + address.Address = &ipv6Address + request.Ipv6Addresses = append(request.Ipv6Addresses, &address) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcLocalGatewayById(ctx context.Context, localGatewayId string) (localGateway *vpc.LocalGateway, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeLocalGatewayRequest() + + filter := vpc.Filter{ + Name: helper.String("local-gateway-id"), + Values: []*string{&localGatewayId}, + } + + request.Filters = append(request.Filters, &filter) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeLocalGateway(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.LocalGatewaySet) < 1 { + return + } + + localGateway = response.Response.LocalGatewaySet[0] + return +} + +func (me *VpcService) DeleteVpcLocalGatewayById(ctx context.Context, cdcId string, localGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteLocalGatewayRequest() + request.CdcId = &cdcId + request.LocalGatewayId = &localGatewayId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteLocalGateway(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcAccountAttributes(ctx context.Context) (accountAttributes []*vpc.AccountAttribute, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeAccountAttributesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeAccountAttributes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + accountAttributes = response.Response.AccountAttributeSet + + return +} + +func (me *VpcService) DescribeVpcClassicLinkInstancesByFilter(ctx context.Context, param map[string]interface{}) (classicLinkInstances []*vpc.ClassicLinkInstance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeClassicLinkInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Filters" { + request.Filters = v.([]*vpc.FilterObject) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeClassicLinkInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.ClassicLinkInstanceSet) < 1 { + break + } + classicLinkInstances = append(classicLinkInstances, response.Response.ClassicLinkInstanceSet...) + if len(response.Response.ClassicLinkInstanceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcGatewayFlowMonitorDetailByFilter(ctx context.Context, param map[string]interface{}) (GatewayFlowMonitorDetail []*vpc.GatewayFlowMonitorDetail, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeGatewayFlowMonitorDetailRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "TimePoint" { + request.TimePoint = v.(*string) + } + if k == "VpnId" { + request.VpnId = v.(*string) + } + if k == "DirectConnectGatewayId" { + request.DirectConnectGatewayId = v.(*string) + } + if k == "PeeringConnectionId" { + request.PeeringConnectionId = v.(*string) + } + if k == "NatId" { + request.NatId = v.(*string) + } + if k == "OrderField" { + request.OrderField = v.(*string) + } + if k == "OrderDirection" { + request.OrderDirection = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeGatewayFlowMonitorDetail(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.GatewayFlowMonitorDetailSet) < 1 { + break + } + GatewayFlowMonitorDetail = append(GatewayFlowMonitorDetail, response.Response.GatewayFlowMonitorDetailSet...) + if len(response.Response.GatewayFlowMonitorDetailSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcGatewayFlowQosByFilter(ctx context.Context, param map[string]interface{}) (GatewayFlowQos []*vpc.GatewayQos, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeGatewayFlowQosRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "GatewayId" { + request.GatewayId = v.(*string) + } + if k == "IpAddresses" { + request.IpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeGatewayFlowQos(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.GatewayQosSet) < 1 { + break + } + GatewayFlowQos = append(GatewayFlowQos, response.Response.GatewayQosSet...) + if len(response.Response.GatewayQosSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcCvmInstancesByFilter(ctx context.Context, param map[string]interface{}) (CvmInstances []*vpc.CvmInstance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.InstanceSet) < 1 { + break + } + CvmInstances = append(CvmInstances, response.Response.InstanceSet...) + if len(response.Response.InstanceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcNetDetectStatesByFilter(ctx context.Context, param map[string]interface{}) (NetDetectStates []*vpc.NetDetectState, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetDetectStatesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "NetDetectIds" { + request.NetDetectIds = v.([]*string) + } + if k == "Filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeNetDetectStates(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NetDetectStateSet) < 1 { + break + } + NetDetectStates = append(NetDetectStates, response.Response.NetDetectStateSet...) + if len(response.Response.NetDetectStateSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcNetworkInterfaceLimit(ctx context.Context, param map[string]interface{}) (networkInterfaceLimit *vpc.DescribeNetworkInterfaceLimitResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkInterfaceLimitRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkInterfaceLimit(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + networkInterfaceLimit = response.Response + + return +} + +func (me *VpcService) DescribeVpcPrivateIpAddresses(ctx context.Context, param map[string]interface{}) (PrivateIpAddresses []*vpc.VpcPrivateIpAddress, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcPrivateIpAddressesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "PrivateIpAddresses" { + request.PrivateIpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcPrivateIpAddresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + PrivateIpAddresses = response.Response.VpcPrivateIpAddressSet + + return +} + +func (me *VpcService) DescribeVpcProductQuota(ctx context.Context, param map[string]interface{}) (ProductQuota []*vpc.ProductQuota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeProductQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Product" { + request.Product = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeProductQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ProductQuota = response.Response.ProductQuotaSet + + return +} + +func (me *VpcService) DescribeVpcResourceDashboard(ctx context.Context, param map[string]interface{}) (ResourceDashboard []*vpc.ResourceDashboard, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcResourceDashboardRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcIds" { + request.VpcIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcResourceDashboard(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ResourceDashboard = response.Response.ResourceDashboardSet + + return +} + +func (me *VpcService) DescribeVpcRouteConflicts(ctx context.Context, param map[string]interface{}) (routeConflicts []*vpc.RouteConflict, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeRouteConflictsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "RouteTableId" { + request.RouteTableId = v.(*string) + } + if k == "DestinationCidrBlocks" { + request.DestinationCidrBlocks = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteConflicts(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + routeConflicts = response.Response.RouteConflictSet + + return +} + +func (me *VpcService) DescribeVpcSecurityGroupLimits(ctx context.Context, param map[string]interface{}) (securityGroupLimit *vpc.SecurityGroupLimitSet, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSecurityGroupLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + securityGroupLimit = response.Response.SecurityGroupLimitSet + + return +} + +func (me *VpcService) DescribeVpcSecurityGroupReferences(ctx context.Context, param map[string]interface{}) (securityGroupReferences []*vpc.ReferredSecurityGroup, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSecurityGroupReferencesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SecurityGroupIds" { + request.SecurityGroupIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupReferences(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + securityGroupReferences = response.Response.ReferredSecurityGroupSet + + return +} + +func (me *VpcService) DescribeVpcSgSnapshotFileContent(ctx context.Context, param map[string]interface{}) (sgSnapshotFileContent *vpc.DescribeSgSnapshotFileContentResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSgSnapshotFileContentRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SnapshotPolicyId" { + request.SnapshotPolicyId = v.(*string) + } + if k == "SnapshotFileId" { + request.SnapshotFileId = v.(*string) + } + if k == "SecurityGroupId" { + request.SecurityGroupId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSgSnapshotFileContent(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + sgSnapshotFileContent = response.Response + + return +} + +func (me *VpcService) DescribeVpcSnapshotFilesByFilter(ctx context.Context, param map[string]interface{}) (SnapshotFiles []*vpc.SnapshotFileInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSnapshotFilesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "BusinessType" { + request.BusinessType = v.(*string) + } + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + if k == "StartDate" { + request.StartDate = v.(*string) + } + if k == "EndDate" { + request.EndDate = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeSnapshotFiles(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SnapshotFileSet) < 1 { + break + } + SnapshotFiles = append(SnapshotFiles, response.Response.SnapshotFileSet...) + if len(response.Response.SnapshotFileSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcSubnetResourceDashboardByFilter(ctx context.Context, param map[string]interface{}) (subnetResourceDashboard []*vpc.ResourceStatistics, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSubnetResourceDashboardRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SubnetIds" { + request.SubnetIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSubnetResourceDashboard(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + subnetResourceDashboard = response.Response.ResourceStatisticsSet + + return +} + +func (me *VpcService) DescribeVpcTemplateLimits(ctx context.Context) (templateLimit *vpc.TemplateLimit, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeTemplateLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeTemplateLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + templateLimit = response.Response.TemplateLimit + + return +} + +func (me *VpcService) DescribeVpcUsedIpAddressByFilter(ctx context.Context, param map[string]interface{}) (UsedIpAddress []*vpc.IpAddressStates, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeUsedIpAddressRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "SubnetId" { + request.SubnetId = v.(*string) + } + if k == "IpAddresses" { + request.IpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeUsedIpAddress(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.IpAddressStates) < 1 { + break + } + UsedIpAddress = append(UsedIpAddress, response.Response.IpAddressStates...) + if len(response.Response.IpAddressStates) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcLimitsByFilter(ctx context.Context, param map[string]interface{}) (limits []*vpc.VpcLimit, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "LimitTypes" { + request.LimitTypes = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + limits = response.Response.VpcLimitSet + + return +} + +func (me *VpcService) DescribeVpcNetworkAclQuintupleById(ctx context.Context, networkAclId string) (networkAclQuintuples []*vpc.NetworkAclQuintupleEntry, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkAclQuintupleEntriesRequest() + request.NetworkAclId = &networkAclId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkAclQuintupleEntries(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NetworkAclQuintupleSet) < 1 { + return + } + + networkAclQuintuples = response.Response.NetworkAclQuintupleSet + return +} + +func (me *VpcService) DeleteVpcNetworkAclQuintupleById(ctx context.Context, networkAclId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteNetworkAclQuintupleEntriesRequest() + request.NetworkAclId = &networkAclId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteNetworkAclQuintupleEntries(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteVpcEniSgAttachmentById(ctx context.Context, networkInterfaceId string, securityGroupIds []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDisassociateNetworkInterfaceSecurityGroupsRequest() + request.NetworkInterfaceIds = []*string{&networkInterfaceId} + request.SecurityGroupIds = common.StringPtrs(securityGroupIds) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DisassociateNetworkInterfaceSecurityGroups(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcNetDetectStateCheck(ctx context.Context, param map[string]interface{}) (netDetectStateCheck []*vpc.NetDetectIpState, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewCheckNetDetectStateRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "DetectDestinationIp" { + request.DetectDestinationIp = v.([]*string) + } + if k == "NextHopType" { + request.NextHopType = v.(*string) + } + if k == "NextHopDestination" { + request.NextHopDestination = v.(*string) + } + if k == "NetDetectId" { + request.NetDetectId = v.(*string) + } + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "SubnetId" { + request.SubnetId = v.(*string) + } + if k == "NetDetectName" { + request.NetDetectName = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().CheckNetDetectState(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + netDetectStateCheck = response.Response.NetDetectIpStateSet + + return +} + +func (me *VpcService) DescribeVpcNotifyRoutesById(ctx context.Context, routeTableId string, routeItemId string) (notifyRoute *vpc.Route, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeRouteTablesRequest() + request.RouteTableIds = []*string{&routeTableId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteTables(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.RouteTableSet) < 1 { + return + } + + for _, routeTable := range response.Response.RouteTableSet { + for _, route := range routeTable.RouteSet { + if *route.RouteItemId == routeItemId { + notifyRoute = route + break + } + } + } + return +} + +func (me *VpcService) DeleteVpcNotifyRoutesById(ctx context.Context, routeTableId string, routeItemId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewWithdrawNotifyRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteItemIds = []*string{&routeItemId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().WithdrawNotifyRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpnDefaultHealthCheckIp(ctx context.Context, param map[string]interface{}) (defaultHealthCheck *vpc.GenerateVpnConnectionDefaultHealthCheckIpResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewGenerateVpnConnectionDefaultHealthCheckIpRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpnGatewayId" { + request.VpnGatewayId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().GenerateVpnConnectionDefaultHealthCheckIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + defaultHealthCheck = response.Response + + return +} diff --git a/tencentcloud/data_source_tc_dlc_check_data_engine_config_pairs_validity.go b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_config_pairs_validity.go similarity index 84% rename from tencentcloud/data_source_tc_dlc_check_data_engine_config_pairs_validity.go rename to tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_config_pairs_validity.go index 947f32e18c..8d8b670f3a 100644 --- a/tencentcloud/data_source_tc_dlc_check_data_engine_config_pairs_validity.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_config_pairs_validity.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcCheckDataEngineConfigPairsValidity() *schema.Resource { +func DataSourceTencentCloudDlcCheckDataEngineConfigPairsValidity() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcCheckDataEngineConfigPairsValidityRead, Schema: map[string]*schema.Schema{ @@ -70,12 +73,12 @@ func dataSourceTencentCloudDlcCheckDataEngineConfigPairsValidity() *schema.Resou } func dataSourceTencentCloudDlcCheckDataEngineConfigPairsValidityRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_check_data_engine_config_pairs_validity.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_check_data_engine_config_pairs_validity.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var childImageVersionId string paramMap := make(map[string]interface{}) if v, ok := d.GetOk("child_image_version_id"); ok { @@ -106,12 +109,12 @@ func dataSourceTencentCloudDlcCheckDataEngineConfigPairsValidityRead(d *schema.R paramMap["ImageVersionId"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var data *dlc.CheckDataEngineConfigPairsValidityResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcCheckDataEngineConfigPairsValidityByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } data = result return nil @@ -133,7 +136,7 @@ func dataSourceTencentCloudDlcCheckDataEngineConfigPairsValidityRead(d *schema.R d.SetId(childImageVersionId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_check_data_engine_config_pairs_validity_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_config_pairs_validity_test.go similarity index 69% rename from tencentcloud/data_source_tc_dlc_check_data_engine_config_pairs_validity_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_config_pairs_validity_test.go index e4211c4cba..128a889fdd 100644 --- a/tencentcloud/data_source_tc_dlc_check_data_engine_config_pairs_validity_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_config_pairs_validity_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcCheckDataEngineConfigPairsValidityDataSource_basic(t t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcCheckDataEngineConfigPairsValidityDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_check_data_engine_config_pairs_validity.check_data_engine_config_pairs_validity"), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_check_data_engine_config_pairs_validity.check_data_engine_config_pairs_validity"), resource.TestCheckResourceAttr("data.tencentcloud_dlc_check_data_engine_config_pairs_validity.check_data_engine_config_pairs_validity", "child_image_version_id", "f54fba71-5f9c-4dfe-a565-004d7b6d3864")), }, }, diff --git a/tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_rollback.go b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_rollback.go similarity index 76% rename from tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_rollback.go rename to tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_rollback.go index 4ba296f158..068ae42f34 100644 --- a/tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_rollback.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_rollback.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcCheckDataEngineImageCanBeRollback() *schema.Resource { +func DataSourceTencentCloudDlcCheckDataEngineImageCanBeRollback() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcCheckDataEngineImageCanBeRollbackRead, Schema: map[string]*schema.Schema{ @@ -47,12 +50,12 @@ func dataSourceTencentCloudDlcCheckDataEngineImageCanBeRollback() *schema.Resour } func dataSourceTencentCloudDlcCheckDataEngineImageCanBeRollbackRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_check_data_engine_image_can_be_rollback.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_check_data_engine_image_can_be_rollback.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var dataEngineId string paramMap := make(map[string]interface{}) if v, ok := d.GetOk("data_engine_id"); ok { @@ -60,12 +63,12 @@ func dataSourceTencentCloudDlcCheckDataEngineImageCanBeRollbackRead(d *schema.Re paramMap["DataEngineId"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} response := &dlc.CheckDataEngineImageCanBeRollbackResponseParams{} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcCheckDataEngineImageCanBeRollbackByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } response = result return nil @@ -92,7 +95,7 @@ func dataSourceTencentCloudDlcCheckDataEngineImageCanBeRollbackRead(d *schema.Re d.SetId(dataEngineId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), data); e != nil { + if e := tccommon.WriteToFile(output.(string), data); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_rollback_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_rollback_test.go similarity index 68% rename from tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_rollback_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_rollback_test.go index da7121fb93..ee049c2966 100644 --- a/tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_rollback_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_rollback_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcCheckDataEngineImageCanBeRollbackDataSource_basic(t * t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcCheckDataEngineImageCanBeRollbackDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_check_data_engine_image_can_be_rollback.check_data_engine_image_can_be_rollback"), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_check_data_engine_image_can_be_rollback.check_data_engine_image_can_be_rollback"), resource.TestCheckResourceAttr("data.tencentcloud_dlc_check_data_engine_image_can_be_rollback.check_data_engine_image_can_be_rollback", "data_engine_id", "DataEngine-public-1308919341")), }, }, diff --git a/tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_upgrade.go b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_upgrade.go similarity index 75% rename from tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_upgrade.go rename to tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_upgrade.go index 2d58be9b91..b066f3abda 100644 --- a/tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_upgrade.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_upgrade.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcCheckDataEngineImageCanBeUpgrade() *schema.Resource { +func DataSourceTencentCloudDlcCheckDataEngineImageCanBeUpgrade() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcCheckDataEngineImageCanBeUpgradeRead, Schema: map[string]*schema.Schema{ @@ -41,12 +44,12 @@ func dataSourceTencentCloudDlcCheckDataEngineImageCanBeUpgrade() *schema.Resourc } func dataSourceTencentCloudDlcCheckDataEngineImageCanBeUpgradeRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_check_data_engine_image_can_be_upgrade.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_check_data_engine_image_can_be_upgrade.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var dataEngineId string paramMap := make(map[string]interface{}) if v, ok := d.GetOk("data_engine_id"); ok { @@ -54,13 +57,13 @@ func dataSourceTencentCloudDlcCheckDataEngineImageCanBeUpgradeRead(d *schema.Res paramMap["DataEngineId"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var checkResult *dlc.CheckDataEngineImageCanBeUpgradeResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcCheckDataEngineImageCanBeUpgradeByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } checkResult = result return nil @@ -84,7 +87,7 @@ func dataSourceTencentCloudDlcCheckDataEngineImageCanBeUpgradeRead(d *schema.Res d.SetId(dataEngineId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), data); e != nil { + if e := tccommon.WriteToFile(output.(string), data); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_upgrade_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_upgrade_test.go similarity index 61% rename from tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_upgrade_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_upgrade_test.go index 11e8bb3cc5..7dbbbb4849 100644 --- a/tencentcloud/data_source_tc_dlc_check_data_engine_image_can_be_upgrade_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_check_data_engine_image_can_be_upgrade_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcCheckDataEngineImageCanBeUpgradeDataSource_basic(t *t t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcCheckDataEngineImageCanBeUpgradeDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_check_data_engine_image_can_be_upgrade.check_data_engine_image_can_be_upgrade")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_check_data_engine_image_can_be_upgrade.check_data_engine_image_can_be_upgrade")), }, }, }) diff --git a/tencentcloud/data_source_tc_dlc_describe_data_engine.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine.go similarity index 97% rename from tencentcloud/data_source_tc_dlc_describe_data_engine.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine.go index 2861b9c089..15c41633f2 100644 --- a/tencentcloud/data_source_tc_dlc_describe_data_engine.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine.go @@ -1,14 +1,16 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" ) -func dataSourceTencentCloudDlcDescribeDataEngine() *schema.Resource { +func DataSourceTencentCloudDlcDescribeDataEngine() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeDataEngineRead, Schema: map[string]*schema.Schema{ @@ -417,25 +419,25 @@ func dataSourceTencentCloudDlcDescribeDataEngine() *schema.Resource { } func dataSourceTencentCloudDlcDescribeDataEngineRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_data_engine.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_data_engine.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var dataEngineName string if v, ok := d.GetOk("data_engine_name"); ok { dataEngineName = v.(string) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var dataEngine *dlc.DataEngineInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDataEngineByName(ctx, dataEngineName) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } dataEngine = result return nil @@ -759,7 +761,7 @@ func dataSourceTencentCloudDlcDescribeDataEngineRead(d *schema.ResourceData, met d.SetId(dataEngineName) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), dataEngineInfoMap); e != nil { + if e := tccommon.WriteToFile(output.(string), dataEngineInfoMap); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_data_engine_events.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_events.go similarity index 80% rename from tencentcloud/data_source_tc_dlc_describe_data_engine_events.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_events.go index 109ce6dd14..027cd4cc73 100644 --- a/tencentcloud/data_source_tc_dlc_describe_data_engine_events.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_events.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcDescribeDataEngineEvents() *schema.Resource { +func DataSourceTencentCloudDlcDescribeDataEngineEvents() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeDataEngineEventsRead, Schema: map[string]*schema.Schema{ @@ -63,26 +66,26 @@ func dataSourceTencentCloudDlcDescribeDataEngineEvents() *schema.Resource { } func dataSourceTencentCloudDlcDescribeDataEngineEventsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_data_engine_events.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_data_engine_events.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("data_engine_name"); ok { paramMap["DataEngineName"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var events []*dlc.HouseEventsInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDescribeDataEngineEventsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } events = result return nil @@ -119,7 +122,7 @@ func dataSourceTencentCloudDlcDescribeDataEngineEventsRead(d *schema.ResourceDat d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_data_engine_events_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_events_test.go similarity index 61% rename from tencentcloud/data_source_tc_dlc_describe_data_engine_events_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_events_test.go index b13fd570cc..edbf95c3ba 100644 --- a/tencentcloud/data_source_tc_dlc_describe_data_engine_events_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_events_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeDataEngineEventsDataSource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeDataEngineEventsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_data_engine_events.describe_data_engine_events")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_data_engine_events.describe_data_engine_events")), }, }, }) diff --git a/tencentcloud/data_source_tc_dlc_describe_data_engine_image_versions.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_image_versions.go similarity index 87% rename from tencentcloud/data_source_tc_dlc_describe_data_engine_image_versions.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_image_versions.go index 731161d7bb..7594f4e282 100644 --- a/tencentcloud/data_source_tc_dlc_describe_data_engine_image_versions.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_image_versions.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcDescribeDataEngineImageVersions() *schema.Resource { +func DataSourceTencentCloudDlcDescribeDataEngineImageVersions() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeDataEngineImageVersionsRead, Schema: map[string]*schema.Schema{ @@ -84,26 +87,26 @@ func dataSourceTencentCloudDlcDescribeDataEngineImageVersions() *schema.Resource } func dataSourceTencentCloudDlcDescribeDataEngineImageVersionsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_data_engine_image_versions.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_data_engine_image_versions.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("engine_type"); ok { paramMap["EngineType"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var imageParentVersions []*dlc.DataEngineImageVersion - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDataEngineImageVersionsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } imageParentVersions = result return nil @@ -165,7 +168,7 @@ func dataSourceTencentCloudDlcDescribeDataEngineImageVersionsRead(d *schema.Reso d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_data_engine_image_versions_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_image_versions_test.go similarity index 67% rename from tencentcloud/data_source_tc_dlc_describe_data_engine_image_versions_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_image_versions_test.go index 62006e10c2..5b2d9e88db 100644 --- a/tencentcloud/data_source_tc_dlc_describe_data_engine_image_versions_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_image_versions_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeDataEngineImageVersionsDataSource_basic(t *te t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeDataEngineImageVersionsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_data_engine_image_versions.describe_data_engine_image_versions"), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_data_engine_image_versions.describe_data_engine_image_versions"), resource.TestCheckResourceAttr("data.tencentcloud_dlc_describe_data_engine_image_versions.describe_data_engine_image_versions", "engine_type", "SparkBatch"), ), }, diff --git a/tencentcloud/data_source_tc_dlc_describe_data_engine_python_spark_images.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_python_spark_images.go similarity index 84% rename from tencentcloud/data_source_tc_dlc_describe_data_engine_python_spark_images.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_python_spark_images.go index b2483b8882..b0f7ede898 100644 --- a/tencentcloud/data_source_tc_dlc_describe_data_engine_python_spark_images.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_python_spark_images.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcDescribeDataEnginePythonSparkImages() *schema.Resource { +func DataSourceTencentCloudDlcDescribeDataEnginePythonSparkImages() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeDataEnginePythonSparkImagesRead, Schema: map[string]*schema.Schema{ @@ -69,26 +72,26 @@ func dataSourceTencentCloudDlcDescribeDataEnginePythonSparkImages() *schema.Reso } func dataSourceTencentCloudDlcDescribeDataEnginePythonSparkImagesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_data_engine_python_spark_images.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_data_engine_python_spark_images.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("child_image_version_id"); ok { paramMap["ChildImageVersionId"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var pythonSparkImages []*dlc.PythonSparkImage - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDataEnginePythonSparkImagesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } pythonSparkImages = result return nil @@ -138,7 +141,7 @@ func dataSourceTencentCloudDlcDescribeDataEnginePythonSparkImagesRead(d *schema. d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_data_engine_python_spark_images_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_python_spark_images_test.go similarity index 62% rename from tencentcloud/data_source_tc_dlc_describe_data_engine_python_spark_images_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_python_spark_images_test.go index 94384ff4d4..d3ba8f5ded 100644 --- a/tencentcloud/data_source_tc_dlc_describe_data_engine_python_spark_images_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_python_spark_images_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeDataEnginePythonSparkImagesDataSource_basic(t t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeDataEnginePythonSparkImagesDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_data_engine_python_spark_images.describe_data_engine_python_spark_images")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_data_engine_python_spark_images.describe_data_engine_python_spark_images")), }, }, }) diff --git a/tencentcloud/data_source_tc_dlc_describe_data_engine_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_test.go similarity index 66% rename from tencentcloud/data_source_tc_dlc_describe_data_engine_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_test.go index edafc35b38..dd21569b3b 100644 --- a/tencentcloud/data_source_tc_dlc_describe_data_engine_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_data_engine_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeDataEngineDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeDataEngineDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_data_engine.describe_data_engine"), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_data_engine.describe_data_engine"), resource.TestCheckResourceAttr("data.tencentcloud_dlc_describe_data_engine.describe_data_engine", "data_engine_name", "iac-test-spark"), ), }, diff --git a/tencentcloud/data_source_tc_dlc_describe_engine_usage_info.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_engine_usage_info.go similarity index 74% rename from tencentcloud/data_source_tc_dlc_describe_engine_usage_info.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_engine_usage_info.go index 6d2264a3b4..e165a9a9b4 100644 --- a/tencentcloud/data_source_tc_dlc_describe_engine_usage_info.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_engine_usage_info.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcDescribeEngineUsageInfo() *schema.Resource { +func DataSourceTencentCloudDlcDescribeEngineUsageInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeEngineUsageInfoRead, Schema: map[string]*schema.Schema{ @@ -41,12 +44,12 @@ func dataSourceTencentCloudDlcDescribeEngineUsageInfo() *schema.Resource { } func dataSourceTencentCloudDlcDescribeEngineUsageInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_engine_usage_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_engine_usage_info.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var dataEngineId string paramMap := make(map[string]interface{}) if v, ok := d.GetOk("data_engine_id"); ok { @@ -54,14 +57,14 @@ func dataSourceTencentCloudDlcDescribeEngineUsageInfoRead(d *schema.ResourceData paramMap["DataEngineId"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var describeInfo *dlc.DescribeEngineUsageInfoResponseParams tmp := make(map[string]interface{}, 0) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDescribeEngineUsageInfoByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } describeInfo = result return nil @@ -83,7 +86,7 @@ func dataSourceTencentCloudDlcDescribeEngineUsageInfoRead(d *schema.ResourceData d.SetId(dataEngineId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmp); e != nil { + if e := tccommon.WriteToFile(output.(string), tmp); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_engine_usage_info_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_engine_usage_info_test.go similarity index 61% rename from tencentcloud/data_source_tc_dlc_describe_engine_usage_info_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_engine_usage_info_test.go index 285543b019..2fff0ab8cf 100644 --- a/tencentcloud/data_source_tc_dlc_describe_engine_usage_info_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_engine_usage_info_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeEngineUsageInfoDataSource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeEngineUsageInfoDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_engine_usage_info.describe_engine_usage_info")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_engine_usage_info.describe_engine_usage_info")), }, }, }) diff --git a/tencentcloud/data_source_tc_dlc_describe_updatable_data_engines.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_updatable_data_engines.go similarity index 87% rename from tencentcloud/data_source_tc_dlc_describe_updatable_data_engines.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_updatable_data_engines.go index a7c2fc49c8..988a93b48a 100644 --- a/tencentcloud/data_source_tc_dlc_describe_updatable_data_engines.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_updatable_data_engines.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcDescribeUpdatableDataEngines() *schema.Resource { +func DataSourceTencentCloudDlcDescribeUpdatableDataEngines() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeUpdatableDataEnginesRead, Schema: map[string]*schema.Schema{ @@ -84,26 +87,26 @@ func dataSourceTencentCloudDlcDescribeUpdatableDataEngines() *schema.Resource { } func dataSourceTencentCloudDlcDescribeUpdatableDataEnginesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_updatable_data_engines.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_updatable_data_engines.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("data_engine_config_command"); ok { paramMap["DataEngineConfigCommand"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var dataEngineBasicInfos []*dlc.DataEngineBasicInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDescribeUpdatableDataEnginesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } dataEngineBasicInfos = result return nil @@ -165,7 +168,7 @@ func dataSourceTencentCloudDlcDescribeUpdatableDataEnginesRead(d *schema.Resourc d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_updatable_data_engines_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_updatable_data_engines_test.go similarity index 62% rename from tencentcloud/data_source_tc_dlc_describe_updatable_data_engines_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_updatable_data_engines_test.go index 11d99f9d28..6fbb8b53b8 100644 --- a/tencentcloud/data_source_tc_dlc_describe_updatable_data_engines_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_updatable_data_engines_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeUpdatableDataEnginesDataSource_basic(t *testi t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeUpdatableDataEnginesDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_updatable_data_engines.describe_updatable_data_engines")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_updatable_data_engines.describe_updatable_data_engines")), }, }, }) diff --git a/tencentcloud/data_source_tc_dlc_describe_user_info.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_info.go similarity index 98% rename from tencentcloud/data_source_tc_dlc_describe_user_info.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_user_info.go index 369ebe99d7..41d2986c56 100644 --- a/tencentcloud/data_source_tc_dlc_describe_user_info.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_info.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcDescribeUserInfo() *schema.Resource { +func DataSourceTencentCloudDlcDescribeUserInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeUserInfoRead, Schema: map[string]*schema.Schema{ @@ -477,12 +480,12 @@ func dataSourceTencentCloudDlcDescribeUserInfo() *schema.Resource { } func dataSourceTencentCloudDlcDescribeUserInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_user_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_user_info.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var userId string paramMap := make(map[string]interface{}) if v, ok := d.GetOk("user_id"); ok { @@ -522,14 +525,14 @@ func dataSourceTencentCloudDlcDescribeUserInfoRead(d *schema.ResourceData, meta paramMap["Sorting"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var userInfo *dlc.UserDetailInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDescribeUserInfoByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } userInfo = result return nil @@ -876,7 +879,7 @@ func dataSourceTencentCloudDlcDescribeUserInfoRead(d *schema.ResourceData, meta d.SetId(userId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), userDetailInfoMap); e != nil { + if e := tccommon.WriteToFile(output.(string), userDetailInfoMap); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_user_info_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_info_test.go similarity index 76% rename from tencentcloud/data_source_tc_dlc_describe_user_info_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_user_info_test.go index 67b3835681..2062d9d49b 100644 --- a/tencentcloud/data_source_tc_dlc_describe_user_info_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_info_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeUserInfoDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeUserInfoDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_user_info.describe_user_info"), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_user_info.describe_user_info"), resource.TestCheckResourceAttr("data.tencentcloud_dlc_describe_user_info.describe_user_info", "user_id", "100032772113"), resource.TestCheckResourceAttr("data.tencentcloud_dlc_describe_user_info.describe_user_info", "type", "Group"), resource.TestCheckResourceAttr("data.tencentcloud_dlc_describe_user_info.describe_user_info", "sort_by", "create-time"), diff --git a/tencentcloud/data_source_tc_dlc_describe_user_roles.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_roles.go similarity index 89% rename from tencentcloud/data_source_tc_dlc_describe_user_roles.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_user_roles.go index 3223cce705..23faee9c62 100644 --- a/tencentcloud/data_source_tc_dlc_describe_user_roles.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_roles.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcDescribeUserRoles() *schema.Resource { +func DataSourceTencentCloudDlcDescribeUserRoles() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeUserRolesRead, Schema: map[string]*schema.Schema{ @@ -118,12 +121,12 @@ func dataSourceTencentCloudDlcDescribeUserRoles() *schema.Resource { } func dataSourceTencentCloudDlcDescribeUserRolesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_user_roles.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_user_roles.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("fuzzy"); ok { @@ -138,14 +141,14 @@ func dataSourceTencentCloudDlcDescribeUserRolesRead(d *schema.ResourceData, meta paramMap["Sorting"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var userRoles []*dlc.UserRole - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDescribeUserRolesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } userRoles = result return nil @@ -226,7 +229,7 @@ func dataSourceTencentCloudDlcDescribeUserRolesRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_user_roles_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_roles_test.go similarity index 64% rename from tencentcloud/data_source_tc_dlc_describe_user_roles_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_user_roles_test.go index 20ad93d875..d777639b0b 100644 --- a/tencentcloud/data_source_tc_dlc_describe_user_roles_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_roles_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeUserRolesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeUserRolesDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_user_roles.describe_user_roles"), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_user_roles.describe_user_roles"), resource.TestCheckResourceAttr("data.tencentcloud_dlc_describe_user_roles.describe_user_roles", "fuzzy", "1")), }, }, diff --git a/tencentcloud/data_source_tc_dlc_describe_user_type.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_type.go similarity index 67% rename from tencentcloud/data_source_tc_dlc_describe_user_type.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_user_type.go index 68ba95f616..ac113d8d49 100644 --- a/tencentcloud/data_source_tc_dlc_describe_user_type.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_type.go @@ -1,14 +1,17 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcDescribeUserType() *schema.Resource { +func DataSourceTencentCloudDlcDescribeUserType() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeUserTypeRead, Schema: map[string]*schema.Schema{ @@ -34,24 +37,24 @@ func dataSourceTencentCloudDlcDescribeUserType() *schema.Resource { } func dataSourceTencentCloudDlcDescribeUserTypeRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_user_type.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_user_type.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var userId string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("user_id"); ok { userId = v.(string) paramMap["UserId"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var userType *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDescribeUserTypeByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } userType = result return nil @@ -64,10 +67,10 @@ func dataSourceTencentCloudDlcDescribeUserTypeRead(d *schema.ResourceData, meta _ = d.Set("user_type", userType) } - d.SetId(userId + FILED_SP + *userType) + d.SetId(userId + tccommon.FILED_SP + *userType) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), userType); e != nil { + if e := tccommon.WriteToFile(output.(string), userType); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_user_type_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_type_test.go similarity index 59% rename from tencentcloud/data_source_tc_dlc_describe_user_type_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_user_type_test.go index 27c2fc6991..79679d622f 100644 --- a/tencentcloud/data_source_tc_dlc_describe_user_type_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_user_type_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeUserTypeDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeUserTypeDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_user_type.describe_user_type")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_user_type.describe_user_type")), }, }, }) diff --git a/tencentcloud/data_source_tc_dlc_describe_work_group_info.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_work_group_info.go similarity index 98% rename from tencentcloud/data_source_tc_dlc_describe_work_group_info.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_work_group_info.go index b6582be56b..d189881484 100644 --- a/tencentcloud/data_source_tc_dlc_describe_work_group_info.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_work_group_info.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDlcDescribeWorkGroupInfo() *schema.Resource { +func DataSourceTencentCloudDlcDescribeWorkGroupInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDlcDescribeWorkGroupInfoRead, Schema: map[string]*schema.Schema{ @@ -472,12 +475,12 @@ func dataSourceTencentCloudDlcDescribeWorkGroupInfo() *schema.Resource { } func dataSourceTencentCloudDlcDescribeWorkGroupInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dlc_describe_work_group_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dlc_describe_work_group_info.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, _ := d.GetOkExists("work_group_id"); v != nil { @@ -516,14 +519,14 @@ func dataSourceTencentCloudDlcDescribeWorkGroupInfoRead(d *schema.ResourceData, paramMap["Sorting"] = helper.String(v.(string)) } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var workGroupInfo *dlc.WorkGroupDetailInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDlcDescribeWorkGroupInfoByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } workGroupInfo = result return nil @@ -868,7 +871,7 @@ func dataSourceTencentCloudDlcDescribeWorkGroupInfoRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), workGroupDetailInfoMap); e != nil { + if e := tccommon.WriteToFile(output.(string), workGroupDetailInfoMap); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dlc_describe_work_group_info_test.go b/tencentcloud/services/dlc/data_source_tc_dlc_describe_work_group_info_test.go similarity index 62% rename from tencentcloud/data_source_tc_dlc_describe_work_group_info_test.go rename to tencentcloud/services/dlc/data_source_tc_dlc_describe_work_group_info_test.go index ec36e3c130..18e157c9e7 100644 --- a/tencentcloud/data_source_tc_dlc_describe_work_group_info_test.go +++ b/tencentcloud/services/dlc/data_source_tc_dlc_describe_work_group_info_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDlcDescribeWorkGroupInfoDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDescribeWorkGroupInfoDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_work_group_info.describe_work_group_info")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dlc_describe_work_group_info.describe_work_group_info")), }, }, }) diff --git a/tencentcloud/resource_tc_dlc_add_users_to_work_group_attachment.go b/tencentcloud/services/dlc/resource_tc_dlc_add_users_to_work_group_attachment.go similarity index 74% rename from tencentcloud/resource_tc_dlc_add_users_to_work_group_attachment.go rename to tencentcloud/services/dlc/resource_tc_dlc_add_users_to_work_group_attachment.go index 36c36a11c4..e71f39b49d 100644 --- a/tencentcloud/resource_tc_dlc_add_users_to_work_group_attachment.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_add_users_to_work_group_attachment.go @@ -1,4 +1,4 @@ -package tencentcloud +package dlc import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcAddUsersToWorkGroupAttachment() *schema.Resource { +func ResourceTencentCloudDlcAddUsersToWorkGroupAttachment() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcAddUsersToWorkGroupAttachmentCreate, Read: resourceTencentCloudDlcAddUsersToWorkGroupAttachmentRead, @@ -50,10 +53,10 @@ func resourceTencentCloudDlcAddUsersToWorkGroupAttachment() *schema.Resource { } func resourceTencentCloudDlcAddUsersToWorkGroupAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_add_users_to_work_group_attachment.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_add_users_to_work_group_attachment.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewAddUsersToWorkGroupRequest() @@ -77,10 +80,10 @@ func resourceTencentCloudDlcAddUsersToWorkGroupAttachmentCreate(d *schema.Resour request.AddInfo = &userIdSetOfWorkGroupId } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().AddUsersToWorkGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().AddUsersToWorkGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -91,22 +94,22 @@ func resourceTencentCloudDlcAddUsersToWorkGroupAttachmentCreate(d *schema.Resour return err } - d.SetId(workGroupId + FILED_SP + strings.Join(ids, "|")) + d.SetId(workGroupId + tccommon.FILED_SP + strings.Join(ids, "|")) return resourceTencentCloudDlcAddUsersToWorkGroupAttachmentRead(d, meta) } func resourceTencentCloudDlcAddUsersToWorkGroupAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_add_users_to_work_group_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_add_users_to_work_group_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -145,14 +148,14 @@ func resourceTencentCloudDlcAddUsersToWorkGroupAttachmentRead(d *schema.Resource } func resourceTencentCloudDlcAddUsersToWorkGroupAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_add_users_to_work_group.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_add_users_to_work_group.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dlc_add_users_to_work_group_attachment_test.go b/tencentcloud/services/dlc/resource_tc_dlc_add_users_to_work_group_attachment_test.go similarity index 88% rename from tencentcloud/resource_tc_dlc_add_users_to_work_group_attachment_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_add_users_to_work_group_attachment_test.go index b08b018e95..13953a7964 100644 --- a/tencentcloud/resource_tc_dlc_add_users_to_work_group_attachment_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_add_users_to_work_group_attachment_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcAddUsersToWorkGroupAttachmentResource_basic(t *testin t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcAddUsersToWorkGroupAttachment, diff --git a/tencentcloud/resource_tc_dlc_bind_work_groups_to_user_attachment.go b/tencentcloud/services/dlc/resource_tc_dlc_bind_work_groups_to_user_attachment.go similarity index 76% rename from tencentcloud/resource_tc_dlc_bind_work_groups_to_user_attachment.go rename to tencentcloud/services/dlc/resource_tc_dlc_bind_work_groups_to_user_attachment.go index 266aeb899c..84fd9856ef 100644 --- a/tencentcloud/resource_tc_dlc_bind_work_groups_to_user_attachment.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_bind_work_groups_to_user_attachment.go @@ -1,16 +1,19 @@ -package tencentcloud +package dlc import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcBindWorkGroupsToUserAttachment() *schema.Resource { +func ResourceTencentCloudDlcBindWorkGroupsToUserAttachment() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcBindWorkGroupsToUserCreateAttachment, Read: resourceTencentCloudDlcBindWorkGroupsToUserReadAttachment, @@ -48,10 +51,10 @@ func resourceTencentCloudDlcBindWorkGroupsToUserAttachment() *schema.Resource { } func resourceTencentCloudDlcBindWorkGroupsToUserCreateAttachment(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_bind_work_groups_to_user_attachment.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_bind_work_groups_to_user_attachment.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewBindWorkGroupsToUserRequest() @@ -73,10 +76,10 @@ func resourceTencentCloudDlcBindWorkGroupsToUserCreateAttachment(d *schema.Resou request.AddInfo = &workGroupIdSetOfUserId } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().BindWorkGroupsToUser(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().BindWorkGroupsToUser(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -93,14 +96,14 @@ func resourceTencentCloudDlcBindWorkGroupsToUserCreateAttachment(d *schema.Resou } func resourceTencentCloudDlcBindWorkGroupsToUserReadAttachment(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_bind_work_groups_to_user_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_bind_work_groups_to_user_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} parm := make(map[string]interface{}) parm["UserId"] = helper.String(d.Id()) @@ -136,14 +139,14 @@ func resourceTencentCloudDlcBindWorkGroupsToUserReadAttachment(d *schema.Resourc } func resourceTencentCloudDlcBindWorkGroupsToUserDeleteAttachment(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_bind_work_groups_to_user_attachment.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_bind_work_groups_to_user_attachment.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) userId := d.Id() var workGroupIdSet []*int64 - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if dMap, ok := helper.InterfacesHeadMap(d, "add_info"); ok { if v, ok := dMap["work_group_ids"]; ok { workGroupIdsSet := v.(*schema.Set).List() diff --git a/tencentcloud/resource_tc_dlc_bind_work_groups_to_user_attachment_test.go b/tencentcloud/services/dlc/resource_tc_dlc_bind_work_groups_to_user_attachment_test.go similarity index 88% rename from tencentcloud/resource_tc_dlc_bind_work_groups_to_user_attachment_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_bind_work_groups_to_user_attachment_test.go index f21e475203..7a8413b3b4 100644 --- a/tencentcloud/resource_tc_dlc_bind_work_groups_to_user_attachment_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_bind_work_groups_to_user_attachment_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcBindWorkGroupsToUserAttachmentResource_basic(t *testi t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcBindWorkGroupsToUser, diff --git a/tencentcloud/resource_tc_dlc_data_engine.go b/tencentcloud/services/dlc/resource_tc_dlc_data_engine.go similarity index 91% rename from tencentcloud/resource_tc_dlc_data_engine.go rename to tencentcloud/services/dlc/resource_tc_dlc_data_engine.go index 8ab684f3ee..fb91d9d3c0 100644 --- a/tencentcloud/resource_tc_dlc_data_engine.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_data_engine.go @@ -1,4 +1,4 @@ -package tencentcloud +package dlc import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcDataEngine() *schema.Resource { +func ResourceTencentCloudDlcDataEngine() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcDataEngineCreate, Read: resourceTencentCloudDlcDataEngineRead, @@ -265,10 +268,10 @@ func resourceTencentCloudDlcDataEngine() *schema.Resource { } func resourceTencentCloudDlcDataEngineCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_data_engine.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_data_engine.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewCreateDataEngineRequest() @@ -425,10 +428,10 @@ func resourceTencentCloudDlcDataEngineCreate(d *schema.ResourceData, meta interf request.SessionResourceTemplate = &sessionResourceTemplate } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().CreateDataEngine(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().CreateDataEngine(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -441,14 +444,14 @@ func resourceTencentCloudDlcDataEngineCreate(d *schema.ResourceData, meta interf } dataEngineId = *response.Response.DataEngineId - d.SetId(dataEngineName + FILED_SP + dataEngineId) + d.SetId(dataEngineName + tccommon.FILED_SP + dataEngineId) describeRequest := dlc.NewDescribeDataEngineRequest() describeRequest.DataEngineName = helper.String(dataEngineName) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().DescribeDataEngine(describeRequest) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().DescribeDataEngine(describeRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), result.ToJsonString()) @@ -476,16 +479,16 @@ func resourceTencentCloudDlcDataEngineCreate(d *schema.ResourceData, meta interf } func resourceTencentCloudDlcDataEngineRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_data_engine.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_data_engine.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -625,14 +628,14 @@ func resourceTencentCloudDlcDataEngineRead(d *schema.ResourceData, meta interfac } func resourceTencentCloudDlcDataEngineUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_data_engine.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_data_engine.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dlc.NewUpdateDataEngineRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -746,10 +749,10 @@ func resourceTencentCloudDlcDataEngineUpdate(d *schema.ResourceData, meta interf } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().UpdateDataEngine(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().UpdateDataEngine(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -762,10 +765,10 @@ func resourceTencentCloudDlcDataEngineUpdate(d *schema.ResourceData, meta interf describeRequest := dlc.NewDescribeDataEngineRequest() describeRequest.DataEngineName = helper.String(dataEngineName) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().DescribeDataEngine(describeRequest) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().DescribeDataEngine(describeRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), result.ToJsonString()) @@ -793,14 +796,14 @@ func resourceTencentCloudDlcDataEngineUpdate(d *schema.ResourceData, meta interf } func resourceTencentCloudDlcDataEngineDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_data_engine.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_data_engine.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dlc_data_engine_test.go b/tencentcloud/services/dlc/resource_tc_dlc_data_engine_test.go similarity index 96% rename from tencentcloud/resource_tc_dlc_data_engine_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_data_engine_test.go index 93b53aeee7..ac6c1d355f 100644 --- a/tencentcloud/resource_tc_dlc_data_engine_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_data_engine_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcDataEngineResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcDataEngine, diff --git a/tencentcloud/resource_tc_dlc_modify_data_engine_description_operation.go b/tencentcloud/services/dlc/resource_tc_dlc_modify_data_engine_description_operation.go similarity index 71% rename from tencentcloud/resource_tc_dlc_modify_data_engine_description_operation.go rename to tencentcloud/services/dlc/resource_tc_dlc_modify_data_engine_description_operation.go index e4103fac88..7829b0b256 100644 --- a/tencentcloud/resource_tc_dlc_modify_data_engine_description_operation.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_modify_data_engine_description_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcModifyDataEngineDescriptionOperation() *schema.Resource { +func ResourceTencentCloudDlcModifyDataEngineDescriptionOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcModifyDataEngineDescriptionOperationCreate, Read: resourceTencentCloudDlcModifyDataEngineDescriptionOperationRead, @@ -36,10 +39,10 @@ func resourceTencentCloudDlcModifyDataEngineDescriptionOperation() *schema.Resou } func resourceTencentCloudDlcModifyDataEngineDescriptionOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_modify_data_engine_description_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_modify_data_engine_description_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewModifyDataEngineDescriptionRequest() @@ -54,10 +57,10 @@ func resourceTencentCloudDlcModifyDataEngineDescriptionOperationCreate(d *schema request.Message = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().ModifyDataEngineDescription(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().ModifyDataEngineDescription(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -74,15 +77,15 @@ func resourceTencentCloudDlcModifyDataEngineDescriptionOperationCreate(d *schema } func resourceTencentCloudDlcModifyDataEngineDescriptionOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_modify_data_engine_description_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_modify_data_engine_description_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcModifyDataEngineDescriptionOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_modify_data_engine_description_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_modify_data_engine_description_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_modify_data_engine_description_operation_test.go b/tencentcloud/services/dlc/resource_tc_dlc_modify_data_engine_description_operation_test.go similarity index 86% rename from tencentcloud/resource_tc_dlc_modify_data_engine_description_operation_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_modify_data_engine_description_operation_test.go index 69590c8967..dc3d143d71 100644 --- a/tencentcloud/resource_tc_dlc_modify_data_engine_description_operation_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_modify_data_engine_description_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcModifyDataEngineDescriptionOperationResource_basic(t t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcModifyDataEngineDescriptionOperation, diff --git a/tencentcloud/resource_tc_dlc_modify_user_typ_operation.go b/tencentcloud/services/dlc/resource_tc_dlc_modify_user_typ_operation.go similarity index 71% rename from tencentcloud/resource_tc_dlc_modify_user_typ_operation.go rename to tencentcloud/services/dlc/resource_tc_dlc_modify_user_typ_operation.go index 3addfb068c..2f8da0041a 100644 --- a/tencentcloud/resource_tc_dlc_modify_user_typ_operation.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_modify_user_typ_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcModifyUserTypOperation() *schema.Resource { +func ResourceTencentCloudDlcModifyUserTypOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcModifyUserTypOperationCreate, Read: resourceTencentCloudDlcModifyUserTypOperationRead, @@ -36,10 +39,10 @@ func resourceTencentCloudDlcModifyUserTypOperation() *schema.Resource { } func resourceTencentCloudDlcModifyUserTypOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_modify_user_typ_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_modify_user_typ_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewModifyUserTypeRequest() @@ -54,10 +57,10 @@ func resourceTencentCloudDlcModifyUserTypOperationCreate(d *schema.ResourceData, request.UserType = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().ModifyUserType(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().ModifyUserType(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -74,15 +77,15 @@ func resourceTencentCloudDlcModifyUserTypOperationCreate(d *schema.ResourceData, } func resourceTencentCloudDlcModifyUserTypOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_modify_user_typ_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_modify_user_typ_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcModifyUserTypOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_modify_user_typ_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_modify_user_typ_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_modify_user_typ_operation_test.go b/tencentcloud/services/dlc/resource_tc_dlc_modify_user_typ_operation_test.go similarity index 90% rename from tencentcloud/resource_tc_dlc_modify_user_typ_operation_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_modify_user_typ_operation_test.go index f122160808..c53fe40ed5 100644 --- a/tencentcloud/resource_tc_dlc_modify_user_typ_operation_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_modify_user_typ_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcModifyUserTypOperationResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcModifyUserTypOperation, diff --git a/tencentcloud/resource_tc_dlc_renew_data_engine_operation.go b/tencentcloud/services/dlc/resource_tc_dlc_renew_data_engine_operation.go similarity index 79% rename from tencentcloud/resource_tc_dlc_renew_data_engine_operation.go rename to tencentcloud/services/dlc/resource_tc_dlc_renew_data_engine_operation.go index b8d2b97324..ac4ad63687 100644 --- a/tencentcloud/resource_tc_dlc_renew_data_engine_operation.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_renew_data_engine_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcRenewDataEngineOperation() *schema.Resource { +func ResourceTencentCloudDlcRenewDataEngineOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcRenewDataEngineCreate, Read: resourceTencentCloudDlcRenewDataEngineRead, @@ -57,10 +60,10 @@ func resourceTencentCloudDlcRenewDataEngineOperation() *schema.Resource { } func resourceTencentCloudDlcRenewDataEngineCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_renew_data_engine_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_renew_data_engine_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewRenewDataEngineRequest() @@ -87,10 +90,10 @@ func resourceTencentCloudDlcRenewDataEngineCreate(d *schema.ResourceData, meta i request.RenewFlag = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().RenewDataEngine(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().RenewDataEngine(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -107,15 +110,15 @@ func resourceTencentCloudDlcRenewDataEngineCreate(d *schema.ResourceData, meta i } func resourceTencentCloudDlcRenewDataEngineRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_renew_data_engine_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_renew_data_engine_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcRenewDataEngineDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_renew_data_engine_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_renew_data_engine_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_renew_data_engine_operation_test.go b/tencentcloud/services/dlc/resource_tc_dlc_renew_data_engine_operation_test.go similarity index 79% rename from tencentcloud/resource_tc_dlc_renew_data_engine_operation_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_renew_data_engine_operation_test.go index 10bd64ff97..03e5691a26 100644 --- a/tencentcloud/resource_tc_dlc_renew_data_engine_operation_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_renew_data_engine_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcRenewDataEngineResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcRenewDataEngine, diff --git a/tencentcloud/resource_tc_dlc_restart_data_engine_operation.go b/tencentcloud/services/dlc/resource_tc_dlc_restart_data_engine_operation.go similarity index 66% rename from tencentcloud/resource_tc_dlc_restart_data_engine_operation.go rename to tencentcloud/services/dlc/resource_tc_dlc_restart_data_engine_operation.go index b093f5db59..b1c03340c3 100644 --- a/tencentcloud/resource_tc_dlc_restart_data_engine_operation.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_restart_data_engine_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dlc import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcRestartDataEngineOperation() *schema.Resource { +func ResourceTencentCloudDlcRestartDataEngineOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcRestartDataEngineCreateOperation, Read: resourceTencentCloudDlcRestartDataEngineReadOperation, @@ -37,10 +40,10 @@ func resourceTencentCloudDlcRestartDataEngineOperation() *schema.Resource { } func resourceTencentCloudDlcRestartDataEngineCreateOperation(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_restart_data_engine_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_restart_data_engine_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewRestartDataEngineRequest() @@ -55,10 +58,10 @@ func resourceTencentCloudDlcRestartDataEngineCreateOperation(d *schema.ResourceD request.ForcedOperation = helper.Bool(v.(bool)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().RestartDataEngine(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().RestartDataEngine(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -71,9 +74,9 @@ func resourceTencentCloudDlcRestartDataEngineCreateOperation(d *schema.ResourceD d.SetId(dataEngineId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"2"}, 5*readRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"2"}, 5*tccommon.ReadRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -83,15 +86,15 @@ func resourceTencentCloudDlcRestartDataEngineCreateOperation(d *schema.ResourceD } func resourceTencentCloudDlcRestartDataEngineReadOperation(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_restart_data_engine_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_restart_data_engine_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcRestartDataEngineDeleteOperation(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_restart_data_engine_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_restart_data_engine_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_restart_data_engine_operation_test.go b/tencentcloud/services/dlc/resource_tc_dlc_restart_data_engine_operation_test.go similarity index 84% rename from tencentcloud/resource_tc_dlc_restart_data_engine_operation_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_restart_data_engine_operation_test.go index 8da954412b..649dd61f74 100644 --- a/tencentcloud/resource_tc_dlc_restart_data_engine_operation_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_restart_data_engine_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcRestartDataEngineOperationResource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcRestartDataEngine, diff --git a/tencentcloud/resource_tc_dlc_rollback_data_engine_image_operation.go b/tencentcloud/services/dlc/resource_tc_dlc_rollback_data_engine_image_operation.go similarity index 73% rename from tencentcloud/resource_tc_dlc_rollback_data_engine_image_operation.go rename to tencentcloud/services/dlc/resource_tc_dlc_rollback_data_engine_image_operation.go index 03a6c0ad58..c7cc4fe548 100644 --- a/tencentcloud/resource_tc_dlc_rollback_data_engine_image_operation.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_rollback_data_engine_image_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcRollbackDataEngineImageOperation() *schema.Resource { +func ResourceTencentCloudDlcRollbackDataEngineImageOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcRollbackDataEngineImageCreateOperation, Read: resourceTencentCloudDlcRollbackDataEngineImageReadOperation, @@ -43,10 +46,10 @@ func resourceTencentCloudDlcRollbackDataEngineImageOperation() *schema.Resource } func resourceTencentCloudDlcRollbackDataEngineImageCreateOperation(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_rollback_data_engine_image_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_rollback_data_engine_image_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewRollbackDataEngineImageRequest() @@ -65,10 +68,10 @@ func resourceTencentCloudDlcRollbackDataEngineImageCreateOperation(d *schema.Res request.ToRecordId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().RollbackDataEngineImage(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().RollbackDataEngineImage(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -85,15 +88,15 @@ func resourceTencentCloudDlcRollbackDataEngineImageCreateOperation(d *schema.Res } func resourceTencentCloudDlcRollbackDataEngineImageReadOperation(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_rollback_data_engine_image_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_rollback_data_engine_image_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcRollbackDataEngineImageDeleteOperation(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_rollback_data_engine_image_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_rollback_data_engine_image_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_rollback_data_engine_image_operation_test.go b/tencentcloud/services/dlc/resource_tc_dlc_rollback_data_engine_image_operation_test.go similarity index 89% rename from tencentcloud/resource_tc_dlc_rollback_data_engine_image_operation_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_rollback_data_engine_image_operation_test.go index ab9ee7cf8c..504f33f13d 100644 --- a/tencentcloud/resource_tc_dlc_rollback_data_engine_image_operation_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_rollback_data_engine_image_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcRollbackDataEngineImageOperationResource_basic(t *tes t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcRollbackDataEngineImage, diff --git a/tencentcloud/resource_tc_dlc_store_location_config.go b/tencentcloud/services/dlc/resource_tc_dlc_store_location_config.go similarity index 70% rename from tencentcloud/resource_tc_dlc_store_location_config.go rename to tencentcloud/services/dlc/resource_tc_dlc_store_location_config.go index 1b28727634..c9f1f897a3 100644 --- a/tencentcloud/resource_tc_dlc_store_location_config.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_store_location_config.go @@ -1,16 +1,19 @@ -package tencentcloud +package dlc import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcStoreLocationConfig() *schema.Resource { +func ResourceTencentCloudDlcStoreLocationConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcStoreLocationConfigCreate, Read: resourceTencentCloudDlcStoreLocationConfigRead, @@ -36,21 +39,21 @@ func resourceTencentCloudDlcStoreLocationConfig() *schema.Resource { } func resourceTencentCloudDlcStoreLocationConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_store_location_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_store_location_config.create")() + defer tccommon.InconsistentCheck(d, meta)() return resourceTencentCloudDlcStoreLocationConfigUpdate(d, meta) } func resourceTencentCloudDlcStoreLocationConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_store_location_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_store_location_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} storeLocationConfig, err := service.DescribeDlcStoreLocationConfigById(ctx) if err != nil { @@ -74,10 +77,10 @@ func resourceTencentCloudDlcStoreLocationConfigRead(d *schema.ResourceData, meta } func resourceTencentCloudDlcStoreLocationConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_store_location_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_store_location_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dlc.NewModifyAdvancedStoreLocationRequest() @@ -91,10 +94,10 @@ func resourceTencentCloudDlcStoreLocationConfigUpdate(d *schema.ResourceData, me request.Enable = helper.IntUint64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().ModifyAdvancedStoreLocation(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().ModifyAdvancedStoreLocation(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -110,8 +113,8 @@ func resourceTencentCloudDlcStoreLocationConfigUpdate(d *schema.ResourceData, me } func resourceTencentCloudDlcStoreLocationConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_store_location_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_store_location_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_store_location_config_test.go b/tencentcloud/services/dlc/resource_tc_dlc_store_location_config_test.go similarity index 90% rename from tencentcloud/resource_tc_dlc_store_location_config_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_store_location_config_test.go index 7fc9e95601..de5099e7d8 100644 --- a/tencentcloud/resource_tc_dlc_store_location_config_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_store_location_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcStoreLocationConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcStoreLocationConfig, diff --git a/tencentcloud/resource_tc_dlc_suspend_resume_data_engine.go b/tencentcloud/services/dlc/resource_tc_dlc_suspend_resume_data_engine.go similarity index 71% rename from tencentcloud/resource_tc_dlc_suspend_resume_data_engine.go rename to tencentcloud/services/dlc/resource_tc_dlc_suspend_resume_data_engine.go index 3143511bac..0de8533055 100644 --- a/tencentcloud/resource_tc_dlc_suspend_resume_data_engine.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_suspend_resume_data_engine.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcSuspendResumeDataEngine() *schema.Resource { +func ResourceTencentCloudDlcSuspendResumeDataEngine() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcSuspendResumeDataEngineCreate, Read: resourceTencentCloudDlcSuspendResumeDataEngineRead, @@ -36,10 +39,10 @@ func resourceTencentCloudDlcSuspendResumeDataEngine() *schema.Resource { } func resourceTencentCloudDlcSuspendResumeDataEngineCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_suspend_resume_data_engine.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_suspend_resume_data_engine.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewSuspendResumeDataEngineRequest() @@ -54,10 +57,10 @@ func resourceTencentCloudDlcSuspendResumeDataEngineCreate(d *schema.ResourceData request.Operate = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().SuspendResumeDataEngine(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().SuspendResumeDataEngine(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -74,15 +77,15 @@ func resourceTencentCloudDlcSuspendResumeDataEngineCreate(d *schema.ResourceData } func resourceTencentCloudDlcSuspendResumeDataEngineRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_suspend_resume_data_engine.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_suspend_resume_data_engine.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcSuspendResumeDataEngineDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_suspend_resume_data_engine.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_suspend_resume_data_engine.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_suspend_resume_data_engine_test.go b/tencentcloud/services/dlc/resource_tc_dlc_suspend_resume_data_engine_test.go similarity index 90% rename from tencentcloud/resource_tc_dlc_suspend_resume_data_engine_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_suspend_resume_data_engine_test.go index 30b7decbb5..b4a9369582 100644 --- a/tencentcloud/resource_tc_dlc_suspend_resume_data_engine_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_suspend_resume_data_engine_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcSuspendResumeDataEngineResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcSuspendResumeDataEngineSuspend, diff --git a/tencentcloud/resource_tc_dlc_switch_data_engine_image_operation.go b/tencentcloud/services/dlc/resource_tc_dlc_switch_data_engine_image_operation.go similarity index 66% rename from tencentcloud/resource_tc_dlc_switch_data_engine_image_operation.go rename to tencentcloud/services/dlc/resource_tc_dlc_switch_data_engine_image_operation.go index 5c86db6bc4..c1d5eea690 100644 --- a/tencentcloud/resource_tc_dlc_switch_data_engine_image_operation.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_switch_data_engine_image_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dlc import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcSwitchDataEngineImageOperation() *schema.Resource { +func ResourceTencentCloudDlcSwitchDataEngineImageOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcSwitchDataEngineImageOperationCreate, Read: resourceTencentCloudDlcSwitchDataEngineImageOperationRead, @@ -37,10 +40,10 @@ func resourceTencentCloudDlcSwitchDataEngineImageOperation() *schema.Resource { } func resourceTencentCloudDlcSwitchDataEngineImageOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_switch_data_engine_image_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_switch_data_engine_image_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewSwitchDataEngineImageRequest() @@ -55,10 +58,10 @@ func resourceTencentCloudDlcSwitchDataEngineImageOperationCreate(d *schema.Resou request.NewImageVersionId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().SwitchDataEngineImage(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().SwitchDataEngineImage(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -71,9 +74,9 @@ func resourceTencentCloudDlcSwitchDataEngineImageOperationCreate(d *schema.Resou d.SetId(dataEngineId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"2"}, 5*readRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"2"}, 5*tccommon.ReadRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -83,15 +86,15 @@ func resourceTencentCloudDlcSwitchDataEngineImageOperationCreate(d *schema.Resou } func resourceTencentCloudDlcSwitchDataEngineImageOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_switch_data_engine_image_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_switch_data_engine_image_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcSwitchDataEngineImageOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_switch_data_engine_image_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_switch_data_engine_image_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_switch_data_engine_image_operation_test.go b/tencentcloud/services/dlc/resource_tc_dlc_switch_data_engine_image_operation_test.go similarity index 93% rename from tencentcloud/resource_tc_dlc_switch_data_engine_image_operation_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_switch_data_engine_image_operation_test.go index 7e5c7b51fa..3a4bb2c6ee 100644 --- a/tencentcloud/resource_tc_dlc_switch_data_engine_image_operation_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_switch_data_engine_image_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcSwitchDataEngineImageOperationResource_basic(t *testi t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcSwitchDataEngineImageOperation, diff --git a/tencentcloud/resource_tc_dlc_update_data_engine_config_operation.go b/tencentcloud/services/dlc/resource_tc_dlc_update_data_engine_config_operation.go similarity index 68% rename from tencentcloud/resource_tc_dlc_update_data_engine_config_operation.go rename to tencentcloud/services/dlc/resource_tc_dlc_update_data_engine_config_operation.go index cf239eb8c3..7c7427f87a 100644 --- a/tencentcloud/resource_tc_dlc_update_data_engine_config_operation.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_update_data_engine_config_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dlc import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcUpdateDataEngineConfigOperation() *schema.Resource { +func ResourceTencentCloudDlcUpdateDataEngineConfigOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcUpdateDataEngineConfigOperationCreate, Read: resourceTencentCloudDlcUpdateDataEngineConfigOperationRead, @@ -37,10 +40,10 @@ func resourceTencentCloudDlcUpdateDataEngineConfigOperation() *schema.Resource { } func resourceTencentCloudDlcUpdateDataEngineConfigOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_update_data_engine_config_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_update_data_engine_config_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewUpdateDataEngineConfigRequest() @@ -55,10 +58,10 @@ func resourceTencentCloudDlcUpdateDataEngineConfigOperationCreate(d *schema.Reso request.DataEngineConfigCommand = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().UpdateDataEngineConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().UpdateDataEngineConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -71,9 +74,9 @@ func resourceTencentCloudDlcUpdateDataEngineConfigOperationCreate(d *schema.Reso d.SetId(dataEngineId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"2"}, 5*readRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"2"}, 5*tccommon.ReadRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -82,15 +85,15 @@ func resourceTencentCloudDlcUpdateDataEngineConfigOperationCreate(d *schema.Reso } func resourceTencentCloudDlcUpdateDataEngineConfigOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_update_data_engine_config_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_update_data_engine_config_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcUpdateDataEngineConfigOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_update_data_engine_config_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_update_data_engine_config_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_update_data_engine_config_operation_test.go b/tencentcloud/services/dlc/resource_tc_dlc_update_data_engine_config_operation_test.go similarity index 84% rename from tencentcloud/resource_tc_dlc_update_data_engine_config_operation_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_update_data_engine_config_operation_test.go index a5b973548d..4446638167 100644 --- a/tencentcloud/resource_tc_dlc_update_data_engine_config_operation_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_update_data_engine_config_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcUpdateDataEngineConfigOperationResource_basic(t *test t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcUpdateDataEngineConfigOperation, diff --git a/tencentcloud/resource_tc_dlc_update_row_filter_operation.go b/tencentcloud/services/dlc/resource_tc_dlc_update_row_filter_operation.go similarity index 92% rename from tencentcloud/resource_tc_dlc_update_row_filter_operation.go rename to tencentcloud/services/dlc/resource_tc_dlc_update_row_filter_operation.go index 47a16ea228..340036091e 100644 --- a/tencentcloud/resource_tc_dlc_update_row_filter_operation.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_update_row_filter_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dlc import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcUpdateRowFilterOperation() *schema.Resource { +func ResourceTencentCloudDlcUpdateRowFilterOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcUpdateRowFilterOperationCreate, Read: resourceTencentCloudDlcUpdateRowFilterOperationRead, @@ -126,10 +129,10 @@ func resourceTencentCloudDlcUpdateRowFilterOperation() *schema.Resource { } func resourceTencentCloudDlcUpdateRowFilterOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_update_row_filter_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_update_row_filter_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewUpdateRowFilterRequest() @@ -196,10 +199,10 @@ func resourceTencentCloudDlcUpdateRowFilterOperationCreate(d *schema.ResourceDat request.Policy = &policy } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().UpdateRowFilter(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().UpdateRowFilter(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -216,15 +219,15 @@ func resourceTencentCloudDlcUpdateRowFilterOperationCreate(d *schema.ResourceDat } func resourceTencentCloudDlcUpdateRowFilterOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_update_row_filter_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_update_row_filter_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcUpdateRowFilterOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_update_row_filter_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_update_row_filter_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_update_row_filter_operation_test.go b/tencentcloud/services/dlc/resource_tc_dlc_update_row_filter_operation_test.go similarity index 92% rename from tencentcloud/resource_tc_dlc_update_row_filter_operation_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_update_row_filter_operation_test.go index bb0a837ec2..815e165c02 100644 --- a/tencentcloud/resource_tc_dlc_update_row_filter_operation_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_update_row_filter_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcUpdateRowFilterOperationResource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcUpdateRowFilterOperation, diff --git a/tencentcloud/resource_tc_dlc_upgrade_data_engine_image_operation.go b/tencentcloud/services/dlc/resource_tc_dlc_upgrade_data_engine_image_operation.go similarity index 63% rename from tencentcloud/resource_tc_dlc_upgrade_data_engine_image_operation.go rename to tencentcloud/services/dlc/resource_tc_dlc_upgrade_data_engine_image_operation.go index c20280b6c7..e761956f8e 100644 --- a/tencentcloud/resource_tc_dlc_upgrade_data_engine_image_operation.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_upgrade_data_engine_image_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dlc import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcUpgradeDataEngineImageOperation() *schema.Resource { +func ResourceTencentCloudDlcUpgradeDataEngineImageOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcUpgradeDataEngineImageOperationCreate, Read: resourceTencentCloudDlcUpgradeDataEngineImageOperationRead, @@ -30,10 +33,10 @@ func resourceTencentCloudDlcUpgradeDataEngineImageOperation() *schema.Resource { } func resourceTencentCloudDlcUpgradeDataEngineImageOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_upgrade_data_engine_image_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_upgrade_data_engine_image_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewUpgradeDataEngineImageRequest() @@ -44,10 +47,10 @@ func resourceTencentCloudDlcUpgradeDataEngineImageOperationCreate(d *schema.Reso request.DataEngineId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().UpgradeDataEngineImage(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().UpgradeDataEngineImage(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -60,9 +63,9 @@ func resourceTencentCloudDlcUpgradeDataEngineImageOperationCreate(d *schema.Reso d.SetId(dataEngineId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"2"}, 5*readRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"2"}, 5*tccommon.ReadRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -72,15 +75,15 @@ func resourceTencentCloudDlcUpgradeDataEngineImageOperationCreate(d *schema.Reso } func resourceTencentCloudDlcUpgradeDataEngineImageOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_upgrade_data_engine_image_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_upgrade_data_engine_image_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDlcUpgradeDataEngineImageOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_upgrade_data_engine_image_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_upgrade_data_engine_image_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_upgrade_data_engine_image_operation_test.go b/tencentcloud/services/dlc/resource_tc_dlc_upgrade_data_engine_image_operation_test.go similarity index 80% rename from tencentcloud/resource_tc_dlc_upgrade_data_engine_image_operation_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_upgrade_data_engine_image_operation_test.go index 660130c37b..6e71ff7ce1 100644 --- a/tencentcloud/resource_tc_dlc_upgrade_data_engine_image_operation_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_upgrade_data_engine_image_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcUpgradeDataEngineImageOperationResource_basic(t *test t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcUpgradeDataEngineImageOperation, diff --git a/tencentcloud/resource_tc_dlc_user.go b/tencentcloud/services/dlc/resource_tc_dlc_user.go similarity index 74% rename from tencentcloud/resource_tc_dlc_user.go rename to tencentcloud/services/dlc/resource_tc_dlc_user.go index 5610c15843..6c99014238 100644 --- a/tencentcloud/resource_tc_dlc_user.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_user.go @@ -1,17 +1,20 @@ -package tencentcloud +package dlc import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcUser() *schema.Resource { +func ResourceTencentCloudDlcUser() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcUserCreate, Read: resourceTencentCloudDlcUserRead, @@ -59,10 +62,10 @@ func resourceTencentCloudDlcUser() *schema.Resource { } func resourceTencentCloudDlcUserCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_user.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_user.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewCreateUserRequest() @@ -85,10 +88,10 @@ func resourceTencentCloudDlcUserCreate(d *schema.ResourceData, meta interface{}) request.UserAlias = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().CreateUser(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().CreateUser(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -105,14 +108,14 @@ func resourceTencentCloudDlcUserCreate(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudDlcUserRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_user.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_user.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} userId := d.Id() @@ -156,10 +159,10 @@ func resourceTencentCloudDlcUserRead(d *schema.ResourceData, meta interface{}) e } func resourceTencentCloudDlcUserUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_user.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_user.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dlc.NewModifyUserRequest() @@ -181,10 +184,10 @@ func resourceTencentCloudDlcUserUpdate(d *schema.ResourceData, meta interface{}) } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().ModifyUser(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().ModifyUser(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -199,13 +202,13 @@ func resourceTencentCloudDlcUserUpdate(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudDlcUserDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_user.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_user.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} userId := d.Id() if err := service.DeleteDlcUserById(ctx, userId); err != nil { diff --git a/tencentcloud/resource_tc_dlc_user_data_engine_config.go b/tencentcloud/services/dlc/resource_tc_dlc_user_data_engine_config.go similarity index 83% rename from tencentcloud/resource_tc_dlc_user_data_engine_config.go rename to tencentcloud/services/dlc/resource_tc_dlc_user_data_engine_config.go index 8c59ae3eb0..58d413acb3 100644 --- a/tencentcloud/resource_tc_dlc_user_data_engine_config.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_user_data_engine_config.go @@ -1,17 +1,20 @@ -package tencentcloud +package dlc import ( "context" "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcUserDataEngineConfig() *schema.Resource { +func ResourceTencentCloudDlcUserDataEngineConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcUserDataEngineConfigCreate, Read: resourceTencentCloudDlcUserDataEngineConfigRead, @@ -82,21 +85,21 @@ func resourceTencentCloudDlcUserDataEngineConfig() *schema.Resource { } func resourceTencentCloudDlcUserDataEngineConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_user_data_engine_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_user_data_engine_config.create")() + defer tccommon.InconsistentCheck(d, meta)() return resourceTencentCloudDlcUserDataEngineConfigUpdate(d, meta) } func resourceTencentCloudDlcUserDataEngineConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_user_data_engine_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_user_data_engine_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} dataEngineId := d.Id() @@ -161,10 +164,10 @@ func resourceTencentCloudDlcUserDataEngineConfigRead(d *schema.ResourceData, met } func resourceTencentCloudDlcUserDataEngineConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_user_data_engine_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_user_data_engine_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dlc.NewUpdateUserDataEngineConfigRequest() @@ -209,10 +212,10 @@ func resourceTencentCloudDlcUserDataEngineConfigUpdate(d *schema.ResourceData, m } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().UpdateUserDataEngineConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().UpdateUserDataEngineConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -223,9 +226,9 @@ func resourceTencentCloudDlcUserDataEngineConfigUpdate(d *schema.ResourceData, m return err } - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"2"}, 5*readRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(dataEngineId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"2"}, 5*tccommon.ReadRetryTimeout, time.Second, service.DlcRestartDataEngineStateRefreshFunc(dataEngineId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -236,8 +239,8 @@ func resourceTencentCloudDlcUserDataEngineConfigUpdate(d *schema.ResourceData, m } func resourceTencentCloudDlcUserDataEngineConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_user_data_engine_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_user_data_engine_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dlc_user_data_engine_config_test.go b/tencentcloud/services/dlc/resource_tc_dlc_user_data_engine_config_test.go similarity index 95% rename from tencentcloud/resource_tc_dlc_user_data_engine_config_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_user_data_engine_config_test.go index bc2fd0b990..e3953c7c80 100644 --- a/tencentcloud/resource_tc_dlc_user_data_engine_config_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_user_data_engine_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcUserDataEngineConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcUserDataEngineConfig, diff --git a/tencentcloud/resource_tc_dlc_user_test.go b/tencentcloud/services/dlc/resource_tc_dlc_user_test.go similarity index 88% rename from tencentcloud/resource_tc_dlc_user_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_user_test.go index f7665958a7..4d6362a09e 100644 --- a/tencentcloud/resource_tc_dlc_user_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_user_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcUserResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcUser, diff --git a/tencentcloud/resource_tc_dlc_work_group.go b/tencentcloud/services/dlc/resource_tc_dlc_work_group.go similarity index 71% rename from tencentcloud/resource_tc_dlc_work_group.go rename to tencentcloud/services/dlc/resource_tc_dlc_work_group.go index 4b290fc7a5..718959f43a 100644 --- a/tencentcloud/resource_tc_dlc_work_group.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_work_group.go @@ -1,16 +1,19 @@ -package tencentcloud +package dlc import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDlcWorkGroup() *schema.Resource { +func ResourceTencentCloudDlcWorkGroup() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDlcWorkGroupCreate, Read: resourceTencentCloudDlcWorkGroupRead, @@ -46,10 +49,10 @@ func resourceTencentCloudDlcWorkGroup() *schema.Resource { } func resourceTencentCloudDlcWorkGroupCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_work_group.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_work_group.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dlc.NewCreateWorkGroupRequest() @@ -64,10 +67,10 @@ func resourceTencentCloudDlcWorkGroupCreate(d *schema.ResourceData, meta interfa request.WorkGroupDescription = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().CreateWorkGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().CreateWorkGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -86,14 +89,14 @@ func resourceTencentCloudDlcWorkGroupCreate(d *schema.ResourceData, meta interfa } func resourceTencentCloudDlcWorkGroupRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_work_group.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_work_group.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} workGroupId := d.Id() @@ -131,10 +134,10 @@ func resourceTencentCloudDlcWorkGroupRead(d *schema.ResourceData, meta interface } func resourceTencentCloudDlcWorkGroupUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_work_group.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_work_group.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dlc.NewModifyWorkGroupRequest() @@ -148,10 +151,10 @@ func resourceTencentCloudDlcWorkGroupUpdate(d *schema.ResourceData, meta interfa } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDlcClient().ModifyWorkGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDlcClient().ModifyWorkGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -166,13 +169,13 @@ func resourceTencentCloudDlcWorkGroupUpdate(d *schema.ResourceData, meta interfa } func resourceTencentCloudDlcWorkGroupDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dlc_work_group.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dlc_work_group.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DlcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DlcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} workGroupId := d.Id() if err := service.DeleteDlcWorkGroupById(ctx, workGroupId); err != nil { diff --git a/tencentcloud/resource_tc_dlc_work_group_test.go b/tencentcloud/services/dlc/resource_tc_dlc_work_group_test.go similarity index 88% rename from tencentcloud/resource_tc_dlc_work_group_test.go rename to tencentcloud/services/dlc/resource_tc_dlc_work_group_test.go index 57af164fba..d748116f3c 100644 --- a/tencentcloud/resource_tc_dlc_work_group_test.go +++ b/tencentcloud/services/dlc/resource_tc_dlc_work_group_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dlc_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDlcWorkGroupResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDlcWorkGroup, diff --git a/tencentcloud/service_tencentcloud_dlc.go b/tencentcloud/services/dlc/service_tencentcloud_dlc.go similarity index 96% rename from tencentcloud/service_tencentcloud_dlc.go rename to tencentcloud/services/dlc/service_tencentcloud_dlc.go index 3f536b8da7..a038f340f7 100644 --- a/tencentcloud/service_tencentcloud_dlc.go +++ b/tencentcloud/services/dlc/service_tencentcloud_dlc.go @@ -1,13 +1,16 @@ -package tencentcloud +package dlc import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" dlc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dlc/v20210125" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" @@ -18,7 +21,7 @@ type DlcService struct { } func (me *DlcService) DescribeDlcWorkGroupById(ctx context.Context, workGroupId string) (workGroup *dlc.WorkGroupInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDescribeWorkGroupsRequest() request.WorkGroupId = helper.Int64(helper.StrToInt64(workGroupId)) @@ -46,7 +49,7 @@ func (me *DlcService) DescribeDlcWorkGroupById(ctx context.Context, workGroupId } func (me *DlcService) DeleteDlcWorkGroupById(ctx context.Context, workGroupId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDeleteWorkGroupRequest() request.WorkGroupIds = []*int64{helper.Int64(helper.StrToInt64(workGroupId))} @@ -70,7 +73,7 @@ func (me *DlcService) DeleteDlcWorkGroupById(ctx context.Context, workGroupId st } func (me *DlcService) DescribeDlcUserById(ctx context.Context, userId string) (user *dlc.UserInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDescribeUsersRequest() request.UserId = &userId @@ -99,7 +102,7 @@ func (me *DlcService) DescribeDlcUserById(ctx context.Context, userId string) (u } func (me *DlcService) DeleteDlcUserById(ctx context.Context, userId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDeleteUserRequest() request.UserIds = []*string{&userId} @@ -123,7 +126,7 @@ func (me *DlcService) DeleteDlcUserById(ctx context.Context, userId string) (err } func (me *DlcService) DeleteDlcUsersToWorkGroupAttachmentById(ctx context.Context, workGroupId string, userId []string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDeleteUsersFromWorkGroupRequest() request.AddInfo = &dlc.UserIdSetOfWorkGroupId{ @@ -151,7 +154,7 @@ func (me *DlcService) DeleteDlcUsersToWorkGroupAttachmentById(ctx context.Contex func (me *DlcService) DescribeDlcCheckDataEngineImageCanBeRollbackByFilter(ctx context.Context, param map[string]interface{}) (checkDataEngineImageCanBeRollback *dlc.CheckDataEngineImageCanBeRollbackResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewCheckDataEngineImageCanBeRollbackRequest() ) @@ -184,7 +187,7 @@ func (me *DlcService) DescribeDlcCheckDataEngineImageCanBeRollbackByFilter(ctx c } func (me *DlcService) DescribeDlcStoreLocationConfigById(ctx context.Context) (storeLocationConfig *dlc.DescribeAdvancedStoreLocationResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDescribeAdvancedStoreLocationRequest() @@ -212,7 +215,7 @@ func (me *DlcService) DescribeDlcStoreLocationConfigById(ctx context.Context) (s func (me *DlcService) DescribeDlcDescribeUserTypeByFilter(ctx context.Context, param map[string]interface{}) (describeUserType *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewDescribeUserTypeRequest() ) @@ -246,7 +249,7 @@ func (me *DlcService) DescribeDlcDescribeUserTypeByFilter(ctx context.Context, p } func (me *DlcService) DescribeDlcDescribeUserRolesByFilter(ctx context.Context, param map[string]interface{}) (describeUserRoles []*dlc.UserRole, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewDescribeUserRolesRequest() ) @@ -299,7 +302,7 @@ func (me *DlcService) DescribeDlcDescribeUserRolesByFilter(ctx context.Context, } func (me *DlcService) DescribeDlcDescribeUserInfoByFilter(ctx context.Context, param map[string]interface{}) (describeUserInfo *dlc.UserDetailInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewDescribeUserInfoRequest() ) @@ -344,7 +347,7 @@ func (me *DlcService) DescribeDlcDescribeUserInfoByFilter(ctx context.Context, p } func (me *DlcService) DescribeDlcDataEngineByName(ctx context.Context, dataEngineName string) (dataEngine *dlc.DataEngineInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDescribeDataEnginesRequest() item := &dlc.Filter{ @@ -375,7 +378,7 @@ func (me *DlcService) DescribeDlcDataEngineByName(ctx context.Context, dataEngin } func (me *DlcService) DeleteDlcDataEngineByName(ctx context.Context, dataEngineName string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDeleteDataEngineRequest() request.DataEngineNames = []*string{&dataEngineName} @@ -398,7 +401,7 @@ func (me *DlcService) DeleteDlcDataEngineByName(ctx context.Context, dataEngineN return } func (me *DlcService) DescribeDlcDataEngineById(ctx context.Context, dataEngineId string) (dataEngine *dlc.DataEngineInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDescribeDataEnginesRequest() item := &dlc.Filter{ @@ -429,7 +432,7 @@ func (me *DlcService) DescribeDlcDataEngineById(ctx context.Context, dataEngineI } func (me *DlcService) DescribeDlcCheckDataEngineImageCanBeUpgradeByFilter(ctx context.Context, param map[string]interface{}) (checkDataEngineImageCanBeUpgrade *dlc.CheckDataEngineImageCanBeUpgradeResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewCheckDataEngineImageCanBeUpgradeRequest() ) @@ -462,7 +465,7 @@ func (me *DlcService) DescribeDlcCheckDataEngineImageCanBeUpgradeByFilter(ctx co } func (me *DlcService) DescribeDlcDataEngineImageVersionsByFilter(ctx context.Context, param map[string]interface{}) (describeDataEngineImageVersions []*dlc.DataEngineImageVersion, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewDescribeDataEngineImageVersionsRequest() ) @@ -495,7 +498,7 @@ func (me *DlcService) DescribeDlcDataEngineImageVersionsByFilter(ctx context.Con } func (me *DlcService) DescribeDlcDataEnginePythonSparkImagesByFilter(ctx context.Context, param map[string]interface{}) (describeDataEnginePythonSparkImages []*dlc.PythonSparkImage, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewDescribeDataEnginePythonSparkImagesRequest() ) @@ -529,7 +532,7 @@ func (me *DlcService) DescribeDlcDataEnginePythonSparkImagesByFilter(ctx context } func (me *DlcService) DescribeDlcDescribeEngineUsageInfoByFilter(ctx context.Context, param map[string]interface{}) (describeEngineUsageInfo *dlc.DescribeEngineUsageInfoResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewDescribeEngineUsageInfoRequest() ) @@ -562,7 +565,7 @@ func (me *DlcService) DescribeDlcDescribeEngineUsageInfoByFilter(ctx context.Con } func (me *DlcService) DescribeDlcDescribeWorkGroupInfoByFilter(ctx context.Context, param map[string]interface{}) (describeWorkGroupInfo *dlc.WorkGroupDetailInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewDescribeWorkGroupInfoRequest() ) @@ -630,7 +633,7 @@ func (me *DlcService) DlcRestartDataEngineStateRefreshFunc(dataEngineId string, } func (me *DlcService) DeleteDlcAttachWorkGroupPolicyAttachmentById(ctx context.Context, workGroupId string, requestSet []*dlc.Policy) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDetachWorkGroupPolicyRequest() request.WorkGroupId = helper.StrToInt64Point(workGroupId) @@ -653,7 +656,7 @@ func (me *DlcService) DeleteDlcAttachWorkGroupPolicyAttachmentById(ctx context.C return } func (me *DlcService) DeleteDlcBindWorkGroupsToUserById(ctx context.Context, userId string, workIds []*int64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewUnbindWorkGroupsFromUserRequest() request.AddInfo = &dlc.WorkGroupIdSetOfUserId{ @@ -678,7 +681,7 @@ func (me *DlcService) DeleteDlcBindWorkGroupsToUserById(ctx context.Context, use return } func (me *DlcService) DescribeDlcUserDataEngineConfigById(ctx context.Context, dataEngineId string) (userDataEngineConfig *dlc.DataEngineConfigInstanceInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dlc.NewDescribeUserDataEngineConfigRequest() request.Filters = []*dlc.Filter{ @@ -710,7 +713,7 @@ func (me *DlcService) DescribeDlcUserDataEngineConfigById(ctx context.Context, d func (me *DlcService) DescribeDlcCheckDataEngineConfigPairsValidityByFilter(ctx context.Context, param map[string]interface{}) (checkDataEngineConfigPairsValidity *dlc.CheckDataEngineConfigPairsValidityResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewCheckDataEngineConfigPairsValidityRequest() ) @@ -750,7 +753,7 @@ func (me *DlcService) DescribeDlcCheckDataEngineConfigPairsValidityByFilter(ctx func (me *DlcService) DescribeDlcDescribeUpdatableDataEnginesByFilter(ctx context.Context, param map[string]interface{}) (describeUpdatableDataEngines []*dlc.DataEngineBasicInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewDescribeUpdatableDataEnginesRequest() ) @@ -784,7 +787,7 @@ func (me *DlcService) DescribeDlcDescribeUpdatableDataEnginesByFilter(ctx contex } func (me *DlcService) DescribeDlcDescribeDataEngineEventsByFilter(ctx context.Context, param map[string]interface{}) (describeDataEngineEvents []*dlc.HouseEventsInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dlc.NewDescribeDataEngineEventsRequest() ) diff --git a/tencentcloud/data_source_tc_dnspod_domain_analytics.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_analytics.go similarity index 93% rename from tencentcloud/data_source_tc_dnspod_domain_analytics.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_domain_analytics.go index d3c8b7ec9b..2192a4d762 100644 --- a/tencentcloud/data_source_tc_dnspod_domain_analytics.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_analytics.go @@ -1,15 +1,18 @@ -package tencentcloud +package dnspod import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDnspodDomainAnalytics() *schema.Resource { +func DataSourceTencentCloudDnspodDomainAnalytics() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDnspodDomainAnalyticsRead, Schema: map[string]*schema.Schema{ @@ -181,12 +184,12 @@ func dataSourceTencentCloudDnspodDomainAnalytics() *schema.Resource { } func dataSourceTencentCloudDnspodDomainAnalyticsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dnspod_domain_analytics.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dnspod_domain_analytics.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( domain string aliasData []*dnspod.DomainAliasAnalyticsItem @@ -217,11 +220,11 @@ func dataSourceTencentCloudDnspodDomainAnalyticsRead(d *schema.ResourceData, met paramMap["DomainId"] = helper.IntUint64(v.(int)) } - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} - e := resource.Retry(readRetryTimeout, func() *resource.RetryError { + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + e := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { aliasData, data, info, err = service.DescribeDnspodDomainAnalyticsByFilter(ctx, paramMap) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -350,7 +353,7 @@ func dataSourceTencentCloudDnspodDomainAnalyticsRead(d *schema.ResourceData, met d.SetId(helper.DataResourceIdHash(domain)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - e = writeToFile(output.(string), map[string]interface{}{ + e = tccommon.WriteToFile(output.(string), map[string]interface{}{ "info": info, "data": data, "alias_data": aliasData, diff --git a/tencentcloud/data_source_tc_dnspod_domain_analytics_test.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_analytics_test.go similarity index 58% rename from tencentcloud/data_source_tc_dnspod_domain_analytics_test.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_domain_analytics_test.go index f499553285..a9da0eb9e9 100644 --- a/tencentcloud/data_source_tc_dnspod_domain_analytics_test.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_analytics_test.go @@ -1,23 +1,25 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodDomainAnalyticsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, // PreCheck: func() { - // testAccPreCheck(t) + // tcacctest.AccPreCheck(t) // }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodDomainAnalyticsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_domain_analytics.domain_analytics")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_domain_analytics.domain_analytics")), }, }, }) diff --git a/tencentcloud/data_source_tc_dnspod_domain_list.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_list.go similarity index 95% rename from tencentcloud/data_source_tc_dnspod_domain_list.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_domain_list.go index eebd064369..63df437ef1 100644 --- a/tencentcloud/data_source_tc_dnspod_domain_list.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_list.go @@ -1,16 +1,19 @@ -package tencentcloud +package dnspod import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDnspodDomainList() *schema.Resource { +func DataSourceTencentCloudDnspodDomainList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDnspodDomainListRead, Schema: map[string]*schema.Schema{ @@ -274,12 +277,12 @@ func dataSourceTencentCloudDnspodDomainList() *schema.Resource { } func dataSourceTencentCloudDnspodDomainListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dnspod_domain_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dnspod_domain_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("type"); ok { @@ -364,14 +367,14 @@ func dataSourceTencentCloudDnspodDomainListRead(d *schema.ResourceData, meta int paramMap["Tags"] = tmpSet } - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var domainList []*dnspod.DomainListItem - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDnspodDomainListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } domainList = result return nil @@ -503,7 +506,7 @@ func dataSourceTencentCloudDnspodDomainListRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dnspod_domain_list_test.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_list_test.go similarity index 71% rename from tencentcloud/data_source_tc_dnspod_domain_list_test.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_domain_list_test.go index 07f730b0ea..7d20411f68 100644 --- a/tencentcloud/data_source_tc_dnspod_domain_list_test.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_list_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDnspodDomainListDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodDomainListDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_domain_list.domain_list")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_domain_list.domain_list")), }, }, }) diff --git a/tencentcloud/data_source_tc_dnspod_domain_log_list.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_log_list.go similarity index 75% rename from tencentcloud/data_source_tc_dnspod_domain_log_list.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_domain_log_list.go index 019e87a30f..424835832e 100644 --- a/tencentcloud/data_source_tc_dnspod_domain_log_list.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_log_list.go @@ -1,8 +1,10 @@ -package tencentcloud +package dnspod import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -10,7 +12,7 @@ import ( "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDnspodDomainLogList() *schema.Resource { +func DataSourceTencentCloudDnspodDomainLogList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDnspodDomainLogListRead, Schema: map[string]*schema.Schema{ @@ -45,12 +47,12 @@ func dataSourceTencentCloudDnspodDomainLogList() *schema.Resource { } func dataSourceTencentCloudDnspodDomainLogListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dnspod_domain_log_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dnspod_domain_log_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var domain string paramMap := make(map[string]interface{}) @@ -63,14 +65,14 @@ func dataSourceTencentCloudDnspodDomainLogListRead(d *schema.ResourceData, meta paramMap["DomainId"] = helper.IntUint64(v.(int)) } - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var logList []*string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDnspodDomainLogListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } logList = result return nil @@ -87,7 +89,7 @@ func dataSourceTencentCloudDnspodDomainLogListRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdHash(domain)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), logList); e != nil { + if e := tccommon.WriteToFile(output.(string), logList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dnspod_domain_log_list_test.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_log_list_test.go similarity index 55% rename from tencentcloud/data_source_tc_dnspod_domain_log_list_test.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_domain_log_list_test.go index 6ad9548793..fb0f1eee98 100644 --- a/tencentcloud/data_source_tc_dnspod_domain_log_list_test.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_domain_log_list_test.go @@ -1,20 +1,22 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodDomainLogListDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodDomainLogListDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_domain_log_list.domain_log_list")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_domain_log_list.domain_log_list")), }, }, }) diff --git a/tencentcloud/data_source_tc_dnspod_record_analytics.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_analytics.go similarity index 94% rename from tencentcloud/data_source_tc_dnspod_record_analytics.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_record_analytics.go index de56c6e54c..5bfa69dcad 100644 --- a/tencentcloud/data_source_tc_dnspod_record_analytics.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_analytics.go @@ -1,15 +1,18 @@ -package tencentcloud +package dnspod import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDnspodRecordAnalytics() *schema.Resource { +func DataSourceTencentCloudDnspodRecordAnalytics() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDnspodRecordAnalyticsRead, Schema: map[string]*schema.Schema{ @@ -197,12 +200,12 @@ func dataSourceTencentCloudDnspodRecordAnalytics() *schema.Resource { } func dataSourceTencentCloudDnspodRecordAnalyticsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dnspod_record_analytics.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dnspod_record_analytics.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( domain string @@ -238,14 +241,14 @@ func dataSourceTencentCloudDnspodRecordAnalyticsRead(d *schema.ResourceData, met paramMap["DomainId"] = helper.IntUint64(v.(int)) } - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} // var data []*dnspod.DomainAnalyticsDetail - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { aliasData, data, info, e = service.DescribeDnspodRecordAnalyticsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } // data = result return nil @@ -382,7 +385,7 @@ func dataSourceTencentCloudDnspodRecordAnalyticsRead(d *schema.ResourceData, met d.SetId(helper.DataResourceIdHash(domain)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - e = writeToFile(output.(string), map[string]interface{}{ + e = tccommon.WriteToFile(output.(string), map[string]interface{}{ "info": info, "data": data, "alias_data": aliasData, diff --git a/tencentcloud/data_source_tc_dnspod_record_analytics_test.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_analytics_test.go similarity index 60% rename from tencentcloud/data_source_tc_dnspod_record_analytics_test.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_record_analytics_test.go index ab033a51b1..7f58696fe3 100644 --- a/tencentcloud/data_source_tc_dnspod_record_analytics_test.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_analytics_test.go @@ -1,20 +1,22 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudNeedFixDnspodRecordAnalyticsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodRecordAnalyticsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_record_analytics.record_analytics")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_record_analytics.record_analytics")), }, }, }) diff --git a/tencentcloud/data_source_tc_dnspod_record_line_list.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_line_list.go similarity index 87% rename from tencentcloud/data_source_tc_dnspod_record_line_list.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_record_line_list.go index f80df85678..8b75092528 100644 --- a/tencentcloud/data_source_tc_dnspod_record_line_list.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_line_list.go @@ -1,15 +1,18 @@ -package tencentcloud +package dnspod import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDnspodRecordLineList() *schema.Resource { +func DataSourceTencentCloudDnspodRecordLineList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDnspodRecordLineListRead, Schema: map[string]*schema.Schema{ @@ -94,12 +97,12 @@ func dataSourceTencentCloudDnspodRecordLineList() *schema.Resource { } func dataSourceTencentCloudDnspodRecordLineListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dnspod_record_line_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dnspod_record_line_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( domain string @@ -121,14 +124,14 @@ func dataSourceTencentCloudDnspodRecordLineListRead(d *schema.ResourceData, meta paramMap["DomainId"] = helper.IntUint64(v.(int)) } - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} // var lineList []*dnspod.LineInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { lineList, lineGroupList, e = service.DescribeDnspodRecordLineListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } // lineList = result return nil @@ -189,7 +192,7 @@ func dataSourceTencentCloudDnspodRecordLineListRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdHash(domain)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - e = writeToFile(output.(string), map[string]interface{}{ + e = tccommon.WriteToFile(output.(string), map[string]interface{}{ "line_list": lineList, "line_group_list": lineGroupList, }) diff --git a/tencentcloud/data_source_tc_dnspod_record_line_list_test.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_line_list_test.go similarity index 56% rename from tencentcloud/data_source_tc_dnspod_record_line_list_test.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_record_line_list_test.go index da5be6761f..a9e5cb3d5e 100644 --- a/tencentcloud/data_source_tc_dnspod_record_line_list_test.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_line_list_test.go @@ -1,20 +1,22 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodRecordLineListDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodRecordLineListDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_record_line_list.record_line_list")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_record_line_list.record_line_list")), }, }, }) diff --git a/tencentcloud/data_source_tc_dnspod_record_list.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_list.go similarity index 95% rename from tencentcloud/data_source_tc_dnspod_record_list.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_record_list.go index eaee6b4d4b..7b747d8489 100644 --- a/tencentcloud/data_source_tc_dnspod_record_list.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_list.go @@ -1,15 +1,18 @@ -package tencentcloud +package dnspod import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDnspodRecordList() *schema.Resource { +func DataSourceTencentCloudDnspodRecordList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDnspodRecordListRead, Schema: map[string]*schema.Schema{ @@ -272,12 +275,12 @@ func dataSourceTencentCloudDnspodRecordList() *schema.Resource { } func dataSourceTencentCloudDnspodRecordListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dnspod_record_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dnspod_record_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("domain"); ok { @@ -375,14 +378,14 @@ func dataSourceTencentCloudDnspodRecordListRead(d *schema.ResourceData, meta int paramMap["ProjectId"] = helper.IntInt64(v.(int)) } - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var recordList []*dnspod.RecordListItem - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDnspodRecordListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } recordList = result return nil @@ -463,7 +466,7 @@ func dataSourceTencentCloudDnspodRecordListRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dnspod_record_list_test.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_list_test.go similarity index 71% rename from tencentcloud/data_source_tc_dnspod_record_list_test.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_record_list_test.go index c368d8f05c..8bee0331c7 100644 --- a/tencentcloud/data_source_tc_dnspod_record_list_test.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_list_test.go @@ -1,20 +1,22 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodRecordListDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodRecordListDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_record_list.record_list")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_record_list.record_list")), }, }, }) diff --git a/tencentcloud/data_source_tc_dnspod_record_type.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_type.go similarity index 73% rename from tencentcloud/data_source_tc_dnspod_record_type.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_record_type.go index 97fa6f4f4c..ddef27dd7b 100644 --- a/tencentcloud/data_source_tc_dnspod_record_type.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_type.go @@ -1,16 +1,19 @@ -package tencentcloud +package dnspod import ( "context" "strconv" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDnspodRecordType() *schema.Resource { +func DataSourceTencentCloudDnspodRecordType() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDnspodRecordTypeRead, Schema: map[string]*schema.Schema{ @@ -39,26 +42,26 @@ func dataSourceTencentCloudDnspodRecordType() *schema.Resource { } func dataSourceTencentCloudDnspodRecordTypeRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dnspod_record_type.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dnspod_record_type.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("domain_grade"); ok { paramMap["DomainGrade"] = helper.String(v.(string)) } - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var typeList []*string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDnspodRecordTypeByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } typeList = result return nil @@ -76,7 +79,7 @@ func dataSourceTencentCloudDnspodRecordTypeRead(d *schema.ResourceData, meta int d.SetId(strconv.FormatInt(time.Now().Unix(), 10)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), typeList); e != nil { + if e := tccommon.WriteToFile(output.(string), typeList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dnspod_record_type_test.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_type_test.go similarity index 54% rename from tencentcloud/data_source_tc_dnspod_record_type_test.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_record_type_test.go index ae34d4e1fa..1569e4c0e7 100644 --- a/tencentcloud/data_source_tc_dnspod_record_type_test.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_record_type_test.go @@ -1,20 +1,22 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodRecordTypeDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodRecordTypeDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_record_type.record_type")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dnspod_record_type.record_type")), }, }, }) diff --git a/tencentcloud/data_source_tc_dnspod_records.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_records.go similarity index 94% rename from tencentcloud/data_source_tc_dnspod_records.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_records.go index 56241dcf70..8b6cbeb388 100644 --- a/tencentcloud/data_source_tc_dnspod_records.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_records.go @@ -1,14 +1,17 @@ -package tencentcloud +package dnspod import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDnspodRecords() *schema.Resource { +func DataSourceTencentCloudDnspodRecords() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDnspodRead, Schema: map[string]*schema.Schema{ @@ -177,10 +180,10 @@ func dataSourceTencentCloudDnspodRecords() *schema.Resource { } } func dataSourceTencentCloudDnspodRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("tencentcloud_dnspod_records.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - client := meta.(*TencentCloudClient).apiV3Conn + defer tccommon.LogElapsed("tencentcloud_dnspod_records.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() service := DnspodService{client} request := dnspod.NewDescribeRecordListRequest() @@ -265,7 +268,7 @@ func dataSourceTencentCloudDnspodRead(d *schema.ResourceData, meta interface{}) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - err = writeToFile(output.(string), map[string]interface{}{ + err = tccommon.WriteToFile(output.(string), map[string]interface{}{ "record_count_info": info, "result": result, }) diff --git a/tencentcloud/data_source_tc_dnspod_records_test.go b/tencentcloud/services/dnspod/data_source_tc_dnspod_records_test.go similarity index 80% rename from tencentcloud/data_source_tc_dnspod_records_test.go rename to tencentcloud/services/dnspod/data_source_tc_dnspod_records_test.go index 54d5680f0f..a39a6090a2 100644 --- a/tencentcloud/data_source_tc_dnspod_records_test.go +++ b/tencentcloud/services/dnspod/data_source_tc_dnspod_records_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDataSourceDnsPodRecords(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnsPodRecordsBasic, diff --git a/tencentcloud/extension_dnspod.go b/tencentcloud/services/dnspod/extension_dnspod.go similarity index 94% rename from tencentcloud/extension_dnspod.go rename to tencentcloud/services/dnspod/extension_dnspod.go index 33eff99e8e..61f3e4e581 100644 --- a/tencentcloud/extension_dnspod.go +++ b/tencentcloud/services/dnspod/extension_dnspod.go @@ -1,4 +1,4 @@ -package tencentcloud +package dnspod const ( DNSPOD_DOMAIN_MARK_YES = "yes" diff --git a/tencentcloud/resource_tc_dnspod_custom_line.go b/tencentcloud/services/dnspod/resource_tc_dnspod_custom_line.go similarity index 67% rename from tencentcloud/resource_tc_dnspod_custom_line.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_custom_line.go index b9a3925588..29f03161bb 100644 --- a/tencentcloud/resource_tc_dnspod_custom_line.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_custom_line.go @@ -1,4 +1,4 @@ -package tencentcloud +package dnspod import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDnspodCustomLine() *schema.Resource { +func ResourceTencentCloudDnspodCustomLine() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodCustomLineCreate, Read: resourceTencentCloudDnspodCustomLineRead, @@ -45,10 +48,10 @@ func resourceTencentCloudDnspodCustomLine() *schema.Resource { } func resourceTencentCloudDnspodCustomLineCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_custom_line.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_custom_line.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dnspod.NewCreateDomainCustomLineRequest() @@ -69,10 +72,10 @@ func resourceTencentCloudDnspodCustomLineCreate(d *schema.ResourceData, meta int request.Area = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().CreateDomainCustomLine(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().CreateDomainCustomLine(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -83,22 +86,22 @@ func resourceTencentCloudDnspodCustomLineCreate(d *schema.ResourceData, meta int return err } - d.SetId(strings.Join([]string{domain, name}, FILED_SP)) + d.SetId(strings.Join([]string{domain, name}, tccommon.FILED_SP)) return resourceTencentCloudDnspodCustomLineRead(d, meta) } func resourceTencentCloudDnspodCustomLineRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_custom_line.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_custom_line.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -127,10 +130,10 @@ func resourceTencentCloudDnspodCustomLineRead(d *schema.ResourceData, meta inter } func resourceTencentCloudDnspodCustomLineUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_custom_line.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_custom_line.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dnspod.NewModifyDomainCustomLineRequest() @@ -138,7 +141,7 @@ func resourceTencentCloudDnspodCustomLineUpdate(d *schema.ResourceData, meta int newName string ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -158,10 +161,10 @@ func resourceTencentCloudDnspodCustomLineUpdate(d *schema.ResourceData, meta int request.Area = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifyDomainCustomLine(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifyDomainCustomLine(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -173,21 +176,21 @@ func resourceTencentCloudDnspodCustomLineUpdate(d *schema.ResourceData, meta int } if d.HasChange("name") { - d.SetId(strings.Join([]string{domain, newName}, FILED_SP)) + d.SetId(strings.Join([]string{domain, newName}, tccommon.FILED_SP)) } return resourceTencentCloudDnspodCustomLineRead(d, meta) } func resourceTencentCloudDnspodCustomLineDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_custom_line.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_custom_line.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dnspod_custom_line_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_custom_line_test.go similarity index 86% rename from tencentcloud/resource_tc_dnspod_custom_line_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_custom_line_test.go index 3247decbc5..66de974838 100644 --- a/tencentcloud/resource_tc_dnspod_custom_line_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_custom_line_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodCustomLineResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodCustomLine, diff --git a/tencentcloud/resource_tc_dnspod_domain_alias.go b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_alias.go similarity index 70% rename from tencentcloud/resource_tc_dnspod_domain_alias.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_domain_alias.go index 97e3c1d0bc..6b279d5fe9 100644 --- a/tencentcloud/resource_tc_dnspod_domain_alias.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_alias.go @@ -1,4 +1,4 @@ -package tencentcloud +package dnspod import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDnspodDomainAlias() *schema.Resource { +func ResourceTencentCloudDnspodDomainAlias() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodDomainAliasCreate, Read: resourceTencentCloudDnspodDomainAliasRead, @@ -45,10 +48,10 @@ func resourceTencentCloudDnspodDomainAlias() *schema.Resource { } func resourceTencentCloudDnspodDomainAliasCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain_alias.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain_alias.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dnspod.NewCreateDomainAliasRequest() @@ -65,10 +68,10 @@ func resourceTencentCloudDnspodDomainAliasCreate(d *schema.ResourceData, meta in request.Domain = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().CreateDomainAlias(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().CreateDomainAlias(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -81,22 +84,22 @@ func resourceTencentCloudDnspodDomainAliasCreate(d *schema.ResourceData, meta in } domainAliasId = *response.Response.DomainAliasId - d.SetId(strings.Join([]string{domain, helper.Int64ToStr(domainAliasId)}, FILED_SP)) + d.SetId(strings.Join([]string{domain, helper.Int64ToStr(domainAliasId)}, tccommon.FILED_SP)) return resourceTencentCloudDnspodDomainAliasRead(d, meta) } func resourceTencentCloudDnspodDomainAliasRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain_alias.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain_alias.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -128,14 +131,14 @@ func resourceTencentCloudDnspodDomainAliasRead(d *schema.ResourceData, meta inte } func resourceTencentCloudDnspodDomainAliasDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain_alias.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain_alias.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dnspod_domain_alias_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_alias_test.go similarity index 85% rename from tencentcloud/resource_tc_dnspod_domain_alias_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_domain_alias_test.go index bcae1cecdc..557c1223c5 100644 --- a/tencentcloud/resource_tc_dnspod_domain_alias_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_alias_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodDomainAliasResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodDomainAlias, diff --git a/tencentcloud/resource_tc_dnspod_domain_instance.go b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_instance.go similarity index 73% rename from tencentcloud/resource_tc_dnspod_domain_instance.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_domain_instance.go index 88c16c5739..197043846f 100644 --- a/tencentcloud/resource_tc_dnspod_domain_instance.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_instance.go @@ -1,9 +1,11 @@ -package tencentcloud +package dnspod import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -11,7 +13,7 @@ import ( dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" ) -func resourceTencentCloudDnspodDomainInstance() *schema.Resource { +func ResourceTencentCloudDnspodDomainInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodDomainInstanceCreate, Read: resourceTencentCloudDnspodDomainInstanceRead, @@ -38,13 +40,13 @@ func resourceTencentCloudDnspodDomainInstance() *schema.Resource { Optional: true, Computed: true, ForceNew: true, - ValidateFunc: validateAllowedStringValue(DNSPOD_DOMAIN_MARK_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DNSPOD_DOMAIN_MARK_TYPE), Description: "Whether to Mark the Domain.", }, "status": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(DNSPOD_DOMAIN_STATUS_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(DNSPOD_DOMAIN_STATUS_TYPE), Description: "The status of Domain.", }, "remark": { @@ -63,10 +65,10 @@ func resourceTencentCloudDnspodDomainInstance() *schema.Resource { } func resourceTencentCloudDnspodDomainInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain.create")() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request := dnspod.NewCreateDomainRequest() var ( @@ -89,7 +91,7 @@ func resourceTencentCloudDnspodDomainInstanceCreate(d *schema.ResourceData, meta request.GroupId = &groupId request.IsMark = &isMark - result, err := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().CreateDomain(request) + result, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().CreateDomain(request) response = result if err != nil { @@ -98,7 +100,7 @@ func resourceTencentCloudDnspodDomainInstanceCreate(d *schema.ResourceData, meta } d.SetId(*response.Response.DomainInfo.Domain) - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if v, ok := d.GetOk("status"); ok { domainId := response.Response.DomainInfo.Domain @@ -123,10 +125,10 @@ func resourceTencentCloudDnspodDomainInstanceCreate(d *schema.ResourceData, meta } func resourceTencentCloudDnspodDomainInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) id := d.Id() @@ -135,10 +137,10 @@ func resourceTencentCloudDnspodDomainInstanceRead(d *schema.ResourceData, meta i var response *dnspod.DescribeDomainResponse - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().DescribeDomain(request) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().DescribeDomain(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } response = result @@ -160,13 +162,13 @@ func resourceTencentCloudDnspodDomainInstanceRead(d *schema.ResourceData, meta i } func resourceTencentCloudDnspodDomainInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain.update")() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if d.HasChange("status") { status := d.Get("status").(string) @@ -191,17 +193,17 @@ func resourceTencentCloudDnspodDomainInstanceUpdate(d *schema.ResourceData, meta } func resourceTencentCloudDnspodDomainInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain.delete")() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dnspod.NewDeleteDomainRequest() request.Domain = helper.String(d.Id()) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().DeleteDomain(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().DeleteDomain(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) diff --git a/tencentcloud/resource_tc_dnspod_domain_instance_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_instance_test.go similarity index 68% rename from tencentcloud/resource_tc_dnspod_domain_instance_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_domain_instance_test.go index e9f308c328..b973764b9c 100644 --- a/tencentcloud/resource_tc_dnspod_domain_instance_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_instance_test.go @@ -1,13 +1,18 @@ -package tencentcloud +package dnspod_test import ( "context" "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + svcdnspod "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dnspod" ) const Domain = "terraformer.com" @@ -20,11 +25,11 @@ func init() { }) } func testSweepDnspodDoamin(region string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(region) - client := cli.(*TencentCloudClient).apiV3Conn - service := DnspodService{client} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(region) + client := cli.(tccommon.ProviderMeta).GetAPIV3Conn() + service := svcdnspod.NewDnspodService(client) response, err := service.DescribeDomain(ctx, Domain) if err != nil { @@ -48,8 +53,8 @@ func testSweepDnspodDoamin(region string) error { func TestAccTencentCloudDnspodDoamin(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDnspodDomainDestroy, Steps: []resource.TestStep{ { @@ -65,9 +70,9 @@ func TestAccTencentCloudDnspodDoamin(t *testing.T) { } func testAccCheckDnspodDomainDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dnspodService := DnspodService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dnspodService := svcdnspod.NewDnspodService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dnspod_domain_instance" { continue @@ -86,8 +91,8 @@ func testAccCheckDnspodDomainDestroy(s *terraform.State) error { func testAccCheckDnspodDomainExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { @@ -97,7 +102,7 @@ func testAccCheckDnspodDomainExists(r string) resource.TestCheckFunc { return fmt.Errorf("domain id is not set") } - dnspodService := DnspodService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dnspodService := svcdnspod.NewDnspodService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) response, err := dnspodService.DescribeDomain(ctx, rs.Primary.ID) if err != nil { return err diff --git a/tencentcloud/resource_tc_dnspod_domain_lock.go b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_lock.go similarity index 72% rename from tencentcloud/resource_tc_dnspod_domain_lock.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_domain_lock.go index a561a02d71..ae261cdada 100644 --- a/tencentcloud/resource_tc_dnspod_domain_lock.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_lock.go @@ -1,17 +1,20 @@ -package tencentcloud +package dnspod import ( "fmt" "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDnspodDomainLock() *schema.Resource { +func ResourceTencentCloudDnspodDomainLock() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodDomainLockCreate, Read: resourceTencentCloudDnspodDomainLockRead, @@ -41,10 +44,10 @@ func resourceTencentCloudDnspodDomainLock() *schema.Resource { } func resourceTencentCloudDnspodDomainLockCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain_lock.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain_lock.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dnspod.NewModifyDomainLockRequest() @@ -61,10 +64,10 @@ func resourceTencentCloudDnspodDomainLockCreate(d *schema.ResourceData, meta int request.LockDays = helper.IntUint64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifyDomainLock(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifyDomainLock(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -80,40 +83,40 @@ func resourceTencentCloudDnspodDomainLockCreate(d *schema.ResourceData, meta int lockCode = *response.Response.LockInfo.LockCode } - d.SetId(strings.Join([]string{domain, lockCode}, FILED_SP)) + d.SetId(strings.Join([]string{domain, lockCode}, tccommon.FILED_SP)) _ = d.Set("lock_code", lockCode) return resourceTencentCloudDnspodDomainLockRead(d, meta) } func resourceTencentCloudDnspodDomainLockRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain_lock.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain_lock.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDnspodDomainLockDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_domain_lock.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_domain_lock.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dnspod.NewModifyDomainUnlockRequest() ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("tencentcloud_dnspod_domain_lock id is broken, id is %s", d.Id()) } request.Domain = helper.String(idSplit[0]) request.LockCode = helper.String(idSplit[1]) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifyDomainUnlock(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifyDomainUnlock(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } diff --git a/tencentcloud/resource_tc_dnspod_domain_lock_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_lock_test.go similarity index 70% rename from tencentcloud/resource_tc_dnspod_domain_lock_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_domain_lock_test.go index 7f122c3dc1..6fe4605a8e 100644 --- a/tencentcloud/resource_tc_dnspod_domain_lock_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_domain_lock_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodDomainLockResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodDomainLock, diff --git a/tencentcloud/resource_tc_dnspod_download_snapshot_operation.go b/tencentcloud/services/dnspod/resource_tc_dnspod_download_snapshot_operation.go similarity index 71% rename from tencentcloud/resource_tc_dnspod_download_snapshot_operation.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_download_snapshot_operation.go index 4a6bfb739e..7a2ed9af4d 100644 --- a/tencentcloud/resource_tc_dnspod_download_snapshot_operation.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_download_snapshot_operation.go @@ -1,17 +1,20 @@ -package tencentcloud +package dnspod import ( "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "log" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDnspodDownloadSnapshotOperation() *schema.Resource { +func ResourceTencentCloudDnspodDownloadSnapshotOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodDownloadSnapshotOperationCreate, Read: resourceTencentCloudDnspodDownloadSnapshotOperationRead, @@ -41,10 +44,10 @@ func resourceTencentCloudDnspodDownloadSnapshotOperation() *schema.Resource { } func resourceTencentCloudDnspodDownloadSnapshotOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_download_snapshot_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_download_snapshot_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dnspod.NewDownloadSnapshotRequest() @@ -63,10 +66,10 @@ func resourceTencentCloudDnspodDownloadSnapshotOperationCreate(d *schema.Resourc request.SnapshotId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().DownloadSnapshot(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().DownloadSnapshot(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -83,21 +86,21 @@ func resourceTencentCloudDnspodDownloadSnapshotOperationCreate(d *schema.Resourc _ = d.Set("cos_url", cosUrl) } - d.SetId(strings.Join([]string{domain, snapshotId}, FILED_SP)) + d.SetId(strings.Join([]string{domain, snapshotId}, tccommon.FILED_SP)) return resourceTencentCloudDnspodDownloadSnapshotOperationRead(d, meta) } func resourceTencentCloudDnspodDownloadSnapshotOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_download_snapshot_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_download_snapshot_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDnspodDownloadSnapshotOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_download_snapshot_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_download_snapshot_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dnspod_download_snapshot_operation_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_download_snapshot_operation_test.go similarity index 79% rename from tencentcloud/resource_tc_dnspod_download_snapshot_operation_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_download_snapshot_operation_test.go index 0b4c791f6d..531969c343 100644 --- a/tencentcloud/resource_tc_dnspod_download_snapshot_operation_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_download_snapshot_operation_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodDownloadSnapshotOperationResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodDownloadSnapshotOperation, diff --git a/tencentcloud/resource_tc_dnspod_modify_domain_owner_operation.go b/tencentcloud/services/dnspod/resource_tc_dnspod_modify_domain_owner_operation.go similarity index 74% rename from tencentcloud/resource_tc_dnspod_modify_domain_owner_operation.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_modify_domain_owner_operation.go index 04701bdc79..c25c65e9db 100644 --- a/tencentcloud/resource_tc_dnspod_modify_domain_owner_operation.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_modify_domain_owner_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dnspod import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDnspodModifyDomainOwnerOperation() *schema.Resource { +func ResourceTencentCloudDnspodModifyDomainOwnerOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodModifyDomainOwnerOperationCreate, Read: resourceTencentCloudDnspodModifyDomainOwnerOperationRead, @@ -40,10 +43,10 @@ func resourceTencentCloudDnspodModifyDomainOwnerOperation() *schema.Resource { } func resourceTencentCloudDnspodModifyDomainOwnerOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_modify_domain_owner_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_modify_domain_owner_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dnspod.NewModifyDomainOwnerRequest() @@ -62,10 +65,10 @@ func resourceTencentCloudDnspodModifyDomainOwnerOperationCreate(d *schema.Resour request.DomainId = helper.IntUint64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifyDomainOwner(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifyDomainOwner(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -82,15 +85,15 @@ func resourceTencentCloudDnspodModifyDomainOwnerOperationCreate(d *schema.Resour } func resourceTencentCloudDnspodModifyDomainOwnerOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_modify_domain_owner_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_modify_domain_owner_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDnspodModifyDomainOwnerOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_modify_domain_owner_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_modify_domain_owner_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dnspod_modify_domain_owner_operation_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_modify_domain_owner_operation_test.go similarity index 80% rename from tencentcloud/resource_tc_dnspod_modify_domain_owner_operation_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_modify_domain_owner_operation_test.go index 618b687d32..35ed89cd16 100644 --- a/tencentcloud/resource_tc_dnspod_modify_domain_owner_operation_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_modify_domain_owner_operation_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodNeedFixModifyDomainOwnerResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodModifyDomainOwner, diff --git a/tencentcloud/resource_tc_dnspod_modify_record_group_operation.go b/tencentcloud/services/dnspod/resource_tc_dnspod_modify_record_group_operation.go similarity index 74% rename from tencentcloud/resource_tc_dnspod_modify_record_group_operation.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_modify_record_group_operation.go index e604a4690c..5eb2af0447 100644 --- a/tencentcloud/resource_tc_dnspod_modify_record_group_operation.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_modify_record_group_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dnspod import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDnspodModifyRecordGroupOperation() *schema.Resource { +func ResourceTencentCloudDnspodModifyRecordGroupOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodModifyRecordGroupOperationCreate, Read: resourceTencentCloudDnspodModifyRecordGroupOperationRead, @@ -48,9 +51,9 @@ func resourceTencentCloudDnspodModifyRecordGroupOperation() *schema.Resource { } func resourceTencentCloudDnspodModifyRecordGroupOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_modify_record_group_operation.create")() - defer inconsistentCheck(d, meta)() - logId := getLogId(contextNil) + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_modify_record_group_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dnspod.NewModifyRecordToGroupRequest() @@ -76,10 +79,10 @@ func resourceTencentCloudDnspodModifyRecordGroupOperationCreate(d *schema.Resour request.GroupId = helper.IntUint64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifyRecordToGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifyRecordToGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -90,21 +93,21 @@ func resourceTencentCloudDnspodModifyRecordGroupOperationCreate(d *schema.Resour return err } - d.SetId(strings.Join([]string{domain, recordId}, FILED_SP)) + d.SetId(strings.Join([]string{domain, recordId}, tccommon.FILED_SP)) return resourceTencentCloudDnspodModifyRecordGroupOperationRead(d, meta) } func resourceTencentCloudDnspodModifyRecordGroupOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_modify_record_group_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_modify_record_group_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDnspodModifyRecordGroupOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_modify_record_group_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_modify_record_group_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dnspod_modify_record_group_operation_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_modify_record_group_operation_test.go similarity index 82% rename from tencentcloud/resource_tc_dnspod_modify_record_group_operation_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_modify_record_group_operation_test.go index 6d608a7445..b328736e26 100644 --- a/tencentcloud/resource_tc_dnspod_modify_record_group_operation_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_modify_record_group_operation_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodModifyRecordGroupOperationResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodModifyRecordGroupOperation, diff --git a/tencentcloud/resource_tc_dnspod_record.go b/tencentcloud/services/dnspod/resource_tc_dnspod_record.go similarity index 77% rename from tencentcloud/resource_tc_dnspod_record.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_record.go index 6462e13cc7..3039f67c85 100644 --- a/tencentcloud/resource_tc_dnspod_record.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_record.go @@ -1,4 +1,4 @@ -package tencentcloud +package dnspod import ( "fmt" @@ -6,13 +6,16 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDnspodRecord() *schema.Resource { +func ResourceTencentCloudDnspodRecord() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodRecordCreate, Read: resourceTencentCloudDnspodRecordRead, @@ -88,8 +91,8 @@ func resourceTencentCloudDnspodRecord() *schema.Resource { } func resourceTencentCloudDnspodRecordCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_record.create")() - logId := getLogId(contextNil) + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_record.create")() + logId := tccommon.GetLogId(tccommon.ContextNil) var ( recordId uint64 @@ -118,14 +121,14 @@ func resourceTencentCloudDnspodRecordCreate(d *schema.ResourceData, meta interfa } request.Status = &status - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - response, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().CreateRecord(request) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().CreateRecord(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } recordId = *response.Response.RecordId - d.SetId(domain + FILED_SP + fmt.Sprint(recordId)) + d.SetId(domain + tccommon.FILED_SP + fmt.Sprint(recordId)) return nil }) if err != nil { @@ -137,10 +140,10 @@ func resourceTencentCloudDnspodRecordCreate(d *schema.ResourceData, meta interfa requestRemark.Domain = helper.String(domain) requestRemark.RecordId = helper.Uint64(recordId) requestRemark.Remark = helper.String(v.(string)) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifyRecordRemark(requestRemark) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifyRecordRemark(requestRemark) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -154,13 +157,13 @@ func resourceTencentCloudDnspodRecordCreate(d *schema.ResourceData, meta interfa } func resourceTencentCloudDnspodRecordRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_record.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_record.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) id := d.Id() - items := strings.Split(id, FILED_SP) + items := strings.Split(id, tccommon.FILED_SP) if len(items) < 2 { return nil } @@ -172,10 +175,10 @@ func resourceTencentCloudDnspodRecordRead(d *schema.ResourceData, meta interface } request.RecordId = helper.IntUint64(recordId) - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { - response, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().DescribeRecord(request) + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().DescribeRecord(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } recordInfo := response.Response.RecordInfo @@ -206,11 +209,11 @@ func resourceTencentCloudDnspodRecordRead(d *schema.ResourceData, meta interface } func resourceTencentCloudDnspodRecordUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_record.update")() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_record.update")() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) id := d.Id() - items := strings.Split(id, FILED_SP) + items := strings.Split(id, tccommon.FILED_SP) if len(items) < 2 { return nil } @@ -248,10 +251,10 @@ func resourceTencentCloudDnspodRecordUpdate(d *schema.ResourceData, meta interfa request.TTL = helper.IntUint64(weight) } d.Partial(true) - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifyRecord(request) + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifyRecord(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -265,10 +268,10 @@ func resourceTencentCloudDnspodRecordUpdate(d *schema.ResourceData, meta interfa requestRemark.Domain = helper.String(domain) requestRemark.Remark = helper.String(remark) requestRemark.RecordId = helper.IntUint64(recordId) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifyRecordRemark(requestRemark) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifyRecordRemark(requestRemark) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -283,11 +286,11 @@ func resourceTencentCloudDnspodRecordUpdate(d *schema.ResourceData, meta interfa } func resourceTencentCloudDnspodRecordDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_record.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_record.delete")() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) id := d.Id() - items := strings.Split(id, FILED_SP) + items := strings.Split(id, tccommon.FILED_SP) if len(items) < 2 { return nil } @@ -300,10 +303,10 @@ func resourceTencentCloudDnspodRecordDelete(d *schema.ResourceData, meta interfa request.Domain = helper.String(domain) request.RecordId = helper.IntUint64(recordId) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().DeleteRecord(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().DeleteRecord(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) diff --git a/tencentcloud/resource_tc_dnspod_record_group.go b/tencentcloud/services/dnspod/resource_tc_dnspod_record_group.go similarity index 70% rename from tencentcloud/resource_tc_dnspod_record_group.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_record_group.go index 157c5e5156..1e4f81bc28 100644 --- a/tencentcloud/resource_tc_dnspod_record_group.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_record_group.go @@ -1,4 +1,4 @@ -package tencentcloud +package dnspod import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDnspodRecordGroup() *schema.Resource { +func ResourceTencentCloudDnspodRecordGroup() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodRecordGroupCreate, Read: resourceTencentCloudDnspodRecordGroupRead, @@ -44,10 +47,10 @@ func resourceTencentCloudDnspodRecordGroup() *schema.Resource { } func resourceTencentCloudDnspodRecordGroupCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_record_group.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_record_group.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dnspod.NewCreateRecordGroupRequest() @@ -64,10 +67,10 @@ func resourceTencentCloudDnspodRecordGroupCreate(d *schema.ResourceData, meta in request.GroupName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().CreateRecordGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().CreateRecordGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -80,22 +83,22 @@ func resourceTencentCloudDnspodRecordGroupCreate(d *schema.ResourceData, meta in } groupId = *response.Response.GroupId - d.SetId(strings.Join([]string{domain, helper.UInt64ToStr(groupId)}, FILED_SP)) + d.SetId(strings.Join([]string{domain, helper.UInt64ToStr(groupId)}, tccommon.FILED_SP)) return resourceTencentCloudDnspodRecordGroupRead(d, meta) } func resourceTencentCloudDnspodRecordGroupRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_record_group.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_record_group.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("tencentcloud_dnspod_record_group id is broken, id is %s", d.Id()) } @@ -127,13 +130,13 @@ func resourceTencentCloudDnspodRecordGroupRead(d *schema.ResourceData, meta inte } func resourceTencentCloudDnspodRecordGroupUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_record_group.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_record_group.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dnspod.NewModifyRecordGroupRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("tencentcloud_dnspod_record_group id is broken, id is %s", d.Id()) } @@ -152,10 +155,10 @@ func resourceTencentCloudDnspodRecordGroupUpdate(d *schema.ResourceData, meta in request.GroupName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifyRecordGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifyRecordGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -170,14 +173,14 @@ func resourceTencentCloudDnspodRecordGroupUpdate(d *schema.ResourceData, meta in } func resourceTencentCloudDnspodRecordGroupDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_record_group.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_record_group.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("tencentcloud_dnspod_record_group id is broken, id is %s", d.Id()) } diff --git a/tencentcloud/resource_tc_dnspod_record_group_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_record_group_test.go similarity index 85% rename from tencentcloud/resource_tc_dnspod_record_group_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_record_group_test.go index bfe53713cc..7201816611 100644 --- a/tencentcloud/resource_tc_dnspod_record_group_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_record_group_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodRecordGroupResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodRecordGroup, diff --git a/tencentcloud/resource_tc_dnspod_record_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_record_test.go similarity index 85% rename from tencentcloud/resource_tc_dnspod_record_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_record_test.go index 1d21355baf..c816bcdb82 100644 --- a/tencentcloud/resource_tc_dnspod_record_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_record_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dnspod_test import ( "fmt" @@ -6,18 +6,22 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) func TestAccTencentCloudDnspodRecordResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDnspodRecordDestroy, Steps: []resource.TestStep{ { @@ -58,8 +62,8 @@ func TestAccTencentCloudDnspodRecordResource_basic(t *testing.T) { func TestAccTencentCloudDnspodRecordResource_MX(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDnspodRecordDestroy, Steps: []resource.TestStep{ { @@ -109,7 +113,7 @@ func testAccCheckDnspodRecordExists(n string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("dnspod record id is not set") } - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return nil } @@ -121,16 +125,16 @@ func testAccCheckDnspodRecordExists(n string) resource.TestCheckFunc { } request.RecordId = helper.IntUint64(recordId) - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { - response, e := testAccProvider.Meta().(*TencentCloudClient).apiV3Conn.UseDnsPodClient().DescribeRecord(request) + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, e := tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().DescribeRecord(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if response.Response.RecordInfo != nil { return nil } - return retryError(fmt.Errorf("Dnspod record is null!")) + return tccommon.RetryError(fmt.Errorf("Dnspod record is null!")) }) if err != nil { return err @@ -145,7 +149,7 @@ func testAccCheckDnspodRecordDestroy(s *terraform.State) error { continue } - items := strings.Split(rs.Primary.ID, FILED_SP) + items := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(items) < 2 { return nil } @@ -157,18 +161,18 @@ func testAccCheckDnspodRecordDestroy(s *terraform.State) error { } request.RecordId = helper.IntUint64(recordId) - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { - response, e := testAccProvider.Meta().(*TencentCloudClient).apiV3Conn.UseDnsPodClient().DescribeRecord(request) + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, e := tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().DescribeRecord(request) if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok { if sdkError.Code == "InvalidParameter.RecordIdInvalid" { return nil } - return retryError(e) + return tccommon.RetryError(e) } if response.Response.RecordInfo == nil { return nil } - return retryError(fmt.Errorf("Dnspod record still exist!")) + return tccommon.RetryError(fmt.Errorf("Dnspod record still exist!")) }) if err != nil { return err diff --git a/tencentcloud/resource_tc_dnspod_snapshot_config.go b/tencentcloud/services/dnspod/resource_tc_dnspod_snapshot_config.go similarity index 70% rename from tencentcloud/resource_tc_dnspod_snapshot_config.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_snapshot_config.go index 39921f10ca..0a184112a9 100644 --- a/tencentcloud/resource_tc_dnspod_snapshot_config.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_snapshot_config.go @@ -1,16 +1,19 @@ -package tencentcloud +package dnspod import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDnspodSnapshotConfig() *schema.Resource { +func ResourceTencentCloudDnspodSnapshotConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDnspodSnapshotConfigCreate, Read: resourceTencentCloudDnspodSnapshotConfigRead, @@ -37,8 +40,8 @@ func resourceTencentCloudDnspodSnapshotConfig() *schema.Resource { } func resourceTencentCloudDnspodSnapshotConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_snapshot_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_snapshot_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var domain string @@ -52,14 +55,14 @@ func resourceTencentCloudDnspodSnapshotConfigCreate(d *schema.ResourceData, meta } func resourceTencentCloudDnspodSnapshotConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_snapshot_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_snapshot_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DnspodService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DnspodService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} domain := d.Id() @@ -84,10 +87,10 @@ func resourceTencentCloudDnspodSnapshotConfigRead(d *schema.ResourceData, meta i } func resourceTencentCloudDnspodSnapshotConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_snapshot_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_snapshot_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dnspod.NewModifySnapshotConfigRequest() @@ -98,10 +101,10 @@ func resourceTencentCloudDnspodSnapshotConfigUpdate(d *schema.ResourceData, meta request.Period = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDnsPodClient().ModifySnapshotConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDnsPodClient().ModifySnapshotConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -116,8 +119,8 @@ func resourceTencentCloudDnspodSnapshotConfigUpdate(d *schema.ResourceData, meta } func resourceTencentCloudDnspodSnapshotConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dnspod_snapshot_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dnspod_snapshot_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dnspod_snapshot_config_test.go b/tencentcloud/services/dnspod/resource_tc_dnspod_snapshot_config_test.go similarity index 85% rename from tencentcloud/resource_tc_dnspod_snapshot_config_test.go rename to tencentcloud/services/dnspod/resource_tc_dnspod_snapshot_config_test.go index d2b8568be8..bdd4edf5b5 100644 --- a/tencentcloud/resource_tc_dnspod_snapshot_config_test.go +++ b/tencentcloud/services/dnspod/resource_tc_dnspod_snapshot_config_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package dnspod_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDnspodSnapshotConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDnspodSnapshotConfig, diff --git a/tencentcloud/service_tencentcloud_dnspod.go b/tencentcloud/services/dnspod/service_tencentcloud_dnspod.go similarity index 94% rename from tencentcloud/service_tencentcloud_dnspod.go rename to tencentcloud/services/dnspod/service_tencentcloud_dnspod.go index 61bc65bb9d..b1cff19876 100644 --- a/tencentcloud/service_tencentcloud_dnspod.go +++ b/tencentcloud/services/dnspod/service_tencentcloud_dnspod.go @@ -1,27 +1,34 @@ -package tencentcloud +package dnspod import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" dnspod "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod/v20210323" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) // basic information +func NewDnspodService(client *connectivity.TencentCloudClient) DnspodService { + return DnspodService{client: client} +} + type DnspodService struct { client *connectivity.TencentCloudClient } // ////////api func (me *DnspodService) ModifyDnsPodDomainStatus(ctx context.Context, domain string, status string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewModifyDomainStatusRequest() defer func() { if errRet != nil { @@ -32,11 +39,11 @@ func (me *DnspodService) ModifyDnsPodDomainStatus(ctx context.Context, domain st request.Domain = helper.String(domain) request.Status = &status - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) _, err := me.client.UseDnsPodClient().ModifyDomainStatus(request) if err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -47,7 +54,7 @@ func (me *DnspodService) ModifyDnsPodDomainStatus(ctx context.Context, domain st } func (me *DnspodService) ModifyDnsPodDomainRemark(ctx context.Context, domain string, remark string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewModifyDomainRemarkRequest() defer func() { if errRet != nil { @@ -58,11 +65,11 @@ func (me *DnspodService) ModifyDnsPodDomainRemark(ctx context.Context, domain st request.Domain = helper.String(domain) request.Remark = &remark - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) _, err := me.client.UseDnsPodClient().ModifyDomainRemark(request) if err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -74,7 +81,7 @@ func (me *DnspodService) ModifyDnsPodDomainRemark(ctx context.Context, domain st func (me *DnspodService) DescribeDomain(ctx context.Context, domain string) (ret *dnspod.DescribeDomainResponse, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewDescribeDomainRequest() defer func() { @@ -102,7 +109,7 @@ func (me *DnspodService) DescribeDomain(ctx context.Context, domain string) (ret func (me *DnspodService) DeleteDomain(ctx context.Context, domain string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewDeleteDomainRequest() ratelimit.Check(request.GetAction()) request.Domain = helper.String(domain) @@ -129,7 +136,7 @@ func (me *DnspodService) DeleteDomain(ctx context.Context, domain string) (errRe } func (me *DnspodService) DescribeRecordList(ctx context.Context, request *dnspod.DescribeRecordListRequest) (list []*dnspod.RecordListItem, info *dnspod.RecordCountInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", @@ -156,7 +163,7 @@ func (me *DnspodService) DescribeRecordList(ctx context.Context, request *dnspod func (me *DnspodService) DescribeDnspodDomainListByFilter(ctx context.Context, param map[string]interface{}) (domain_list []*dnspod.DomainListItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dnspod.NewDescribeDomainFilterListRequest() ) @@ -243,7 +250,7 @@ func (me *DnspodService) DescribeDnspodDomainListByFilter(ctx context.Context, p func (me *DnspodService) DescribeDnspodDomainAnalyticsByFilter(ctx context.Context, param map[string]interface{}) (alias_data []*dnspod.DomainAliasAnalyticsItem, data []*dnspod.DomainAnalyticsDetail, info *dnspod.DomainAnalyticsInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dnspod.NewDescribeDomainAnalyticsRequest() ) @@ -292,7 +299,7 @@ func (me *DnspodService) DescribeDnspodDomainAnalyticsByFilter(ctx context.Conte func (me *DnspodService) DescribeDnspodDomainLogListByFilter(ctx context.Context, param map[string]interface{}) (domain_log_list []*string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dnspod.NewDescribeDomainLogListRequest() ) @@ -343,7 +350,7 @@ func (me *DnspodService) DescribeDnspodDomainLogListByFilter(ctx context.Context func (me *DnspodService) DescribeDnspodRecordAnalyticsByFilter(ctx context.Context, param map[string]interface{}) (alias_data []*dnspod.SubdomainAliasAnalyticsItem, data []*dnspod.DomainAnalyticsDetail, info *dnspod.SubdomainAnalyticsInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dnspod.NewDescribeSubdomainAnalyticsRequest() ) @@ -395,7 +402,7 @@ func (me *DnspodService) DescribeDnspodRecordAnalyticsByFilter(ctx context.Conte func (me *DnspodService) DescribeDnspodRecordLineListByFilter(ctx context.Context, param map[string]interface{}) (line_list []*dnspod.LineInfo, line_group_list []*dnspod.LineGroupInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dnspod.NewDescribeRecordLineListRequest() ) @@ -438,7 +445,7 @@ func (me *DnspodService) DescribeDnspodRecordLineListByFilter(ctx context.Contex func (me *DnspodService) DescribeDnspodRecordListByFilter(ctx context.Context, param map[string]interface{}) (record_list []*dnspod.RecordListItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dnspod.NewDescribeRecordFilterListRequest() ) @@ -549,7 +556,7 @@ func (me *DnspodService) DescribeDnspodRecordListByFilter(ctx context.Context, p func (me *DnspodService) DescribeDnspodRecordTypeByFilter(ctx context.Context, param map[string]interface{}) (type_list []*string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dnspod.NewDescribeRecordTypeRequest() ) @@ -582,7 +589,7 @@ func (me *DnspodService) DescribeDnspodRecordTypeByFilter(ctx context.Context, p return } func (me *DnspodService) DescribeDnspodRecordGroupById(ctx context.Context, domain string, groupId uint64) (recordGroup *dnspod.RecordGroupInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewDescribeRecordGroupListRequest() request.Domain = &domain @@ -616,7 +623,7 @@ func (me *DnspodService) DescribeDnspodRecordGroupById(ctx context.Context, doma } func (me *DnspodService) DeleteDnspodRecordGroupById(ctx context.Context, domain string, groupId uint64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewDeleteRecordGroupRequest() request.Domain = &domain @@ -641,7 +648,7 @@ func (me *DnspodService) DeleteDnspodRecordGroupById(ctx context.Context, domain } func (me *DnspodService) DescribeDnspodDomainAliasById(ctx context.Context, domain string, domainAliasId int64) (domainAliasInfo *dnspod.DomainAliasInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewDescribeDomainAliasListRequest() request.Domain = &domain @@ -676,7 +683,7 @@ func (me *DnspodService) DescribeDnspodDomainAliasById(ctx context.Context, doma } func (me *DnspodService) DeleteDnspodDomainAliasById(ctx context.Context, domain string, domainAliasId int64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewDeleteDomainAliasRequest() request.Domain = &domain @@ -701,7 +708,7 @@ func (me *DnspodService) DeleteDnspodDomainAliasById(ctx context.Context, domain } func (me *DnspodService) DescribeDnspodCustomLineById(ctx context.Context, domain string, name string) (customLineInfo *dnspod.CustomLineInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewDescribeDomainCustomLineListRequest() request.Domain = &domain @@ -736,7 +743,7 @@ func (me *DnspodService) DescribeDnspodCustomLineById(ctx context.Context, domai } func (me *DnspodService) DeleteDnspodCustomLineById(ctx context.Context, domain string, name string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewDeleteDomainCustomLineRequest() request.Domain = &domain @@ -761,7 +768,7 @@ func (me *DnspodService) DeleteDnspodCustomLineById(ctx context.Context, domain } func (me *DnspodService) DescribeDnspodSnapshotConfigById(ctx context.Context, domain string) (snapshotConfig *dnspod.SnapshotConfig, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dnspod.NewDescribeSnapshotConfigRequest() request.Domain = &domain diff --git a/tencentcloud/data_source_tc_domains.go b/tencentcloud/services/domain/data_source_tc_domains.go similarity index 87% rename from tencentcloud/data_source_tc_domains.go rename to tencentcloud/services/domain/data_source_tc_domains.go index abd4e2359c..c9a683dec9 100644 --- a/tencentcloud/data_source_tc_domains.go +++ b/tencentcloud/services/domain/data_source_tc_domains.go @@ -1,14 +1,16 @@ -package tencentcloud +package domain import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" domain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain/v20180808" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDomains() *schema.Resource { +func DataSourceTencentCloudDomains() *schema.Resource { return &schema.Resource{ Read: datasourceTencentCloudDomainsRead, Importer: &schema.ResourceImporter{ @@ -91,13 +93,13 @@ func dataSourceTencentCloudDomains() *schema.Resource { } func datasourceTencentCloudDomainsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("datasource.tencentcloud_domains.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("datasource.tencentcloud_domains.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() service := DomainService{client} request := domain.NewDescribeDomainNameListRequest() @@ -141,7 +143,7 @@ func datasourceTencentCloudDomainsRead(d *schema.ResourceData, meta interface{}) } if output, ok := d.GetOk("result_output_file"); ok { - return writeToFile(output.(string), result) + return tccommon.WriteToFile(output.(string), result) } return nil diff --git a/tencentcloud/data_source_tc_domains_test.go b/tencentcloud/services/domain/data_source_tc_domains_test.go similarity index 87% rename from tencentcloud/data_source_tc_domains_test.go rename to tencentcloud/services/domain/data_source_tc_domains_test.go index ddc63b6a12..2792fb6641 100644 --- a/tencentcloud/data_source_tc_domains_test.go +++ b/tencentcloud/services/domain/data_source_tc_domains_test.go @@ -1,17 +1,19 @@ -package tencentcloud +package domain_test import ( "regexp" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudDomainsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDomainsDataSourceBasic, diff --git a/tencentcloud/service_tencentcloud_domain.go b/tencentcloud/services/domain/service_tencentcloud_domain.go similarity index 88% rename from tencentcloud/service_tencentcloud_domain.go rename to tencentcloud/services/domain/service_tencentcloud_domain.go index 5139fd6a98..e416cd7826 100644 --- a/tencentcloud/service_tencentcloud_domain.go +++ b/tencentcloud/services/domain/service_tencentcloud_domain.go @@ -1,9 +1,11 @@ -package tencentcloud +package domain import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + domain "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain/v20180808" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" @@ -14,7 +16,7 @@ type DomainService struct { } func (me *DomainService) DescribeDomainNameList(ctx context.Context, request *domain.DescribeDomainNameListRequest) (result []*domain.DomainList, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", diff --git a/tencentcloud/data_source_tc_dts_compare_tasks.go b/tencentcloud/services/dts/data_source_tc_dts_compare_tasks.go similarity index 96% rename from tencentcloud/data_source_tc_dts_compare_tasks.go rename to tencentcloud/services/dts/data_source_tc_dts_compare_tasks.go index e0cfb96631..68b5df650f 100644 --- a/tencentcloud/data_source_tc_dts_compare_tasks.go +++ b/tencentcloud/services/dts/data_source_tc_dts_compare_tasks.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDtsCompareTasks() *schema.Resource { +func DataSourceTencentCloudDtsCompareTasks() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDtsCompareTasksRead, Schema: map[string]*schema.Schema{ @@ -408,24 +411,24 @@ func dataSourceTencentCloudDtsCompareTasks() *schema.Resource { } func dataSourceTencentCloudDtsCompareTasksRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dts_compare_tasks.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dts_compare_tasks.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("job_id"); ok { paramMap["job_id"] = helper.String(v.(string)) } - dtsService := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + dtsService := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var compareTaskItems []*dts.CompareTaskItem - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dtsService.DescribeDtsCompareTasksByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } compareTaskItems = results return nil @@ -702,7 +705,7 @@ func dataSourceTencentCloudDtsCompareTasksRead(d *schema.ResourceData, meta inte output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), itemList); e != nil { + if e := tccommon.WriteToFile(output.(string), itemList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dts_compare_tasks_test.go b/tencentcloud/services/dts/data_source_tc_dts_compare_tasks_test.go similarity index 62% rename from tencentcloud/data_source_tc_dts_compare_tasks_test.go rename to tencentcloud/services/dts/data_source_tc_dts_compare_tasks_test.go index dbfcc2dac8..d7fb04ed6a 100644 --- a/tencentcloud/data_source_tc_dts_compare_tasks_test.go +++ b/tencentcloud/services/dts/data_source_tc_dts_compare_tasks_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package dts_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudDtsCompareTasksDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDataSourceDtsCompareTasks, defaultDTSJobId, defaultDTSJobId), + Config: fmt.Sprintf(testAccDataSourceDtsCompareTasks, tcacctest.DefaultDTSJobId, tcacctest.DefaultDTSJobId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dts_compare_tasks.compare_tasks"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dts_compare_tasks.compare_tasks"), resource.TestCheckResourceAttrSet("data.tencentcloud_dts_compare_tasks.compare_tasks", "list.#"), ), }, diff --git a/tencentcloud/data_source_tc_dts_migrate_db_instances.go b/tencentcloud/services/dts/data_source_tc_dts_migrate_db_instances.go similarity index 89% rename from tencentcloud/data_source_tc_dts_migrate_db_instances.go rename to tencentcloud/services/dts/data_source_tc_dts_migrate_db_instances.go index 7ea42f3412..b9d551a342 100644 --- a/tencentcloud/data_source_tc_dts_migrate_db_instances.go +++ b/tencentcloud/services/dts/data_source_tc_dts_migrate_db_instances.go @@ -1,15 +1,18 @@ -package tencentcloud +package dts import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDtsMigrateDbInstances() *schema.Resource { +func DataSourceTencentCloudDtsMigrateDbInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDtsMigrateDbInstancesRead, Schema: map[string]*schema.Schema{ @@ -129,12 +132,12 @@ func dataSourceTencentCloudDtsMigrateDbInstances() *schema.Resource { } func dataSourceTencentCloudDtsMigrateDbInstancesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dts_migrate_db_instances.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dts_migrate_db_instances.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("database_type"); ok { @@ -169,14 +172,14 @@ func dataSourceTencentCloudDtsMigrateDbInstancesRead(d *schema.ResourceData, met paramMap["TmpToken"] = helper.String(v.(string)) } - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var instances []*dts.MigrateDBItem - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDtsMigrateDbInstancesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } instances = result return nil @@ -226,7 +229,7 @@ func dataSourceTencentCloudDtsMigrateDbInstancesRead(d *schema.ResourceData, met d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dts_migrate_db_instances_test.go b/tencentcloud/services/dts/data_source_tc_dts_migrate_db_instances_test.go similarity index 66% rename from tencentcloud/data_source_tc_dts_migrate_db_instances_test.go rename to tencentcloud/services/dts/data_source_tc_dts_migrate_db_instances_test.go index 489a68a766..08faed0a05 100644 --- a/tencentcloud/data_source_tc_dts_migrate_db_instances_test.go +++ b/tencentcloud/services/dts/data_source_tc_dts_migrate_db_instances_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,20 +12,20 @@ func TestAccTencentCloudDtsMigrateDbInstancesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDtsMigrateDbInstancesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dts_migrate_db_instances.migrate_db_instances")), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dts_migrate_db_instances.migrate_db_instances")), }, }, }) } -const testAccDtsMigrateDbInstancesDataSource = CommonPresetMysql + ` +const testAccDtsMigrateDbInstancesDataSource = tcacctest.CommonPresetMysql + ` data "tencentcloud_dts_migrate_db_instances" "migrate_db_instances" { database_type = "mysql" diff --git a/tencentcloud/data_source_tc_dts_migrate_jobs.go b/tencentcloud/services/dts/data_source_tc_dts_migrate_jobs.go similarity index 98% rename from tencentcloud/data_source_tc_dts_migrate_jobs.go rename to tencentcloud/services/dts/data_source_tc_dts_migrate_jobs.go index b8c2865e71..b347fb0077 100644 --- a/tencentcloud/data_source_tc_dts_migrate_jobs.go +++ b/tencentcloud/services/dts/data_source_tc_dts_migrate_jobs.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDtsMigrateJobs() *schema.Resource { +func DataSourceTencentCloudDtsMigrateJobs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDtsMigrateJobsRead, Schema: map[string]*schema.Schema{ @@ -735,11 +738,11 @@ func dataSourceTencentCloudDtsMigrateJobs() *schema.Resource { } func dataSourceTencentCloudDtsMigrateJobsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dts_migrate_jobs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dts_migrate_jobs.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("job_id"); ok { @@ -840,13 +843,13 @@ func dataSourceTencentCloudDtsMigrateJobsRead(d *schema.ResourceData, meta inter paramMap["tag_filters"] = tmpList } - dtsService := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + dtsService := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var jobItems []*dts.JobItem - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dtsService.DescribeDtsMigrateJobsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } jobItems = results return nil @@ -1243,7 +1246,7 @@ func dataSourceTencentCloudDtsMigrateJobsRead(d *schema.ResourceData, meta inter output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), jobList); e != nil { + if e := tccommon.WriteToFile(output.(string), jobList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dts_migrate_jobs_test.go b/tencentcloud/services/dts/data_source_tc_dts_migrate_jobs_test.go similarity index 86% rename from tencentcloud/data_source_tc_dts_migrate_jobs_test.go rename to tencentcloud/services/dts/data_source_tc_dts_migrate_jobs_test.go index 76f630036b..b35ef8efa2 100644 --- a/tencentcloud/data_source_tc_dts_migrate_jobs_test.go +++ b/tencentcloud/services/dts/data_source_tc_dts_migrate_jobs_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,20 +12,20 @@ func TestAccTencentCloudDtsMigrateJobsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceDtsMigrateJobs_all, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dts_migrate_jobs.all"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dts_migrate_jobs.all"), resource.TestCheckResourceAttrSet("data.tencentcloud_dts_migrate_jobs.all", "list.#"), ), }, { Config: testAccDataSourceDtsMigrateJobs_job, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dts_migrate_jobs.job"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dts_migrate_jobs.job"), resource.TestCheckResourceAttr("data.tencentcloud_dts_migrate_jobs.job", "list.#", "1"), resource.TestCheckResourceAttr("data.tencentcloud_dts_migrate_jobs.job", "list.0.job_name", "tf_test_migration_job"), resource.TestCheckResourceAttr("data.tencentcloud_dts_migrate_jobs.job", "list.0.status", "created"), @@ -33,7 +35,7 @@ func TestAccTencentCloudDtsMigrateJobsDataSource(t *testing.T) { { Config: testAccDataSourceDtsMigrateJobs_src_dest, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dts_migrate_jobs.src_dest"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dts_migrate_jobs.src_dest"), resource.TestCheckResourceAttrSet("data.tencentcloud_dts_migrate_jobs.src_dest", "list.#"), resource.TestCheckResourceAttr("data.tencentcloud_dts_migrate_jobs.src_dest", "list.0.src_info.0.region", "ap-guangzhou"), resource.TestCheckResourceAttr("data.tencentcloud_dts_migrate_jobs.src_dest", "list.0.src_info.0.database_type", "mysql"), diff --git a/tencentcloud/data_source_tc_dts_sync_jobs.go b/tencentcloud/services/dts/data_source_tc_dts_sync_jobs.go similarity index 98% rename from tencentcloud/data_source_tc_dts_sync_jobs.go rename to tencentcloud/services/dts/data_source_tc_dts_sync_jobs.go index c25fb0f376..8d65c39096 100644 --- a/tencentcloud/data_source_tc_dts_sync_jobs.go +++ b/tencentcloud/services/dts/data_source_tc_dts_sync_jobs.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudDtsSyncJobs() *schema.Resource { +func DataSourceTencentCloudDtsSyncJobs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudDtsSyncJobsRead, Schema: map[string]*schema.Schema{ @@ -822,11 +825,11 @@ func dataSourceTencentCloudDtsSyncJobs() *schema.Resource { } func dataSourceTencentCloudDtsSyncJobsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_dts_sync_jobs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_dts_sync_jobs.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("job_id"); ok { @@ -885,13 +888,13 @@ func dataSourceTencentCloudDtsSyncJobsRead(d *schema.ResourceData, meta interfac paramMap["tag_filters"] = filters } - dtsService := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + dtsService := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var jobInfos []*dts.SyncJobInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := dtsService.DescribeDtsSyncJobsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } jobInfos = results return nil @@ -1359,7 +1362,7 @@ func dataSourceTencentCloudDtsSyncJobsRead(d *schema.ResourceData, meta interfac output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), jobList); e != nil { + if e := tccommon.WriteToFile(output.(string), jobList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_dts_sync_jobs_test.go b/tencentcloud/services/dts/data_source_tc_dts_sync_jobs_test.go similarity index 86% rename from tencentcloud/data_source_tc_dts_sync_jobs_test.go rename to tencentcloud/services/dts/data_source_tc_dts_sync_jobs_test.go index e8f7cde224..beafca213c 100644 --- a/tencentcloud/data_source_tc_dts_sync_jobs_test.go +++ b/tencentcloud/services/dts/data_source_tc_dts_sync_jobs_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudDtsSyncJobsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceDtsSyncJobs, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_dts_sync_jobs.sync_jobs"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_dts_sync_jobs.sync_jobs"), resource.TestCheckResourceAttr("data.tencentcloud_dts_sync_jobs.sync_jobs", "list.#", "1"), resource.TestCheckResourceAttrSet("data.tencentcloud_dts_sync_jobs.sync_jobs", "list.0.job_id"), resource.TestCheckResourceAttr("data.tencentcloud_dts_sync_jobs.sync_jobs", "list.0.job_name", "tf_dts_test"), diff --git a/tencentcloud/extension_dts.go b/tencentcloud/services/dts/extension_dts.go similarity index 93% rename from tencentcloud/extension_dts.go rename to tencentcloud/services/dts/extension_dts.go index da0d14e1b3..bdb6d5d4e9 100644 --- a/tencentcloud/extension_dts.go +++ b/tencentcloud/services/dts/extension_dts.go @@ -1,4 +1,4 @@ -package tencentcloud +package dts const ( DTS_MIGRATE_ACTION_PAUSE = "pause" diff --git a/tencentcloud/resource_tc_dts_compare_task.go b/tencentcloud/services/dts/resource_tc_dts_compare_task.go similarity index 85% rename from tencentcloud/resource_tc_dts_compare_task.go rename to tencentcloud/services/dts/resource_tc_dts_compare_task.go index 98b50dcfff..c98f72960b 100644 --- a/tencentcloud/resource_tc_dts_compare_task.go +++ b/tencentcloud/services/dts/resource_tc_dts_compare_task.go @@ -1,4 +1,4 @@ -package tencentcloud +package dts import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsCompareTask() *schema.Resource { +func ResourceTencentCloudDtsCompareTask() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudDtsCompareTaskRead, Create: resourceTencentCloudDtsCompareTaskCreate, @@ -138,17 +141,17 @@ func resourceTencentCloudDtsCompareTask() *schema.Resource { } func resourceTencentCloudDtsCompareTaskCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_compare_task.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_compare_task.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewCreateCompareTaskRequest() response *dts.CreateCompareTaskResponse startRequest = dts.NewStartCompareRequest() - service = DtsService{client: meta.(*TencentCloudClient).apiV3Conn} - ctx = context.WithValue(context.TODO(), logIdKey, logId) + service = DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) jobId string compareTaskId string ) @@ -221,10 +224,10 @@ func resourceTencentCloudDtsCompareTaskCreate(d *schema.ResourceData, meta inter } // create compareTask - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().CreateCompareTask(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().CreateCompareTask(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -245,11 +248,11 @@ func resourceTencentCloudDtsCompareTaskCreate(d *schema.ResourceData, meta inter // start compareTask compareTaskId = *response.Response.CompareTaskId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { startRequest.CompareTaskId = helper.String(compareTaskId) - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().StartCompare(startRequest) + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().StartCompare(startRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, startRequest.GetAction(), startRequest.ToJsonString(), result.ToJsonString()) @@ -267,20 +270,20 @@ func resourceTencentCloudDtsCompareTaskCreate(d *schema.ResourceData, meta inter return err } - d.SetId(jobId + FILED_SP + compareTaskId) + d.SetId(jobId + tccommon.FILED_SP + compareTaskId) return resourceTencentCloudDtsCompareTaskRead(d, meta) } func resourceTencentCloudDtsCompareTaskRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_compare_task.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_compare_task.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -383,15 +386,15 @@ func resourceTencentCloudDtsCompareTaskRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudDtsCompareTaskUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_compare_task.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_compare_task.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - // ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + // ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request := dts.NewModifyCompareTaskRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -470,10 +473,10 @@ func resourceTencentCloudDtsCompareTaskUpdate(d *schema.ResourceData, meta inter } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().ModifyCompareTask(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().ModifyCompareTask(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -490,15 +493,15 @@ func resourceTencentCloudDtsCompareTaskUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudDtsCompareTaskDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_compare_task.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_compare_task.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_dts_compare_task_stop_operation.go b/tencentcloud/services/dts/resource_tc_dts_compare_task_stop_operation.go similarity index 69% rename from tencentcloud/resource_tc_dts_compare_task_stop_operation.go rename to tencentcloud/services/dts/resource_tc_dts_compare_task_stop_operation.go index ebb8065293..7355713a7f 100644 --- a/tencentcloud/resource_tc_dts_compare_task_stop_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_compare_task_stop_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package dts import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsCompareTaskStopOperation() *schema.Resource { +func ResourceTencentCloudDtsCompareTaskStopOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsCompareTaskStopOperationCreate, Read: resourceTencentCloudDtsCompareTaskStopOperationRead, @@ -33,10 +36,10 @@ func resourceTencentCloudDtsCompareTaskStopOperation() *schema.Resource { } func resourceTencentCloudDtsCompareTaskStopOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_compare_task_stop_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_compare_task_stop_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewStopCompareRequest() @@ -57,10 +60,10 @@ func resourceTencentCloudDtsCompareTaskStopOperationCreate(d *schema.ResourceDat request.JobId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().StopCompare(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().StopCompare(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -71,21 +74,21 @@ func resourceTencentCloudDtsCompareTaskStopOperationCreate(d *schema.ResourceDat return err } - d.SetId(jobId + FILED_SP + compareTaskId) + d.SetId(jobId + tccommon.FILED_SP + compareTaskId) return resourceTencentCloudDtsCompareTaskStopOperationRead(d, meta) } func resourceTencentCloudDtsCompareTaskStopOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_compare_task_stop_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_compare_task_stop_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsCompareTaskStopOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_compare_task_stop_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_compare_task_stop_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_compare_task_test.go b/tencentcloud/services/dts/resource_tc_dts_compare_task_test.go similarity index 73% rename from tencentcloud/resource_tc_dts_compare_task_test.go rename to tencentcloud/services/dts/resource_tc_dts_compare_task_test.go index 7c0532df7d..302dd09557 100644 --- a/tencentcloud/resource_tc_dts_compare_task_test.go +++ b/tencentcloud/services/dts/resource_tc_dts_compare_task_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dts_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdts "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dts" + "context" "fmt" "strings" @@ -8,6 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -20,10 +25,10 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dts_compare_task func testSweepDtsCompareTask(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - dtsService := DtsService{client: cli.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + dtsService := svcdts.NewDtsService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) // find migrate job first ret, err := dtsService.DescribeDtsMigrateJobsByFilter(ctx, map[string]interface{}{}) if err != nil { @@ -45,14 +50,14 @@ func testSweepDtsCompareTask(r string) error { task := ret[0] - if strings.HasPrefix(*task.TaskName, keepResource) || strings.HasPrefix(*task.TaskName, defaultResource) { + if strings.HasPrefix(*task.TaskName, tcacctest.KeepResource) || strings.HasPrefix(*task.TaskName, tcacctest.DefaultResource) { continue } - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { err := dtsService.DeleteDtsCompareTaskById(ctx, *task.JobId, *task.CompareTaskId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -67,12 +72,12 @@ func TestAccTencentCloudDtsCompareTaskResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDtsCompareTaskDestroy, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccDtsCompareTask_basic, defaultDTSJobId), + Config: fmt.Sprintf(testAccDtsCompareTask_basic, tcacctest.DefaultDTSJobId), Check: resource.ComposeTestCheckFunc( testAccCheckDtsCompareTaskExists("tencentcloud_dts_compare_task.compare_task"), resource.TestCheckResourceAttrSet("tencentcloud_dts_compare_task.compare_task", "id"), @@ -80,7 +85,7 @@ func TestAccTencentCloudDtsCompareTaskResource_basic(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccDtsCompareTask_stop, defaultDTSJobId, defaultDTSJobId), + Config: fmt.Sprintf(testAccDtsCompareTask_stop, tcacctest.DefaultDTSJobId, tcacctest.DefaultDTSJobId), Check: resource.ComposeTestCheckFunc( testAccCheckDtsCompareTaskExists("tencentcloud_dts_compare_task.compare_task"), resource.TestCheckResourceAttrSet("tencentcloud_dts_compare_task.compare_task", "id"), @@ -95,16 +100,16 @@ func TestAccTencentCloudDtsCompareTaskResource_basic(t *testing.T) { } func testAccCheckDtsCompareTaskDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dtsService := DtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dtsService := svcdts.NewDtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dts_compare_task" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -128,9 +133,9 @@ func testAccCheckDtsCompareTaskDestroy(s *terraform.State) error { func testAccCheckDtsCompareTaskExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dtsService := DtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dtsService := svcdts.NewDtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rs, ok := s.RootModule().Resources[re] if !ok { @@ -140,7 +145,7 @@ func testAccCheckDtsCompareTaskExists(re string) resource.TestCheckFunc { return fmt.Errorf("DTS compare task id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } diff --git a/tencentcloud/resource_tc_dts_migrate_job.go b/tencentcloud/services/dts/resource_tc_dts_migrate_job.go similarity index 95% rename from tencentcloud/resource_tc_dts_migrate_job.go rename to tencentcloud/services/dts/resource_tc_dts_migrate_job.go index 84ac2baede..651d594f4e 100644 --- a/tencentcloud/resource_tc_dts_migrate_job.go +++ b/tencentcloud/services/dts/resource_tc_dts_migrate_job.go @@ -1,4 +1,4 @@ -package tencentcloud +package dts import ( "context" @@ -6,14 +6,17 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsMigrateJob() *schema.Resource { +func ResourceTencentCloudDtsMigrateJob() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsMigrateJobCreate, Read: resourceTencentCloudDtsMigrateJobRead, @@ -663,13 +666,13 @@ func resourceTencentCloudDtsMigrateJob() *schema.Resource { } func resourceTencentCloudDtsMigrateJobCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( - tcClient = meta.(*TencentCloudClient).apiV3Conn + tcClient = meta.(tccommon.ProviderMeta).GetAPIV3Conn() service = DtsService{client: tcClient} conf *resource.StateChangeConf serviceId string @@ -685,7 +688,7 @@ func resourceTencentCloudDtsMigrateJobCreate(d *schema.ResourceData, meta interf return err } - conf = BuildStateChangeConf([]string{}, []string{"created"}, 3*readRetryTimeout, time.Second, service.DtsMigrateJobStateRefreshFunc(serviceId, []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"created"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobStateRefreshFunc(serviceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -696,7 +699,7 @@ func resourceTencentCloudDtsMigrateJobCreate(d *schema.ResourceData, meta interf return err } - conf = BuildStateChangeConf([]string{}, []string{"checkPass", "checkNotPass"}, 3*readRetryTimeout, time.Second, service.DtsMigrateCheckConfigStateRefreshFunc(serviceId, []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"checkPass", "checkNotPass"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateCheckConfigStateRefreshFunc(serviceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -706,9 +709,9 @@ func resourceTencentCloudDtsMigrateJobCreate(d *schema.ResourceData, meta interf } func resourceTencentCloudDtsMigrateJobUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job.update")() - defer inconsistentCheck(d, meta)() - logId := getLogId(contextNil) + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job.update")() + defer tccommon.InconsistentCheck(d, meta)() + logId := tccommon.GetLogId(tccommon.ContextNil) log.Printf("[DEBUG]%s tencentcloud_dts_migrate_job.update in. id:[%s]\n", logId, d.Id()) @@ -716,14 +719,14 @@ func resourceTencentCloudDtsMigrateJobUpdate(d *schema.ResourceData, meta interf } func resourceTencentCloudDtsMigrateJobRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobId := d.Id() log.Printf("[DEBUG]%s tencentcloud_dts_migrate_job.read trying to call DescribeDtsMigrateJobById. jobId:[%s]\n", logId, jobId) @@ -1660,10 +1663,10 @@ func handleModifyMigrate(d *schema.ResourceData, tcClient *connectivity.TencentC configMigrationJobRequest.AutoRetryTimeRangeMinutes = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := tcClient.UseDtsClient().ModifyMigrationJob(configMigrationJobRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, configMigrationJobRequest.GetAction(), configMigrationJobRequest.ToJsonString(), result.ToJsonString()) } @@ -1680,10 +1683,10 @@ func handleCheckMigrate(d *schema.ResourceData, tcClient *connectivity.TencentCl checkMigrateJobRequest := dts.NewCreateMigrateCheckJobRequest() checkMigrateJobRequest.JobId = helper.String(jobId) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := tcClient.UseDtsClient().CreateMigrateCheckJob(checkMigrateJobRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, checkMigrateJobRequest.GetAction(), checkMigrateJobRequest.ToJsonString(), result.ToJsonString()) } @@ -1709,10 +1712,10 @@ func handleCheckMigrate(d *schema.ResourceData, tcClient *connectivity.TencentCl // } // } -// err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { +// err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { // result, e := tcClient.UseDtsClient().ResumeMigrateJob(resumeMigrateJobRequest) // if e != nil { -// return retryError(e) +// return tccommon.RetryError(e) // } else { // log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, resumeMigrateJobRequest.GetAction(), resumeMigrateJobRequest.ToJsonString(), result.ToJsonString()) // } @@ -1723,7 +1726,7 @@ func handleCheckMigrate(d *schema.ResourceData, tcClient *connectivity.TencentCl // return err // } -// conf := BuildStateChangeConf([]string{}, []string{"readyComplete", "success", "failed"}, 3*readRetryTimeout, time.Second, service.DtsMigrateJobStateRefreshFunc(jobId, []string{})) +// conf := tccommon.BuildStateChangeConf([]string{}, []string{"readyComplete", "success", "failed"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobStateRefreshFunc(jobId, []string{})) // if _, e := conf.WaitForState(); e != nil { // return e // } @@ -1742,10 +1745,10 @@ func handleCheckMigrate(d *schema.ResourceData, tcClient *connectivity.TencentCl // } // } -// err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { +// err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { // result, e := tcClient.UseDtsClient().CompleteMigrateJob(completeMigrateJobRequest) // if e != nil { -// return retryError(e) +// return tccommon.RetryError(e) // } else { // log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, completeMigrateJobRequest.GetAction(), completeMigrateJobRequest.ToJsonString(), result.ToJsonString()) // } @@ -1756,7 +1759,7 @@ func handleCheckMigrate(d *schema.ResourceData, tcClient *connectivity.TencentCl // return err // } -// conf := BuildStateChangeConf([]string{}, []string{"success", "error", "failed"}, 3*readRetryTimeout, time.Second, service.DtsMigrateJobStateRefreshFunc(jobId, []string{})) +// conf := tccommon.BuildStateChangeConf([]string{}, []string{"success", "error", "failed"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobStateRefreshFunc(jobId, []string{})) // if _, e := conf.WaitForState(); e != nil { // return e // } @@ -1774,10 +1777,10 @@ func handleCheckMigrate(d *schema.ResourceData, tcClient *connectivity.TencentCl // } // } -// err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { +// err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { // result, e := tcClient.UseDtsClient().StartCompare(startCompareRequest) // if e != nil { -// return retryError(e) +// return tccommon.RetryError(e) // } else { // log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, startCompareRequest.GetAction(), startCompareRequest.ToJsonString(), result.ToJsonString()) // } @@ -1792,8 +1795,8 @@ func handleCheckMigrate(d *schema.ResourceData, tcClient *connectivity.TencentCl // } func resourceTencentCloudDtsMigrateJobDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_migrate_job_config.go b/tencentcloud/services/dts/resource_tc_dts_migrate_job_config.go similarity index 64% rename from tencentcloud/resource_tc_dts_migrate_job_config.go rename to tencentcloud/services/dts/resource_tc_dts_migrate_job_config.go index 2a39133d0f..422754a243 100644 --- a/tencentcloud/resource_tc_dts_migrate_job_config.go +++ b/tencentcloud/services/dts/resource_tc_dts_migrate_job_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package dts import ( "context" @@ -6,13 +6,16 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsMigrateJobConfig() *schema.Resource { +func ResourceTencentCloudDtsMigrateJobConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsMigrateJobConfigCreate, Read: resourceTencentCloudDtsMigrateJobConfigRead, @@ -35,15 +38,15 @@ func resourceTencentCloudDtsMigrateJobConfig() *schema.Resource { Required: true, Type: schema.TypeString, Description: "The operation want to perform. Valid values are: `pause`, `continue`, `complete`, `recover`,`stop`.", - ValidateFunc: validateAllowedStringValue([]string{DTS_MIGRATE_ACTION_PAUSE, DTS_MIGRATE_ACTION_CONTINUE, DTS_MIGRATE_ACTION_COMPLETE, DTS_MIGRATE_ACTION_RECOVER, DTS_MIGRATE_ACTION_STOP, DTS_MIGRATE_ACTION_ISOLATE}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{DTS_MIGRATE_ACTION_PAUSE, DTS_MIGRATE_ACTION_CONTINUE, DTS_MIGRATE_ACTION_COMPLETE, DTS_MIGRATE_ACTION_RECOVER, DTS_MIGRATE_ACTION_STOP, DTS_MIGRATE_ACTION_ISOLATE}), }, }, } } func resourceTencentCloudDtsMigrateJobConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var jobId string @@ -56,14 +59,14 @@ func resourceTencentCloudDtsMigrateJobConfigCreate(d *schema.ResourceData, meta } func resourceTencentCloudDtsMigrateJobConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobId := d.Id() @@ -90,10 +93,10 @@ func resourceTencentCloudDtsMigrateJobConfigRead(d *schema.ResourceData, meta in } func resourceTencentCloudDtsMigrateJobConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( action string @@ -146,8 +149,8 @@ func resourceTencentCloudDtsMigrateJobConfigUpdate(d *schema.ResourceData, meta } func resourceTencentCloudDtsMigrateJobConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } @@ -157,10 +160,10 @@ func handlePauseMigrate(d *schema.ResourceData, meta interface{}, logId, jobId s request.JobId = helper.String(jobId) // response = dts.NewPauseMigrateJobResponse() - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().PauseMigrateJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().PauseMigrateJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -171,9 +174,9 @@ func handlePauseMigrate(d *schema.ResourceData, meta interface{}, logId, jobId s return err } - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"manualPaused"}, 2*readRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"manualPaused"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -186,10 +189,10 @@ func handleContinueMigrate(d *schema.ResourceData, meta interface{}, logId, jobI request.JobId = helper.String(jobId) // response = dts.NewPauseMigrateJobResponse() - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().ContinueMigrateJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().ContinueMigrateJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -200,9 +203,9 @@ func handleContinueMigrate(d *schema.ResourceData, meta interface{}, logId, jobI return err } - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"running"}, 2*readRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"running"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -222,10 +225,10 @@ func handleCompleteMigrate(d *schema.ResourceData, meta interface{}, logId, jobI } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().CompleteMigrateJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().CompleteMigrateJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -236,9 +239,9 @@ func handleCompleteMigrate(d *schema.ResourceData, meta interface{}, logId, jobI return err } - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"success"}, 3*readRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"success"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -252,10 +255,10 @@ func handleRecoverMigrate(d *schema.ResourceData, meta interface{}, logId, jobId request.JobId = helper.String(jobId) // response = dts.NewPauseMigrateJobResponse() - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().RecoverMigrateJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().RecoverMigrateJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -266,9 +269,9 @@ func handleRecoverMigrate(d *schema.ResourceData, meta interface{}, logId, jobId return err } - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"running", "canceled"}, 2*readRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"running", "canceled"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -282,10 +285,10 @@ func handleStopMigrate(d *schema.ResourceData, meta interface{}, logId, jobId st request.JobId = helper.String(jobId) // response = dts.NewPauseMigrateJobResponse() - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().StopMigrateJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().StopMigrateJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -296,9 +299,9 @@ func handleStopMigrate(d *schema.ResourceData, meta interface{}, logId, jobId st return err } - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"canceled"}, 2*readRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"canceled"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -308,8 +311,8 @@ func handleStopMigrate(d *schema.ResourceData, meta interface{}, logId, jobId st } func handleIsolateMigrate(d *schema.ResourceData, meta interface{}, logId, jobId string) error { - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} - ctx := context.WithValue(context.TODO(), logIdKey, logId) + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) err := service.IsolateDtsMigrateJobById(ctx, jobId) if err != nil { @@ -317,7 +320,7 @@ func handleIsolateMigrate(d *schema.ResourceData, meta interface{}, logId, jobId return err } - conf := BuildStateChangeConf([]string{}, []string{"isolated", "canceled"}, 2*readRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"isolated", "canceled"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobConfigStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e diff --git a/tencentcloud/resource_tc_dts_migrate_job_config_test.go b/tencentcloud/services/dts/resource_tc_dts_migrate_job_config_test.go similarity index 96% rename from tencentcloud/resource_tc_dts_migrate_job_config_test.go rename to tencentcloud/services/dts/resource_tc_dts_migrate_job_config_test.go index 2776adf69d..8b032634f6 100644 --- a/tencentcloud/resource_tc_dts_migrate_job_config_test.go +++ b/tencentcloud/services/dts/resource_tc_dts_migrate_job_config_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package dts_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,9 +14,9 @@ func TestAccTencentCloudDtsMigrateJobConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDtsMigrateJobConfig_pause(), diff --git a/tencentcloud/resource_tc_dts_migrate_job_resume_operation.go b/tencentcloud/services/dts/resource_tc_dts_migrate_job_resume_operation.go similarity index 66% rename from tencentcloud/resource_tc_dts_migrate_job_resume_operation.go rename to tencentcloud/services/dts/resource_tc_dts_migrate_job_resume_operation.go index 59ec45847e..0a0cdaea58 100644 --- a/tencentcloud/resource_tc_dts_migrate_job_resume_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_migrate_job_resume_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsMigrateJobResumeOperation() *schema.Resource { +func ResourceTencentCloudDtsMigrateJobResumeOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsMigrateJobResumeOperationCreate, Read: resourceTencentCloudDtsMigrateJobResumeOperationRead, @@ -34,10 +37,10 @@ func resourceTencentCloudDtsMigrateJobResumeOperation() *schema.Resource { } func resourceTencentCloudDtsMigrateJobResumeOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_resume_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_resume_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewResumeMigrateJobRequest() @@ -52,10 +55,10 @@ func resourceTencentCloudDtsMigrateJobResumeOperationCreate(d *schema.ResourceDa request.ResumeOption = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().ResumeMigrateJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().ResumeMigrateJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -67,9 +70,9 @@ func resourceTencentCloudDtsMigrateJobResumeOperationCreate(d *schema.ResourceDa } d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"running", "readyComplete"}, 3*readRetryTimeout, time.Second, service.DtsMigrateJobResumeOperationStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"running", "readyComplete"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobResumeOperationStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -79,15 +82,15 @@ func resourceTencentCloudDtsMigrateJobResumeOperationCreate(d *schema.ResourceDa } func resourceTencentCloudDtsMigrateJobResumeOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_resume_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_resume_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsMigrateJobResumeOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_resume_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_resume_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_migrate_job_start_operation.go b/tencentcloud/services/dts/resource_tc_dts_migrate_job_start_operation.go similarity index 71% rename from tencentcloud/resource_tc_dts_migrate_job_start_operation.go rename to tencentcloud/services/dts/resource_tc_dts_migrate_job_start_operation.go index f901240918..9cc55e59ad 100644 --- a/tencentcloud/resource_tc_dts_migrate_job_start_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_migrate_job_start_operation.go @@ -1,4 +1,4 @@ -package tencentcloud +package dts import ( "context" @@ -6,13 +6,16 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsMigrateJobStartOperation() *schema.Resource { +func ResourceTencentCloudDtsMigrateJobStartOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsMigrateJobStartOperationCreate, Read: resourceTencentCloudDtsMigrateJobStartOperationRead, @@ -29,13 +32,13 @@ func resourceTencentCloudDtsMigrateJobStartOperation() *schema.Resource { } func resourceTencentCloudDtsMigrateJobStartOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_start_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_start_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - tcClient = meta.(*TencentCloudClient).apiV3Conn + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + tcClient = meta.(tccommon.ProviderMeta).GetAPIV3Conn() service = DtsService{client: tcClient} jobId string ) @@ -66,10 +69,10 @@ func resourceTencentCloudDtsMigrateJobStartOperationCreate(d *schema.ResourceDat startMigrateJobRequest := dts.NewStartMigrateJobRequest() startMigrateJobRequest.JobId = helper.String(jobId) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := tcClient.UseDtsClient().StartMigrateJob(startMigrateJobRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, startMigrateJobRequest.GetAction(), startMigrateJobRequest.ToJsonString(), result.ToJsonString()) } @@ -80,7 +83,7 @@ func resourceTencentCloudDtsMigrateJobStartOperationCreate(d *schema.ResourceDat return err } - conf := BuildStateChangeConf([]string{}, []string{"running", "error"}, 3*readRetryTimeout, time.Second, service.DtsMigrateJobStateRefreshFunc(jobId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"running", "error"}, 3*tccommon.ReadRetryTimeout, time.Second, service.DtsMigrateJobStateRefreshFunc(jobId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -90,15 +93,15 @@ func resourceTencentCloudDtsMigrateJobStartOperationCreate(d *schema.ResourceDat } func resourceTencentCloudDtsMigrateJobStartOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_start_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_start_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsMigrateJobStartOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_job_start_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_job_start_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_migrate_job_test.go b/tencentcloud/services/dts/resource_tc_dts_migrate_job_test.go similarity index 87% rename from tencentcloud/resource_tc_dts_migrate_job_test.go rename to tencentcloud/services/dts/resource_tc_dts_migrate_job_test.go index 97078dda56..f19d6a7ace 100644 --- a/tencentcloud/resource_tc_dts_migrate_job_test.go +++ b/tencentcloud/services/dts/resource_tc_dts_migrate_job_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dts_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdts "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dts" + "context" "fmt" "testing" @@ -15,9 +19,9 @@ func TestAccTencentCloudDtsMigrateJobResource_basic(t *testing.T) { curSec := fmt.Sprint(time.Now().Unix()) resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDtsMigrateJobDestroy, Steps: []resource.TestStep{ { @@ -44,10 +48,10 @@ func TestAccTencentCloudDtsMigrateJobResource_basic(t *testing.T) { } func testAccCheckDtsMigrateJobDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dtsService := DtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dtsService := svcdts.NewDtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dts_migrate_job" { continue @@ -70,9 +74,9 @@ func testAccCheckDtsMigrateJobDestroy(s *terraform.State) error { func testAccCheckDtsMigrateJobExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dtsService := DtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dtsService := svcdts.NewDtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rs, ok := s.RootModule().Resources[re] if !ok { diff --git a/tencentcloud/resource_tc_dts_migrate_service.go b/tencentcloud/services/dts/resource_tc_dts_migrate_service.go similarity index 78% rename from tencentcloud/resource_tc_dts_migrate_service.go rename to tencentcloud/services/dts/resource_tc_dts_migrate_service.go index 9908bcd1fa..458830aced 100644 --- a/tencentcloud/resource_tc_dts_migrate_service.go +++ b/tencentcloud/services/dts/resource_tc_dts_migrate_service.go @@ -1,17 +1,20 @@ -package tencentcloud +package dts import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsMigrateService() *schema.Resource { +func ResourceTencentCloudDtsMigrateService() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudDtsMigrateServiceRead, Create: resourceTencentCloudDtsMigrateServiceCreate, @@ -81,15 +84,15 @@ func resourceTencentCloudDtsMigrateService() *schema.Resource { } func resourceTencentCloudDtsMigrateServiceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_service.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_service.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = dts.NewCreateMigrationServiceRequest() response *dts.CreateMigrationServiceResponse - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobId string ) @@ -132,10 +135,10 @@ func resourceTencentCloudDtsMigrateServiceCreate(d *schema.ResourceData, meta in } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().CreateMigrationService(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().CreateMigrationService(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -163,13 +166,13 @@ func resourceTencentCloudDtsMigrateServiceCreate(d *schema.ResourceData, meta in } func resourceTencentCloudDtsMigrateServiceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_service.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_service.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobId = d.Id() ) @@ -234,10 +237,10 @@ func resourceTencentCloudDtsMigrateServiceRead(d *schema.ResourceData, meta inte } func resourceTencentCloudDtsMigrateServiceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_service.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_service.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dts.NewModifyMigrateJobSpecRequest() request.JobId = helper.String(d.Id()) @@ -246,10 +249,10 @@ func resourceTencentCloudDtsMigrateServiceUpdate(d *schema.ResourceData, meta in request.NewInstanceClass = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().ModifyMigrateJobSpec(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().ModifyMigrateJobSpec(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -264,13 +267,13 @@ func resourceTencentCloudDtsMigrateServiceUpdate(d *schema.ResourceData, meta in } func resourceTencentCloudDtsMigrateServiceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_migrate_service.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_migrate_service.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} migrateJobId := d.Id() diff --git a/tencentcloud/resource_tc_dts_migrate_service_test.go b/tencentcloud/services/dts/resource_tc_dts_migrate_service_test.go similarity index 74% rename from tencentcloud/resource_tc_dts_migrate_service_test.go rename to tencentcloud/services/dts/resource_tc_dts_migrate_service_test.go index 31b93b060e..c766eadd49 100644 --- a/tencentcloud/resource_tc_dts_migrate_service_test.go +++ b/tencentcloud/services/dts/resource_tc_dts_migrate_service_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package dts_test import ( "context" @@ -6,8 +6,13 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcdts "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dts" ) func init() { @@ -19,10 +24,10 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dts_migrate_service func testSweepDtsMigrateService(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - dtsService := DtsService{client: cli.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + dtsService := svcdts.NewDtsService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) param := map[string]interface{}{} ret, err := dtsService.DescribeDtsMigrateJobsByFilter(ctx, param) @@ -33,14 +38,14 @@ func testSweepDtsMigrateService(r string) error { for _, v := range ret { delId := *v.JobId - if strings.HasPrefix(*v.JobName, keepResource) || strings.HasPrefix(*v.JobName, defaultResource) { + if strings.HasPrefix(*v.JobName, tcacctest.KeepResource) || strings.HasPrefix(*v.JobName, tcacctest.DefaultResource) { continue } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { err := dtsService.DeleteDtsMigrateServiceById(ctx, delId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -55,8 +60,8 @@ func TestAccTencentCloudDtsMigrateServiceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDtsMigrateServiceDestroy, Steps: []resource.TestStep{ { @@ -83,10 +88,10 @@ func TestAccTencentCloudDtsMigrateServiceResource_basic(t *testing.T) { } func testAccCheckDtsMigrateServiceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dtsService := DtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dtsService := svcdts.NewDtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dts_migrate_service" { continue @@ -109,9 +114,9 @@ func testAccCheckDtsMigrateServiceDestroy(s *terraform.State) error { func testAccCheckDtsMigrateServiceExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dtsService := DtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dtsService := svcdts.NewDtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rs, ok := s.RootModule().Resources[re] if !ok { diff --git a/tencentcloud/resource_tc_dts_sync_check_job_operation.go b/tencentcloud/services/dts/resource_tc_dts_sync_check_job_operation.go similarity index 61% rename from tencentcloud/resource_tc_dts_sync_check_job_operation.go rename to tencentcloud/services/dts/resource_tc_dts_sync_check_job_operation.go index fdf12bed23..592c8c2e10 100644 --- a/tencentcloud/resource_tc_dts_sync_check_job_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_check_job_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncCheckJobOperation() *schema.Resource { +func ResourceTencentCloudDtsSyncCheckJobOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncCheckJobOperationCreate, Read: resourceTencentCloudDtsSyncCheckJobOperationRead, @@ -27,10 +30,10 @@ func resourceTencentCloudDtsSyncCheckJobOperation() *schema.Resource { } func resourceTencentCloudDtsSyncCheckJobOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_check_job_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_check_job_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewCreateCheckSyncJobRequest() @@ -41,10 +44,10 @@ func resourceTencentCloudDtsSyncCheckJobOperationCreate(d *schema.ResourceData, request.JobId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().CreateCheckSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().CreateCheckSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -57,9 +60,9 @@ func resourceTencentCloudDtsSyncCheckJobOperationCreate(d *schema.ResourceData, d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"failed", "success"}, readRetryTimeout, time.Second, service.DtsSyncCheckJobOperationStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"failed", "success"}, tccommon.ReadRetryTimeout, time.Second, service.DtsSyncCheckJobOperationStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -69,15 +72,15 @@ func resourceTencentCloudDtsSyncCheckJobOperationCreate(d *schema.ResourceData, } func resourceTencentCloudDtsSyncCheckJobOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_check_job_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_check_job_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsSyncCheckJobOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_check_job_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_check_job_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_config.go b/tencentcloud/services/dts/resource_tc_dts_sync_config.go similarity index 97% rename from tencentcloud/resource_tc_dts_sync_config.go rename to tencentcloud/services/dts/resource_tc_dts_sync_config.go index f4ec4fe028..416c0231e5 100644 --- a/tencentcloud/resource_tc_dts_sync_config.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_config.go @@ -1,17 +1,20 @@ -package tencentcloud +package dts import ( "context" "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncConfig() *schema.Resource { +func ResourceTencentCloudDtsSyncConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncConfigCreate, Read: resourceTencentCloudDtsSyncConfigRead, @@ -639,8 +642,8 @@ func resourceTencentCloudDtsSyncConfig() *schema.Resource { } func resourceTencentCloudDtsSyncConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var jobId string if v, ok := d.GetOk("job_id"); ok { @@ -652,14 +655,14 @@ func resourceTencentCloudDtsSyncConfigCreate(d *schema.ResourceData, meta interf } func resourceTencentCloudDtsSyncConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobId := d.Id() @@ -1138,10 +1141,10 @@ func resourceTencentCloudDtsSyncConfigRead(d *schema.ResourceData, meta interfac } func resourceTencentCloudDtsSyncConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := dts.NewConfigureSyncJobRequest() @@ -1552,10 +1555,10 @@ func resourceTencentCloudDtsSyncConfigUpdate(d *schema.ResourceData, meta interf } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().ConfigureSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().ConfigureSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -1566,8 +1569,8 @@ func resourceTencentCloudDtsSyncConfigUpdate(d *schema.ResourceData, meta interf return err } - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} - conf := BuildStateChangeConf([]string{}, []string{"Initialized"}, readRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "", []string{})) + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Initialized"}, tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "", []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -1577,8 +1580,8 @@ func resourceTencentCloudDtsSyncConfigUpdate(d *schema.ResourceData, meta interf } func resourceTencentCloudDtsSyncConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_config_test.go b/tencentcloud/services/dts/resource_tc_dts_sync_config_test.go similarity index 97% rename from tencentcloud/resource_tc_dts_sync_config_test.go rename to tencentcloud/services/dts/resource_tc_dts_sync_config_test.go index 7413e3c2df..b33f7e400c 100644 --- a/tencentcloud/resource_tc_dts_sync_config_test.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package dts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudDtsSyncConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDtsSyncConfig, @@ -66,9 +68,9 @@ func TestAccTencentCloudDtsSyncConfigResource_ccn(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDtsSyncConfig_ccn, diff --git a/tencentcloud/resource_tc_dts_sync_job.go b/tencentcloud/services/dts/resource_tc_dts_sync_job.go similarity index 81% rename from tencentcloud/resource_tc_dts_sync_job.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job.go index 074661dccc..7fe1b87988 100644 --- a/tencentcloud/resource_tc_dts_sync_job.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job.go @@ -1,4 +1,4 @@ -package tencentcloud +package dts import ( "context" @@ -6,13 +6,16 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncJob() *schema.Resource { +func ResourceTencentCloudDtsSyncJob() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudDtsSyncJobRead, Create: resourceTencentCloudDtsSyncJobCreate, @@ -128,10 +131,10 @@ func resourceTencentCloudDtsSyncJob() *schema.Resource { } func resourceTencentCloudDtsSyncJobCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewCreateSyncJobRequest() @@ -193,10 +196,10 @@ func resourceTencentCloudDtsSyncJobCreate(d *schema.ResourceData, meta interface request.ExistedJobId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().CreateSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().CreateSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -217,13 +220,13 @@ func resourceTencentCloudDtsSyncJobCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudDtsSyncJobRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} syncJobId := d.Id() @@ -290,13 +293,13 @@ func resourceTencentCloudDtsSyncJobRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudDtsSyncJobDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} syncJobId := d.Id() @@ -304,7 +307,7 @@ func resourceTencentCloudDtsSyncJobDelete(d *schema.ResourceData, meta interface return err } - conf := BuildStateChangeConf([]string{}, []string{"Isolated", "Stopped"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobConfigIsolateStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Isolated", "Stopped"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobConfigIsolateStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -314,7 +317,7 @@ func resourceTencentCloudDtsSyncJobDelete(d *schema.ResourceData, meta interface return err } - conf = BuildStateChangeConf([]string{}, []string{"Offlined"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobConfigDeleteStateRefreshFunc(d.Id(), []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"Offlined"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobConfigDeleteStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e diff --git a/tencentcloud/resource_tc_dts_sync_job_common_operation_test.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_common_operation_test.go similarity index 97% rename from tencentcloud/resource_tc_dts_sync_job_common_operation_test.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_common_operation_test.go index 8e77e0057f..3cce783107 100644 --- a/tencentcloud/resource_tc_dts_sync_job_common_operation_test.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_common_operation_test.go @@ -1,19 +1,21 @@ -package tencentcloud +package dts_test import ( "fmt" "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" ) func TestAccTencentCloudDtsSyncJobStartOperationResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDtsSyncJobOperation_start("operation_basic"), @@ -65,9 +67,9 @@ func TestAccTencentCloudDtsSyncJobStartOperationResource_resize(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDtsSyncJobOperation_start("operation_resize"), diff --git a/tencentcloud/resource_tc_dts_sync_job_continue_operation.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_continue_operation.go similarity index 63% rename from tencentcloud/resource_tc_dts_sync_job_continue_operation.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_continue_operation.go index 24a79f1022..c5c4168805 100644 --- a/tencentcloud/resource_tc_dts_sync_job_continue_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_continue_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncJobContinueOperation() *schema.Resource { +func ResourceTencentCloudDtsSyncJobContinueOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncJobContinueOperationCreate, Read: resourceTencentCloudDtsSyncJobContinueOperationRead, @@ -30,10 +33,10 @@ func resourceTencentCloudDtsSyncJobContinueOperation() *schema.Resource { } func resourceTencentCloudDtsSyncJobContinueOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_continue_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_continue_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewContinueSyncJobRequest() @@ -44,10 +47,10 @@ func resourceTencentCloudDtsSyncJobContinueOperationCreate(d *schema.ResourceDat jobId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().ContinueSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().ContinueSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -60,9 +63,9 @@ func resourceTencentCloudDtsSyncJobContinueOperationCreate(d *schema.ResourceDat d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"Running"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Running", []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Running"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Running", []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -72,15 +75,15 @@ func resourceTencentCloudDtsSyncJobContinueOperationCreate(d *schema.ResourceDat } func resourceTencentCloudDtsSyncJobContinueOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_continue_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_continue_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsSyncJobContinueOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_continue_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_continue_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_job_isolate_operation.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_isolate_operation.go similarity index 62% rename from tencentcloud/resource_tc_dts_sync_job_isolate_operation.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_isolate_operation.go index 1e2afecd2c..85911bdb38 100644 --- a/tencentcloud/resource_tc_dts_sync_job_isolate_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_isolate_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncJobIsolateOperation() *schema.Resource { +func ResourceTencentCloudDtsSyncJobIsolateOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncJobIsolateOperationCreate, Read: resourceTencentCloudDtsSyncJobIsolateOperationRead, @@ -27,10 +30,10 @@ func resourceTencentCloudDtsSyncJobIsolateOperation() *schema.Resource { } func resourceTencentCloudDtsSyncJobIsolateOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_isolate_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_isolate_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewIsolateSyncJobRequest() @@ -41,10 +44,10 @@ func resourceTencentCloudDtsSyncJobIsolateOperationCreate(d *schema.ResourceData jobId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().IsolateSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().IsolateSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -57,9 +60,9 @@ func resourceTencentCloudDtsSyncJobIsolateOperationCreate(d *schema.ResourceData d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"Isolated"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobTradeStateRefreshFunc(d.Id(), "Isolated", []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Isolated"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobTradeStateRefreshFunc(d.Id(), "Isolated", []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -69,15 +72,15 @@ func resourceTencentCloudDtsSyncJobIsolateOperationCreate(d *schema.ResourceData } func resourceTencentCloudDtsSyncJobIsolateOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_isolate_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_isolate_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsSyncJobIsolateOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_isolate_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_isolate_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_job_pause_operation.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_pause_operation.go similarity index 62% rename from tencentcloud/resource_tc_dts_sync_job_pause_operation.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_pause_operation.go index 7f733d05fb..285d019e71 100644 --- a/tencentcloud/resource_tc_dts_sync_job_pause_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_pause_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncJobPauseOperation() *schema.Resource { +func ResourceTencentCloudDtsSyncJobPauseOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncJobPauseOperationCreate, Read: resourceTencentCloudDtsSyncJobPauseOperationRead, @@ -27,10 +30,10 @@ func resourceTencentCloudDtsSyncJobPauseOperation() *schema.Resource { } func resourceTencentCloudDtsSyncJobPauseOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_pause_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_pause_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewPauseSyncJobRequest() @@ -41,10 +44,10 @@ func resourceTencentCloudDtsSyncJobPauseOperationCreate(d *schema.ResourceData, jobId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().PauseSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().PauseSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -57,9 +60,9 @@ func resourceTencentCloudDtsSyncJobPauseOperationCreate(d *schema.ResourceData, d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"Paused"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Paused", []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Paused"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Paused", []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -69,15 +72,15 @@ func resourceTencentCloudDtsSyncJobPauseOperationCreate(d *schema.ResourceData, } func resourceTencentCloudDtsSyncJobPauseOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_pause_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_pause_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsSyncJobPauseOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_pause_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_pause_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_job_recover_operation.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_recover_operation.go similarity index 59% rename from tencentcloud/resource_tc_dts_sync_job_recover_operation.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_recover_operation.go index 6aa9abdac0..d433a8318e 100644 --- a/tencentcloud/resource_tc_dts_sync_job_recover_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_recover_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncJobRecoverOperation() *schema.Resource { +func ResourceTencentCloudDtsSyncJobRecoverOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncJobRecoverOperationCreate, Read: resourceTencentCloudDtsSyncJobRecoverOperationRead, @@ -27,10 +30,10 @@ func resourceTencentCloudDtsSyncJobRecoverOperation() *schema.Resource { } func resourceTencentCloudDtsSyncJobRecoverOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_recover_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_recover_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewRecoverSyncJobRequest() @@ -41,10 +44,10 @@ func resourceTencentCloudDtsSyncJobRecoverOperationCreate(d *schema.ResourceData jobId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().RecoverSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().RecoverSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -57,15 +60,15 @@ func resourceTencentCloudDtsSyncJobRecoverOperationCreate(d *schema.ResourceData d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"Running", "Stopped"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Stopped", []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Running", "Stopped"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Stopped", []string{})) if _, e := conf.WaitForState(); e != nil { return e } - conf = BuildStateChangeConf([]string{}, []string{"Normal"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobTradeStateRefreshFunc(d.Id(), "", []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"Normal"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobTradeStateRefreshFunc(d.Id(), "", []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -75,15 +78,15 @@ func resourceTencentCloudDtsSyncJobRecoverOperationCreate(d *schema.ResourceData } func resourceTencentCloudDtsSyncJobRecoverOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_recover_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_recover_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsSyncJobRecoverOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_recover_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_recover_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_job_resize_operation.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_resize_operation.go similarity index 61% rename from tencentcloud/resource_tc_dts_sync_job_resize_operation.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_resize_operation.go index 5dfbdfd653..c1b978d0d6 100644 --- a/tencentcloud/resource_tc_dts_sync_job_resize_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_resize_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncJobResizeOperation() *schema.Resource { +func ResourceTencentCloudDtsSyncJobResizeOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncJobResizeOperationCreate, Read: resourceTencentCloudDtsSyncJobResizeOperationRead, @@ -34,10 +37,10 @@ func resourceTencentCloudDtsSyncJobResizeOperation() *schema.Resource { } func resourceTencentCloudDtsSyncJobResizeOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_resize_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_resize_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewResizeSyncJobRequest() @@ -52,10 +55,10 @@ func resourceTencentCloudDtsSyncJobResizeOperationCreate(d *schema.ResourceData, request.NewInstanceClass = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().ResizeSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().ResizeSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -68,15 +71,15 @@ func resourceTencentCloudDtsSyncJobResizeOperationCreate(d *schema.ResourceData, d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"Running", "Stopped"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Stopped", []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Running", "Stopped"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Stopped", []string{})) if _, e := conf.WaitForState(); e != nil { return e } - conf = BuildStateChangeConf([]string{}, []string{"Normal", "Isolated"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobTradeStateRefreshFunc(d.Id(), "Isolated", []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"Normal", "Isolated"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobTradeStateRefreshFunc(d.Id(), "Isolated", []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -86,15 +89,15 @@ func resourceTencentCloudDtsSyncJobResizeOperationCreate(d *schema.ResourceData, } func resourceTencentCloudDtsSyncJobResizeOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_resize_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_resize_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsSyncJobResizeOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_resize_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_resize_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_job_resume_operation.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_resume_operation.go similarity index 61% rename from tencentcloud/resource_tc_dts_sync_job_resume_operation.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_resume_operation.go index b00d523371..48920a057a 100644 --- a/tencentcloud/resource_tc_dts_sync_job_resume_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_resume_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncJobResumeOperation() *schema.Resource { +func ResourceTencentCloudDtsSyncJobResumeOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncJobResumeOperationCreate, Read: resourceTencentCloudDtsSyncJobResumeOperationRead, @@ -27,10 +30,10 @@ func resourceTencentCloudDtsSyncJobResumeOperation() *schema.Resource { } func resourceTencentCloudDtsSyncJobResumeOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_resume_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_resume_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewResumeSyncJobRequest() @@ -41,10 +44,10 @@ func resourceTencentCloudDtsSyncJobResumeOperationCreate(d *schema.ResourceData, request.JobId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().ResumeSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().ResumeSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -57,9 +60,9 @@ func resourceTencentCloudDtsSyncJobResumeOperationCreate(d *schema.ResourceData, d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"Running", "Stopped", "Failed"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobResumeOperationStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Running", "Stopped", "Failed"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobResumeOperationStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -69,15 +72,15 @@ func resourceTencentCloudDtsSyncJobResumeOperationCreate(d *schema.ResourceData, } func resourceTencentCloudDtsSyncJobResumeOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_resume_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_resume_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsSyncJobResumeOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_resume_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_resume_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_job_start_operation.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_start_operation.go similarity index 62% rename from tencentcloud/resource_tc_dts_sync_job_start_operation.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_start_operation.go index 0712b262a0..4b889f24af 100644 --- a/tencentcloud/resource_tc_dts_sync_job_start_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_start_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncJobStartOperation() *schema.Resource { +func ResourceTencentCloudDtsSyncJobStartOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncJobStartOperationCreate, Read: resourceTencentCloudDtsSyncJobStartOperationRead, @@ -27,10 +30,10 @@ func resourceTencentCloudDtsSyncJobStartOperation() *schema.Resource { } func resourceTencentCloudDtsSyncJobStartOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_start_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_start_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewStartSyncJobRequest() @@ -41,10 +44,10 @@ func resourceTencentCloudDtsSyncJobStartOperationCreate(d *schema.ResourceData, jobId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().StartSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().StartSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -57,9 +60,9 @@ func resourceTencentCloudDtsSyncJobStartOperationCreate(d *schema.ResourceData, d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"Running"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Running", []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Running"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Running", []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -69,15 +72,15 @@ func resourceTencentCloudDtsSyncJobStartOperationCreate(d *schema.ResourceData, } func resourceTencentCloudDtsSyncJobStartOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_start_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_start_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsSyncJobStartOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_start_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_start_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_job_stop_operation.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_stop_operation.go similarity index 62% rename from tencentcloud/resource_tc_dts_sync_job_stop_operation.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_stop_operation.go index 60162e5486..3efbdd8aaa 100644 --- a/tencentcloud/resource_tc_dts_sync_job_stop_operation.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_stop_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package dts import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudDtsSyncJobStopOperation() *schema.Resource { +func ResourceTencentCloudDtsSyncJobStopOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDtsSyncJobStopOperationCreate, Read: resourceTencentCloudDtsSyncJobStopOperationRead, @@ -27,10 +30,10 @@ func resourceTencentCloudDtsSyncJobStopOperation() *schema.Resource { } func resourceTencentCloudDtsSyncJobStopOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_stop_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_stop_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = dts.NewStopSyncJobRequest() @@ -41,10 +44,10 @@ func resourceTencentCloudDtsSyncJobStopOperationCreate(d *schema.ResourceData, m jobId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseDtsClient().StopSyncJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDtsClient().StopSyncJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -57,9 +60,9 @@ func resourceTencentCloudDtsSyncJobStopOperationCreate(d *schema.ResourceData, m d.SetId(jobId) - service := DtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := DtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"Stopped"}, 2*readRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Stopped", []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"Stopped"}, 2*tccommon.ReadRetryTimeout, time.Second, service.DtsSyncJobStateRefreshFunc(d.Id(), "Stopped", []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -69,15 +72,15 @@ func resourceTencentCloudDtsSyncJobStopOperationCreate(d *schema.ResourceData, m } func resourceTencentCloudDtsSyncJobStopOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_stop_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_stop_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudDtsSyncJobStopOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_dts_sync_job_stop_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_dts_sync_job_stop_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_dts_sync_job_test.go b/tencentcloud/services/dts/resource_tc_dts_sync_job_test.go similarity index 73% rename from tencentcloud/resource_tc_dts_sync_job_test.go rename to tencentcloud/services/dts/resource_tc_dts_sync_job_test.go index 556d70d53c..3db5c54bed 100644 --- a/tencentcloud/resource_tc_dts_sync_job_test.go +++ b/tencentcloud/services/dts/resource_tc_dts_sync_job_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package dts_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcdts "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/dts" + "context" "fmt" "strings" @@ -8,6 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -20,10 +25,10 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_dts_sync_job func testSweepDtsSyncJob(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - dtsService := DtsService{client: cli.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + dtsService := svcdts.NewDtsService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) param := map[string]interface{}{} ret, err := dtsService.DescribeDtsSyncJobsByFilter(ctx, param) @@ -34,14 +39,14 @@ func testSweepDtsSyncJob(r string) error { for _, v := range ret { delId := *v.JobId - if strings.HasPrefix(*v.JobName, keepResource) || strings.HasPrefix(*v.JobName, defaultResource) { + if strings.HasPrefix(*v.JobName, tcacctest.KeepResource) || strings.HasPrefix(*v.JobName, tcacctest.DefaultResource) { continue } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { err := dtsService.DeleteDtsSyncJobById(ctx, delId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -56,8 +61,8 @@ func TestAccTencentCloudDtsSyncJobResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckDtsSyncJobDestroy, Steps: []resource.TestStep{ { @@ -80,10 +85,10 @@ func TestAccTencentCloudDtsSyncJobResource_basic(t *testing.T) { } func testAccCheckDtsSyncJobDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - dtsService := DtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + dtsService := svcdts.NewDtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_dts_sync_job" { continue @@ -106,9 +111,9 @@ func testAccCheckDtsSyncJobDestroy(s *terraform.State) error { func testAccCheckDtsSyncJobExists(re string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - dtsService := DtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + dtsService := svcdts.NewDtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rs, ok := s.RootModule().Resources[re] if !ok { diff --git a/tencentcloud/service_tencentcloud_dts.go b/tencentcloud/services/dts/service_tencentcloud_dts.go similarity index 94% rename from tencentcloud/service_tencentcloud_dts.go rename to tencentcloud/services/dts/service_tencentcloud_dts.go index a51681a927..5d70cc7ed2 100644 --- a/tencentcloud/service_tencentcloud_dts.go +++ b/tencentcloud/services/dts/service_tencentcloud_dts.go @@ -1,4 +1,4 @@ -package tencentcloud +package dts import ( "context" @@ -7,8 +7,11 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" dts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts/v20211206" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" @@ -19,13 +22,17 @@ const ( DTSTradeStatus = "TradeStatus" ) +func NewDtsService(client *connectivity.TencentCloudClient) DtsService { + return DtsService{client: client} +} + type DtsService struct { client *connectivity.TencentCloudClient } // sync job func (me *DtsService) DescribeDtsSyncJob(ctx context.Context, jobId *string) (jobInfo *dts.SyncJobInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) params := map[string]interface{}{} if jobId != nil { @@ -49,7 +56,7 @@ func (me *DtsService) DescribeDtsSyncJob(ctx context.Context, jobId *string) (jo func (me *DtsService) DescribeDtsSyncJobsByFilter(ctx context.Context, param map[string]interface{}) (syncJobs []*dts.SyncJobInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dts.NewDescribeSyncJobsRequest() ) @@ -130,7 +137,7 @@ func (me *DtsService) DescribeDtsSyncJobsByFilter(ctx context.Context, param map } func (me *DtsService) IsolateDtsSyncJobById(ctx context.Context, jobId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewIsolateSyncJobRequest() request.JobId = helper.String(jobId) @@ -155,7 +162,7 @@ func (me *DtsService) IsolateDtsSyncJobById(ctx context.Context, jobId string) ( } func (me *DtsService) DestroyDtsSyncJobById(ctx context.Context, jobId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewDestroySyncJobRequest() request.JobId = helper.String(jobId) @@ -181,7 +188,7 @@ func (me *DtsService) DestroyDtsSyncJobById(ctx context.Context, jobId string) ( func (me *DtsService) DeleteDtsSyncJobById(ctx context.Context, jobId string) (errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dts.NewDestroySyncJobRequest() response = dts.NewDestroySyncJobResponse() ) @@ -203,7 +210,7 @@ func (me *DtsService) DeleteDtsSyncJobById(ctx context.Context, jobId string) (e // } ratelimit.Check(request.GetAction()) - err = resource.Retry(3*writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(3*tccommon.WriteRetryTimeout, func() *resource.RetryError { request.JobId = helper.String(jobId) _, err := me.client.UseDtsClient().DestroySyncJob(request) if err != nil { @@ -227,12 +234,12 @@ func (me *DtsService) DeleteDtsSyncJobById(ctx context.Context, jobId string) (e } func (me *DtsService) PollingSyncJobStatusUntil(ctx context.Context, jobId string, targetStatus string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) - err := resource.Retry(3*readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError { ret, err := me.DescribeDtsSyncJob(ctx, helper.String(jobId)) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if ret != nil && ret.Status != nil { @@ -255,7 +262,7 @@ func (me *DtsService) PollingSyncJobStatusUntil(ctx context.Context, jobId strin // compare task func (me *DtsService) DescribeDtsCompareTasksByFilter(ctx context.Context, param map[string]interface{}) (compareTasks []*dts.CompareTaskItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dts.NewDescribeCompareTasksRequest() ) @@ -303,7 +310,7 @@ func (me *DtsService) DescribeDtsCompareTasksByFilter(ctx context.Context, param } func (me *DtsService) DescribeDtsCompareTask(ctx context.Context, jobId, compareTaskId *string) (tasks []*dts.CompareTaskItem, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) param := map[string]interface{}{ "job_id": jobId, } @@ -336,7 +343,7 @@ func (me *DtsService) DescribeDtsCompareTask(ctx context.Context, jobId, compare } func (me *DtsService) StopDtsCompareById(ctx context.Context, jobId, compareTaskId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewStopCompareRequest() request.JobId = helper.String(jobId) @@ -363,7 +370,7 @@ func (me *DtsService) StopDtsCompareById(ctx context.Context, jobId, compareTask func (me *DtsService) DeleteDtsCompareTaskById(ctx context.Context, jobId, compareTaskId string) (errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dts.NewDeleteCompareTaskRequest() response = dts.NewDeleteCompareTaskResponse() ) @@ -405,12 +412,12 @@ func (me *DtsService) DeleteDtsCompareTaskById(ctx context.Context, jobId, compa } func (me *DtsService) PollingCompareTaskStatusUntil(ctx context.Context, jobId, compareTaskId, targetStatus string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) - err := resource.Retry(3*readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError { ret, err := me.DescribeDtsCompareTask(ctx, helper.String(jobId), helper.String(compareTaskId)) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if ret != nil && ret[0].Status != nil { @@ -433,7 +440,7 @@ func (me *DtsService) PollingCompareTaskStatusUntil(ctx context.Context, jobId, // migration job func (me *DtsService) DescribeDtsMigrateJobsByFilter(ctx context.Context, param map[string]interface{}) (migrateJobs []*dts.JobItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dts.NewDescribeMigrationJobsRequest() ) @@ -535,7 +542,7 @@ func (me *DtsService) DescribeDtsMigrateJobsByFilter(ctx context.Context, param func (me *DtsService) DescribeDtsMigrateJobById(ctx context.Context, jobId string) (migrateJob *dts.DescribeMigrationDetailResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dts.NewDescribeMigrationDetailRequest() ) @@ -561,7 +568,7 @@ func (me *DtsService) DescribeDtsMigrateJobById(ctx context.Context, jobId strin } func (me *DtsService) IsolateDtsMigrateJobById(ctx context.Context, jobId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewIsolateMigrateJobRequest() request.JobId = helper.String(jobId) @@ -587,7 +594,7 @@ func (me *DtsService) IsolateDtsMigrateJobById(ctx context.Context, jobId string func (me *DtsService) DeleteDtsMigrateServiceById(ctx context.Context, jobId string) (errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dts.NewDestroyMigrateJobRequest() response = dts.NewDestroyMigrateJobResponse() ) @@ -611,7 +618,7 @@ func (me *DtsService) DeleteDtsMigrateServiceById(ctx context.Context, jobId str } ratelimit.Check(request.GetAction()) - err = resource.Retry(3*writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(3*tccommon.WriteRetryTimeout, func() *resource.RetryError { request.JobId = helper.String(jobId) _, err := me.client.UseDtsClient().DestroyMigrateJob(request) if err != nil { @@ -636,12 +643,12 @@ func (me *DtsService) DeleteDtsMigrateServiceById(ctx context.Context, jobId str } func (me *DtsService) PollingMigrateJobStatusUntil(ctx context.Context, jobId, statusType string, targetStatus []string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) - err := resource.Retry(3*readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError { ret, err := me.DescribeDtsMigrateJobById(ctx, jobId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if statusType == DTSJobStatus { @@ -677,7 +684,7 @@ func (me *DtsService) PollingMigrateJobStatusUntil(ctx context.Context, jobId, s } func (me *DtsService) DescribeDtsMigrateServiceById(ctx context.Context, jobId string) (migrateService *dts.DescribeMigrationDetailResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewDescribeMigrationDetailRequest() request.JobId = &jobId @@ -702,7 +709,7 @@ func (me *DtsService) DescribeDtsMigrateServiceById(ctx context.Context, jobId s } func (me *DtsService) DescribeDtsMigrateCheckById(ctx context.Context, jobId string) (migrateCheckJob *dts.DescribeMigrationCheckJobResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewDescribeMigrationCheckJobRequest() if jobId != "" { @@ -730,7 +737,7 @@ func (me *DtsService) DescribeDtsMigrateCheckById(ctx context.Context, jobId str func (me *DtsService) DtsMigrateServiceStateRefreshFunc(jobId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsMigrateServiceById(ctx, jobId) @@ -744,7 +751,7 @@ func (me *DtsService) DtsMigrateServiceStateRefreshFunc(jobId string, failStates func (me *DtsService) DtsMigrateJobStateRefreshFunc(jobId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsMigrateJobById(ctx, jobId) @@ -758,7 +765,7 @@ func (me *DtsService) DtsMigrateJobStateRefreshFunc(jobId string, failStates []s func (me *DtsService) DtsMigrateCheckConfigStateRefreshFunc(jobId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsMigrateCheckById(ctx, jobId) @@ -771,7 +778,7 @@ func (me *DtsService) DtsMigrateCheckConfigStateRefreshFunc(jobId string, failSt } func (me *DtsService) DescribeDtsSyncCheckJobOperationById(ctx context.Context, jobId string) (syncCheckJobOperation *dts.DescribeCheckSyncJobResultResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewDescribeCheckSyncJobResultRequest() request.JobId = &jobId @@ -797,7 +804,7 @@ func (me *DtsService) DescribeDtsSyncCheckJobOperationById(ctx context.Context, func (me *DtsService) DtsSyncCheckJobOperationStateRefreshFunc(jobId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsSyncCheckJobOperationById(ctx, jobId) @@ -820,7 +827,7 @@ func (me *DtsService) DtsSyncCheckJobOperationStateRefreshFunc(jobId string, fai func (me *DtsService) DtsMigrateJobResumeOperationStateRefreshFunc(jobId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsMigrateJobById(ctx, jobId) @@ -842,7 +849,7 @@ func (me *DtsService) DtsMigrateJobResumeOperationStateRefreshFunc(jobId string, } func (me *DtsService) DescribeDtsSyncJobResumeOperationById(ctx context.Context, jobId string) (syncJobResumeOperation *dts.DescribeSyncJobsResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewDescribeSyncJobsRequest() request.JobId = &jobId @@ -868,7 +875,7 @@ func (me *DtsService) DescribeDtsSyncJobResumeOperationById(ctx context.Context, func (me *DtsService) DtsSyncJobResumeOperationStateRefreshFunc(jobId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil param := map[string]interface{}{ "job_id": helper.String(jobId), @@ -897,7 +904,7 @@ func (me *DtsService) DtsSyncJobResumeOperationStateRefreshFunc(jobId string, fa } func (me *DtsService) DescribeDtsCompareTaskStopOperationById(ctx context.Context, jobId string, compareTaskId string) (result *dts.DescribeCompareReportResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewDescribeCompareReportRequest() request.JobId = &jobId @@ -927,7 +934,7 @@ func (me *DtsService) DescribeDtsCompareTaskStopOperationById(ctx context.Contex func (me *DtsService) DtsMigrateJobConfigStateRefreshFunc(jobId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsMigrateJobById(ctx, jobId) @@ -941,7 +948,7 @@ func (me *DtsService) DtsMigrateJobConfigStateRefreshFunc(jobId string, failStat func (me *DtsService) DtsSyncJobTradeStateRefreshFunc(jobId, defaultStatus string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsSyncJob(ctx, &jobId) @@ -959,7 +966,7 @@ func (me *DtsService) DtsSyncJobTradeStateRefreshFunc(jobId, defaultStatus strin func (me *DtsService) DtsSyncJobStateRefreshFunc(jobId, defaultStatus string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsSyncJob(ctx, &jobId) @@ -977,7 +984,7 @@ func (me *DtsService) DtsSyncJobStateRefreshFunc(jobId, defaultStatus string, fa func (me *DtsService) DescribeDtsMigrateDbInstancesByFilter(ctx context.Context, param map[string]interface{}) (migrateDbInstances []*dts.MigrateDBItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = dts.NewDescribeMigrateDBInstancesRequest() ) @@ -1051,7 +1058,7 @@ func (me *DtsService) DescribeDtsMigrateDbInstancesByFilter(ctx context.Context, } func (me *DtsService) DescribeDtsSyncConfigById(ctx context.Context, jobId string) (syncConfig *dts.SyncJobInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := dts.NewDescribeSyncJobsRequest() request.JobId = &jobId @@ -1081,7 +1088,7 @@ func (me *DtsService) DescribeDtsSyncConfigById(ctx context.Context, jobId strin func (me *DtsService) DtsSyncJobConfigIsolateStateRefreshFunc(jobId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsSyncConfigById(ctx, jobId) @@ -1099,7 +1106,7 @@ func (me *DtsService) DtsSyncJobConfigIsolateStateRefreshFunc(jobId string, fail func (me *DtsService) DtsSyncJobConfigDeleteStateRefreshFunc(jobId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeDtsSyncConfigById(ctx, jobId) diff --git a/tencentcloud/data_source_tc_eb_bus.go b/tencentcloud/services/eb/data_source_tc_eb_bus.go similarity index 92% rename from tencentcloud/data_source_tc_eb_bus.go rename to tencentcloud/services/eb/data_source_tc_eb_bus.go index 2f47b47ac1..160560fcf1 100644 --- a/tencentcloud/data_source_tc_eb_bus.go +++ b/tencentcloud/services/eb/data_source_tc_eb_bus.go @@ -1,15 +1,18 @@ -package tencentcloud +package eb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEbBus() *schema.Resource { +func DataSourceTencentCloudEbBus() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEbBusRead, Schema: map[string]*schema.Schema{ @@ -141,12 +144,12 @@ func dataSourceTencentCloudEbBus() *schema.Resource { } func dataSourceTencentCloudEbBusRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_eb_bus.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_eb_bus.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("order_by"); ok { @@ -177,14 +180,14 @@ func dataSourceTencentCloudEbBusRead(d *schema.ResourceData, meta interface{}) e paramMap["filters"] = tmpSet } - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var eventBuses []*eb.EventBus - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeEbBusByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } eventBuses = result return nil @@ -276,7 +279,7 @@ func dataSourceTencentCloudEbBusRead(d *schema.ResourceData, meta interface{}) e d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_eb_bus_test.go b/tencentcloud/services/eb/data_source_tc_eb_bus_test.go similarity index 86% rename from tencentcloud/data_source_tc_eb_bus_test.go rename to tencentcloud/services/eb/data_source_tc_eb_bus_test.go index 7fdffa784b..562b471700 100644 --- a/tencentcloud/data_source_tc_eb_bus_test.go +++ b/tencentcloud/services/eb/data_source_tc_eb_bus_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package eb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudEbBusDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEbBusDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_eb_bus.bus"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eb_bus.bus"), resource.TestCheckResourceAttrSet("data.tencentcloud_eb_bus.bus", "event_buses.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_eb_bus.bus", "event_buses.0.add_time"), resource.TestCheckResourceAttrSet("data.tencentcloud_eb_bus.bus", "event_buses.0.description"), diff --git a/tencentcloud/data_source_tc_eb_event_rules.go b/tencentcloud/services/eb/data_source_tc_eb_event_rules.go similarity index 91% rename from tencentcloud/data_source_tc_eb_event_rules.go rename to tencentcloud/services/eb/data_source_tc_eb_event_rules.go index 7cece8f1b3..313631a6bf 100644 --- a/tencentcloud/data_source_tc_eb_event_rules.go +++ b/tencentcloud/services/eb/data_source_tc_eb_event_rules.go @@ -1,15 +1,18 @@ -package tencentcloud +package eb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEbEventRules() *schema.Resource { +func DataSourceTencentCloudEbEventRules() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEbEventRulesRead, Schema: map[string]*schema.Schema{ @@ -143,12 +146,12 @@ func dataSourceTencentCloudEbEventRules() *schema.Resource { } func dataSourceTencentCloudEbEventRulesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_eb_event_rules.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_eb_event_rules.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("event_bus_id"); ok { @@ -163,14 +166,14 @@ func dataSourceTencentCloudEbEventRulesRead(d *schema.ResourceData, meta interfa paramMap["Order"] = helper.String(v.(string)) } - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var rules []*eb.Rule - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeEbEventRulesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } rules = result return nil @@ -271,7 +274,7 @@ func dataSourceTencentCloudEbEventRulesRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_eb_event_rules_test.go b/tencentcloud/services/eb/data_source_tc_eb_event_rules_test.go similarity index 89% rename from tencentcloud/data_source_tc_eb_event_rules_test.go rename to tencentcloud/services/eb/data_source_tc_eb_event_rules_test.go index 20b11df9e3..284170aa81 100644 --- a/tencentcloud/data_source_tc_eb_event_rules_test.go +++ b/tencentcloud/services/eb/data_source_tc_eb_event_rules_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package eb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudEbEventRulesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEbEventRulesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_eb_event_rules.event_rules"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eb_event_rules.event_rules"), resource.TestCheckResourceAttrSet("data.tencentcloud_eb_event_rules.event_rules", "rules.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_eb_event_rules.event_rules", "rules.0.add_time"), resource.TestCheckResourceAttrSet("data.tencentcloud_eb_event_rules.event_rules", "rules.0.description"), diff --git a/tencentcloud/data_source_tc_eb_plateform_event_template.go b/tencentcloud/services/eb/data_source_tc_eb_plateform_event_template.go similarity index 69% rename from tencentcloud/data_source_tc_eb_plateform_event_template.go rename to tencentcloud/services/eb/data_source_tc_eb_plateform_event_template.go index 5d53713d18..fb3b1feff4 100644 --- a/tencentcloud/data_source_tc_eb_plateform_event_template.go +++ b/tencentcloud/services/eb/data_source_tc_eb_plateform_event_template.go @@ -1,14 +1,17 @@ -package tencentcloud +package eb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEbPlateformEventTemplate() *schema.Resource { +func DataSourceTencentCloudEbPlateformEventTemplate() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEbPlateformEventTemplateRead, Schema: map[string]*schema.Schema{ @@ -34,12 +37,12 @@ func dataSourceTencentCloudEbPlateformEventTemplate() *schema.Resource { } func dataSourceTencentCloudEbPlateformEventTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_eb_plateform_event_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_eb_plateform_event_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var eventType string paramMap := make(map[string]interface{}) @@ -48,13 +51,13 @@ func dataSourceTencentCloudEbPlateformEventTemplateRead(d *schema.ResourceData, paramMap["EventType"] = helper.String(v.(string)) } - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var eventTemplate *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeEbPlateformEventTemplateByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } eventTemplate = result return nil @@ -70,7 +73,7 @@ func dataSourceTencentCloudEbPlateformEventTemplateRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash([]string{eventType, *eventTemplate})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), eventTemplate); e != nil { + if e := tccommon.WriteToFile(output.(string), eventTemplate); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_eb_plateform_event_template_test.go b/tencentcloud/services/eb/data_source_tc_eb_plateform_event_template_test.go similarity index 69% rename from tencentcloud/data_source_tc_eb_plateform_event_template_test.go rename to tencentcloud/services/eb/data_source_tc_eb_plateform_event_template_test.go index 16af0edaa7..43da1dd264 100644 --- a/tencentcloud/data_source_tc_eb_plateform_event_template_test.go +++ b/tencentcloud/services/eb/data_source_tc_eb_plateform_event_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package eb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,15 +13,15 @@ func TestAccTencentCloudEbPlateformEventTemplateDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-chongqing") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-chongqing") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEbPlateformEventTemplateDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_eb_plateform_event_template.plateform_event_template"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eb_plateform_event_template.plateform_event_template"), resource.TestCheckResourceAttrSet("data.tencentcloud_eb_plateform_event_template.plateform_event_template", "event_template"), ), }, diff --git a/tencentcloud/data_source_tc_eb_platform_event_names.go b/tencentcloud/services/eb/data_source_tc_eb_platform_event_names.go similarity index 79% rename from tencentcloud/data_source_tc_eb_platform_event_names.go rename to tencentcloud/services/eb/data_source_tc_eb_platform_event_names.go index 65a02fb02d..262de4bedf 100644 --- a/tencentcloud/data_source_tc_eb_platform_event_names.go +++ b/tencentcloud/services/eb/data_source_tc_eb_platform_event_names.go @@ -1,15 +1,18 @@ -package tencentcloud +package eb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEbPlatformEventNames() *schema.Resource { +func DataSourceTencentCloudEbPlatformEventNames() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEbPlateformRead, Schema: map[string]*schema.Schema{ @@ -49,11 +52,11 @@ func dataSourceTencentCloudEbPlatformEventNames() *schema.Resource { } func dataSourceTencentCloudEbPlateformRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_eb_platform_event_names.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_eb_platform_event_names.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var productType string paramMap := make(map[string]interface{}) @@ -62,13 +65,13 @@ func dataSourceTencentCloudEbPlateformRead(d *schema.ResourceData, meta interfac paramMap["ProductType"] = helper.String(v.(string)) } - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var eventNames []*eb.PlatformEventDetail - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeEbPlateformByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } eventNames = result return nil @@ -101,7 +104,7 @@ func dataSourceTencentCloudEbPlateformRead(d *schema.ResourceData, meta interfac d.SetId(helper.DataResourceIdsHash(append(ids, productType))) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_eb_platform_event_names_test.go b/tencentcloud/services/eb/data_source_tc_eb_platform_event_names_test.go similarity index 65% rename from tencentcloud/data_source_tc_eb_platform_event_names_test.go rename to tencentcloud/services/eb/data_source_tc_eb_platform_event_names_test.go index 9302d211fa..2673d169c4 100644 --- a/tencentcloud/data_source_tc_eb_platform_event_names_test.go +++ b/tencentcloud/services/eb/data_source_tc_eb_platform_event_names_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package eb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,15 +13,15 @@ func TestAccTencentCloudEbPlatformEventNamesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-chongqing") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-chongqing") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEbPlatformEventNamesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_eb_platform_event_names.platform_event_names"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eb_platform_event_names.platform_event_names"), ), }, }, diff --git a/tencentcloud/data_source_tc_eb_platform_event_patterns.go b/tencentcloud/services/eb/data_source_tc_eb_platform_event_patterns.go similarity index 80% rename from tencentcloud/data_source_tc_eb_platform_event_patterns.go rename to tencentcloud/services/eb/data_source_tc_eb_platform_event_patterns.go index e95a98167d..773e712242 100644 --- a/tencentcloud/data_source_tc_eb_platform_event_patterns.go +++ b/tencentcloud/services/eb/data_source_tc_eb_platform_event_patterns.go @@ -1,15 +1,18 @@ -package tencentcloud +package eb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEbPlatformEventPatterns() *schema.Resource { +func DataSourceTencentCloudEbPlatformEventPatterns() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEbPlatformEventPatternsRead, Schema: map[string]*schema.Schema{ @@ -49,12 +52,12 @@ func dataSourceTencentCloudEbPlatformEventPatterns() *schema.Resource { } func dataSourceTencentCloudEbPlatformEventPatternsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_eb_platform_event_patterns.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_eb_platform_event_patterns.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var productType string paramMap := make(map[string]interface{}) @@ -63,14 +66,14 @@ func dataSourceTencentCloudEbPlatformEventPatternsRead(d *schema.ResourceData, m paramMap["ProductType"] = helper.String(v.(string)) } - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var eventPatterns []*eb.PlatformEventSummary - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeEbPlatformEventPatternsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } eventPatterns = result return nil @@ -103,7 +106,7 @@ func dataSourceTencentCloudEbPlatformEventPatternsRead(d *schema.ResourceData, m d.SetId(helper.DataResourceIdsHash(append(ids, productType))) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_eb_platform_event_patterns_test.go b/tencentcloud/services/eb/data_source_tc_eb_platform_event_patterns_test.go similarity index 65% rename from tencentcloud/data_source_tc_eb_platform_event_patterns_test.go rename to tencentcloud/services/eb/data_source_tc_eb_platform_event_patterns_test.go index 8d0ef1a4a8..f1cc71eda9 100644 --- a/tencentcloud/data_source_tc_eb_platform_event_patterns_test.go +++ b/tencentcloud/services/eb/data_source_tc_eb_platform_event_patterns_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package eb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,15 +13,15 @@ func TestAccTencentCloudEbPlatformEventPatternsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-chongqing") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-chongqing") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEbPlatformEventPatternsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_eb_platform_event_patterns.platform_event_patterns"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eb_platform_event_patterns.platform_event_patterns"), ), }, }, diff --git a/tencentcloud/data_source_tc_eb_platform_products.go b/tencentcloud/services/eb/data_source_tc_eb_platform_products.go similarity index 76% rename from tencentcloud/data_source_tc_eb_platform_products.go rename to tencentcloud/services/eb/data_source_tc_eb_platform_products.go index 51ecefed12..e8328f461d 100644 --- a/tencentcloud/data_source_tc_eb_platform_products.go +++ b/tencentcloud/services/eb/data_source_tc_eb_platform_products.go @@ -1,15 +1,18 @@ -package tencentcloud +package eb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEbPlatformProducts() *schema.Resource { +func DataSourceTencentCloudEbPlatformProducts() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEbPlatformProductsRead, Schema: map[string]*schema.Schema{ @@ -43,21 +46,21 @@ func dataSourceTencentCloudEbPlatformProducts() *schema.Resource { } func dataSourceTencentCloudEbPlatformProductsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_eb_platform_products.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_eb_platform_products.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var platformProducts []*eb.PlatformProduct - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeEbPlatformProductsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } platformProducts = result return nil @@ -91,7 +94,7 @@ func dataSourceTencentCloudEbPlatformProductsRead(d *schema.ResourceData, meta i d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_eb_platform_products_test.go b/tencentcloud/services/eb/data_source_tc_eb_platform_products_test.go similarity index 71% rename from tencentcloud/data_source_tc_eb_platform_products_test.go rename to tencentcloud/services/eb/data_source_tc_eb_platform_products_test.go index 40e451b1bd..b929b8eaaf 100644 --- a/tencentcloud/data_source_tc_eb_platform_products_test.go +++ b/tencentcloud/services/eb/data_source_tc_eb_platform_products_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package eb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,15 +13,15 @@ func TestAccTencentCloudEbPlatformProductsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-chongqing") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-chongqing") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEbPlatformProductsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_eb_platform_products.platform_products"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eb_platform_products.platform_products"), resource.TestCheckResourceAttrSet("data.tencentcloud_eb_platform_products.platform_products", "platform_products.#"), resource.TestCheckResourceAttr("data.tencentcloud_eb_platform_products.platform_products", "platform_products.0.product_type", "eb_platform_test"), ), diff --git a/tencentcloud/data_source_tc_eb_search.go b/tencentcloud/services/eb/data_source_tc_eb_search.go similarity index 84% rename from tencentcloud/data_source_tc_eb_search.go rename to tencentcloud/services/eb/data_source_tc_eb_search.go index 790d90cc18..bc4b1fed3c 100644 --- a/tencentcloud/data_source_tc_eb_search.go +++ b/tencentcloud/services/eb/data_source_tc_eb_search.go @@ -1,67 +1,4 @@ -/* -Use this data source to query detailed information of eb eb_search - -Example Usage - -```hcl -resource "tencentcloud_eb_event_bus" "foo" { - event_bus_name = "tf-event_bus" - description = "event bus desc" - enable_store = false - save_days = 1 - tags = { - "createdBy" = "terraform" - } -} - -resource "tencentcloud_eb_put_events" "put_events" { - event_list { - source = "ckafka.cloud.tencent" - data = jsonencode( - { - "topic" : "test-topic", - "Partition" : 1, - "offset" : 37, - "msgKey" : "test", - "msgBody" : "Hello from Ckafka again!" - } - ) - type = "connector:ckafka" - subject = "qcs::ckafka:ap-guangzhou:uin/1250000000:ckafkaId/uin/1250000000/ckafka-123456" - time = 1691572461939 - - } - event_bus_id = tencentcloud_eb_event_bus.foo.id -} - -data "tencentcloud_eb_search" "eb_search" { - start_time = 1691637288422 - end_time = 1691648088422 - event_bus_id = "eb-jzytzr4e" - group_field = "RuleIds" - filter { - type = "OR" - filters { - key = "status" - operator = "eq" - value = "1" - } - } - - filter { - type = "OR" - filters { - key = "type" - operator = "eq" - value = "connector:ckafka" - } - } - # order_fields = [""] - order_by = "desc" -} -``` -*/ -package tencentcloud +package eb import ( "context" @@ -70,10 +7,12 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEbSearch() *schema.Resource { +func DataSourceTencentCloudEbSearch() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEbSearchRead, Schema: map[string]*schema.Schema{ @@ -239,11 +178,11 @@ func dataSourceTencentCloudEbSearch() *schema.Resource { } func dataSourceTencentCloudEbSearchRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_eb_search.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_eb_search.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime string @@ -323,14 +262,14 @@ func dataSourceTencentCloudEbSearchRead(d *schema.ResourceData, meta interface{} paramMap["OrderBy"] = helper.String(v.(string)) } - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if groupField != "" { var searchResults []*string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeEbSearchByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } searchResults = response return nil @@ -345,10 +284,10 @@ func dataSourceTencentCloudEbSearchRead(d *schema.ResourceData, meta interface{} } var results []*eb.SearchLogResult - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeEbSearchLogByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } results = response return nil @@ -403,7 +342,7 @@ func dataSourceTencentCloudEbSearchRead(d *schema.ResourceData, meta interface{} d.SetId(helper.DataResourceIdsHash([]string{startTime, endTime, eventBusId})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/services/eb/data_source_tc_eb_search.md b/tencentcloud/services/eb/data_source_tc_eb_search.md new file mode 100644 index 0000000000..17499d7776 --- /dev/null +++ b/tencentcloud/services/eb/data_source_tc_eb_search.md @@ -0,0 +1,61 @@ +Use this data source to query detailed information of eb eb_search + +Example Usage + +```hcl +resource "tencentcloud_eb_event_bus" "foo" { + event_bus_name = "tf-event_bus" + description = "event bus desc" + enable_store = false + save_days = 1 + tags = { + "createdBy" = "terraform" + } +} + +resource "tencentcloud_eb_put_events" "put_events" { + event_list { + source = "ckafka.cloud.tencent" + data = jsonencode( + { + "topic" : "test-topic", + "Partition" : 1, + "offset" : 37, + "msgKey" : "test", + "msgBody" : "Hello from Ckafka again!" + } + ) + type = "connector:ckafka" + subject = "qcs::ckafka:ap-guangzhou:uin/1250000000:ckafkaId/uin/1250000000/ckafka-123456" + time = 1691572461939 + + } + event_bus_id = tencentcloud_eb_event_bus.foo.id +} + +data "tencentcloud_eb_search" "eb_search" { + start_time = 1691637288422 + end_time = 1691648088422 + event_bus_id = "eb-jzytzr4e" + group_field = "RuleIds" + filter { + type = "OR" + filters { + key = "status" + operator = "eq" + value = "1" + } + } + + filter { + type = "OR" + filters { + key = "type" + operator = "eq" + value = "connector:ckafka" + } + } + # order_fields = [""] + order_by = "desc" +} +``` diff --git a/tencentcloud/data_source_tc_eb_search_test.go b/tencentcloud/services/eb/data_source_tc_eb_search_test.go similarity index 83% rename from tencentcloud/data_source_tc_eb_search_test.go rename to tencentcloud/services/eb/data_source_tc_eb_search_test.go index 37185c9133..2010793368 100644 --- a/tencentcloud/data_source_tc_eb_search_test.go +++ b/tencentcloud/services/eb/data_source_tc_eb_search_test.go @@ -1,22 +1,24 @@ -package tencentcloud +package eb_test import ( "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" ) func TestAccTencentCloudNeedFixEbSearchDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEbSearchDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_eb_search.eb_search")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_eb_search.eb_search")), }, }, }) diff --git a/tencentcloud/services/eb/extension_tags.go b/tencentcloud/services/eb/extension_tags.go new file mode 100644 index 0000000000..e549b4d92d --- /dev/null +++ b/tencentcloud/services/eb/extension_tags.go @@ -0,0 +1,3 @@ +package eb + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/resource_tc_eb_event_bus.go b/tencentcloud/services/eb/resource_tc_eb_event_bus.go similarity index 73% rename from tencentcloud/resource_tc_eb_event_bus.go rename to tencentcloud/services/eb/resource_tc_eb_event_bus.go index 6f30ad331f..367d00ad58 100644 --- a/tencentcloud/resource_tc_eb_event_bus.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_bus.go @@ -1,17 +1,20 @@ -package tencentcloud +package eb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudEbEventBus() *schema.Resource { +func ResourceTencentCloudEbEventBus() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudEbEventBusCreate, Read: resourceTencentCloudEbEventBusRead, @@ -55,10 +58,10 @@ func resourceTencentCloudEbEventBus() *schema.Resource { } func resourceTencentCloudEbEventBusCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_bus.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_bus.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = eb.NewCreateEventBusRequest() @@ -81,10 +84,10 @@ func resourceTencentCloudEbEventBusCreate(d *schema.ResourceData, meta interface request.EnableStore = helper.Bool(v.(bool)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().CreateEventBus(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().CreateEventBus(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -99,10 +102,10 @@ func resourceTencentCloudEbEventBusCreate(d *schema.ResourceData, meta interface eventBusId = *response.Response.EventBusId d.SetId(eventBusId) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region resourceName := fmt.Sprintf("qcs::eb:%s:uin/:eventbusid/%s", region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err @@ -113,14 +116,14 @@ func resourceTencentCloudEbEventBusCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudEbEventBusRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_bus.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_bus.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} eventBusId := d.Id() @@ -151,7 +154,7 @@ func resourceTencentCloudEbEventBusRead(d *schema.ResourceData, meta interface{} _ = d.Set("enable_store", eventBus.EnableStore) } - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "eb", "eventbusid", tcClient.Region, d.Id()) if err != nil { @@ -163,17 +166,17 @@ func resourceTencentCloudEbEventBusRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudEbEventBusUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_bus.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_bus.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request := eb.NewUpdateEventBusRequest() eventBusId := d.Id() - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} eventBus, err := service.DescribeEbEventBusById(ctx, eventBusId) if err != nil { return err @@ -210,10 +213,10 @@ func resourceTencentCloudEbEventBusUpdate(d *schema.ResourceData, meta interface } } - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().UpdateEventBus(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().UpdateEventBus(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -225,11 +228,11 @@ func resourceTencentCloudEbEventBusUpdate(d *schema.ResourceData, meta interface } if d.HasChange("tags") { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("eb", "eventbusid", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("eb", "eventbusid", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -239,13 +242,13 @@ func resourceTencentCloudEbEventBusUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudEbEventBusDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_bus.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_bus.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} eventBusId := d.Id() if err := service.DeleteEbEventBusById(ctx, eventBusId); err != nil { diff --git a/tencentcloud/resource_tc_eb_event_bus_test.go b/tencentcloud/services/eb/resource_tc_eb_event_bus_test.go similarity index 81% rename from tencentcloud/resource_tc_eb_event_bus_test.go rename to tencentcloud/services/eb/resource_tc_eb_event_bus_test.go index 8fbec9ca8c..751ebfc2d4 100644 --- a/tencentcloud/resource_tc_eb_event_bus_test.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_bus_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package eb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svceb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/eb" + "context" "fmt" "testing" @@ -14,8 +18,8 @@ import ( func TestAccTencentCloudEbEventBusResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccTencentCloudEbEventBusDestroy, Steps: []resource.TestStep{ { @@ -54,15 +58,15 @@ func TestAccTencentCloudEbEventBusResource_basic(t *testing.T) { func testAccTencentCloudEbEventBusExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) securityGroup, err := service.DescribeEbEventBusById(ctx, rs.Primary.ID) if err != nil { return err @@ -76,10 +80,10 @@ func testAccTencentCloudEbEventBusExists(r string) resource.TestCheckFunc { } func testAccTencentCloudEbEventBusDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_eb_event_bus" { continue diff --git a/tencentcloud/resource_tc_eb_event_connector.go b/tencentcloud/services/eb/resource_tc_eb_event_connector.go similarity index 84% rename from tencentcloud/resource_tc_eb_event_connector.go rename to tencentcloud/services/eb/resource_tc_eb_event_connector.go index 4cfdf808b4..eaf037e497 100644 --- a/tencentcloud/resource_tc_eb_event_connector.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_connector.go @@ -1,4 +1,4 @@ -package tencentcloud +package eb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudEbEventConnector() *schema.Resource { +func ResourceTencentCloudEbEventConnector() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudEbEventConnectorCreate, Read: resourceTencentCloudEbEventConnectorRead, @@ -113,10 +116,10 @@ func resourceTencentCloudEbEventConnector() *schema.Resource { } func resourceTencentCloudEbEventConnectorCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_connector.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_connector.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = eb.NewCreateConnectionRequest() @@ -173,10 +176,10 @@ func resourceTencentCloudEbEventConnectorCreate(d *schema.ResourceData, meta int request.Type = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().CreateConnection(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().CreateConnection(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -189,22 +192,22 @@ func resourceTencentCloudEbEventConnectorCreate(d *schema.ResourceData, meta int } connectionId = *response.Response.ConnectionId - d.SetId(eventBusId + FILED_SP + connectionId) + d.SetId(eventBusId + tccommon.FILED_SP + connectionId) return resourceTencentCloudEbEventConnectorRead(d, meta) } func resourceTencentCloudEbEventConnectorRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_connector.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_connector.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -291,14 +294,14 @@ func resourceTencentCloudEbEventConnectorRead(d *schema.ResourceData, meta inter } func resourceTencentCloudEbEventConnectorUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_connector.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_connector.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := eb.NewUpdateConnectionRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -334,10 +337,10 @@ func resourceTencentCloudEbEventConnectorUpdate(d *schema.ResourceData, meta int } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().UpdateConnection(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().UpdateConnection(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -352,14 +355,14 @@ func resourceTencentCloudEbEventConnectorUpdate(d *schema.ResourceData, meta int } func resourceTencentCloudEbEventConnectorDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_connector.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_connector.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_eb_event_connector_test.go b/tencentcloud/services/eb/resource_tc_eb_event_connector_test.go similarity index 82% rename from tencentcloud/resource_tc_eb_event_connector_test.go rename to tencentcloud/services/eb/resource_tc_eb_event_connector_test.go index a25a89bc2d..a7d08aa717 100644 --- a/tencentcloud/resource_tc_eb_event_connector_test.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_connector_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package eb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svceb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/eb" + "context" "fmt" "strings" @@ -15,8 +19,8 @@ import ( func TestAccTencentCloudEbEventConnectorResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckEbEventConnectorDestroy, Steps: []resource.TestStep{ { @@ -46,9 +50,9 @@ func TestAccTencentCloudEbEventConnectorResource_basic(t *testing.T) { } func testAccCheckEbEventConnectorDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_eb_event_connector" { continue @@ -56,7 +60,7 @@ func testAccCheckEbEventConnectorDestroy(s *terraform.State) error { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -80,8 +84,8 @@ func testAccCheckEbEventConnectorDestroy(s *terraform.State) error { func testAccCheckEbEventConnectorExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { @@ -90,14 +94,14 @@ func testAccCheckEbEventConnectorExists(r string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } eventBusId := idSplit[0] connectionId := idSplit[1] - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) connector, err := service.DescribeEbEventConnectorById(ctx, connectionId, eventBusId) if err != nil { return err diff --git a/tencentcloud/resource_tc_eb_event_rule.go b/tencentcloud/services/eb/resource_tc_eb_event_rule.go similarity index 73% rename from tencentcloud/resource_tc_eb_event_rule.go rename to tencentcloud/services/eb/resource_tc_eb_event_rule.go index 8a23d2b372..68b55c4bfa 100644 --- a/tencentcloud/resource_tc_eb_event_rule.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_rule.go @@ -1,4 +1,4 @@ -package tencentcloud +package eb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudEbEventRule() *schema.Resource { +func ResourceTencentCloudEbEventRule() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudEbEventRuleCreate, Read: resourceTencentCloudEbEventRuleRead, @@ -68,10 +71,10 @@ func resourceTencentCloudEbEventRule() *schema.Resource { } func resourceTencentCloudEbEventRuleCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_rule.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_rule.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = eb.NewCreateRuleRequest() @@ -100,10 +103,10 @@ func resourceTencentCloudEbEventRuleCreate(d *schema.ResourceData, meta interfac request.Description = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().CreateRule(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().CreateRule(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -116,12 +119,12 @@ func resourceTencentCloudEbEventRuleCreate(d *schema.ResourceData, meta interfac } ruleId = *response.Response.RuleId - d.SetId(eventBusId + FILED_SP + ruleId) + d.SetId(eventBusId + tccommon.FILED_SP + ruleId) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region resourceName := fmt.Sprintf("qcs::eb:%s:uin/:ruleid/%s/%s", region, eventBusId, ruleId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err @@ -132,16 +135,16 @@ func resourceTencentCloudEbEventRuleCreate(d *schema.ResourceData, meta interfac } func resourceTencentCloudEbEventRuleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_rule.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_rule.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -181,7 +184,7 @@ func resourceTencentCloudEbEventRuleRead(d *schema.ResourceData, meta interface{ _ = d.Set("description", eventRule.Description) } - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "eb", "ruleid", tcClient.Region, eventBusId+"/"+ruleId) if err != nil { @@ -193,14 +196,14 @@ func resourceTencentCloudEbEventRuleRead(d *schema.ResourceData, meta interface{ } func resourceTencentCloudEbEventRuleUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_rule.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_rule.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := eb.NewUpdateRuleRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -236,10 +239,10 @@ func resourceTencentCloudEbEventRuleUpdate(d *schema.ResourceData, meta interfac } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().UpdateRule(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().UpdateRule(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -251,12 +254,12 @@ func resourceTencentCloudEbEventRuleUpdate(d *schema.ResourceData, meta interfac } if d.HasChange("tags") { - ctx := context.WithValue(context.TODO(), logIdKey, logId) - tcClient := meta.(*TencentCloudClient).apiV3Conn + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("eb", "ruleid", tcClient.Region, eventBusId+"/"+ruleId) + resourceName := tccommon.BuildTagResourceName("eb", "ruleid", tcClient.Region, eventBusId+"/"+ruleId) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -266,14 +269,14 @@ func resourceTencentCloudEbEventRuleUpdate(d *schema.ResourceData, meta interfac } func resourceTencentCloudEbEventRuleDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_rule.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_rule.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_eb_event_rule_test.go b/tencentcloud/services/eb/resource_tc_eb_event_rule_test.go similarity index 83% rename from tencentcloud/resource_tc_eb_event_rule_test.go rename to tencentcloud/services/eb/resource_tc_eb_event_rule_test.go index 7a60a994a5..a1454a7cd0 100644 --- a/tencentcloud/resource_tc_eb_event_rule_test.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_rule_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package eb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svceb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/eb" + "context" "fmt" "strings" @@ -15,8 +19,8 @@ import ( func TestAccTencentCloudEbEventRuleResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckEbEventRuleDestroy, Steps: []resource.TestStep{ { @@ -53,9 +57,9 @@ func TestAccTencentCloudEbEventRuleResource_basic(t *testing.T) { } func testAccCheckEbEventRuleDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_eb_event_rule" { continue @@ -63,7 +67,7 @@ func testAccCheckEbEventRuleDestroy(s *terraform.State) error { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -87,8 +91,8 @@ func testAccCheckEbEventRuleDestroy(s *terraform.State) error { func testAccCheckEbEventRuleExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { @@ -97,14 +101,14 @@ func testAccCheckEbEventRuleExists(r string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } eventBusId := idSplit[0] ruleId := idSplit[1] - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rule, err := service.DescribeEbEventRuleById(ctx, eventBusId, ruleId) if err != nil { return err diff --git a/tencentcloud/resource_tc_eb_event_target.go b/tencentcloud/services/eb/resource_tc_eb_event_target.go similarity index 88% rename from tencentcloud/resource_tc_eb_event_target.go rename to tencentcloud/services/eb/resource_tc_eb_event_target.go index 91330348cc..ee559bc74d 100644 --- a/tencentcloud/resource_tc_eb_event_target.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_target.go @@ -1,4 +1,4 @@ -package tencentcloud +package eb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudEbEventTarget() *schema.Resource { +func ResourceTencentCloudEbEventTarget() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudEbEventTargetCreate, Read: resourceTencentCloudEbEventTargetRead, @@ -160,10 +163,10 @@ func resourceTencentCloudEbEventTarget() *schema.Resource { } func resourceTencentCloudEbEventTargetCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_target.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_target.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = eb.NewCreateTargetRequest() @@ -246,10 +249,10 @@ func resourceTencentCloudEbEventTargetCreate(d *schema.ResourceData, meta interf request.RuleId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().CreateTarget(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().CreateTarget(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -262,22 +265,22 @@ func resourceTencentCloudEbEventTargetCreate(d *schema.ResourceData, meta interf } targetId = *response.Response.TargetId - d.SetId(eventBusId + FILED_SP + ruleId + FILED_SP + targetId) + d.SetId(eventBusId + tccommon.FILED_SP + ruleId + tccommon.FILED_SP + targetId) return resourceTencentCloudEbEventTargetRead(d, meta) } func resourceTencentCloudEbEventTargetRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_target.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_target.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -394,14 +397,14 @@ func resourceTencentCloudEbEventTargetRead(d *schema.ResourceData, meta interfac } func resourceTencentCloudEbEventTargetUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_target.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_target.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := eb.NewUpdateTargetRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -421,10 +424,10 @@ func resourceTencentCloudEbEventTargetUpdate(d *schema.ResourceData, meta interf } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().UpdateTarget(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().UpdateTarget(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -439,14 +442,14 @@ func resourceTencentCloudEbEventTargetUpdate(d *schema.ResourceData, meta interf } func resourceTencentCloudEbEventTargetDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_target.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_target.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_eb_event_target_test.go b/tencentcloud/services/eb/resource_tc_eb_event_target_test.go similarity index 83% rename from tencentcloud/resource_tc_eb_event_target_test.go rename to tencentcloud/services/eb/resource_tc_eb_event_target_test.go index 20a9300ed4..39e60372a0 100644 --- a/tencentcloud/resource_tc_eb_event_target_test.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_target_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package eb_test import ( "context" @@ -6,17 +6,22 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + + svceb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/eb" ) // go test -i; go test -test.run TestAccTencentCloudEbEventTargetResource_basic -v func TestAccTencentCloudEbEventTargetResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckEbEventTargetDestroy, Steps: []resource.TestStep{ { @@ -43,9 +48,9 @@ func TestAccTencentCloudEbEventTargetResource_basic(t *testing.T) { } func testAccCheckEbEventTargetDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_eb_event_target" { continue @@ -53,7 +58,7 @@ func testAccCheckEbEventTargetDestroy(s *terraform.State) error { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -78,8 +83,8 @@ func testAccCheckEbEventTargetDestroy(s *terraform.State) error { func testAccCheckEbEventTargetExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { @@ -88,7 +93,7 @@ func testAccCheckEbEventTargetExists(r string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -96,7 +101,7 @@ func testAccCheckEbEventTargetExists(r string) resource.TestCheckFunc { ruleId := idSplit[1] targetId := idSplit[2] - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) target, err := service.DescribeEbEventTargetById(ctx, eventBusId, ruleId, targetId) if err != nil { return err diff --git a/tencentcloud/resource_tc_eb_event_transform.go b/tencentcloud/services/eb/resource_tc_eb_event_transform.go similarity index 88% rename from tencentcloud/resource_tc_eb_event_transform.go rename to tencentcloud/services/eb/resource_tc_eb_event_transform.go index 5dae9793c5..7a6987bd66 100644 --- a/tencentcloud/resource_tc_eb_event_transform.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_transform.go @@ -1,4 +1,4 @@ -package tencentcloud +package eb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudEbEventTransform() *schema.Resource { +func ResourceTencentCloudEbEventTransform() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudEbEventTransformCreate, Read: resourceTencentCloudEbEventTransformRead, @@ -137,10 +140,10 @@ func resourceTencentCloudEbEventTransform() *schema.Resource { } func resourceTencentCloudEbEventTransformCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_transform.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_transform.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = eb.NewCreateTransformationRequest() @@ -214,10 +217,10 @@ func resourceTencentCloudEbEventTransformCreate(d *schema.ResourceData, meta int } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().CreateTransformation(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().CreateTransformation(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -230,22 +233,22 @@ func resourceTencentCloudEbEventTransformCreate(d *schema.ResourceData, meta int } transformationId = *response.Response.TransformationId - d.SetId(eventBusId + FILED_SP + ruleId + FILED_SP + transformationId) + d.SetId(eventBusId + tccommon.FILED_SP + ruleId + tccommon.FILED_SP + transformationId) return resourceTencentCloudEbEventTransformRead(d, meta) } func resourceTencentCloudEbEventTransformRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_transform.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_transform.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -345,14 +348,14 @@ func resourceTencentCloudEbEventTransformRead(d *schema.ResourceData, meta inter } func resourceTencentCloudEbEventTransformUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_transform.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_transform.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := eb.NewUpdateTransformationRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -428,10 +431,10 @@ func resourceTencentCloudEbEventTransformUpdate(d *schema.ResourceData, meta int } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().UpdateTransformation(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().UpdateTransformation(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -446,14 +449,14 @@ func resourceTencentCloudEbEventTransformUpdate(d *schema.ResourceData, meta int } func resourceTencentCloudEbEventTransformDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_event_transform.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_event_transform.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EbService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := EbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_eb_event_transform_test.go b/tencentcloud/services/eb/resource_tc_eb_event_transform_test.go similarity index 86% rename from tencentcloud/resource_tc_eb_event_transform_test.go rename to tencentcloud/services/eb/resource_tc_eb_event_transform_test.go index a8d2ee1555..dacd29e661 100644 --- a/tencentcloud/resource_tc_eb_event_transform_test.go +++ b/tencentcloud/services/eb/resource_tc_eb_event_transform_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package eb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svceb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/eb" + "context" "fmt" "strings" @@ -15,8 +19,8 @@ import ( func TestAccTencentCloudEbEventTransformResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckEbEventTransformDestroy, Steps: []resource.TestStep{ { @@ -45,9 +49,9 @@ func TestAccTencentCloudEbEventTransformResource_basic(t *testing.T) { } func testAccCheckEbEventTransformDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_eb_event_transform" { continue @@ -55,7 +59,7 @@ func testAccCheckEbEventTransformDestroy(s *terraform.State) error { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -80,8 +84,8 @@ func testAccCheckEbEventTransformDestroy(s *terraform.State) error { func testAccCheckEbEventTransformExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { @@ -90,7 +94,7 @@ func testAccCheckEbEventTransformExists(r string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -98,7 +102,7 @@ func testAccCheckEbEventTransformExists(r string) resource.TestCheckFunc { ruleId := idSplit[1] transformationId := idSplit[2] - service := EbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svceb.NewEbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) target, err := service.DescribeEbEventTransformById(ctx, eventBusId, ruleId, transformationId) if err != nil { return err diff --git a/tencentcloud/resource_tc_eb_put_events.go b/tencentcloud/services/eb/resource_tc_eb_put_events.go similarity index 82% rename from tencentcloud/resource_tc_eb_put_events.go rename to tencentcloud/services/eb/resource_tc_eb_put_events.go index fb855d9ede..98cd6dbb65 100644 --- a/tencentcloud/resource_tc_eb_put_events.go +++ b/tencentcloud/services/eb/resource_tc_eb_put_events.go @@ -1,15 +1,18 @@ -package tencentcloud +package eb import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudEbPutEvents() *schema.Resource { +func ResourceTencentCloudEbPutEvents() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudEbPutEventsCreate, Read: resourceTencentCloudEbPutEventsRead, @@ -63,10 +66,10 @@ func resourceTencentCloudEbPutEvents() *schema.Resource { } func resourceTencentCloudEbPutEventsCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_put_events.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_put_events.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = eb.NewPutEventsRequest() @@ -100,10 +103,10 @@ func resourceTencentCloudEbPutEventsCreate(d *schema.ResourceData, meta interfac request.EventBusId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEbClient().PutEvents(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEbClient().PutEvents(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -120,15 +123,15 @@ func resourceTencentCloudEbPutEventsCreate(d *schema.ResourceData, meta interfac } func resourceTencentCloudEbPutEventsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_put_events.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_put_events.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudEbPutEventsDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_eb_put_events.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_eb_put_events.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_eb_put_events_test.go b/tencentcloud/services/eb/resource_tc_eb_put_events_test.go similarity index 87% rename from tencentcloud/resource_tc_eb_put_events_test.go rename to tencentcloud/services/eb/resource_tc_eb_put_events_test.go index 75f9585162..53d7834d4a 100644 --- a/tencentcloud/resource_tc_eb_put_events_test.go +++ b/tencentcloud/services/eb/resource_tc_eb_put_events_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package eb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudEbPutEventsResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEbPutEvents, diff --git a/tencentcloud/service_tencentcloud_eb.go b/tencentcloud/services/eb/service_tencentcloud_eb.go similarity index 95% rename from tencentcloud/service_tencentcloud_eb.go rename to tencentcloud/services/eb/service_tencentcloud_eb.go index 337a064cb2..f3a958e8b1 100644 --- a/tencentcloud/service_tencentcloud_eb.go +++ b/tencentcloud/services/eb/service_tencentcloud_eb.go @@ -1,21 +1,28 @@ -package tencentcloud +package eb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewEbService(client *connectivity.TencentCloudClient) EbService { + return EbService{client: client} +} + type EbService struct { client *connectivity.TencentCloudClient } func (me *EbService) DescribeEbSearchByFilter(ctx context.Context, param map[string]interface{}) (ebSearch []*string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = eb.NewDescribeLogTagValueRequest() ) @@ -75,7 +82,7 @@ func (me *EbService) DescribeEbSearchByFilter(ctx context.Context, param map[str func (me *EbService) DescribeEbSearchLogByFilter(ctx context.Context, param map[string]interface{}) (ebSearch []*eb.SearchLogResult, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = eb.NewSearchLogRequest() ) @@ -137,7 +144,7 @@ func (me *EbService) DescribeEbSearchLogByFilter(ctx context.Context, param map[ } func (me *EbService) DescribeEbEventBusById(ctx context.Context, eventBusId string) (event *eb.GetEventBusResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewGetEventBusRequest() request.EventBusId = &eventBusId @@ -166,7 +173,7 @@ func (me *EbService) DescribeEbEventBusById(ctx context.Context, eventBusId stri } func (me *EbService) DeleteEbEventBusById(ctx context.Context, eventBusId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewDeleteEventBusRequest() request.EventBusId = &eventBusId @@ -190,7 +197,7 @@ func (me *EbService) DeleteEbEventBusById(ctx context.Context, eventBusId string } func (me *EbService) DescribeEbEventTargetById(ctx context.Context, eventBusId string, ruleId string, targetId string) (eventTarget *eb.Target, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewListTargetsRequest() request.EventBusId = &eventBusId @@ -226,7 +233,7 @@ func (me *EbService) DescribeEbEventTargetById(ctx context.Context, eventBusId s } func (me *EbService) DeleteEbEventTargetById(ctx context.Context, eventBusId string, ruleId string, targetId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewDeleteTargetRequest() request.EventBusId = &eventBusId @@ -252,7 +259,7 @@ func (me *EbService) DeleteEbEventTargetById(ctx context.Context, eventBusId str } func (me *EbService) DescribeEbEventRuleById(ctx context.Context, eventBusId string, ruleId string) (rule *eb.GetRuleResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewGetRuleRequest() request.EventBusId = &eventBusId @@ -282,7 +289,7 @@ func (me *EbService) DescribeEbEventRuleById(ctx context.Context, eventBusId str } func (me *EbService) DeleteEbEventRuleById(ctx context.Context, eventBusId string, ruleId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewDeleteRuleRequest() request.EventBusId = &eventBusId @@ -307,7 +314,7 @@ func (me *EbService) DeleteEbEventRuleById(ctx context.Context, eventBusId strin } func (me *EbService) DescribeEbEventTransformById(ctx context.Context, eventBusId string, ruleId string, transformationId string) (ebTransform *eb.Transformation, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewGetTransformationRequest() request.EventBusId = &eventBusId @@ -338,7 +345,7 @@ func (me *EbService) DescribeEbEventTransformById(ctx context.Context, eventBusI } func (me *EbService) DeleteEbEventTransformById(ctx context.Context, eventBusId string, ruleId string, transformationId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewDeleteTransformationRequest() request.EventBusId = &eventBusId @@ -365,7 +372,7 @@ func (me *EbService) DeleteEbEventTransformById(ctx context.Context, eventBusId func (me *EbService) DescribeEbBusByFilter(ctx context.Context, param map[string]interface{}) (bus []*eb.EventBus, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = eb.NewListEventBusesRequest() ) @@ -418,7 +425,7 @@ func (me *EbService) DescribeEbBusByFilter(ctx context.Context, param map[string } func (me *EbService) DescribeEbEventConnectorById(ctx context.Context, connectionId string, eventBusId string) (eventConnector *eb.Connection, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewListConnectionsRequest() request.EventBusId = &eventBusId @@ -452,7 +459,7 @@ func (me *EbService) DescribeEbEventConnectorById(ctx context.Context, connectio } func (me *EbService) DeleteEbEventConnectorById(ctx context.Context, connectionId string, eventBusId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := eb.NewDeleteConnectionRequest() request.ConnectionId = &connectionId @@ -478,7 +485,7 @@ func (me *EbService) DeleteEbEventConnectorById(ctx context.Context, connectionI func (me *EbService) DescribeEbEventRulesByFilter(ctx context.Context, param map[string]interface{}) (eventRules []*eb.Rule, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = eb.NewListRulesRequest() ) @@ -532,7 +539,7 @@ func (me *EbService) DescribeEbEventRulesByFilter(ctx context.Context, param map func (me *EbService) DescribeEbPlateformByFilter(ctx context.Context, param map[string]interface{}) (plateform []*eb.PlatformEventDetail, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = eb.NewListPlatformEventNamesRequest() ) @@ -567,7 +574,7 @@ func (me *EbService) DescribeEbPlateformByFilter(ctx context.Context, param map[ func (me *EbService) DescribeEbPlatformEventPatternsByFilter(ctx context.Context, param map[string]interface{}) (platformEventPatterns []*eb.PlatformEventSummary, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = eb.NewListPlatformEventPatternsRequest() ) @@ -602,7 +609,7 @@ func (me *EbService) DescribeEbPlatformEventPatternsByFilter(ctx context.Context func (me *EbService) DescribeEbPlatformProductsByFilter(ctx context.Context, param map[string]interface{}) (platformProducts []*eb.PlatformProduct, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = eb.NewListPlatformProductsRequest() ) @@ -631,7 +638,7 @@ func (me *EbService) DescribeEbPlatformProductsByFilter(ctx context.Context, par func (me *EbService) DescribeEbPlateformEventTemplateByFilter(ctx context.Context, param map[string]interface{}) (plateformEventTemplate *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = eb.NewGetPlatformEventTemplateRequest() ) diff --git a/tencentcloud/services/eb/service_tencentcloud_tag.go b/tencentcloud/services/eb/service_tencentcloud_tag.go new file mode 100644 index 0000000000..380ef7460e --- /dev/null +++ b/tencentcloud/services/eb/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package eb + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/data_source_tc_emr.go b/tencentcloud/services/emr/data_source_tc_emr.go similarity index 88% rename from tencentcloud/data_source_tc_emr.go rename to tencentcloud/services/emr/data_source_tc_emr.go index faabda774c..c5f66ba755 100644 --- a/tencentcloud/data_source_tc_emr.go +++ b/tencentcloud/services/emr/data_source_tc_emr.go @@ -1,16 +1,19 @@ -package tencentcloud +package emr import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" emr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr/v20190103" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEmr() *schema.Resource { +func DataSourceTencentCloudEmr() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEmrRead, @@ -110,13 +113,13 @@ func dataSourceTencentCloudEmr() *schema.Resource { } func dataSourceTencentCloudEmrRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_emr.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_emr.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) emrServer := EMRService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } filters := map[string]interface{}{} @@ -131,10 +134,10 @@ func dataSourceTencentCloudEmrRead(d *schema.ResourceData, meta interface{}) err } var clusters []*emr.ClusterInstancesInfo var errRet error - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { clusters, errRet = emrServer.DescribeInstances(ctx, filters) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } return nil }) @@ -168,7 +171,7 @@ func dataSourceTencentCloudEmrRead(d *schema.ResourceData, meta interface{}) err } output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if err := writeToFile(output.(string), emr_instances); err != nil { + if err := tccommon.WriteToFile(output.(string), emr_instances); err != nil { return err } } diff --git a/tencentcloud/data_source_tc_emr_auto_scale_records.go b/tencentcloud/services/emr/data_source_tc_emr_auto_scale_records.go similarity index 90% rename from tencentcloud/data_source_tc_emr_auto_scale_records.go rename to tencentcloud/services/emr/data_source_tc_emr_auto_scale_records.go index 09d305bd77..35a6227787 100644 --- a/tencentcloud/data_source_tc_emr_auto_scale_records.go +++ b/tencentcloud/services/emr/data_source_tc_emr_auto_scale_records.go @@ -1,8 +1,10 @@ -package tencentcloud +package emr import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" emr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr/v20190103" @@ -10,7 +12,7 @@ import ( "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEmrAutoScaleRecords() *schema.Resource { +func DataSourceTencentCloudEmrAutoScaleRecords() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEmrAutoScaleRecordsRead, Schema: map[string]*schema.Schema{ @@ -115,14 +117,14 @@ func dataSourceTencentCloudEmrAutoScaleRecords() *schema.Resource { } func dataSourceTencentCloudEmrAutoScaleRecordsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_emr_auto_scale_records.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_emr_auto_scale_records.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var instanceId string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -149,13 +151,13 @@ func dataSourceTencentCloudEmrAutoScaleRecordsRead(d *schema.ResourceData, meta paramMap["Filters"] = tmpSet } - service := EMRService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EMRService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var recordList []*emr.AutoScaleRecord - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeEmrAutoScaleRecordsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } recordList = result return nil @@ -222,7 +224,7 @@ func dataSourceTencentCloudEmrAutoScaleRecordsRead(d *schema.ResourceData, meta d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_emr_auto_scale_records_test.go b/tencentcloud/services/emr/data_source_tc_emr_auto_scale_records_test.go similarity index 63% rename from tencentcloud/data_source_tc_emr_auto_scale_records_test.go rename to tencentcloud/services/emr/data_source_tc_emr_auto_scale_records_test.go index 30d41dceb7..5ac8ffa112 100644 --- a/tencentcloud/data_source_tc_emr_auto_scale_records_test.go +++ b/tencentcloud/services/emr/data_source_tc_emr_auto_scale_records_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package emr_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudEmrAutoScaleRecordsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEmrAutoScaleRecordsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_emr_auto_scale_records.auto_scale_records")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_emr_auto_scale_records.auto_scale_records")), }, }, }) diff --git a/tencentcloud/data_source_tc_emr_cvm_quota.go b/tencentcloud/services/emr/data_source_tc_emr_cvm_quota.go similarity index 91% rename from tencentcloud/data_source_tc_emr_cvm_quota.go rename to tencentcloud/services/emr/data_source_tc_emr_cvm_quota.go index b8249cbddb..024bd813f0 100644 --- a/tencentcloud/data_source_tc_emr_cvm_quota.go +++ b/tencentcloud/services/emr/data_source_tc_emr_cvm_quota.go @@ -1,15 +1,18 @@ -package tencentcloud +package emr import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" emr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr/v20190103" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEmrCvmQuota() *schema.Resource { +func DataSourceTencentCloudEmrCvmQuota() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEmrCvmQuotaRead, Schema: map[string]*schema.Schema{ @@ -125,12 +128,12 @@ func dataSourceTencentCloudEmrCvmQuota() *schema.Resource { } func dataSourceTencentCloudEmrCvmQuotaRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_emr_cvm_quota.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_emr_cvm_quota.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var clusterId string @@ -144,13 +147,13 @@ func dataSourceTencentCloudEmrCvmQuotaRead(d *schema.ResourceData, meta interfac paramMap["ZoneId"] = helper.IntInt64(v.(int)) } - service := EMRService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EMRService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var cvmQuota *emr.DescribeCvmQuotaResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeEmrCvmQuotaByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } cvmQuota = result return nil @@ -247,7 +250,7 @@ func dataSourceTencentCloudEmrCvmQuotaRead(d *schema.ResourceData, meta interfac d.SetId(clusterId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_emr_cvm_quota_test.go b/tencentcloud/services/emr/data_source_tc_emr_cvm_quota_test.go similarity index 60% rename from tencentcloud/data_source_tc_emr_cvm_quota_test.go rename to tencentcloud/services/emr/data_source_tc_emr_cvm_quota_test.go index f62264db53..19892b950f 100644 --- a/tencentcloud/data_source_tc_emr_cvm_quota_test.go +++ b/tencentcloud/services/emr/data_source_tc_emr_cvm_quota_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package emr_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudEmrCvmQuotaDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEmrCvmQuotaDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_emr_cvm_quota.cvm_quota")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_emr_cvm_quota.cvm_quota")), }, }, }) diff --git a/tencentcloud/data_source_tc_emr_nodes.go b/tencentcloud/services/emr/data_source_tc_emr_nodes.go similarity index 96% rename from tencentcloud/data_source_tc_emr_nodes.go rename to tencentcloud/services/emr/data_source_tc_emr_nodes.go index 4a4aa27b41..8b25a01652 100644 --- a/tencentcloud/data_source_tc_emr_nodes.go +++ b/tencentcloud/services/emr/data_source_tc_emr_nodes.go @@ -1,15 +1,18 @@ -package tencentcloud +package emr import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" emr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr/v20190103" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudEmrNodes() *schema.Resource { +func DataSourceTencentCloudEmrNodes() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudEmrNodesRead, @@ -385,10 +388,10 @@ func dataSourceTencentCloudEmrNodes() *schema.Resource { } func dataSourceTencentCloudEmrNodesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_emr_nodes.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_emr_nodes.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Get("instance_id").(string) nodeFlag := d.Get("node_flag").(string) @@ -397,14 +400,14 @@ func dataSourceTencentCloudEmrNodesRead(d *schema.ResourceData, meta interface{} hardwareResourceType := d.Get("hardware_resource_type").(string) emrServer := EMRService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } var nodes []*emr.NodeHardwareInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { var errRet error nodes, errRet = emrServer.DescribeClusterNodes(ctx, instanceId, nodeFlag, hardwareResourceType, offset, limit) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } return nil }) @@ -502,7 +505,7 @@ func dataSourceTencentCloudEmrNodesRead(d *schema.ResourceData, meta interface{} _ = d.Set("nodes", emrNodes) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if err := writeToFile(output.(string), emrNodes); err != nil { + if err := tccommon.WriteToFile(output.(string), emrNodes); err != nil { return err } } diff --git a/tencentcloud/data_source_tc_emr_nodes_test.go b/tencentcloud/services/emr/data_source_tc_emr_nodes_test.go similarity index 65% rename from tencentcloud/data_source_tc_emr_nodes_test.go rename to tencentcloud/services/emr/data_source_tc_emr_nodes_test.go index eec0828992..6f5942daa0 100644 --- a/tencentcloud/data_source_tc_emr_nodes_test.go +++ b/tencentcloud/services/emr/data_source_tc_emr_nodes_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package emr_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccDataSourceTencentCloudEMRNodes(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEMRNodes(), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_emr_nodes.my_emr_nodes"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_emr_nodes.my_emr_nodes"), resource.TestCheckResourceAttr("data.tencentcloud_emr_nodes.my_emr_nodes", "nodes.#", "1"), ), }, diff --git a/tencentcloud/extension_emr.go b/tencentcloud/services/emr/extension_emr.go similarity index 99% rename from tencentcloud/extension_emr.go rename to tencentcloud/services/emr/extension_emr.go index 32e2a4e8c1..a3c02d8b5a 100644 --- a/tencentcloud/extension_emr.go +++ b/tencentcloud/services/emr/extension_emr.go @@ -1,4 +1,4 @@ -package tencentcloud +package emr import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" diff --git a/tencentcloud/extension_mysql.go b/tencentcloud/services/emr/extension_mysql.go similarity index 92% rename from tencentcloud/extension_mysql.go rename to tencentcloud/services/emr/extension_mysql.go index d5fa3bc1b9..7caf8c92ce 100644 --- a/tencentcloud/extension_mysql.go +++ b/tencentcloud/services/emr/extension_mysql.go @@ -1,4 +1,4 @@ -package tencentcloud +package emr const ( ZONE_SELL_STATUS_ONLINE = 0 @@ -8,7 +8,7 @@ var MYSQL_ALLOW_BACKUP_TIME = []string{"02:00-06:00", "06:00-10:00", "10:00-14:0 var MYSQL_ALLOW_BACKUP_MODEL = []string{"logical", "physical"} -//mysql Status https://cloud.tencent.com/document/api/236/15872 +// mysql Status https://cloud.tencent.com/document/api/236/15872 const ( MYSQL_STATUS_DELIVING = 0 MYSQL_STATUS_RUNNING = 1 @@ -20,7 +20,7 @@ const ( MYSQL_STATUS_ISOLATED_2 = 7 ) -//Async task status, from https://cloud.tencent.com/document/api/236/20410 +// Async task status, from https://cloud.tencent.com/document/api/236/20410 const ( MYSQL_TASK_STATUS_INITIAL = "INITIAL" MYSQL_TASK_STATUS_RUNNING = "RUNNING" @@ -30,7 +30,7 @@ const ( MYSQL_TASK_STATUS_PAUSED = "PAUSED " ) -//default to all host +// default to all host var MYSQL_DEFAULT_ACCOUNT_HOST = "%" var MYSQL_GlOBAL_PRIVILEGE = []string{ @@ -68,19 +68,19 @@ var MysqlDelStates = map[int64]bool{ MYSQL_STATUS_ISOLATED_2: true, } -//mysql available period value +// mysql available period value var MYSQL_AVAILABLE_PERIOD = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36} var MYSQL_SUPPORTS_ENGINE = []string{"5.5", "5.6", "5.7", "8.0"} -//automatic renewal status code +// automatic renewal status code const ( MYSQL_RENEW_NOUSE = 0 MYSQL_RENEW_OPEN = 1 MYSQL_RENEW_CLOSE = 2 ) -//type of pay +// type of pay var ( MysqlPayByMonth = 0 MysqlPayByUse = 1 diff --git a/tencentcloud/services/emr/extension_tags.go b/tencentcloud/services/emr/extension_tags.go new file mode 100644 index 0000000000..a4e1010927 --- /dev/null +++ b/tencentcloud/services/emr/extension_tags.go @@ -0,0 +1,3 @@ +package emr + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/resource_tc_emr_cluster.go b/tencentcloud/services/emr/resource_tc_emr_cluster.go similarity index 83% rename from tencentcloud/resource_tc_emr_cluster.go rename to tencentcloud/services/emr/resource_tc_emr_cluster.go index a81e6c9a60..39c20f5c21 100644 --- a/tencentcloud/resource_tc_emr_cluster.go +++ b/tencentcloud/services/emr/resource_tc_emr_cluster.go @@ -1,10 +1,12 @@ -package tencentcloud +package emr import ( "context" innerErr "errors" "fmt" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" @@ -12,7 +14,7 @@ import ( emr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr/v20190103" ) -func resourceTencentCloudEmrCluster() *schema.Resource { +func ResourceTencentCloudEmrCluster() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudEmrClusterCreate, Read: resourceTencentCloudEmrClusterRead, @@ -95,20 +97,20 @@ func resourceTencentCloudEmrCluster() *schema.Resource { Type: schema.TypeInt, Required: true, ForceNew: true, - ValidateFunc: validateIntegerInRange(0, 1), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 1), Description: "The flag whether the instance support high availability.(0=>not support, 1=>support).", }, "instance_name": { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validateStringLengthInRange(6, 36), + ValidateFunc: tccommon.ValidateStringLengthInRange(6, 36), Description: "Name of the instance, which can contain 6 to 36 English letters, Chinese characters, digits, dashes(-), or underscores(_).", }, "pay_mode": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(0, 1), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 1), Description: "The pay mode of instance. 0 represent POSTPAID_BY_HOUR, 1 represent PREPAID.", }, "placement": { @@ -148,7 +150,7 @@ func resourceTencentCloudEmrCluster() *schema.Resource { Optional: true, ForceNew: true, Default: EMR_MASTER_WAN_TYPE_NEED_MASTER_WAN, - ValidateFunc: validateAllowedStringValue(EMR_MASTER_WAN_TYPES), + ValidateFunc: tccommon.ValidateAllowedStringValue(EMR_MASTER_WAN_TYPES), Description: `Whether to enable the cluster Master node public network. Value range: - NEED_MASTER_WAN: Indicates that the cluster Master node public network is enabled. - NOT_NEED_MASTER_WAN: Indicates that it is not turned on. @@ -171,11 +173,11 @@ func resourceTencentCloudEmrCluster() *schema.Resource { } func resourceTencentCloudEmrClusterUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_emr_cluster.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_emr_cluster.update")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) emrService := EMRService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } instanceId := d.Id() timeUnit, hasTimeUnit := d.GetOkExists("time_unit") @@ -186,7 +188,7 @@ func resourceTencentCloudEmrClusterUpdate(d *schema.ResourceData, meta interface } if d.HasChange("tags") { oldTags, newTags := d.GetChange("tags") - err := emrService.ModifyResourcesTags(ctx, meta.(*TencentCloudClient).apiV3Conn.Region, instanceId, oldTags.(map[string]interface{}), newTags.(map[string]interface{})) + err := emrService.ModifyResourcesTags(ctx, meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region, instanceId, oldTags.(map[string]interface{}), newTags.(map[string]interface{})) if err != nil { return err } @@ -224,7 +226,7 @@ func resourceTencentCloudEmrClusterUpdate(d *schema.ResourceData, meta interface if err != nil { return err } - err = resource.Retry(10*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.ReadRetryTimeout, func() *resource.RetryError { clusters, err := emrService.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) if e, ok := err.(*errors.TencentCloudSDKError); ok { @@ -253,11 +255,11 @@ func resourceTencentCloudEmrClusterUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudEmrClusterCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_emr_cluster.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_emr_cluster.create")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) emrService := EMRService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } instanceId, err := emrService.CreateInstance(ctx, d) if err != nil { @@ -269,7 +271,7 @@ func resourceTencentCloudEmrClusterCreate(d *schema.ResourceData, meta interface if v, ok := d.GetOk("display_strategy"); ok { displayStrategy = v.(string) } - err = resource.Retry(10*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.ReadRetryTimeout, func() *resource.RetryError { clusters, err := emrService.DescribeInstancesById(ctx, instanceId, displayStrategy) if e, ok := err.(*errors.TencentCloudSDKError); ok { @@ -299,11 +301,11 @@ func resourceTencentCloudEmrClusterCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudEmrClusterDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_emr_cluster.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_emr_cluster.delete")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) emrService := EMRService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } instanceId := d.Id() clusters, err := emrService.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) @@ -317,7 +319,7 @@ func resourceTencentCloudEmrClusterDelete(d *schema.ResourceData, meta interface if err = emrService.DeleteInstance(ctx, d); err != nil { return err } - err = resource.Retry(10*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.ReadRetryTimeout, func() *resource.RetryError { clusters, err := emrService.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) if e, ok := err.(*errors.TencentCloudSDKError); ok { @@ -348,12 +350,12 @@ func resourceTencentCloudEmrClusterDelete(d *schema.ResourceData, meta interface if metaDB != nil && *metaDB != "" { // remove metadb - mysqlService := MysqlService{client: meta.(*TencentCloudClient).apiV3Conn} + mysqlService := MysqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { err := mysqlService.OfflineIsolatedInstances(ctx, *metaDB) if err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }) @@ -366,13 +368,13 @@ func resourceTencentCloudEmrClusterDelete(d *schema.ResourceData, meta interface } func resourceTencentCloudEmrClusterRead(d *schema.ResourceData, meta interface{}) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) emrService := EMRService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } instanceId := d.Id() - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, err := emrService.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) if e, ok := err.(*errors.TencentCloudSDKError); ok { @@ -390,8 +392,8 @@ func resourceTencentCloudEmrClusterRead(d *schema.ResourceData, meta interface{} return err } - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region tags, err := tagService.DescribeResourceTags(ctx, "emr", "emr-instance", region, d.Id()) if err != nil { return err diff --git a/tencentcloud/resource_tc_emr_cluster_test.go b/tencentcloud/services/emr/resource_tc_emr_cluster_test.go similarity index 73% rename from tencentcloud/resource_tc_emr_cluster_test.go rename to tencentcloud/services/emr/resource_tc_emr_cluster_test.go index 0329a0a6c9..f579efd253 100644 --- a/tencentcloud/resource_tc_emr_cluster_test.go +++ b/tencentcloud/services/emr/resource_tc_emr_cluster_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package emr_test import ( "context" @@ -8,10 +8,15 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" emr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr/v20190103" + + svcemr "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/emr" ) func init() { @@ -19,42 +24,42 @@ func init() { resource.AddTestSweepers("tencentcloud_emr", &resource.Sweeper{ Name: "tencentcloud_emr", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - sharedClient, err := sharedClientForRegion(r) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + sharedClient, err := tcacctest.SharedClientForRegion(r) if err != nil { return fmt.Errorf("getting tencentcloud client error: %s", err.Error()) } - client := sharedClient.(*TencentCloudClient) + client := sharedClient.(tccommon.ProviderMeta) - emrService := EMRService{client: client.apiV3Conn} + emrService := svcemr.NewEMRService(client.GetAPIV3Conn()) filters := make(map[string]interface{}) - filters["display_strategy"] = DisplayStrategyIsclusterList + filters["display_strategy"] = svcemr.DisplayStrategyIsclusterList clusters, err := emrService.DescribeInstances(ctx, filters) if err != nil { return nil } for _, cluster := range clusters { clusterName := *cluster.ClusterName - if strings.HasPrefix(clusterName, keepResource) || strings.HasPrefix(clusterName, defaultResource) { + if strings.HasPrefix(clusterName, tcacctest.KeepResource) || strings.HasPrefix(clusterName, tcacctest.DefaultResource) { continue } now := time.Now() - createTime := stringTotime(*cluster.AddTime) + createTime := tccommon.StringToTime(*cluster.AddTime) interval := now.Sub(createTime).Minutes() // less than 30 minute, not delete - if needProtect == 1 && int64(interval) < 30 { + if tccommon.NeedProtect == 1 && int64(interval) < 30 { continue } metaDB := cluster.MetaDb instanceId := *cluster.ClusterId request := emr.NewTerminateInstanceRequest() request.InstanceId = &instanceId - if _, err = emrService.client.UseEmrClient().TerminateInstance(request); err != nil { + if _, err = client.GetAPIV3Conn().UseEmrClient().TerminateInstance(request); err != nil { return nil } - err = resource.Retry(10*readRetryTimeout, func() *resource.RetryError { - clusters, err := emrService.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) + err = resource.Retry(10*tccommon.ReadRetryTimeout, func() *resource.RetryError { + clusters, err := emrService.DescribeInstancesById(ctx, instanceId, svcemr.DisplayStrategyIsclusterList) if e, ok := err.(*errors.TencentCloudSDKError); ok { if e.GetCode() == "InternalError.ClusterNotFound" { @@ -67,7 +72,7 @@ func init() { if len(clusters) > 0 { status := *(clusters[0].Status) - if status != EmrInternetStatusDeleted { + if status != svcemr.EmrInternetStatusDeleted { return resource.RetryableError( fmt.Errorf("%v create cluster endpoint status still is %v", instanceId, status)) } @@ -84,12 +89,12 @@ func init() { if metaDB != nil && *metaDB != "" { // remove metadb - mysqlService := MysqlService{client: client.apiV3Conn} + mysqlService := svcemr.NewMysqlService(client.GetAPIV3Conn()) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { err := mysqlService.OfflineIsolatedInstances(ctx, *metaDB) if err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }) @@ -109,8 +114,8 @@ var testEmrClusterResourceKey = "tencentcloud_emr_cluster.emrrrr" func TestAccTencentCloudEmrClusterResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testEmrBasic, @@ -118,8 +123,8 @@ func TestAccTencentCloudEmrClusterResource(t *testing.T) { testAccCheckEmrExists(testEmrClusterResourceKey), resource.TestCheckResourceAttr(testEmrClusterResourceKey, "product_id", "4"), resource.TestCheckResourceAttr(testEmrClusterResourceKey, "display_strategy", "clusterList"), - resource.TestCheckResourceAttr(testEmrClusterResourceKey, "vpc_settings.vpc_id", defaultEMRVpcId), - resource.TestCheckResourceAttr(testEmrClusterResourceKey, "vpc_settings.subnet_id", defaultEMRSubnetId), + resource.TestCheckResourceAttr(testEmrClusterResourceKey, "vpc_settings.vpc_id", tcacctest.DefaultEMRVpcId), + resource.TestCheckResourceAttr(testEmrClusterResourceKey, "vpc_settings.subnet_id", tcacctest.DefaultEMRSubnetId), resource.TestCheckResourceAttr(testEmrClusterResourceKey, "softwares.0", "zookeeper-3.6.1"), resource.TestCheckResourceAttr(testEmrClusterResourceKey, "support_ha", "0"), resource.TestCheckResourceAttr(testEmrClusterResourceKey, "instance_name", "emr-test-demo"), @@ -131,7 +136,7 @@ func TestAccTencentCloudEmrClusterResource(t *testing.T) { resource.TestCheckResourceAttr(testEmrClusterResourceKey, "placement.zone", "ap-guangzhou-3"), resource.TestCheckResourceAttr(testEmrClusterResourceKey, "placement.project_id", "0"), resource.TestCheckResourceAttrSet(testEmrClusterResourceKey, "instance_id"), - resource.TestCheckResourceAttr(testEmrClusterResourceKey, "sg_id", defaultEMRSgId), + resource.TestCheckResourceAttr(testEmrClusterResourceKey, "sg_id", tcacctest.DefaultEMRSgId), resource.TestCheckResourceAttr(testEmrClusterResourceKey, "tags.emr-key", "emr-value"), ), }, @@ -151,20 +156,18 @@ func testAccCheckEmrExists(n string) resource.TestCheckFunc { return fmt.Errorf("emr cluster id is not set") } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EMRService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + service := svcemr.NewEMRService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) instanceId := rs.Primary.ID - clusters, err := service.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) + clusters, err := service.DescribeInstancesById(ctx, instanceId, svcemr.DisplayStrategyIsclusterList) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { - clusters, err = service.DescribeInstancesById(ctx, instanceId, DisplayStrategyIsclusterList) + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + clusters, err = service.DescribeInstancesById(ctx, instanceId, svcemr.DisplayStrategyIsclusterList) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -183,7 +186,7 @@ func testAccCheckEmrExists(n string) resource.TestCheckFunc { } } -const testEmrBasic = defaultEMRVariable + ` +const testEmrBasic = tcacctest.DefaultEMRVariable + ` data "tencentcloud_instance_types" "cvm4c8m" { exclude_sold_out=true cpu_core_count=4 diff --git a/tencentcloud/resource_tc_emr_user_manager.go b/tencentcloud/services/emr/resource_tc_emr_user_manager.go similarity index 75% rename from tencentcloud/resource_tc_emr_user_manager.go rename to tencentcloud/services/emr/resource_tc_emr_user_manager.go index 28254ba11a..1c8dac18da 100644 --- a/tencentcloud/resource_tc_emr_user_manager.go +++ b/tencentcloud/services/emr/resource_tc_emr_user_manager.go @@ -1,4 +1,4 @@ -package tencentcloud +package emr import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" emr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr/v20190103" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudEmrUserManager() *schema.Resource { +func ResourceTencentCloudEmrUserManager() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudEmrUserManagerCreate, Read: resourceTencentCloudEmrUserManagerRead, @@ -70,10 +73,10 @@ func resourceTencentCloudEmrUserManager() *schema.Resource { } func resourceTencentCloudEmrUserManagerCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_emr_user_manager.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_emr_user_manager.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = emr.NewAddUsersForUserManagerRequest() @@ -99,10 +102,10 @@ func resourceTencentCloudEmrUserManagerCreate(d *schema.ResourceData, meta inter } request.UserManagerUserList = append(request.UserManagerUserList, &userInfoForUserManager) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEmrClient().AddUsersForUserManager(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEmrClient().AddUsersForUserManager(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -118,22 +121,22 @@ func resourceTencentCloudEmrUserManagerCreate(d *schema.ResourceData, meta inter return fmt.Errorf("add user failed, please try again.") } - d.SetId(instanceId + FILED_SP + userName) + d.SetId(instanceId + tccommon.FILED_SP + userName) return resourceTencentCloudEmrUserManagerRead(d, meta) } func resourceTencentCloudEmrUserManagerRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_emr_user_manager.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_emr_user_manager.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EMRService{client: meta.(*TencentCloudClient).apiV3Conn} + service := EMRService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -185,14 +188,14 @@ func resourceTencentCloudEmrUserManagerRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudEmrUserManagerUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_emr_user_manager.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_emr_user_manager.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := emr.NewModifyUserManagerPwdRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -208,10 +211,10 @@ func resourceTencentCloudEmrUserManagerUpdate(d *schema.ResourceData, meta inter } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEmrClient().ModifyUserManagerPwd(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEmrClient().ModifyUserManagerPwd(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -226,14 +229,14 @@ func resourceTencentCloudEmrUserManagerUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudEmrUserManagerDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_emr_user_manager.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_emr_user_manager.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := EMRService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := EMRService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_emr_user_manager_test.go b/tencentcloud/services/emr/resource_tc_emr_user_manager_test.go similarity index 91% rename from tencentcloud/resource_tc_emr_user_manager_test.go rename to tencentcloud/services/emr/resource_tc_emr_user_manager_test.go index c03b5c6464..4b2e25c91e 100644 --- a/tencentcloud/resource_tc_emr_user_manager_test.go +++ b/tencentcloud/services/emr/resource_tc_emr_user_manager_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package emr_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixEmrUserManagerResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccEmrUserManager, diff --git a/tencentcloud/service_tencentcloud_emr.go b/tencentcloud/services/emr/service_tencentcloud_emr.go similarity index 96% rename from tencentcloud/service_tencentcloud_emr.go rename to tencentcloud/services/emr/service_tencentcloud_emr.go index ca9963c0a1..03a0a6299f 100644 --- a/tencentcloud/service_tencentcloud_emr.go +++ b/tencentcloud/services/emr/service_tencentcloud_emr.go @@ -1,4 +1,4 @@ -package tencentcloud +package emr import ( "context" @@ -6,21 +6,28 @@ import ( "log" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" emr "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr/v20190103" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewEMRService(client *connectivity.TencentCloudClient) EMRService { + return EMRService{client: client} +} + type EMRService struct { client *connectivity.TencentCloudClient } func (me *EMRService) UpdateInstance(ctx context.Context, request *emr.ScaleOutInstanceRequest) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) ratelimit.Check(request.GetAction()) response, err := me.client.UseEmrClient().ScaleOutInstance(request) if err != nil { @@ -33,7 +40,7 @@ func (me *EMRService) UpdateInstance(ctx context.Context, request *emr.ScaleOutI } func (me *EMRService) DeleteInstance(ctx context.Context, d *schema.ResourceData) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := emr.NewTerminateInstanceRequest() if v, ok := d.GetOk("instance_id"); ok { request.InstanceId = common.StringPtr(v.(string)) @@ -50,7 +57,7 @@ func (me *EMRService) DeleteInstance(ctx context.Context, d *schema.ResourceData } func (me *EMRService) CreateInstance(ctx context.Context, d *schema.ResourceData) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := emr.NewCreateInstanceRequest() if v, ok := d.GetOk("product_id"); ok { request.ProductId = common.Uint64Ptr((uint64)(v.(int))) @@ -190,7 +197,7 @@ func (me *EMRService) CreateInstance(ctx context.Context, d *schema.ResourceData } func (me *EMRService) DescribeInstances(ctx context.Context, filters map[string]interface{}) (clusters []*emr.ClusterInstancesInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := emr.NewDescribeInstancesRequest() ratelimit.Check(request.GetAction()) @@ -229,7 +236,7 @@ func (me *EMRService) DescribeInstances(ctx context.Context, filters map[string] } func (me *EMRService) DescribeInstancesById(ctx context.Context, instanceId string, displayStrategy string) (clusters []*emr.ClusterInstancesInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := emr.NewDescribeInstancesRequest() ratelimit.Check(request.GetAction()) @@ -254,7 +261,7 @@ func (me *EMRService) DescribeInstancesById(ctx context.Context, instanceId stri } func (me *EMRService) DescribeClusterNodes(ctx context.Context, instanceId, nodeFlag, hardwareResourceType string, offset, limit int) (nodes []*emr.NodeHardwareInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := emr.NewDescribeClusterNodesRequest() ratelimit.Check(request.GetAction()) @@ -282,7 +289,7 @@ func (me *EMRService) DescribeClusterNodes(ctx context.Context, instanceId, node } func (me *EMRService) ModifyResourcesTags(ctx context.Context, region string, instanceId string, oldTags, newTags map[string]interface{}) error { - resourceName := BuildTagResourceName("emr", "emr-instance", region, instanceId) + resourceName := tccommon.BuildTagResourceName("emr", "emr-instance", region, instanceId) rTags, dTags := diffTags(oldTags, newTags) tagService := &TagService{client: me.client} if err := tagService.ModifyTags(ctx, resourceName, rTags, dTags); err != nil { @@ -350,7 +357,7 @@ func (me *EMRService) ModifyResourcesTags(ctx context.Context, region string, in } func (me *EMRService) DescribeEmrUserManagerById(ctx context.Context, instanceId string, userName string) (userManager *emr.DescribeUsersForUserManagerResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := emr.NewDescribeUsersForUserManagerRequest() request.InstanceId = &instanceId @@ -380,7 +387,7 @@ func (me *EMRService) DescribeEmrUserManagerById(ctx context.Context, instanceId } func (me *EMRService) DeleteEmrUserManagerById(ctx context.Context, instanceId string, userName string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := emr.NewDeleteUserManagerUserListRequest() request.InstanceId = &instanceId @@ -406,7 +413,7 @@ func (me *EMRService) DeleteEmrUserManagerById(ctx context.Context, instanceId s func (me *EMRService) DescribeEmrCvmQuotaByFilter(ctx context.Context, param map[string]interface{}) (cvmQuota *emr.DescribeCvmQuotaResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = emr.NewDescribeCvmQuotaRequest() ) @@ -440,7 +447,7 @@ func (me *EMRService) DescribeEmrCvmQuotaByFilter(ctx context.Context, param map func (me *EMRService) DescribeEmrAutoScaleRecordsByFilter(ctx context.Context, param map[string]interface{}) (autoScaleRecords []*emr.AutoScaleRecord, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = emr.NewDescribeAutoScaleRecordsRequest() ) diff --git a/tencentcloud/service_tencentcloud_mysql.go b/tencentcloud/services/emr/service_tencentcloud_mysql.go similarity index 96% rename from tencentcloud/service_tencentcloud_mysql.go rename to tencentcloud/services/emr/service_tencentcloud_mysql.go index e7e27c061c..9adcb5e58c 100644 --- a/tencentcloud/service_tencentcloud_mysql.go +++ b/tencentcloud/services/emr/service_tencentcloud_mysql.go @@ -1,4 +1,4 @@ -package tencentcloud +package emr import ( "context" @@ -6,15 +6,22 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" cdb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb/v20170320" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewMysqlService(client *connectivity.TencentCloudClient) MysqlService { + return MysqlService{client: client} +} + type MysqlService struct { client *connectivity.TencentCloudClient } @@ -40,7 +47,7 @@ func (me *MysqlService) DescribeBackupsByMysqlId(ctx context.Context, mysqlId string, leftNumber int64) (backupInfos []*cdb.BackupInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) listInitSize := leftNumber if listInitSize > 500 { @@ -93,7 +100,7 @@ needMoreItems: func (me *MysqlService) CreateBackup(ctx context.Context, mysqlId string) (backupId int64, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewCreateBackupRequest() backupMethod := "logical" @@ -118,7 +125,7 @@ func (me *MysqlService) CreateBackup(ctx context.Context, mysqlId string) (backu func (me *MysqlService) DescribeDBZoneConfig(ctx context.Context) (sellConfigures *cdb.CdbZoneDataResult, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeCdbZoneConfigRequest() defer func() { @@ -139,7 +146,7 @@ func (me *MysqlService) DescribeDBZoneConfig(ctx context.Context) (sellConfigure func (me *MysqlService) DescribeBackupConfigByMysqlId(ctx context.Context, mysqlId string) (desResponse *cdb.DescribeBackupConfigResponse, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeBackupConfigRequest() request.InstanceId = &mysqlId @@ -162,7 +169,7 @@ func (me *MysqlService) DescribeBackupConfigByMysqlId(ctx context.Context, mysql func (me *MysqlService) ModifyBackupConfigByMysqlId(ctx context.Context, mysqlId string, retentionPeriod int64, backupModel, backupTime string, binlogExpireDays int64, enableBinlogStandby string, binlogStandbyDays int64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyBackupConfigRequest() request.InstanceId = &mysqlId request.ExpireDays = &retentionPeriod @@ -199,7 +206,7 @@ func (me *MysqlService) ModifyBackupConfigByMysqlId(ctx context.Context, mysqlId return } func (me *MysqlService) DescribeDefaultParameters(ctx context.Context, engineVersion string) (parameterList []*cdb.ParameterDetail, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDefaultParamsRequest() request.EngineVersion = &engineVersion @@ -227,7 +234,7 @@ func (me *MysqlService) DescribeDefaultParameters(ctx context.Context, engineVer func (me *MysqlService) DescribeInstanceParameters(ctx context.Context, instanceId string) (parameterList []*cdb.ParameterDetail, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeInstanceParamsRequest() request.InstanceId = &instanceId @@ -252,7 +259,7 @@ func (me *MysqlService) DescribeInstanceParameters(ctx context.Context, instance func (me *MysqlService) ModifyInstanceParam(ctx context.Context, instanceId string, params map[string]string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyInstanceParamRequest() request.InstanceIds = []*string{&instanceId} @@ -316,7 +323,7 @@ func (me *MysqlService) DescribeCaresParameters(ctx context.Context, instanceId func (me *MysqlService) CreateAccount(ctx context.Context, mysqlId string, accountName, accountHost, accountPassword, accountDescription string, maxUserConnections int64) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewCreateAccountsRequest() @@ -348,7 +355,7 @@ func (me *MysqlService) CreateAccount(ctx context.Context, mysqlId string, func (me *MysqlService) ModifyAccountPassword(ctx context.Context, mysqlId string, accountName, accountHost, accountPassword string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyAccountPasswordRequest() @@ -377,7 +384,7 @@ func (me *MysqlService) ModifyAccountPassword(ctx context.Context, mysqlId strin func (me *MysqlService) ModifyAccountMaxUserConnections(ctx context.Context, mysqlId, accountName, accountHost string, maxUserConnections int64) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyAccountMaxUserConnectionsRequest() @@ -406,7 +413,7 @@ func (me *MysqlService) ModifyAccountMaxUserConnections(ctx context.Context, mys func (me *MysqlService) UpgradeDBInstanceEngineVersion(ctx context.Context, mysqlId, engineVersion string, upgradeSubversion, maxDelayTime int64) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewUpgradeDBInstanceEngineVersionRequest() @@ -436,7 +443,7 @@ func (me *MysqlService) UpgradeDBInstanceEngineVersion(ctx context.Context, mysq func (me *MysqlService) ModifyAccountHost(ctx context.Context, mysqlId, accountName, host, newHost string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyAccountHostRequest() @@ -464,7 +471,7 @@ func (me *MysqlService) ModifyAccountHost(ctx context.Context, mysqlId, accountN func (me *MysqlService) ModifyAccountDescription(ctx context.Context, mysqlId string, accountName, accountHost, accountDescription string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyAccountDescriptionRequest() @@ -494,7 +501,7 @@ func (me *MysqlService) ModifyAccountDescription(ctx context.Context, mysqlId st func (me *MysqlService) DeleteAccount(ctx context.Context, mysqlId string, accountName string, accountHost string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDeleteAccountsRequest() @@ -522,7 +529,7 @@ func (me *MysqlService) DeleteAccount(ctx context.Context, mysqlId string, func (me *MysqlService) DescribeAccounts(ctx context.Context, mysqlId string) (accountInfos []*cdb.AccountInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) var ( listInitSize int64 = 100 @@ -572,7 +579,7 @@ needMoreItems: } func (me *MysqlService) _innerDescribeAsyncRequestInfo(ctx context.Context, asyncRequestId string) (status, message string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeAsyncRequestInfoRequest() request.AsyncRequestId = &asyncRequestId @@ -623,7 +630,7 @@ func (me *MysqlService) DescribeAsyncRequestInfo(ctx context.Context, asyncReque func (me *MysqlService) ModifyAccountPrivileges(ctx context.Context, mysqlId string, accountName, accountHost string, databaseNames []string, privileges []string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyAccountPrivilegesRequest() request.InstanceId = &mysqlId @@ -667,7 +674,7 @@ func (me *MysqlService) ModifyAccountPrivileges(ctx context.Context, mysqlId str func (me *MysqlService) DescribeAccountPrivileges(ctx context.Context, mysqlId string, accountName string, accountHost string, databaseNames []string) (privileges []string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) privileges = make([]string, 0, len(MYSQL_DATABASE_PRIVILEGE)) @@ -755,7 +762,7 @@ func (me *MysqlService) DescribeDBInstanceById(ctx context.Context, mysqlId stri func (me *MysqlService) DescribeIsolatedDBInstanceById(ctx context.Context, mysqlId string) (mysqlInfo *cdb.InstanceInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDBInstancesRequest() request.InstanceIds = []*string{&mysqlId} @@ -793,7 +800,7 @@ func (me *MysqlService) DescribeIsolatedDBInstanceById(ctx context.Context, mysq func (me *MysqlService) _innerDescribeDBInstanceById(ctx context.Context, mysqlId string) (mysqlInfo *cdb.InstanceInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDBInstancesRequest() request.InstanceIds = []*string{&mysqlId} @@ -826,7 +833,7 @@ func (me *MysqlService) _innerDescribeDBInstanceById(ctx context.Context, mysqlI func (me *MysqlService) DescribeRunningDBInstanceById(ctx context.Context, mysqlId string) (mysqlInfo *cdb.InstanceInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDBInstancesRequest() request.InstanceIds = []*string{&mysqlId} runningStatus := uint64(1) @@ -861,7 +868,7 @@ func (me *MysqlService) DescribeRunningDBInstanceById(ctx context.Context, mysql func (me *MysqlService) CheckDBGTIDOpen(ctx context.Context, mysqlId string) (open int64, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDBInstanceGTIDRequest() request.InstanceId = &mysqlId @@ -887,7 +894,7 @@ func (me *MysqlService) CheckDBGTIDOpen(ctx context.Context, mysqlId string) (op } func (me *MysqlService) DescribeDBSecurityGroups(ctx context.Context, mysqlId string) (securityGroups []string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDBSecurityGroupsRequest() request.InstanceId = &mysqlId securityGroups = make([]string, 0, 10) @@ -915,7 +922,7 @@ func (me *MysqlService) DescribeDBSecurityGroups(ctx context.Context, mysqlId st func (me *MysqlService) ModifyInstanceTag(ctx context.Context, mysqlId string, deleteTags, modifyTags map[string]string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyInstanceTagRequest() request.InstanceId = &mysqlId @@ -957,7 +964,7 @@ func (me *MysqlService) ModifyInstanceTag(ctx context.Context, mysqlId string, d func (me *MysqlService) DescribeTagsOfInstanceId(ctx context.Context, mysqlId string) (tags map[string]string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeTagsOfInstanceIdsRequest() request.InstanceIds = []*string{&mysqlId} tags = make(map[string]string) @@ -1007,7 +1014,7 @@ again: func (me *MysqlService) DescribeDBInstanceConfig(ctx context.Context, mysqlId string) (backupConfig *cdb.DescribeDBInstanceConfigResponse, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDBInstanceConfigRequest() request.InstanceId = &mysqlId @@ -1035,7 +1042,7 @@ func (me *MysqlService) DescribeDBInstanceConfig(ctx context.Context, mysqlId st // DEPRECATED: Specify these arguments while creating. func (me *MysqlService) InitDBInstances(ctx context.Context, mysqlId, password, charset, lowerCase string, port int) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewInitDBInstancesRequest() request.InstanceIds = []*string{&mysqlId} if password != "" { @@ -1089,7 +1096,7 @@ func (me *MysqlService) InitDBInstances(ctx context.Context, mysqlId, password, func (me *MysqlService) OpenWanService(ctx context.Context, mysqlId string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewOpenWanServiceRequest() request.InstanceId = &mysqlId @@ -1112,7 +1119,7 @@ func (me *MysqlService) OpenWanService(ctx context.Context, mysqlId string) (asy func (me *MysqlService) CloseWanService(ctx context.Context, mysqlId string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewCloseWanServiceRequest() request.InstanceId = &mysqlId defer func() { @@ -1134,7 +1141,7 @@ func (me *MysqlService) CloseWanService(ctx context.Context, mysqlId string) (as func (me *MysqlService) OpenDBInstanceGTID(ctx context.Context, mysqlId string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewOpenDBInstanceGTIDRequest() request.InstanceId = &mysqlId defer func() { @@ -1157,7 +1164,7 @@ func (me *MysqlService) OpenDBInstanceGTID(ctx context.Context, mysqlId string) func (me *MysqlService) ModifyDBInstanceName(ctx context.Context, mysqlId, newInstanceName string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyDBInstanceNameRequest() request.InstanceId = &mysqlId request.InstanceName = &newInstanceName @@ -1181,7 +1188,7 @@ func (me *MysqlService) ModifyDBInstanceName(ctx context.Context, mysqlId, } func (me *MysqlService) ModifyDBInstanceVipVport(ctx context.Context, mysqlId, vpcId, subnetId string, port int64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyDBInstanceVipVportRequest() request.InstanceId = &mysqlId request.DstPort = &port @@ -1213,7 +1220,7 @@ func (me *MysqlService) UpgradeDBInstance(ctx context.Context, mysqlId string, memSize, cpu, volumeSize, fastUpgrade int64, deviceType string, slaveDeployMode, slaveSyncMode int64, firstSlaveZone, secondSlaveZone string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) var waitSwitch int64 = 0 // 0- switch immediately, 1- time window switch @@ -1259,7 +1266,7 @@ func (me *MysqlService) UpgradeDBInstance(ctx context.Context, mysqlId string, func (me *MysqlService) ModifyDBInstanceProject(ctx context.Context, mysqlId string, newProjectId int64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyDBInstanceProjectRequest() request.InstanceIds = []*string{&mysqlId} @@ -1286,7 +1293,7 @@ func (me *MysqlService) ModifyDBInstanceProject(ctx context.Context, mysqlId str func (me *MysqlService) ModifyDBInstanceSecurityGroups(ctx context.Context, mysqlId string, securityGroups []string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyDBInstanceSecurityGroupsRequest() request.InstanceId = &mysqlId @@ -1316,7 +1323,7 @@ func (me *MysqlService) ModifyDBInstanceSecurityGroups(ctx context.Context, mysq func (me *MysqlService) DisassociateSecurityGroup(ctx context.Context, mysqlId string, securityGroup string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDisassociateSecurityGroupsRequest() request.InstanceIds = []*string{&mysqlId} @@ -1343,7 +1350,7 @@ func (me *MysqlService) DisassociateSecurityGroup(ctx context.Context, mysqlId s func (me *MysqlService) ModifyAutoRenewFlag(ctx context.Context, mysqlId string, newRenewFlag int64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyAutoRenewFlagRequest() request.InstanceIds = []*string{&mysqlId} request.AutoRenew = &newRenewFlag @@ -1368,7 +1375,7 @@ func (me *MysqlService) ModifyAutoRenewFlag(ctx context.Context, mysqlId string, func (me *MysqlService) IsolateDBInstance(ctx context.Context, mysqlId string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewIsolateDBInstanceRequest() request.InstanceId = &mysqlId @@ -1394,7 +1401,7 @@ func (me *MysqlService) IsolateDBInstance(ctx context.Context, mysqlId string) ( func (me *MysqlService) OfflineIsolatedInstances(ctx context.Context, mysqlId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewOfflineIsolatedInstancesRequest() request.InstanceIds = []*string{&mysqlId} @@ -1411,7 +1418,7 @@ func (me *MysqlService) OfflineIsolatedInstances(ctx context.Context, mysqlId st } func (me *MysqlService) DescribeMysqlTimeWindowById(ctx context.Context, instanceId string) (timeWindow *cdb.DescribeTimeWindowResponse, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeTimeWindowRequest() request.InstanceId = &instanceId @@ -1436,7 +1443,7 @@ func (me *MysqlService) DescribeMysqlTimeWindowById(ctx context.Context, instanc } func (me *MysqlService) DeleteMysqlTimeWindowById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDeleteTimeWindowRequest() request.InstanceId = &instanceId @@ -1460,7 +1467,7 @@ func (me *MysqlService) DeleteMysqlTimeWindowById(ctx context.Context, instanceI } func (me *MysqlService) DescribeMysqlParamTemplateById(ctx context.Context, templateId string) (paramTemplate *cdb.DescribeParamTemplateInfoResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeParamTemplateInfoRequest() request.TemplateId = helper.StrToInt64Point(templateId) @@ -1485,7 +1492,7 @@ func (me *MysqlService) DescribeMysqlParamTemplateById(ctx context.Context, temp } func (me *MysqlService) DescribeMysqlParamTemplateInfoById(ctx context.Context, templateId string) (paramTemplateInfo *cdb.ParamTemplateInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeParamTemplatesRequest() request.TemplateIds = []*int64{helper.StrToInt64Point(templateId)} @@ -1514,7 +1521,7 @@ func (me *MysqlService) DescribeMysqlParamTemplateInfoById(ctx context.Context, } func (me *MysqlService) DeleteMysqlParamTemplateById(ctx context.Context, templateId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDeleteParamTemplateRequest() request.TemplateId = helper.StrToInt64Point(templateId) @@ -1538,7 +1545,7 @@ func (me *MysqlService) DeleteMysqlParamTemplateById(ctx context.Context, templa } func (me *MysqlService) DescribeMysqlDeployGroupById(ctx context.Context, deployGroupId string) (deployGroup *cdb.DeployGroupInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDeployGroupListRequest() request.DeployGroupId = &deployGroupId @@ -1585,7 +1592,7 @@ func (me *MysqlService) DescribeMysqlDeployGroupById(ctx context.Context, deploy } func (me *MysqlService) DeleteMysqlDeployGroupById(ctx context.Context, deployGroupId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDeleteDeployGroupsRequest() request.DeployGroupIds = []*string{&deployGroupId} @@ -1609,7 +1616,7 @@ func (me *MysqlService) DeleteMysqlDeployGroupById(ctx context.Context, deployGr } func (me *MysqlService) DescribeMysqlSecurityGroupsAttachmentById(ctx context.Context, securityGroupId string, instanceId string) (securityGroupsAttachment *cdb.SecurityGroup, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDBSecurityGroupsRequest() request.InstanceId = &instanceId @@ -1643,7 +1650,7 @@ func (me *MysqlService) DescribeMysqlSecurityGroupsAttachmentById(ctx context.Co } func (me *MysqlService) DeleteMysqlSecurityGroupsAttachmentById(ctx context.Context, securityGroupId string, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDisassociateSecurityGroupsRequest() request.SecurityGroupId = &securityGroupId @@ -1668,7 +1675,7 @@ func (me *MysqlService) DeleteMysqlSecurityGroupsAttachmentById(ctx context.Cont } func (me *MysqlService) DescribeMysqlLocalBinlogConfigById(ctx context.Context, instanceId string) (localBinlogConfig *cdb.LocalBinlogConfig, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeLocalBinlogConfigRequest() request.InstanceId = &instanceId @@ -1693,7 +1700,7 @@ func (me *MysqlService) DescribeMysqlLocalBinlogConfigById(ctx context.Context, } func (me *MysqlService) DescribeMysqlAuditLogFileById(ctx context.Context, instanceId string, fileName string) (auditLogFile *cdb.AuditLogFile, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeAuditLogFilesRequest() request.InstanceId = &instanceId @@ -1723,7 +1730,7 @@ func (me *MysqlService) DescribeMysqlAuditLogFileById(ctx context.Context, insta } func (me *MysqlService) DeleteMysqlAuditLogFileById(ctx context.Context, instanceId string, fileName string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDeleteAuditLogFileRequest() request.InstanceId = &instanceId @@ -1749,7 +1756,7 @@ func (me *MysqlService) DeleteMysqlAuditLogFileById(ctx context.Context, instanc func (me *MysqlService) MysqlAuditLogFileStateRefreshFunc(instanceId, fileName string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeMysqlAuditLogFileById(ctx, instanceId, fileName) @@ -1763,7 +1770,7 @@ func (me *MysqlService) MysqlAuditLogFileStateRefreshFunc(instanceId, fileName s func (me *MysqlService) DescribeMysqlBackupOverviewByFilter(ctx context.Context, param map[string]interface{}) (backupOverview *cdb.DescribeBackupOverviewResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeBackupOverviewRequest() ) @@ -1797,7 +1804,7 @@ func (me *MysqlService) DescribeMysqlBackupOverviewByFilter(ctx context.Context, func (me *MysqlService) DescribeMysqlBackupSummariesByFilter(ctx context.Context, param map[string]interface{}) (backupSummaries []*cdb.BackupSummaryItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeBackupSummariesRequest() ) @@ -1851,7 +1858,7 @@ func (me *MysqlService) DescribeMysqlBackupSummariesByFilter(ctx context.Context func (me *MysqlService) DescribeMysqlBinLogByFilter(ctx context.Context, param map[string]interface{}) (binLog []*cdb.BinlogInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeBinlogsRequest() ) @@ -1899,7 +1906,7 @@ func (me *MysqlService) DescribeMysqlBinLogByFilter(ctx context.Context, param m func (me *MysqlService) DescribeMysqlBinlogBackupOverviewByFilter(ctx context.Context, param map[string]interface{}) (binlogBackupOverview *cdb.DescribeBinlogBackupOverviewResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeBinlogBackupOverviewRequest() ) @@ -1933,7 +1940,7 @@ func (me *MysqlService) DescribeMysqlBinlogBackupOverviewByFilter(ctx context.Co func (me *MysqlService) DescribeMysqlCloneListByFilter(ctx context.Context, param map[string]interface{}) (cloneList []*cdb.CloneItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeCloneListRequest() ) @@ -1981,7 +1988,7 @@ func (me *MysqlService) DescribeMysqlCloneListByFilter(ctx context.Context, para func (me *MysqlService) DescribeMysqlDataBackupOverviewByFilter(ctx context.Context, param map[string]interface{}) (dataBackupOverview *cdb.DescribeDataBackupOverviewResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeDataBackupOverviewRequest() ) @@ -2016,7 +2023,7 @@ func (me *MysqlService) DescribeMysqlDataBackupOverviewByFilter(ctx context.Cont func (me *MysqlService) DescribeMysqlDbFeaturesByFilter(ctx context.Context, param map[string]interface{}) (dbFeatures *cdb.DescribeDBFeaturesResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeDBFeaturesRequest() ) @@ -2051,7 +2058,7 @@ func (me *MysqlService) DescribeMysqlDbFeaturesByFilter(ctx context.Context, par func (me *MysqlService) DescribeMysqlInstTablesByFilter(ctx context.Context, param map[string]interface{}) (instTables []*string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeTablesRequest() ) @@ -2107,7 +2114,7 @@ func (me *MysqlService) DescribeMysqlInstTablesByFilter(ctx context.Context, par func (me *MysqlService) DescribeMysqlInstanceCharsetByFilter(ctx context.Context, instanceId string) (instanceCharset *cdb.DescribeDBInstanceCharsetResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeDBInstanceCharsetRequest() ) @@ -2138,7 +2145,7 @@ func (me *MysqlService) DescribeMysqlInstanceCharsetByFilter(ctx context.Context func (me *MysqlService) DescribeMysqlInstanceInfoById(ctx context.Context, instanceId string) (instanceInfo *cdb.DescribeDBInstanceInfoResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeDBInstanceInfoRequest() ) @@ -2169,7 +2176,7 @@ func (me *MysqlService) DescribeMysqlInstanceInfoById(ctx context.Context, insta func (me *MysqlService) DescribeMysqlInstanceParamRecordByFilter(ctx context.Context, param map[string]interface{}) (instanceParamRecord []*cdb.ParamRecord, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeInstanceParamRecordsRequest() ) @@ -2220,7 +2227,7 @@ func (me *MysqlService) DescribeMysqlInstanceParamRecordByFilter(ctx context.Con func (me *MysqlService) DescribeMysqlInstanceRebootTimeByFilter(ctx context.Context, param map[string]interface{}) (instanceRebootTime []*cdb.InstanceRebootTime, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeDBInstanceRebootTimeRequest() ) @@ -2255,7 +2262,7 @@ func (me *MysqlService) DescribeMysqlInstanceRebootTimeByFilter(ctx context.Cont func (me *MysqlService) DescribeMysqlProxyCustomById(ctx context.Context, instanceId string) (proxyCustom *cdb.DescribeProxyCustomConfResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeProxyCustomConfRequest() ) @@ -2286,7 +2293,7 @@ func (me *MysqlService) DescribeMysqlProxyCustomById(ctx context.Context, instan func (me *MysqlService) DescribeMysqlRollbackRangeTimeByFilter(ctx context.Context, param map[string]interface{}) (rollbackRangeTime []*cdb.InstanceRollbackRangeTime, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeRollbackRangeTimeRequest() ) @@ -2327,7 +2334,7 @@ func (me *MysqlService) DescribeMysqlRollbackRangeTimeByFilter(ctx context.Conte func (me *MysqlService) DescribeMysqlSlowLogByFilter(ctx context.Context, param map[string]interface{}) (slowLog []*cdb.SlowLogInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeSlowLogsRequest() ) @@ -2375,7 +2382,7 @@ func (me *MysqlService) DescribeMysqlSlowLogByFilter(ctx context.Context, param func (me *MysqlService) DescribeMysqlSlowLogDataByFilter(ctx context.Context, param map[string]interface{}) (slowLogData []*cdb.SlowLogItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeSlowLogDataRequest() ) @@ -2447,7 +2454,7 @@ func (me *MysqlService) DescribeMysqlSlowLogDataByFilter(ctx context.Context, pa func (me *MysqlService) DescribeMysqlSupportedPrivilegesById(ctx context.Context, instanceId string) (supportedPrivileges *cdb.DescribeSupportedPrivilegesResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeSupportedPrivilegesRequest() ) @@ -2478,7 +2485,7 @@ func (me *MysqlService) DescribeMysqlSupportedPrivilegesById(ctx context.Context func (me *MysqlService) DescribeMysqlSwitchRecordById(ctx context.Context, instanceId string) (switchRecord []*cdb.DBSwitchInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeDBSwitchRecordsRequest() ) @@ -2522,7 +2529,7 @@ func (me *MysqlService) DescribeMysqlSwitchRecordById(ctx context.Context, insta func (me *MysqlService) DescribeMysqlUploadedFilesByFilter(ctx context.Context, param map[string]interface{}) (uploadedFiles []*cdb.SqlFileInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeUploadedFilesRequest() ) @@ -2570,7 +2577,7 @@ func (me *MysqlService) DescribeMysqlUploadedFilesByFilter(ctx context.Context, func (me *MysqlService) DescribeMysqlUserTaskByFilter(ctx context.Context, param map[string]interface{}) (userTask []*cdb.TaskDetail, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeTasksRequest() ) @@ -2644,7 +2651,7 @@ func (me *MysqlService) DescribeMysqlUserTaskByFilter(ctx context.Context, param } func (me *MysqlService) DescribeMysqlBackupDownloadRestrictionById(ctx context.Context) (backupDownloadRestriction *cdb.DescribeBackupDownloadRestrictionResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeBackupDownloadRestrictionRequest() @@ -2668,7 +2675,7 @@ func (me *MysqlService) DescribeMysqlBackupDownloadRestrictionById(ctx context.C } func (me *MysqlService) DescribeMysqlBackupEncryptionStatusById(ctx context.Context, instanceId string) (backupEncryptionStatus *cdb.DescribeBackupEncryptionStatusResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeBackupEncryptionStatusRequest() request.InstanceId = &instanceId @@ -2693,7 +2700,7 @@ func (me *MysqlService) DescribeMysqlBackupEncryptionStatusById(ctx context.Cont } func (me *MysqlService) DescribeMysqlDbImportJobById(ctx context.Context, instanceId, asyncRequestId string) (dbImportJob *cdb.ImportRecord, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDBImportRecordsRequest() request.InstanceId = &instanceId @@ -2741,7 +2748,7 @@ func (me *MysqlService) DescribeMysqlDbImportJobById(ctx context.Context, instan } func (me *MysqlService) DeleteMysqlDbImportJobById(ctx context.Context, asyncRequestId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewStopDBImportJobRequest() request.AsyncRequestId = &asyncRequestId @@ -2765,7 +2772,7 @@ func (me *MysqlService) DeleteMysqlDbImportJobById(ctx context.Context, asyncReq } func (me *MysqlService) DeleteMysqlIsolateInstanceById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewReleaseIsolatedDBInstancesRequest() request.InstanceIds = []*string{&instanceId} @@ -2789,7 +2796,7 @@ func (me *MysqlService) DeleteMysqlIsolateInstanceById(ctx context.Context, inst } func (me *MysqlService) DescribeMysqlPasswordComplexityById(ctx context.Context, instanceId string) (passwordComplexity []*cdb.ParameterDetail, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeInstanceParamsRequest() request.InstanceId = &instanceId @@ -2818,7 +2825,7 @@ func (me *MysqlService) DescribeMysqlPasswordComplexityById(ctx context.Context, } func (me *MysqlService) DescribeMysqlProxyById(ctx context.Context, instanceId, proxyGroupId string) (proxy *cdb.ProxyGroupInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeCdbProxyInfoRequest() request.InstanceId = &instanceId @@ -2850,7 +2857,7 @@ func (me *MysqlService) DescribeMysqlProxyById(ctx context.Context, instanceId, } func (me *MysqlService) ModifyCdbProxyAddressVipAndVPort(ctx context.Context, proxyGroupId, proxyAddressId, vpcId, subnetId, ip string, port uint64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyCdbProxyAddressVipAndVPortRequest() request.ProxyGroupId = &proxyGroupId @@ -2879,7 +2886,7 @@ func (me *MysqlService) ModifyCdbProxyAddressVipAndVPort(ctx context.Context, pr } func (me *MysqlService) ModifyCdbProxyAddressDesc(ctx context.Context, proxyGroupId, proxyAddressId, desc string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewModifyCdbProxyAddressDescRequest() request.ProxyGroupId = &proxyGroupId @@ -2905,7 +2912,7 @@ func (me *MysqlService) ModifyCdbProxyAddressDesc(ctx context.Context, proxyGrou } func (me *MysqlService) UpgradeCDBProxyVersion(ctx context.Context, instanceId, proxyGroupId, oldProxyVersion, proxyVersion, upgradeTime string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewUpgradeCDBProxyVersionRequest() request.InstanceId = &instanceId @@ -2933,7 +2940,7 @@ func (me *MysqlService) UpgradeCDBProxyVersion(ctx context.Context, instanceId, } func (me *MysqlService) DeleteMysqlProxyById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewCloseCDBProxyRequest() request.InstanceId = &instanceId @@ -2957,7 +2964,7 @@ func (me *MysqlService) DeleteMysqlProxyById(ctx context.Context, instanceId str } func (me *MysqlService) DescribeMysqlRemoteBackupConfigById(ctx context.Context, instanceId string) (remoteBackupConfig *cdb.DescribeRemoteBackupConfigResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeRemoteBackupConfigRequest() request.InstanceId = &instanceId @@ -2982,7 +2989,7 @@ func (me *MysqlService) DescribeMysqlRemoteBackupConfigById(ctx context.Context, } func (me *MysqlService) DescribeMysqlRollbackById(ctx context.Context, instanceId, asyncRequestId string) (rollback []*cdb.RollbackInstancesInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeRollbackTaskDetailRequest() request.InstanceId = &instanceId @@ -3011,7 +3018,7 @@ func (me *MysqlService) DescribeMysqlRollbackById(ctx context.Context, instanceI } func (me *MysqlService) DeleteMysqlRollbackById(ctx context.Context, instanceId string) (asyncRequestId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewStopRollbackRequest() request.InstanceId = &instanceId @@ -3036,7 +3043,7 @@ func (me *MysqlService) DeleteMysqlRollbackById(ctx context.Context, instanceId } func (me *MysqlService) DescribeMysqlRoGroupById(ctx context.Context, instanceId string, roGroupId string) (roGroup *cdb.RoGroup, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeRoGroupsRequest() request.InstanceId = &instanceId @@ -3072,7 +3079,7 @@ func (me *MysqlService) DescribeMysqlRoGroupById(ctx context.Context, instanceId func (me *MysqlService) DescribeMysqlErrorLogByFilter(ctx context.Context, param map[string]interface{}) (errorLog []*cdb.ErrlogItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeErrorLogDataRequest() ) @@ -3132,7 +3139,7 @@ func (me *MysqlService) DescribeMysqlErrorLogByFilter(ctx context.Context, param func (me *MysqlService) DescribeMysqlProjectSecurityGroupByFilter(ctx context.Context, param map[string]interface{}) (projectSecurityGroup []*cdb.SecurityGroup, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeProjectSecurityGroupsRequest() ) @@ -3165,7 +3172,7 @@ func (me *MysqlService) DescribeMysqlProjectSecurityGroupByFilter(ctx context.Co func (me *MysqlService) DescribeMysqlRoMinScaleByFilter(ctx context.Context, param map[string]interface{}) (roMinScale *cdb.DescribeRoMinScaleResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeRoMinScaleRequest() ) @@ -3202,7 +3209,7 @@ func (me *MysqlService) DescribeMysqlRoMinScaleByFilter(ctx context.Context, par func (me *MysqlService) DescribeMysqlDatabasesByFilter(ctx context.Context, param map[string]interface{}) (databases *cdb.DescribeDatabasesResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = cdb.NewDescribeDatabasesRequest() ) @@ -3260,7 +3267,7 @@ func (me *MysqlService) DescribeMysqlDatabasesByFilter(ctx context.Context, para } func (me *MysqlService) DescribeMysqlDatabaseById(ctx context.Context, instanceId string, dBName string) (database *cdb.DatabasesWithCharacterLists, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDescribeDatabasesRequest() request.InstanceId = &instanceId @@ -3290,7 +3297,7 @@ func (me *MysqlService) DescribeMysqlDatabaseById(ctx context.Context, instanceI } func (me *MysqlService) DeleteMysqlDatabaseById(ctx context.Context, instanceId string, dBName string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := cdb.NewDeleteDatabaseRequest() request.InstanceId = &instanceId diff --git a/tencentcloud/services/emr/service_tencentcloud_tag.go b/tencentcloud/services/emr/service_tencentcloud_tag.go new file mode 100644 index 0000000000..0252b1d503 --- /dev/null +++ b/tencentcloud/services/emr/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package emr + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/data_source_tc_elasticsearch_describe_index_list.go b/tencentcloud/services/es/data_source_tc_elasticsearch_describe_index_list.go similarity index 95% rename from tencentcloud/data_source_tc_elasticsearch_describe_index_list.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_describe_index_list.go index 41fc6a3903..d38e7f5937 100644 --- a/tencentcloud/data_source_tc_elasticsearch_describe_index_list.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_describe_index_list.go @@ -1,8 +1,10 @@ -package tencentcloud +package es import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" @@ -10,7 +12,7 @@ import ( "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudElasticsearchDescribeIndexList() *schema.Resource { +func DataSourceTencentCloudElasticsearchDescribeIndexList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudElasticsearchDescribeIndexListRead, Schema: map[string]*schema.Schema{ @@ -286,12 +288,12 @@ func dataSourceTencentCloudElasticsearchDescribeIndexList() *schema.Resource { } func dataSourceTencentCloudElasticsearchDescribeIndexListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_elasticsearch_describe_index_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_elasticsearch_describe_index_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("index_type"); ok { @@ -327,14 +329,14 @@ func dataSourceTencentCloudElasticsearchDescribeIndexListRead(d *schema.Resource paramMap["Order"] = helper.String(v.(string)) } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var indexMetaFields []*elasticsearch.IndexMetaField - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeElasticsearchDescribeIndexListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } indexMetaFields = result return nil @@ -511,7 +513,7 @@ func dataSourceTencentCloudElasticsearchDescribeIndexListRead(d *schema.Resource indexMetaFieldMap["index_docs"] = indexMetaField.IndexDocs } - ids = append(ids, *indexMetaField.ClusterId+FILED_SP+*indexMetaField.IndexName) + ids = append(ids, *indexMetaField.ClusterId+tccommon.FILED_SP+*indexMetaField.IndexName) tmpList = append(tmpList, indexMetaFieldMap) } @@ -521,7 +523,7 @@ func dataSourceTencentCloudElasticsearchDescribeIndexListRead(d *schema.Resource d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_elasticsearch_describe_index_list_test.go b/tencentcloud/services/es/data_source_tc_elasticsearch_describe_index_list_test.go similarity index 71% rename from tencentcloud/data_source_tc_elasticsearch_describe_index_list_test.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_describe_index_list_test.go index d950d8f0f6..14f2fbe86b 100644 --- a/tencentcloud/data_source_tc_elasticsearch_describe_index_list_test.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_describe_index_list_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudElasticsearchDescribeIndexListDataSource_basic(t *testin t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchDescribeIndexListDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_describe_index_list.describe_index_list"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_describe_index_list.describe_index_list"), resource.TestCheckResourceAttr("data.tencentcloud_elasticsearch_describe_index_list.describe_index_list", "index_meta_fields.#", "1"), ), }, diff --git a/tencentcloud/data_source_tc_elasticsearch_diagnose.go b/tencentcloud/services/es/data_source_tc_elasticsearch_diagnose.go similarity index 95% rename from tencentcloud/data_source_tc_elasticsearch_diagnose.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_diagnose.go index 7876317214..62c764c4c1 100644 --- a/tencentcloud/data_source_tc_elasticsearch_diagnose.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_diagnose.go @@ -1,15 +1,18 @@ -package tencentcloud +package es import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudElasticsearchDiagnose() *schema.Resource { +func DataSourceTencentCloudElasticsearchDiagnose() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudElasticsearchDiagnoseRead, Schema: map[string]*schema.Schema{ @@ -243,12 +246,12 @@ func dataSourceTencentCloudElasticsearchDiagnose() *schema.Resource { } func dataSourceTencentCloudElasticsearchDiagnoseRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_elasticsearch_diagnose.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_elasticsearch_diagnose.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -263,14 +266,14 @@ func dataSourceTencentCloudElasticsearchDiagnoseRead(d *schema.ResourceData, met paramMap["Limit"] = v.(int) } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var diagnoseResults []*elasticsearch.DiagnoseResult - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeElasticsearchDiagnoseByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } diagnoseResults = result return nil @@ -468,7 +471,7 @@ func dataSourceTencentCloudElasticsearchDiagnoseRead(d *schema.ResourceData, met d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_elasticsearch_diagnose_test.go b/tencentcloud/services/es/data_source_tc_elasticsearch_diagnose_test.go similarity index 61% rename from tencentcloud/data_source_tc_elasticsearch_diagnose_test.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_diagnose_test.go index 4dc6069fdb..16fe94a00c 100644 --- a/tencentcloud/data_source_tc_elasticsearch_diagnose_test.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_diagnose_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudElasticsearchDiagnoseDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchDiagnoseDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_diagnose.diagnose")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_diagnose.diagnose")), }, }, }) diff --git a/tencentcloud/data_source_tc_elasticsearch_instance_logs.go b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_logs.go similarity index 86% rename from tencentcloud/data_source_tc_elasticsearch_instance_logs.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_instance_logs.go index 957f3de17a..0985c2cff3 100644 --- a/tencentcloud/data_source_tc_elasticsearch_instance_logs.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_logs.go @@ -1,15 +1,18 @@ -package tencentcloud +package es import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" es "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudElasticsearchInstanceLogs() *schema.Resource { +func DataSourceTencentCloudElasticsearchInstanceLogs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudElasticsearchInstanceLogsRead, Schema: map[string]*schema.Schema{ @@ -100,12 +103,12 @@ func dataSourceTencentCloudElasticsearchInstanceLogs() *schema.Resource { } func dataSourceTencentCloudElasticsearchInstanceLogsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_elasticsearch_instance_logs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_elasticsearch_instance_logs.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) @@ -134,14 +137,14 @@ func dataSourceTencentCloudElasticsearchInstanceLogsRead(d *schema.ResourceData, paramMap["OrderByType"] = helper.IntUint64(v.(int)) } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var instanceLogList []*es.InstanceLog - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeElasticsearchInstanceLogsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } instanceLogList = result return nil @@ -185,7 +188,7 @@ func dataSourceTencentCloudElasticsearchInstanceLogsRead(d *schema.ResourceData, d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_elasticsearch_instance_logs_test.go b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_logs_test.go similarity index 60% rename from tencentcloud/data_source_tc_elasticsearch_instance_logs_test.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_instance_logs_test.go index 5e30f20ea7..db6fd88db0 100644 --- a/tencentcloud/data_source_tc_elasticsearch_instance_logs_test.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_logs_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudElasticsearchInstanceLogsDataSource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchInstanceLogsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_instance_logs.elasticsearch_instance_logs")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_instance_logs.elasticsearch_instance_logs")), }, }, }) diff --git a/tencentcloud/data_source_tc_elasticsearch_instance_operations.go b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_operations.go similarity index 94% rename from tencentcloud/data_source_tc_elasticsearch_instance_operations.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_instance_operations.go index 70987a4f78..2154575158 100644 --- a/tencentcloud/data_source_tc_elasticsearch_instance_operations.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_operations.go @@ -1,15 +1,18 @@ -package tencentcloud +package es import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudElasticsearchInstanceOperations() *schema.Resource { +func DataSourceTencentCloudElasticsearchInstanceOperations() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudElasticsearchInstanceOperationsRead, Schema: map[string]*schema.Schema{ @@ -238,12 +241,12 @@ func dataSourceTencentCloudElasticsearchInstanceOperations() *schema.Resource { } func dataSourceTencentCloudElasticsearchInstanceOperationsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_elasticsearch_instance_operations.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_elasticsearch_instance_operations.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) @@ -260,14 +263,14 @@ func dataSourceTencentCloudElasticsearchInstanceOperationsRead(d *schema.Resourc paramMap["EndTime"] = helper.String(v.(string)) } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var operations []*elasticsearch.Operation - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeElasticsearchInstanceOperationsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } operations = result return nil @@ -451,7 +454,7 @@ func dataSourceTencentCloudElasticsearchInstanceOperationsRead(d *schema.Resourc d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_elasticsearch_instance_operations_test.go b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_operations_test.go similarity index 64% rename from tencentcloud/data_source_tc_elasticsearch_instance_operations_test.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_instance_operations_test.go index 0a600255c1..5bd5b284c7 100644 --- a/tencentcloud/data_source_tc_elasticsearch_instance_operations_test.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_operations_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudElasticsearchInstanceOperationsDataSource_basic(t *testi t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchInstanceOperationsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_instance_operations.instance_operations")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_instance_operations.instance_operations")), }, }, }) diff --git a/tencentcloud/data_source_tc_elasticsearch_instance_plugin_list.go b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_plugin_list.go similarity index 87% rename from tencentcloud/data_source_tc_elasticsearch_instance_plugin_list.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_instance_plugin_list.go index f8f8440c02..8ca89b7008 100644 --- a/tencentcloud/data_source_tc_elasticsearch_instance_plugin_list.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_plugin_list.go @@ -1,15 +1,18 @@ -package tencentcloud +package es import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudElasticsearchInstancePluginList() *schema.Resource { +func DataSourceTencentCloudElasticsearchInstancePluginList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudElasticsearchInstancePluginListRead, Schema: map[string]*schema.Schema{ @@ -97,12 +100,12 @@ func dataSourceTencentCloudElasticsearchInstancePluginList() *schema.Resource { } func dataSourceTencentCloudElasticsearchInstancePluginListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_elasticsearch_instance_plugin_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_elasticsearch_instance_plugin_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -121,14 +124,14 @@ func dataSourceTencentCloudElasticsearchInstancePluginListRead(d *schema.Resourc paramMap["PluginType"] = helper.IntInt64(v.(int)) } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var pluginList []*elasticsearch.DescribeInstancePluginInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeElasticsearchInstancePluginListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } pluginList = result return nil @@ -182,7 +185,7 @@ func dataSourceTencentCloudElasticsearchInstancePluginListRead(d *schema.Resourc d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_elasticsearch_instance_plugin_list_test.go b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_plugin_list_test.go similarity index 61% rename from tencentcloud/data_source_tc_elasticsearch_instance_plugin_list_test.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_instance_plugin_list_test.go index 5a7b5b3e95..3d3a62d576 100644 --- a/tencentcloud/data_source_tc_elasticsearch_instance_plugin_list_test.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_instance_plugin_list_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudElasticsearchInstancePluginListDataSource_basic(t *testi t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchInstancePluginListDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_instance_plugin_list.instance_plugin_list")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_instance_plugin_list.instance_plugin_list")), }, }, }) diff --git a/tencentcloud/data_source_tc_elasticsearch_instances.go b/tencentcloud/services/es/data_source_tc_elasticsearch_instances.go old mode 100755 new mode 100644 similarity index 92% rename from tencentcloud/data_source_tc_elasticsearch_instances.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_instances.go index 0ec3949f0b..4e205b38f3 --- a/tencentcloud/data_source_tc_elasticsearch_instances.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_instances.go @@ -1,16 +1,19 @@ -package tencentcloud +package es import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" es "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudElasticsearchInstances() *schema.Resource { +func DataSourceTencentCloudElasticsearchInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudElasticsearchInstancesRead, @@ -189,12 +192,12 @@ func dataSourceTencentCloudElasticsearchInstances() *schema.Resource { } func dataSourceTencentCloudElasticsearchInstancesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_elasticsearch_instances.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_elasticsearch_instances.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) elasticsearchService := ElasticsearchService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } instanceId := "" @@ -208,10 +211,10 @@ func dataSourceTencentCloudElasticsearchInstancesRead(d *schema.ResourceData, me tags := helper.GetTags(d, "tags") var instances []*es.InstanceInfo var errRet error - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { instances, errRet = elasticsearchService.DescribeInstancesByFilter(ctx, instanceId, instanceName, tags) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } return nil }) @@ -289,7 +292,7 @@ func dataSourceTencentCloudElasticsearchInstancesRead(d *schema.ResourceData, me output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if err := writeToFile(output.(string), instanceList); err != nil { + if err := tccommon.WriteToFile(output.(string), instanceList); err != nil { return err } } diff --git a/tencentcloud/data_source_tc_elasticsearch_instances_test.go b/tencentcloud/services/es/data_source_tc_elasticsearch_instances_test.go old mode 100755 new mode 100644 similarity index 89% rename from tencentcloud/data_source_tc_elasticsearch_instances_test.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_instances_test.go index a6b0cc50e3..a0efa4016a --- a/tencentcloud/data_source_tc_elasticsearch_instances_test.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_instances_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,8 +12,8 @@ func TestAccTencentCloudElasticsearchInstancesDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckElasticsearchInstanceDestroy, Steps: []resource.TestStep{ { @@ -38,7 +40,7 @@ func TestAccTencentCloudElasticsearchInstancesDataSource(t *testing.T) { }) } -const testAccElasticsearchInstancesDataSource = defaultVpcVariable + ` +const testAccElasticsearchInstancesDataSource = tcacctest.DefaultVpcVariable + ` data "tencentcloud_elasticsearch_instances" "foo" { instance_name = "keep" diff --git a/tencentcloud/data_source_tc_elasticsearch_logstash_instance_logs.go b/tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_logs.go similarity index 86% rename from tencentcloud/data_source_tc_elasticsearch_logstash_instance_logs.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_logs.go index 8297166a57..d41708279a 100644 --- a/tencentcloud/data_source_tc_elasticsearch_logstash_instance_logs.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_logs.go @@ -1,15 +1,18 @@ -package tencentcloud +package es import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudElasticsearchLogstashInstanceLogs() *schema.Resource { +func DataSourceTencentCloudElasticsearchLogstashInstanceLogs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudElasticsearchLogstashInstanceLogsRead, Schema: map[string]*schema.Schema{ @@ -97,12 +100,12 @@ func dataSourceTencentCloudElasticsearchLogstashInstanceLogs() *schema.Resource } func dataSourceTencentCloudElasticsearchLogstashInstanceLogsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_elasticsearch_logstash_instance_logs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_elasticsearch_logstash_instance_logs.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) @@ -131,14 +134,14 @@ func dataSourceTencentCloudElasticsearchLogstashInstanceLogsRead(d *schema.Resou paramMap["OrderByType"] = helper.IntUint64(v.(int)) } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var instanceLogList []*elasticsearch.InstanceLog - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeElasticsearchLogstashInstanceLogsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } instanceLogList = result return nil @@ -182,7 +185,7 @@ func dataSourceTencentCloudElasticsearchLogstashInstanceLogsRead(d *schema.Resou d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_elasticsearch_logstash_instance_logs_test.go b/tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_logs_test.go similarity index 64% rename from tencentcloud/data_source_tc_elasticsearch_logstash_instance_logs_test.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_logs_test.go index f1ebfa7fd5..8e26a8b050 100644 --- a/tencentcloud/data_source_tc_elasticsearch_logstash_instance_logs_test.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_logs_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudElasticsearchLogstashInstanceLogsDataSource_basic(t *tes t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchLogstashInstanceLogsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_logstash_instance_logs.logstash_instance_logs")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_logstash_instance_logs.logstash_instance_logs")), }, }, }) diff --git a/tencentcloud/data_source_tc_elasticsearch_logstash_instance_operations.go b/tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_operations.go similarity index 94% rename from tencentcloud/data_source_tc_elasticsearch_logstash_instance_operations.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_operations.go index e8169061b6..16a910c664 100644 --- a/tencentcloud/data_source_tc_elasticsearch_logstash_instance_operations.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_operations.go @@ -1,15 +1,18 @@ -package tencentcloud +package es import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudElasticsearchLogstashInstanceOperations() *schema.Resource { +func DataSourceTencentCloudElasticsearchLogstashInstanceOperations() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudElasticsearchLogstashInstanceOperationsRead, Schema: map[string]*schema.Schema{ @@ -238,12 +241,12 @@ func dataSourceTencentCloudElasticsearchLogstashInstanceOperations() *schema.Res } func dataSourceTencentCloudElasticsearchLogstashInstanceOperationsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_elasticsearch_logstash_instance_operations.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_elasticsearch_logstash_instance_operations.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) @@ -260,14 +263,14 @@ func dataSourceTencentCloudElasticsearchLogstashInstanceOperationsRead(d *schema paramMap["EndTime"] = helper.String(v.(string)) } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var operations []*elasticsearch.Operation - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeElasticsearchLogstashInstanceOperationsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } operations = result return nil @@ -451,7 +454,7 @@ func dataSourceTencentCloudElasticsearchLogstashInstanceOperationsRead(d *schema d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_elasticsearch_logstash_instance_operations_test.go b/tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_operations_test.go similarity index 64% rename from tencentcloud/data_source_tc_elasticsearch_logstash_instance_operations_test.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_operations_test.go index c27951f0e5..8b104f23cb 100644 --- a/tencentcloud/data_source_tc_elasticsearch_logstash_instance_operations_test.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_logstash_instance_operations_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudElasticsearchLogstashInstanceOperationsDataSource_basic( t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchLogstashInstanceOperationsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_logstash_instance_operations.logstash_instance_operations")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_logstash_instance_operations.logstash_instance_operations")), }, }, }) diff --git a/tencentcloud/data_source_tc_elasticsearch_views.go b/tencentcloud/services/es/data_source_tc_elasticsearch_views.go similarity index 95% rename from tencentcloud/data_source_tc_elasticsearch_views.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_views.go index b37aaf182a..d59b88b37c 100644 --- a/tencentcloud/data_source_tc_elasticsearch_views.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_views.go @@ -1,15 +1,18 @@ -package tencentcloud +package es import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudElasticsearchViews() *schema.Resource { +func DataSourceTencentCloudElasticsearchViews() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudElasticsearchViewsRead, Schema: map[string]*schema.Schema{ @@ -310,12 +313,12 @@ func dataSourceTencentCloudElasticsearchViews() *schema.Resource { } func dataSourceTencentCloudElasticsearchViewsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_elasticsearch_views.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_elasticsearch_views.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -323,7 +326,7 @@ func dataSourceTencentCloudElasticsearchViewsRead(d *schema.ResourceData, meta i paramMap["InstanceId"] = helper.String(instanceId) } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( clusterView *elasticsearch.ClusterView @@ -331,11 +334,11 @@ func dataSourceTencentCloudElasticsearchViewsRead(d *schema.ResourceData, meta i kibanasViews []*elasticsearch.KibanaView ) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { var e error clusterView, nodesViews, kibanasViews, e = service.DescribeElasticsearchViewsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -575,7 +578,7 @@ func dataSourceTencentCloudElasticsearchViewsRead(d *schema.ResourceData, meta i result["kibanas_view"] = kibanasViewMapList output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_elasticsearch_views_test.go b/tencentcloud/services/es/data_source_tc_elasticsearch_views_test.go similarity index 60% rename from tencentcloud/data_source_tc_elasticsearch_views_test.go rename to tencentcloud/services/es/data_source_tc_elasticsearch_views_test.go index 18ee7ce403..f7b3165d93 100644 --- a/tencentcloud/data_source_tc_elasticsearch_views_test.go +++ b/tencentcloud/services/es/data_source_tc_elasticsearch_views_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudElasticsearchViewsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchViewsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_views.views")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_elasticsearch_views.views")), }, }, }) diff --git a/tencentcloud/extension_elasticsearch.go b/tencentcloud/services/es/extension_elasticsearch.go old mode 100755 new mode 100644 similarity index 86% rename from tencentcloud/extension_elasticsearch.go rename to tencentcloud/services/es/extension_elasticsearch.go index b542d7f20e..a7832e65e6 --- a/tencentcloud/extension_elasticsearch.go +++ b/tencentcloud/services/es/extension_elasticsearch.go @@ -1,4 +1,8 @@ -package tencentcloud +package es + +import ( + svccvm "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cvm" +) const ( ES_CHARGE_TYPE_PREPAID = "PREPAID" @@ -57,9 +61,9 @@ var ES_NODE_TYPE = []string{ } var ES_NODE_DISK_TYPE = []string{ - CVM_DISK_TYPE_CLOUD_SSD, - CVM_DISK_TYPE_CLOUD_PREMIUM, - CVM_DISK_TYPE_CLOUD_HSSD, + svccvm.CVM_DISK_TYPE_CLOUD_SSD, + svccvm.CVM_DISK_TYPE_CLOUD_PREMIUM, + svccvm.CVM_DISK_TYPE_CLOUD_HSSD, } var ES_RENEW_FLAG = []string{ diff --git a/tencentcloud/services/es/extension_tags.go b/tencentcloud/services/es/extension_tags.go new file mode 100644 index 0000000000..e4b994163f --- /dev/null +++ b/tencentcloud/services/es/extension_tags.go @@ -0,0 +1,3 @@ +package es + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/resource_tc_elasticsearch_diagnose.go b/tencentcloud/services/es/resource_tc_elasticsearch_diagnose.go similarity index 74% rename from tencentcloud/resource_tc_elasticsearch_diagnose.go rename to tencentcloud/services/es/resource_tc_elasticsearch_diagnose.go index 50f45de443..81fda9a9c9 100644 --- a/tencentcloud/resource_tc_elasticsearch_diagnose.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_diagnose.go @@ -1,14 +1,16 @@ -package tencentcloud +package es import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func resourceTencentCloudElasticsearchDiagnose() *schema.Resource { +func ResourceTencentCloudElasticsearchDiagnose() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchDiagnoseCreate, Read: resourceTencentCloudElasticsearchDiagnoseRead, @@ -65,14 +67,14 @@ func resourceTencentCloudElasticsearchDiagnose() *schema.Resource { } func resourceTencentCloudElasticsearchDiagnoseCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_diagnose.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_diagnose.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Get("instance_id").(string) - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} params := make(map[string]interface{}) params["Status"] = 0 if v, ok := d.GetOk("cron_time"); ok { @@ -88,14 +90,14 @@ func resourceTencentCloudElasticsearchDiagnoseCreate(d *schema.ResourceData, met } func resourceTencentCloudElasticsearchDiagnoseRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_diagnose.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_diagnose.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -135,11 +137,11 @@ func resourceTencentCloudElasticsearchDiagnoseRead(d *schema.ResourceData, meta } func resourceTencentCloudElasticsearchDiagnoseUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_diagnose.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_diagnose.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() @@ -152,7 +154,7 @@ func resourceTencentCloudElasticsearchDiagnoseUpdate(d *schema.ResourceData, met } if d.HasChange("cron_time") { - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} params := make(map[string]interface{}) cronTime := d.Get("cron_time").(string) params["CronTime"] = cronTime @@ -166,14 +168,14 @@ func resourceTencentCloudElasticsearchDiagnoseUpdate(d *schema.ResourceData, met } func resourceTencentCloudElasticsearchDiagnoseDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_diagnose.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_diagnose.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} params := make(map[string]interface{}) params["Status"] = -1 err := service.UpdateDiagnoseSettings(ctx, instanceId, params) diff --git a/tencentcloud/resource_tc_elasticsearch_diagnose_instance.go b/tencentcloud/services/es/resource_tc_elasticsearch_diagnose_instance.go similarity index 75% rename from tencentcloud/resource_tc_elasticsearch_diagnose_instance.go rename to tencentcloud/services/es/resource_tc_elasticsearch_diagnose_instance.go index aca7c8fc70..3760d2f9e4 100644 --- a/tencentcloud/resource_tc_elasticsearch_diagnose_instance.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_diagnose_instance.go @@ -1,15 +1,18 @@ -package tencentcloud +package es import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchDiagnoseInstance() *schema.Resource { +func ResourceTencentCloudElasticsearchDiagnoseInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchDiagnoseInstanceCreate, Read: resourceTencentCloudElasticsearchDiagnoseInstanceRead, @@ -43,10 +46,10 @@ func resourceTencentCloudElasticsearchDiagnoseInstance() *schema.Resource { } func resourceTencentCloudElasticsearchDiagnoseInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_diagnose_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_diagnose_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewDiagnoseInstanceRequest() @@ -69,10 +72,10 @@ func resourceTencentCloudElasticsearchDiagnoseInstanceCreate(d *schema.ResourceD request.DiagnoseIndices = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().DiagnoseInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().DiagnoseInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -89,15 +92,15 @@ func resourceTencentCloudElasticsearchDiagnoseInstanceCreate(d *schema.ResourceD } func resourceTencentCloudElasticsearchDiagnoseInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_diagnose_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_diagnose_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudElasticsearchDiagnoseInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_diagnose_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_diagnose_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_elasticsearch_diagnose_instance_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_diagnose_instance_test.go similarity index 80% rename from tencentcloud/resource_tc_elasticsearch_diagnose_instance_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_diagnose_instance_test.go index 5a96e8e5a3..b2e5b50be9 100644 --- a/tencentcloud/resource_tc_elasticsearch_diagnose_instance_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_diagnose_instance_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudElasticsearchDiagnoseInstanceResource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchDiagnoseInstance, diff --git a/tencentcloud/resource_tc_elasticsearch_diagnose_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_diagnose_test.go similarity index 89% rename from tencentcloud/resource_tc_elasticsearch_diagnose_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_diagnose_test.go index d77f59b966..f158e0c75a 100644 --- a/tencentcloud/resource_tc_elasticsearch_diagnose_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_diagnose_test.go @@ -1,17 +1,19 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudElasticsearchDiagnoseResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchDiagnose, diff --git a/tencentcloud/resource_tc_elasticsearch_index.go b/tencentcloud/services/es/resource_tc_elasticsearch_index.go similarity index 78% rename from tencentcloud/resource_tc_elasticsearch_index.go rename to tencentcloud/services/es/resource_tc_elasticsearch_index.go index 060088aa72..c10ecf962f 100644 --- a/tencentcloud/resource_tc_elasticsearch_index.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_index.go @@ -1,4 +1,4 @@ -package tencentcloud +package es import ( "context" @@ -8,14 +8,17 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" - "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/wI2L/jsondiff" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchIndex() *schema.Resource { +func ResourceTencentCloudElasticsearchIndex() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchIndexCreate, Read: resourceTencentCloudElasticsearchIndexRead, @@ -53,10 +56,10 @@ func resourceTencentCloudElasticsearchIndex() *schema.Resource { } func resourceTencentCloudElasticsearchIndexCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_index.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_index.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewCreateIndexRequest() @@ -83,10 +86,10 @@ func resourceTencentCloudElasticsearchIndexCreate(d *schema.ResourceData, meta i request.IndexMetaJson = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().CreateIndex(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().CreateIndex(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -97,22 +100,22 @@ func resourceTencentCloudElasticsearchIndexCreate(d *schema.ResourceData, meta i return err } - d.SetId(instanceId + FILED_SP + indexType + FILED_SP + indexName) + d.SetId(instanceId + tccommon.FILED_SP + indexType + tccommon.FILED_SP + indexName) return resourceTencentCloudElasticsearchIndexRead(d, meta) } func resourceTencentCloudElasticsearchIndexRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_index.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_index.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -182,14 +185,14 @@ func resourceTencentCloudElasticsearchIndexRead(d *schema.ResourceData, meta int } func resourceTencentCloudElasticsearchIndexUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_index.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_index.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := elasticsearch.NewUpdateIndexRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -246,10 +249,10 @@ func resourceTencentCloudElasticsearchIndexUpdate(d *schema.ResourceData, meta i request.UpdateMetaJson = helper.String(updateBody) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().UpdateIndex(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().UpdateIndex(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -264,14 +267,14 @@ func resourceTencentCloudElasticsearchIndexUpdate(d *schema.ResourceData, meta i } func resourceTencentCloudElasticsearchIndexDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_index.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_index.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_elasticsearch_index_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_index_test.go similarity index 93% rename from tencentcloud/resource_tc_elasticsearch_index_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_index_test.go index 1f80504f7d..0a3cf99736 100644 --- a/tencentcloud/resource_tc_elasticsearch_index_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_index_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudElasticsearchIndexResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchIndex, diff --git a/tencentcloud/resource_tc_elasticsearch_instance.go b/tencentcloud/services/es/resource_tc_elasticsearch_instance.go old mode 100755 new mode 100644 similarity index 86% rename from tencentcloud/resource_tc_elasticsearch_instance.go rename to tencentcloud/services/es/resource_tc_elasticsearch_instance.go index c97dc84359..518126d7cb --- a/tencentcloud/resource_tc_elasticsearch_instance.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_instance.go @@ -1,6 +1,9 @@ -package tencentcloud +package es import ( + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svccvm "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cvm" + "context" "errors" "fmt" @@ -10,11 +13,12 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" es "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func resourceTencentCloudElasticsearchInstance() *schema.Resource { +func ResourceTencentCloudElasticsearchInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchInstanceCreate, Read: resourceTencentCloudElasticsearchInstanceRead, @@ -30,7 +34,7 @@ func resourceTencentCloudElasticsearchInstance() *schema.Resource { "instance_name": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(1, 50), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 50), Description: "Name of the instance, which can contain 1 to 50 English letters, Chinese characters, digits, dashes(-), or underscores(_).", }, "availability_zone": { @@ -69,7 +73,7 @@ func resourceTencentCloudElasticsearchInstance() *schema.Resource { Optional: true, ForceNew: true, Default: ES_CHARGE_TYPE_POSTPAID_BY_HOUR, - ValidateFunc: validateAllowedStringValue(ES_CHARGE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(ES_CHARGE_TYPE), Description: "The charge type of instance. Valid values are `PREPAID` and `POSTPAID_BY_HOUR`.", }, "charge_period": { @@ -83,7 +87,7 @@ func resourceTencentCloudElasticsearchInstance() *schema.Resource { Type: schema.TypeString, Optional: true, ForceNew: true, - ValidateFunc: validateAllowedStringValue(ES_RENEW_FLAG), + ValidateFunc: tccommon.ValidateAllowedStringValue(ES_RENEW_FLAG), Description: "When enabled, the instance will be renew automatically when it reach the end of the prepaid tenancy. Valid values are `RENEW_FLAG_AUTO` and `RENEW_FLAG_MANUAL`. NOTE: it only works when charge_type is set to `PREPAID`.", }, "deploy_mode": { @@ -91,7 +95,7 @@ func resourceTencentCloudElasticsearchInstance() *schema.Resource { Optional: true, ForceNew: true, Default: ES_DEPLOY_MODE_SINGLE_REGION, - ValidateFunc: validateAllowedIntValue(ES_DEPLOY_MODE), + ValidateFunc: tccommon.ValidateAllowedIntValue(ES_DEPLOY_MODE), Description: "Cluster deployment mode. Valid values are `0` and `1`. `0` is single-AZ deployment, and `1` is multi-AZ deployment. Default value is `0`.", }, "multi_zone_infos": { @@ -165,7 +169,7 @@ func resourceTencentCloudElasticsearchInstance() *schema.Resource { Type: schema.TypeString, Optional: true, Default: ES_LICENSE_TYPE_PLATINUM, - ValidateFunc: validateAllowedStringValue(ES_LICENSE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(ES_LICENSE_TYPE), Description: "License type. Valid values are `oss`, `basic` and `platinum`. The default value is `platinum`.", }, "node_info_list": { @@ -189,14 +193,14 @@ func resourceTencentCloudElasticsearchInstance() *schema.Resource { Type: schema.TypeString, Optional: true, Default: ES_NODE_TYPE_HOT_DATA, - ValidateFunc: validateAllowedStringValue(ES_NODE_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(ES_NODE_TYPE), Description: "Node type. Valid values are `hotData`, `warmData` and `dedicatedMaster`. The default value is 'hotData`.", }, "disk_type": { Type: schema.TypeString, Optional: true, - Default: CVM_DISK_TYPE_CLOUD_SSD, - ValidateFunc: validateAllowedStringValue(ES_NODE_DISK_TYPE), + Default: svccvm.CVM_DISK_TYPE_CLOUD_SSD, + ValidateFunc: tccommon.ValidateAllowedStringValue(ES_NODE_DISK_TYPE), Description: "Node disk type. Valid values are `CLOUD_SSD` and `CLOUD_PREMIUM`, `CLOUD_HSSD`. The default value is `CLOUD_SSD`.", }, "disk_size": { @@ -218,7 +222,7 @@ func resourceTencentCloudElasticsearchInstance() *schema.Resource { Type: schema.TypeInt, Optional: true, Default: ES_BASIC_SECURITY_TYPE_OFF, - ValidateFunc: validateAllowedIntValue(ES_BASIC_SECURITY_TYPE), + ValidateFunc: tccommon.ValidateAllowedIntValue(ES_BASIC_SECURITY_TYPE), Description: "Whether to enable X-Pack security authentication in Basic Edition 6.8 and above. Valid values are `1` and `2`. `1` is disabled, `2` is enabled, and default value is `1`. Notice: this parameter is only take effect on `basic` license.", }, "tags": { @@ -258,11 +262,11 @@ func resourceTencentCloudElasticsearchInstance() *schema.Resource { } func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_instance.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_instance.create")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) elasticsearchService := ElasticsearchService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } request := es.NewCreateInstanceRequest() @@ -362,15 +366,15 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met //internal version: replace reqTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. //internal version: replace reqTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. instanceId := "" - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) - response, err := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().CreateInstance(request) + response, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().CreateInstance(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) //internal version: replace bpass begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. //internal version: replace bpass end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. - return retryError(err) + return tccommon.RetryError(err) } instanceId = *response.Response.InstanceId return nil @@ -383,10 +387,10 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met //internal version: replace setTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. //internal version: replace setTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. instanceEmptyRetries := 5 - err = resource.Retry(15*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(15*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, errRet := elasticsearchService.DescribeInstanceById(ctx, instanceId) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } if instance == nil { if instanceEmptyRetries > 0 { @@ -421,10 +425,10 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met } } - err = resource.Retry(writeRetryTimeout*2, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError { errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", 0, nil, nil, &esAcl) if errRet != nil { - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -434,7 +438,7 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met // tags if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := TagService{client: client} region := client.Region resourceName := fmt.Sprintf("qcs::es:%s:uin/:instance/%s", region, instanceId) @@ -448,21 +452,21 @@ func resourceTencentCloudElasticsearchInstanceCreate(d *schema.ResourceData, met } func resourceTencentCloudElasticsearchInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_instance.read")() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_instance.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() elasticsearchService := ElasticsearchService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } var instance *es.InstanceInfo var errRet error - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, errRet = elasticsearchService.DescribeInstanceById(ctx, instanceId) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } return nil }) @@ -549,13 +553,13 @@ func resourceTencentCloudElasticsearchInstanceRead(d *schema.ResourceData, meta } func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch.update")() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() elasticsearchService := ElasticsearchService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } d.Partial(true) @@ -563,10 +567,10 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met if d.HasChange("instance_name") { instanceName := d.Get("instance_name").(string) // Update operation support at most one item at the same time - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { errRet := elasticsearchService.UpdateInstance(ctx, instanceId, instanceName, "", 0, nil, nil, nil) if errRet != nil { - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -576,10 +580,10 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met } if d.HasChange("password") { password := d.Get("password").(string) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", password, 0, nil, nil, nil) if errRet != nil { - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -590,10 +594,10 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met if d.HasChange("version") { version := d.Get("version").(string) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { errRet := elasticsearchService.UpdateInstanceVersion(ctx, instanceId, version) if errRet != nil { - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -609,10 +613,10 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met if d.HasChange("license_type") { licenseType := d.Get("license_type").(string) - err := resource.Retry(writeRetryTimeout*2, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError { errRet := elasticsearchService.UpdateInstanceLicense(ctx, instanceId, licenseType) if errRet != nil { - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -630,14 +634,14 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met basicSecurityType := d.Get("basic_security_type").(int) licenseType := d.Get("license_type").(string) licenseTypeUpgrading := licenseType != "oss" - err := resource.Retry(writeRetryTimeout*2, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError { errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", int64(basicSecurityType), nil, nil, nil) if errRet != nil { err := errRet.(*sdkErrors.TencentCloudSDKError) if err.Code == es.INVALIDPARAMETER && licenseTypeUpgrading { return resource.RetryableError(fmt.Errorf("waiting for licenseType update")) } - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil @@ -661,10 +665,10 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met NodeNum: helper.IntUint64(value["node_num"].(int)), NodeType: helper.String(value["node_type"].(string)), } - err = resource.Retry(writeRetryTimeout*2, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError { errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", 0, nil, info, nil) if errRet != nil { - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -700,10 +704,10 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met } nodeInfoList = append(nodeInfoList, &dataDisk) } - err := resource.Retry(writeRetryTimeout*2, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError { errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", 0, nodeInfoList, nil, nil) if errRet != nil { - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -720,9 +724,9 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met oldInterface, newInterface := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldInterface.(map[string]interface{}), newInterface.(map[string]interface{})) tagService := TagService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - region := meta.(*TencentCloudClient).apiV3Conn.Region + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region //internal version: replace null begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. resourceName := fmt.Sprintf("qcs::es:%s:uin/:instance/%s", region, instanceId) @@ -753,10 +757,10 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met } } - err := resource.Retry(writeRetryTimeout*2, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError { errRet := elasticsearchService.UpdateInstance(ctx, instanceId, "", "", 0, nil, nil, &esAcl) if errRet != nil { - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -771,18 +775,18 @@ func resourceTencentCloudElasticsearchInstanceUpdate(d *schema.ResourceData, met } func resourceTencentCloudElasticsearchInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() elasticsearchService := ElasticsearchService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { errRet := elasticsearchService.DeleteInstance(ctx, instanceId) if errRet != nil { - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -790,10 +794,10 @@ func resourceTencentCloudElasticsearchInstanceDelete(d *schema.ResourceData, met return err } - err = resource.Retry(2*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, errRet := elasticsearchService.DescribeInstanceById(ctx, instanceId) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } if instance == nil { return nil @@ -809,10 +813,10 @@ func resourceTencentCloudElasticsearchInstanceDelete(d *schema.ResourceData, met func tencentCloudElasticsearchInstanceUpgradeWaiting(ctx context.Context, service *ElasticsearchService, instanceId string) error { statusChangeRetries := 5 - return resource.Retry(10*readRetryTimeout, func() *resource.RetryError { + return resource.Retry(10*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, errRet := service.DescribeInstanceById(ctx, instanceId) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } if instance == nil { return resource.NonRetryableError(fmt.Errorf("instance %s not exist", instanceId)) diff --git a/tencentcloud/resource_tc_elasticsearch_instance_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_instance_test.go old mode 100755 new mode 100644 similarity index 80% rename from tencentcloud/resource_tc_elasticsearch_instance_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_instance_test.go index e87f03ce39..3ba70fe270 --- a/tencentcloud/resource_tc_elasticsearch_instance_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_instance_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package es_test import ( "context" @@ -6,8 +6,13 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svces "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/es" ) func init() { @@ -15,12 +20,12 @@ func init() { resource.AddTestSweepers("tencentcloud_elasticsearch_instance", &resource.Sweeper{ Name: "tencentcloud_elasticsearch_instance", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - client := cli.(*TencentCloudClient).apiV3Conn + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + client := cli.(tccommon.ProviderMeta).GetAPIV3Conn() - service := ElasticsearchService{client: client} + service := svces.NewElasticsearchService(client) es, err := service.DescribeInstancesByFilter(ctx, "", "tf-ci-test", nil) if err != nil { @@ -47,8 +52,8 @@ func TestAccTencentCloudElasticsearchInstanceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckElasticsearchInstanceDestroy, Steps: []resource.TestStep{ { @@ -56,10 +61,10 @@ func TestAccTencentCloudElasticsearchInstanceResource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckElasticsearchInstanceExists("tencentcloud_elasticsearch_instance.foo"), resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "instance_name", "tf-ci-test"), - resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "availability_zone", defaultAZone), + resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "availability_zone", tcacctest.DefaultAZone), resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "version", "7.10.1"), - resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "vpc_id", defaultVpcId), - resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "subnet_id", defaultSubnetId), + resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "vpc_id", tcacctest.DefaultVpcId), + resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "subnet_id", tcacctest.DefaultSubnetId), resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "license_type", "basic"), resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "basic_security_type", "1"), resource.TestCheckResourceAttr("tencentcloud_elasticsearch_instance.foo", "web_node_type_info.#", "1"), @@ -99,11 +104,9 @@ func TestAccTencentCloudElasticsearchInstanceResource_basic(t *testing.T) { } func testAccCheckElasticsearchInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - elasticsearchService := ElasticsearchService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + elasticsearchService := svces.NewElasticsearchService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_elasticsearch_instance" { continue @@ -111,10 +114,10 @@ func testAccCheckElasticsearchInstanceDestroy(s *terraform.State) error { instance, err := elasticsearchService.DescribeInstanceById(ctx, rs.Primary.ID) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, err = elasticsearchService.DescribeInstanceById(ctx, rs.Primary.ID) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -131,8 +134,8 @@ func testAccCheckElasticsearchInstanceDestroy(s *terraform.State) error { func testAccCheckElasticsearchInstanceExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[n] if !ok { @@ -141,15 +144,13 @@ func testAccCheckElasticsearchInstanceExists(n string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("elasticsearch instance id is not set") } - elasticsearchService := ElasticsearchService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + elasticsearchService := svces.NewElasticsearchService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) instance, err := elasticsearchService.DescribeInstanceById(ctx, rs.Primary.ID) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, err = elasticsearchService.DescribeInstanceById(ctx, rs.Primary.ID) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -164,7 +165,7 @@ func testAccCheckElasticsearchInstanceExists(n string) resource.TestCheckFunc { } } -const testAccElasticsearchInstance = defaultVpcVariable + ` +const testAccElasticsearchInstance = tcacctest.DefaultVpcVariable + ` resource "tencentcloud_elasticsearch_instance" "foo" { instance_name = "tf-ci-test" availability_zone = var.availability_zone @@ -200,7 +201,7 @@ resource "tencentcloud_elasticsearch_instance" "foo" { } ` -const testAccElasticsearchInstanceUpdate = defaultVpcVariable + ` +const testAccElasticsearchInstanceUpdate = tcacctest.DefaultVpcVariable + ` resource "tencentcloud_elasticsearch_instance" "foo" { instance_name = "tf-ci-test-update" availability_zone = var.availability_zone diff --git a/tencentcloud/resource_tc_elasticsearch_logstash.go b/tencentcloud/services/es/resource_tc_elasticsearch_logstash.go similarity index 85% rename from tencentcloud/resource_tc_elasticsearch_logstash.go rename to tencentcloud/services/es/resource_tc_elasticsearch_logstash.go index 22f9f3288b..af9a476286 100644 --- a/tencentcloud/resource_tc_elasticsearch_logstash.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_logstash.go @@ -1,4 +1,4 @@ -package tencentcloud +package es import ( "context" @@ -6,13 +6,16 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchLogstash() *schema.Resource { +func ResourceTencentCloudElasticsearchLogstash() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchLogstashCreate, Read: resourceTencentCloudElasticsearchLogstashRead, @@ -173,11 +176,11 @@ func resourceTencentCloudElasticsearchLogstash() *schema.Resource { } func resourceTencentCloudElasticsearchLogstashCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_logstash.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_logstash.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = elasticsearch.NewCreateLogstashInstanceRequest() @@ -273,10 +276,10 @@ func resourceTencentCloudElasticsearchLogstashCreate(d *schema.ResourceData, met request.OperationDuration = &operationDuration } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().CreateLogstashInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().CreateLogstashInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -289,9 +292,9 @@ func resourceTencentCloudElasticsearchLogstashCreate(d *schema.ResourceData, met } instanceId = *response.Response.InstanceId - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"1"}, 3*readRetryTimeout, time.Second, service.ElasticsearchLogstashStateRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 3*tccommon.ReadRetryTimeout, time.Second, service.ElasticsearchLogstashStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -299,8 +302,8 @@ func resourceTencentCloudElasticsearchLogstashCreate(d *schema.ResourceData, met d.SetId(instanceId) if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region resourceName := fmt.Sprintf("qcs::es:%s:uin/:logstash/%s", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err @@ -311,14 +314,14 @@ func resourceTencentCloudElasticsearchLogstashCreate(d *schema.ResourceData, met } func resourceTencentCloudElasticsearchLogstashRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_logstash.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_logstash.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -385,7 +388,7 @@ func resourceTencentCloudElasticsearchLogstashRead(d *schema.ResourceData, meta _ = d.Set("license_type", logstash.LicenseType) } - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "es", "logstash", tcClient.Region, d.Id()) if err != nil { @@ -419,18 +422,18 @@ func resourceTencentCloudElasticsearchLogstashRead(d *schema.ResourceData, meta } func resourceTencentCloudElasticsearchLogstashUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_logstash.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_logstash.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) if d.HasChange("tags") { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("es", "logstash", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("es", "logstash", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -450,7 +453,7 @@ func resourceTencentCloudElasticsearchLogstashUpdate(d *schema.ResourceData, met } } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if d.HasChange("instance_name") { if v, ok := d.GetOk("instance_name"); ok { @@ -519,19 +522,19 @@ func resourceTencentCloudElasticsearchLogstashUpdate(d *schema.ResourceData, met } func resourceTencentCloudElasticsearchLogstashDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_logstash.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_logstash.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() if err := service.DeleteElasticsearchLogstashById(ctx, instanceId); err != nil { return err } - conf := BuildStateChangeConf([]string{}, []string{"-99"}, 3*readRetryTimeout, time.Second, service.ElasticsearchLogstashStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"-99"}, 3*tccommon.ReadRetryTimeout, time.Second, service.ElasticsearchLogstashStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e diff --git a/tencentcloud/resource_tc_elasticsearch_logstash_pipeline.go b/tencentcloud/services/es/resource_tc_elasticsearch_logstash_pipeline.go similarity index 75% rename from tencentcloud/resource_tc_elasticsearch_logstash_pipeline.go rename to tencentcloud/services/es/resource_tc_elasticsearch_logstash_pipeline.go index 46703333cb..28ece535b8 100644 --- a/tencentcloud/resource_tc_elasticsearch_logstash_pipeline.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_logstash_pipeline.go @@ -1,4 +1,4 @@ -package tencentcloud +package es import ( "context" @@ -7,13 +7,16 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchLogstashPipeline() *schema.Resource { +func ResourceTencentCloudElasticsearchLogstashPipeline() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchLogstashPipelineCreate, Read: resourceTencentCloudElasticsearchLogstashPipelineRead, @@ -94,10 +97,10 @@ func resourceTencentCloudElasticsearchLogstashPipeline() *schema.Resource { } func resourceTencentCloudElasticsearchLogstashPipelineCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_logstash_pipeline.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_logstash_pipeline.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewSaveAndDeployLogstashPipelineRequest() @@ -120,7 +123,7 @@ func resourceTencentCloudElasticsearchLogstashPipelineCreate(d *schema.ResourceD logstashPipeline.PipelineDesc = helper.String(v.(string)) } if v, ok := dMap["config"]; ok { - logstashPipeline.Config = helper.String(StringToBase64(v.(string))) + logstashPipeline.Config = helper.String(tccommon.StringToBase64(v.(string))) } if v, ok := dMap["workers"]; ok { logstashPipeline.Workers = helper.IntUint64(v.(int)) @@ -146,10 +149,10 @@ func resourceTencentCloudElasticsearchLogstashPipelineCreate(d *schema.ResourceD opType = d.Get("op_type").(int) request.OpType = helper.IntUint64(opType) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().SaveAndDeployLogstashPipeline(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().SaveAndDeployLogstashPipeline(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -160,33 +163,33 @@ func resourceTencentCloudElasticsearchLogstashPipelineCreate(d *schema.ResourceD return err } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} targetStatue := "2" if opType == 1 { targetStatue = "0" } - conf := BuildStateChangeConf([]string{}, []string{targetStatue}, 3*readRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{targetStatue}, 3*tccommon.ReadRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } - d.SetId(instanceId + FILED_SP + pipelineId) + d.SetId(instanceId + tccommon.FILED_SP + pipelineId) return resourceTencentCloudElasticsearchLogstashPipelineRead(d, meta) } func resourceTencentCloudElasticsearchLogstashPipelineRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_logstash_pipeline.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_logstash_pipeline.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -244,14 +247,14 @@ func resourceTencentCloudElasticsearchLogstashPipelineRead(d *schema.ResourceDat } func resourceTencentCloudElasticsearchLogstashPipelineUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_logstash_pipeline.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_logstash_pipeline.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := elasticsearch.NewSaveAndDeployLogstashPipelineRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -277,7 +280,7 @@ func resourceTencentCloudElasticsearchLogstashPipelineUpdate(d *schema.ResourceD logstashPipeline.PipelineDesc = helper.String(v.(string)) } if v, ok := dMap["config"]; ok { - logstashPipeline.Config = helper.String(StringToBase64(v.(string))) + logstashPipeline.Config = helper.String(tccommon.StringToBase64(v.(string))) } if v, ok := dMap["workers"]; ok { logstashPipeline.Workers = helper.IntUint64(v.(int)) @@ -304,10 +307,10 @@ func resourceTencentCloudElasticsearchLogstashPipelineUpdate(d *schema.ResourceD opType := d.Get("op_type").(int) request.OpType = helper.IntUint64(opType) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().SaveAndDeployLogstashPipeline(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().SaveAndDeployLogstashPipeline(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -318,12 +321,12 @@ func resourceTencentCloudElasticsearchLogstashPipelineUpdate(d *schema.ResourceD return err } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} targetStatue := "2" if opType == 1 { targetStatue = "0" } - conf := BuildStateChangeConf([]string{}, []string{targetStatue}, 3*readRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{targetStatue}, 3*tccommon.ReadRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -333,14 +336,14 @@ func resourceTencentCloudElasticsearchLogstashPipelineUpdate(d *schema.ResourceD } func resourceTencentCloudElasticsearchLogstashPipelineDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_logstash_pipeline.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_logstash_pipeline.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -350,7 +353,7 @@ func resourceTencentCloudElasticsearchLogstashPipelineDelete(d *schema.ResourceD if err := service.DeleteElasticsearchLogstashPipelineById(ctx, instanceId, pipelineId); err != nil { return err } - conf := BuildStateChangeConf([]string{}, []string{"-99"}, 3*readRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"-99"}, 3*tccommon.ReadRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) if _, e := conf.WaitForState(); e != nil { return e diff --git a/tencentcloud/resource_tc_elasticsearch_logstash_pipeline_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_logstash_pipeline_test.go similarity index 89% rename from tencentcloud/resource_tc_elasticsearch_logstash_pipeline_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_logstash_pipeline_test.go index 273b5bff18..c1d136fb80 100644 --- a/tencentcloud/resource_tc_elasticsearch_logstash_pipeline_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_logstash_pipeline_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudElasticsearchLogstashPipelineResource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchLogstashPipeline, @@ -45,7 +47,7 @@ func TestAccTencentCloudElasticsearchLogstashPipelineResource_basic(t *testing.T }) } -const testAccElasticsearchLogstashPipeline = DefaultEsVariables + ` +const testAccElasticsearchLogstashPipeline = tcacctest.DefaultEsVariables + ` resource "tencentcloud_elasticsearch_logstash_pipeline" "logstash_pipeline" { instance_id = var.logstash_id @@ -74,7 +76,7 @@ EOF } ` -const testAccElasticsearchLogstashPipelineUpdate = DefaultEsVariables + ` +const testAccElasticsearchLogstashPipelineUpdate = tcacctest.DefaultEsVariables + ` resource "tencentcloud_elasticsearch_logstash_pipeline" "logstash_pipeline" { instance_id = var.logstash_id diff --git a/tencentcloud/resource_tc_elasticsearch_logstash_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_logstash_test.go similarity index 92% rename from tencentcloud/resource_tc_elasticsearch_logstash_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_logstash_test.go index 66925aed72..80ee34ccda 100644 --- a/tencentcloud/resource_tc_elasticsearch_logstash_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_logstash_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudElasticsearchLogstashResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchLogstash, diff --git a/tencentcloud/resource_tc_elasticsearch_restart_instance_operation.go b/tencentcloud/services/es/resource_tc_elasticsearch_restart_instance_operation.go similarity index 70% rename from tencentcloud/resource_tc_elasticsearch_restart_instance_operation.go rename to tencentcloud/services/es/resource_tc_elasticsearch_restart_instance_operation.go index be445c962b..87c03f157f 100644 --- a/tencentcloud/resource_tc_elasticsearch_restart_instance_operation.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_restart_instance_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package es import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchRestartInstanceOperation() *schema.Resource { +func ResourceTencentCloudElasticsearchRestartInstanceOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchRestartInstanceOperationCreate, Read: resourceTencentCloudElasticsearchRestartInstanceOperationRead, @@ -46,10 +49,10 @@ func resourceTencentCloudElasticsearchRestartInstanceOperation() *schema.Resourc } func resourceTencentCloudElasticsearchRestartInstanceOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_instance_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_instance_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewRestartInstanceRequest() @@ -68,10 +71,10 @@ func resourceTencentCloudElasticsearchRestartInstanceOperationCreate(d *schema.R request.RestartMode = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().RestartInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().RestartInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -82,9 +85,9 @@ func resourceTencentCloudElasticsearchRestartInstanceOperationCreate(d *schema.R return err } elasticsearchService := ElasticsearchService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - conf := BuildStateChangeConf([]string{}, []string{"1"}, 10*readRetryTimeout, time.Second, elasticsearchService.ElasticsearchInstanceRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 10*tccommon.ReadRetryTimeout, time.Second, elasticsearchService.ElasticsearchInstanceRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -94,15 +97,15 @@ func resourceTencentCloudElasticsearchRestartInstanceOperationCreate(d *schema.R } func resourceTencentCloudElasticsearchRestartInstanceOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_instance_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_instance_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudElasticsearchRestartInstanceOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_instance_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_instance_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_elasticsearch_restart_instance_operation_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_restart_instance_operation_test.go similarity index 80% rename from tencentcloud/resource_tc_elasticsearch_restart_instance_operation_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_restart_instance_operation_test.go index 0c2f30337a..116081da8b 100644 --- a/tencentcloud/resource_tc_elasticsearch_restart_instance_operation_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_restart_instance_operation_test.go @@ -1,17 +1,19 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudElasticsearchRestartInstanceOperationResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchRestartInstanceOperation, diff --git a/tencentcloud/resource_tc_elasticsearch_restart_kibana_operation.go b/tencentcloud/services/es/resource_tc_elasticsearch_restart_kibana_operation.go similarity index 63% rename from tencentcloud/resource_tc_elasticsearch_restart_kibana_operation.go rename to tencentcloud/services/es/resource_tc_elasticsearch_restart_kibana_operation.go index 911d072073..97acb0c0a4 100644 --- a/tencentcloud/resource_tc_elasticsearch_restart_kibana_operation.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_restart_kibana_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package es import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchRestartKibanaOperation() *schema.Resource { +func ResourceTencentCloudElasticsearchRestartKibanaOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchRestartKibanaOperationCreate, Read: resourceTencentCloudElasticsearchRestartKibanaOperationRead, @@ -27,10 +30,10 @@ func resourceTencentCloudElasticsearchRestartKibanaOperation() *schema.Resource } func resourceTencentCloudElasticsearchRestartKibanaOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_kibana_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_kibana_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewRestartKibanaRequest() instanceId string @@ -40,10 +43,10 @@ func resourceTencentCloudElasticsearchRestartKibanaOperationCreate(d *schema.Res request.InstanceId = helper.String(instanceId) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().RestartKibana(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().RestartKibana(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -55,9 +58,9 @@ func resourceTencentCloudElasticsearchRestartKibanaOperationCreate(d *schema.Res } elasticsearchService := ElasticsearchService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - conf := BuildStateChangeConf([]string{}, []string{"1"}, 10*readRetryTimeout, time.Second, elasticsearchService.ElasticsearchInstanceRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 10*tccommon.ReadRetryTimeout, time.Second, elasticsearchService.ElasticsearchInstanceRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -67,15 +70,15 @@ func resourceTencentCloudElasticsearchRestartKibanaOperationCreate(d *schema.Res } func resourceTencentCloudElasticsearchRestartKibanaOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_kibana_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_kibana_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudElasticsearchRestartKibanaOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_kibana_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_kibana_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_elasticsearch_restart_kibana_operation_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_restart_kibana_operation_test.go similarity index 79% rename from tencentcloud/resource_tc_elasticsearch_restart_kibana_operation_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_restart_kibana_operation_test.go index a4b1d1ce85..edb08e5bac 100644 --- a/tencentcloud/resource_tc_elasticsearch_restart_kibana_operation_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_restart_kibana_operation_test.go @@ -1,17 +1,19 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudElasticsearchRestartKibanaOperationResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchRestartKibanaOperation, diff --git a/tencentcloud/resource_tc_elasticsearch_restart_logstash_instance_operation.go b/tencentcloud/services/es/resource_tc_elasticsearch_restart_logstash_instance_operation.go similarity index 66% rename from tencentcloud/resource_tc_elasticsearch_restart_logstash_instance_operation.go rename to tencentcloud/services/es/resource_tc_elasticsearch_restart_logstash_instance_operation.go index 057ba997da..3d1560cdf3 100644 --- a/tencentcloud/resource_tc_elasticsearch_restart_logstash_instance_operation.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_restart_logstash_instance_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package es import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchRestartLogstashInstanceOperation() *schema.Resource { +func ResourceTencentCloudElasticsearchRestartLogstashInstanceOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchRestartLogstashInstanceOperationCreate, Read: resourceTencentCloudElasticsearchRestartLogstashInstanceOperationRead, @@ -37,10 +40,10 @@ func resourceTencentCloudElasticsearchRestartLogstashInstanceOperation() *schema } func resourceTencentCloudElasticsearchRestartLogstashInstanceOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_logstash_instance_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_logstash_instance_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewRestartLogstashInstanceRequest() @@ -55,10 +58,10 @@ func resourceTencentCloudElasticsearchRestartLogstashInstanceOperationCreate(d * request.Type = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().RestartLogstashInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().RestartLogstashInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -69,9 +72,9 @@ func resourceTencentCloudElasticsearchRestartLogstashInstanceOperationCreate(d * return err } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"1"}, 3*readRetryTimeout, time.Second, service.ElasticsearchLogstashStateRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 3*tccommon.ReadRetryTimeout, time.Second, service.ElasticsearchLogstashStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -83,15 +86,15 @@ func resourceTencentCloudElasticsearchRestartLogstashInstanceOperationCreate(d * } func resourceTencentCloudElasticsearchRestartLogstashInstanceOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_logstash_instance_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_logstash_instance_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudElasticsearchRestartLogstashInstanceOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_logstash_instance_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_logstash_instance_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_elasticsearch_restart_logstash_instance_operation_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_restart_logstash_instance_operation_test.go similarity index 73% rename from tencentcloud/resource_tc_elasticsearch_restart_logstash_instance_operation_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_restart_logstash_instance_operation_test.go index b77068c0be..d42b10178e 100644 --- a/tencentcloud/resource_tc_elasticsearch_restart_logstash_instance_operation_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_restart_logstash_instance_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudElasticsearchRestartLogstashInstanceOperationResource_ba t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchRestartLogstashInstanceOperation, @@ -24,7 +26,7 @@ func TestAccTencentCloudElasticsearchRestartLogstashInstanceOperationResource_ba }) } -const testAccElasticsearchRestartLogstashInstanceOperation = DefaultEsVariables + ` +const testAccElasticsearchRestartLogstashInstanceOperation = tcacctest.DefaultEsVariables + ` resource "tencentcloud_elasticsearch_restart_logstash_instance_operation" "restart_logstash_instance_operation" { instance_id = var.logstash_id diff --git a/tencentcloud/resource_tc_elasticsearch_restart_nodes_operation.go b/tencentcloud/services/es/resource_tc_elasticsearch_restart_nodes_operation.go similarity index 74% rename from tencentcloud/resource_tc_elasticsearch_restart_nodes_operation.go rename to tencentcloud/services/es/resource_tc_elasticsearch_restart_nodes_operation.go index 0e1bbf48b4..9afdc9a542 100644 --- a/tencentcloud/resource_tc_elasticsearch_restart_nodes_operation.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_restart_nodes_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package es import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchRestartNodesOperation() *schema.Resource { +func ResourceTencentCloudElasticsearchRestartNodesOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchRestartNodesOperationCreate, Read: resourceTencentCloudElasticsearchRestartNodesOperationRead, @@ -59,10 +62,10 @@ func resourceTencentCloudElasticsearchRestartNodesOperation() *schema.Resource { } func resourceTencentCloudElasticsearchRestartNodesOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_nodes_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_nodes_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewRestartNodesRequest() @@ -93,10 +96,10 @@ func resourceTencentCloudElasticsearchRestartNodesOperationCreate(d *schema.Reso request.IsOffline = helper.Bool(v.(bool)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().RestartNodes(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().RestartNodes(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -108,9 +111,9 @@ func resourceTencentCloudElasticsearchRestartNodesOperationCreate(d *schema.Reso } elasticsearchService := ElasticsearchService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - conf := BuildStateChangeConf([]string{}, []string{"1"}, 10*readRetryTimeout, time.Second, elasticsearchService.ElasticsearchInstanceRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 10*tccommon.ReadRetryTimeout, time.Second, elasticsearchService.ElasticsearchInstanceRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -120,15 +123,15 @@ func resourceTencentCloudElasticsearchRestartNodesOperationCreate(d *schema.Reso } func resourceTencentCloudElasticsearchRestartNodesOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_nodes_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_nodes_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudElasticsearchRestartNodesOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_restart_nodes_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_restart_nodes_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_elasticsearch_restart_nodes_operation_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_restart_nodes_operation_test.go similarity index 80% rename from tencentcloud/resource_tc_elasticsearch_restart_nodes_operation_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_restart_nodes_operation_test.go index b5d5e4eea4..6b51dd9753 100644 --- a/tencentcloud/resource_tc_elasticsearch_restart_nodes_operation_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_restart_nodes_operation_test.go @@ -1,17 +1,19 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudElasticsearchRestartNodesOperationResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchRestartNodesOperation, diff --git a/tencentcloud/resource_tc_elasticsearch_security_group.go b/tencentcloud/services/es/resource_tc_elasticsearch_security_group.go similarity index 71% rename from tencentcloud/resource_tc_elasticsearch_security_group.go rename to tencentcloud/services/es/resource_tc_elasticsearch_security_group.go index 1d85e70e12..73cfe0d944 100644 --- a/tencentcloud/resource_tc_elasticsearch_security_group.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_security_group.go @@ -1,15 +1,17 @@ -package tencentcloud +package es import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" ) -func resourceTencentCloudElasticsearchSecurityGroup() *schema.Resource { +func ResourceTencentCloudElasticsearchSecurityGroup() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchSecurityGroupCreate, Read: resourceTencentCloudElasticsearchSecurityGroupRead, @@ -39,8 +41,8 @@ func resourceTencentCloudElasticsearchSecurityGroup() *schema.Resource { } func resourceTencentCloudElasticsearchSecurityGroupCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_security_group.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_security_group.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string if v, ok := d.GetOk("instance_id"); ok { @@ -53,14 +55,14 @@ func resourceTencentCloudElasticsearchSecurityGroupCreate(d *schema.ResourceData } func resourceTencentCloudElasticsearchSecurityGroupRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_security_group.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_security_group.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -87,10 +89,10 @@ func resourceTencentCloudElasticsearchSecurityGroupRead(d *schema.ResourceData, } func resourceTencentCloudElasticsearchSecurityGroupUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_security_group.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_security_group.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := elasticsearch.NewModifyEsVipSecurityGroupRequest() @@ -105,10 +107,10 @@ func resourceTencentCloudElasticsearchSecurityGroupUpdate(d *schema.ResourceData } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().ModifyEsVipSecurityGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().ModifyEsVipSecurityGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -123,8 +125,8 @@ func resourceTencentCloudElasticsearchSecurityGroupUpdate(d *schema.ResourceData } func resourceTencentCloudElasticsearchSecurityGroupDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_security_group.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_security_group.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_elasticsearch_security_group_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_security_group_test.go similarity index 71% rename from tencentcloud/resource_tc_elasticsearch_security_group_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_security_group_test.go index de60106350..dcff3fd33d 100644 --- a/tencentcloud/resource_tc_elasticsearch_security_group_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_security_group_test.go @@ -1,10 +1,14 @@ -package tencentcloud +package es_test import ( "context" "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svces "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/es" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) @@ -14,8 +18,8 @@ func TestAccTencentCloudElasticsearchSecurityGroupResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckElasticsearchSecurityGroupDestroy, Steps: []resource.TestStep{ { @@ -43,11 +47,9 @@ func TestAccTencentCloudElasticsearchSecurityGroupResource_basic(t *testing.T) { } func testAccCheckElasticsearchSecurityGroupDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - elasticsearchService := ElasticsearchService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + elasticsearchService := svces.NewElasticsearchService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_elasticsearch_security_group" { continue @@ -55,10 +57,10 @@ func testAccCheckElasticsearchSecurityGroupDestroy(s *terraform.State) error { instance, err := elasticsearchService.DescribeInstanceById(ctx, rs.Primary.ID) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, err = elasticsearchService.DescribeInstanceById(ctx, rs.Primary.ID) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -75,8 +77,8 @@ func testAccCheckElasticsearchSecurityGroupDestroy(s *terraform.State) error { func testAccCheckElasticsearchSecurityGroupExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[n] if !ok { @@ -85,15 +87,13 @@ func testAccCheckElasticsearchSecurityGroupExists(n string) resource.TestCheckFu if rs.Primary.ID == "" { return fmt.Errorf("elasticsearch instance id is not set") } - elasticsearchService := ElasticsearchService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + elasticsearchService := svces.NewElasticsearchService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) instance, err := elasticsearchService.DescribeInstanceById(ctx, rs.Primary.ID) if err != nil { - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, err = elasticsearchService.DescribeInstanceById(ctx, rs.Primary.ID) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -108,7 +108,7 @@ func testAccCheckElasticsearchSecurityGroupExists(n string) resource.TestCheckFu } } -const testAccElasticsearchSecurityGroup = DefaultEsVariables + ` +const testAccElasticsearchSecurityGroup = tcacctest.DefaultEsVariables + ` resource "tencentcloud_elasticsearch_security_group" "security_group" { instance_id = var.instance_id @@ -119,7 +119,7 @@ resource "tencentcloud_elasticsearch_security_group" "security_group" { ` -const testAccElasticsearchSecurityGroupUp = DefaultEsVariables + ` +const testAccElasticsearchSecurityGroupUp = tcacctest.DefaultEsVariables + ` resource "tencentcloud_elasticsearch_security_group" "security_group" { instance_id = var.instance_id diff --git a/tencentcloud/resource_tc_elasticsearch_start_logstash_pipeline_operation.go b/tencentcloud/services/es/resource_tc_elasticsearch_start_logstash_pipeline_operation.go similarity index 65% rename from tencentcloud/resource_tc_elasticsearch_start_logstash_pipeline_operation.go rename to tencentcloud/services/es/resource_tc_elasticsearch_start_logstash_pipeline_operation.go index aed39a6c88..a76ed285bb 100644 --- a/tencentcloud/resource_tc_elasticsearch_start_logstash_pipeline_operation.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_start_logstash_pipeline_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package es import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchStartLogstashPipelineOperation() *schema.Resource { +func ResourceTencentCloudElasticsearchStartLogstashPipelineOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchStartLogstashPipelineOperationCreate, Read: resourceTencentCloudElasticsearchStartLogstashPipelineOperationRead, @@ -37,10 +40,10 @@ func resourceTencentCloudElasticsearchStartLogstashPipelineOperation() *schema.R } func resourceTencentCloudElasticsearchStartLogstashPipelineOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_start_logstash_pipeline_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_start_logstash_pipeline_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewStartLogstashPipelinesRequest() @@ -57,10 +60,10 @@ func resourceTencentCloudElasticsearchStartLogstashPipelineOperationCreate(d *sc request.PipelineIds = []*string{&pipelineId} } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().StartLogstashPipelines(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().StartLogstashPipelines(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -71,29 +74,29 @@ func resourceTencentCloudElasticsearchStartLogstashPipelineOperationCreate(d *sc return err } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"2"}, 3*readRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"2"}, 3*tccommon.ReadRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } - d.SetId(instanceId + FILED_SP + pipelineId) + d.SetId(instanceId + tccommon.FILED_SP + pipelineId) return resourceTencentCloudElasticsearchStartLogstashPipelineOperationRead(d, meta) } func resourceTencentCloudElasticsearchStartLogstashPipelineOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_start_logstash_pipeline_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_start_logstash_pipeline_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudElasticsearchStartLogstashPipelineOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_start_logstash_pipeline_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_start_logstash_pipeline_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_elasticsearch_stop_logstash_pipeline_operation.go b/tencentcloud/services/es/resource_tc_elasticsearch_stop_logstash_pipeline_operation.go similarity index 65% rename from tencentcloud/resource_tc_elasticsearch_stop_logstash_pipeline_operation.go rename to tencentcloud/services/es/resource_tc_elasticsearch_stop_logstash_pipeline_operation.go index 5a2ee4c26c..60550b28ed 100644 --- a/tencentcloud/resource_tc_elasticsearch_stop_logstash_pipeline_operation.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_stop_logstash_pipeline_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package es import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchStopLogstashPipelineOperation() *schema.Resource { +func ResourceTencentCloudElasticsearchStopLogstashPipelineOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchStopLogstashPipelineOperationCreate, Read: resourceTencentCloudElasticsearchStopLogstashPipelineOperationRead, @@ -37,10 +40,10 @@ func resourceTencentCloudElasticsearchStopLogstashPipelineOperation() *schema.Re } func resourceTencentCloudElasticsearchStopLogstashPipelineOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_stop_logstash_pipeline_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_stop_logstash_pipeline_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewStopLogstashPipelinesRequest() @@ -57,10 +60,10 @@ func resourceTencentCloudElasticsearchStopLogstashPipelineOperationCreate(d *sch request.PipelineIds = []*string{&pipelineId} } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().StopLogstashPipelines(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().StopLogstashPipelines(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -71,29 +74,29 @@ func resourceTencentCloudElasticsearchStopLogstashPipelineOperationCreate(d *sch return err } - service := ElasticsearchService{client: meta.(*TencentCloudClient).apiV3Conn} + service := ElasticsearchService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"-2"}, 3*readRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"-2"}, 3*tccommon.ReadRetryTimeout, time.Second, service.ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } - d.SetId(instanceId + FILED_SP + pipelineId) + d.SetId(instanceId + tccommon.FILED_SP + pipelineId) return resourceTencentCloudElasticsearchStopLogstashPipelineOperationRead(d, meta) } func resourceTencentCloudElasticsearchStopLogstashPipelineOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_stop_logstash_pipeline_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_stop_logstash_pipeline_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudElasticsearchStopLogstashPipelineOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_stop_logstash_pipeline_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_stop_logstash_pipeline_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_elasticsearch_update_plugins_operation.go b/tencentcloud/services/es/resource_tc_elasticsearch_update_plugins_operation.go similarity index 77% rename from tencentcloud/resource_tc_elasticsearch_update_plugins_operation.go rename to tencentcloud/services/es/resource_tc_elasticsearch_update_plugins_operation.go index f597dde63d..6cb72c55f2 100644 --- a/tencentcloud/resource_tc_elasticsearch_update_plugins_operation.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_update_plugins_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package es import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudElasticsearchUpdatePluginsOperation() *schema.Resource { +func ResourceTencentCloudElasticsearchUpdatePluginsOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudElasticsearchUpdatePluginsOperationCreate, Read: resourceTencentCloudElasticsearchUpdatePluginsOperationRead, @@ -68,10 +71,10 @@ func resourceTencentCloudElasticsearchUpdatePluginsOperation() *schema.Resource } func resourceTencentCloudElasticsearchUpdatePluginsOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_update_plugins_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_update_plugins_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = elasticsearch.NewUpdatePluginsRequest() @@ -110,10 +113,10 @@ func resourceTencentCloudElasticsearchUpdatePluginsOperationCreate(d *schema.Res request.PluginType = helper.IntUint64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseEsClient().UpdatePlugins(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseEsClient().UpdatePlugins(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -126,9 +129,9 @@ func resourceTencentCloudElasticsearchUpdatePluginsOperationCreate(d *schema.Res time.Sleep(2 * time.Second) elasticsearchService := ElasticsearchService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - conf := BuildStateChangeConf([]string{}, []string{"1"}, 10*readRetryTimeout, time.Second, elasticsearchService.ElasticsearchInstanceRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 10*tccommon.ReadRetryTimeout, time.Second, elasticsearchService.ElasticsearchInstanceRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -139,15 +142,15 @@ func resourceTencentCloudElasticsearchUpdatePluginsOperationCreate(d *schema.Res } func resourceTencentCloudElasticsearchUpdatePluginsOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_update_plugins_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_update_plugins_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudElasticsearchUpdatePluginsOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_elasticsearch_update_plugins_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_elasticsearch_update_plugins_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_elasticsearch_update_plugins_operation_test.go b/tencentcloud/services/es/resource_tc_elasticsearch_update_plugins_operation_test.go similarity index 81% rename from tencentcloud/resource_tc_elasticsearch_update_plugins_operation_test.go rename to tencentcloud/services/es/resource_tc_elasticsearch_update_plugins_operation_test.go index c73bdebed0..ef87f76f9b 100644 --- a/tencentcloud/resource_tc_elasticsearch_update_plugins_operation_test.go +++ b/tencentcloud/services/es/resource_tc_elasticsearch_update_plugins_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package es_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudElasticsearchUpdatePluginsOperationResource_basic(t *tes t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccElasticsearchUpdatePluginsOperation, diff --git a/tencentcloud/service_tencentcloud_elasticsearch.go b/tencentcloud/services/es/service_tencentcloud_elasticsearch.go old mode 100755 new mode 100644 similarity index 94% rename from tencentcloud/service_tencentcloud_elasticsearch.go rename to tencentcloud/services/es/service_tencentcloud_elasticsearch.go index de53f5b6b4..044c337a56 --- a/tencentcloud/service_tencentcloud_elasticsearch.go +++ b/tencentcloud/services/es/service_tencentcloud_elasticsearch.go @@ -1,24 +1,31 @@ -package tencentcloud +package es import ( "context" "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" elasticsearch "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" es "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es/v20180416" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewElasticsearchService(client *connectivity.TencentCloudClient) ElasticsearchService { + return ElasticsearchService{client: client} +} + type ElasticsearchService struct { client *connectivity.TencentCloudClient } func (me *ElasticsearchService) DescribeInstanceById(ctx context.Context, instanceId string) (instance *es.InstanceInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDescribeInstancesRequest() request.InstanceIds = []*string{&instanceId} @@ -40,7 +47,7 @@ func (me *ElasticsearchService) DescribeInstanceById(ctx context.Context, instan func (me *ElasticsearchService) DescribeInstancesByFilter(ctx context.Context, instanceId, instanceName string, tags map[string]string) (instances []*es.InstanceInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDescribeInstancesRequest() if instanceId != "" { request.InstanceIds = []*string{&instanceId} @@ -83,7 +90,7 @@ func (me *ElasticsearchService) DescribeInstancesByFilter(ctx context.Context, i } func (me *ElasticsearchService) DeleteInstance(ctx context.Context, instanceId string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDeleteInstanceRequest() request.InstanceId = &instanceId @@ -99,7 +106,7 @@ func (me *ElasticsearchService) DeleteInstance(ctx context.Context, instanceId s // UpdateInstance FIXME: use *Request instead of these suck params func (me *ElasticsearchService) UpdateInstance(ctx context.Context, instanceId, instanceName, password string, basicSecurityType int64, nodeList []*es.NodeInfo, nodeTypeInfo *es.WebNodeTypeInfo, esAcl *es.EsAcl) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewUpdateInstanceRequest() request.InstanceId = &instanceId if instanceName != "" { @@ -131,7 +138,7 @@ func (me *ElasticsearchService) UpdateInstance(ctx context.Context, instanceId, } func (me *ElasticsearchService) UpdateInstanceVersion(ctx context.Context, instanceId, version string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewUpgradeInstanceRequest() request.InstanceId = &instanceId request.EsVersion = &version @@ -147,7 +154,7 @@ func (me *ElasticsearchService) UpdateInstanceVersion(ctx context.Context, insta } func (me *ElasticsearchService) UpdateInstanceLicense(ctx context.Context, instanceId, licenseType string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewUpgradeLicenseRequest() request.InstanceId = &instanceId request.LicenseType = &licenseType @@ -163,7 +170,7 @@ func (me *ElasticsearchService) UpdateInstanceLicense(ctx context.Context, insta } func (me *ElasticsearchService) DescribeElasticsearchIndexByName(ctx context.Context, instanceId, indexType, indexName string) (index *es.IndexMetaField, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDescribeIndexMetaRequest() request.InstanceId = &instanceId @@ -192,7 +199,7 @@ func (me *ElasticsearchService) DescribeElasticsearchIndexByName(ctx context.Con } func (me *ElasticsearchService) DeleteElasticsearchIndexByName(ctx context.Context, instanceId, indexType, indexName string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDeleteIndexRequest() request.InstanceId = &instanceId @@ -218,7 +225,7 @@ func (me *ElasticsearchService) DeleteElasticsearchIndexByName(ctx context.Conte } func (me *ElasticsearchService) DescribeElasticsearchLogstashById(ctx context.Context, instanceId string) (logstash *es.LogstashInstanceInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDescribeLogstashInstancesRequest() request.InstanceIds = []*string{&instanceId} @@ -247,7 +254,7 @@ func (me *ElasticsearchService) DescribeElasticsearchLogstashById(ctx context.Co } func (me *ElasticsearchService) DeleteElasticsearchLogstashById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDeleteLogstashInstanceRequest() request.InstanceId = &instanceId @@ -272,7 +279,7 @@ func (me *ElasticsearchService) DeleteElasticsearchLogstashById(ctx context.Cont func (me *ElasticsearchService) ElasticsearchLogstashStateRefreshFunc(instanceId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeElasticsearchLogstashById(ctx, instanceId) log.Printf("object: %v, err: %v", object, err) @@ -287,7 +294,7 @@ func (me *ElasticsearchService) ElasticsearchLogstashStateRefreshFunc(instanceId } func (me *ElasticsearchService) DescribeElasticsearchLogstashPipelineById(ctx context.Context, instanceId, pipelineId string) (logstashPipeline *es.LogstashPipelineInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDescribeLogstashPipelinesRequest() request.InstanceId = &instanceId @@ -322,7 +329,7 @@ func (me *ElasticsearchService) DescribeElasticsearchLogstashPipelineById(ctx co func (me *ElasticsearchService) ElasticsearchLogstashPipelineStateRefreshFunc(instanceId, pipelineId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeElasticsearchLogstashPipelineById(ctx, instanceId, pipelineId) log.Printf("object: %v, err: %v", object, err) @@ -337,7 +344,7 @@ func (me *ElasticsearchService) ElasticsearchLogstashPipelineStateRefreshFunc(in } func (me *ElasticsearchService) DeleteElasticsearchLogstashPipelineById(ctx context.Context, instanceId, pipelineId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDeleteLogstashPipelinesRequest() request.InstanceId = &instanceId @@ -362,7 +369,7 @@ func (me *ElasticsearchService) DeleteElasticsearchLogstashPipelineById(ctx cont } func (me *ElasticsearchService) UpdateLogstashInstance(ctx context.Context, instanceId string, params map[string]interface{}) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewUpdateLogstashInstanceRequest() request.InstanceId = &instanceId @@ -385,10 +392,10 @@ func (me *ElasticsearchService) UpdateLogstashInstance(ctx context.Context, inst request.OperationDuration = &operationDurationUpdated } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := me.client.UseEsClient().UpdateLogstashInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -399,7 +406,7 @@ func (me *ElasticsearchService) UpdateLogstashInstance(ctx context.Context, inst return err } - conf := BuildStateChangeConf([]string{}, []string{"1"}, 3*readRetryTimeout, time.Second, me.ElasticsearchLogstashStateRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 3*tccommon.ReadRetryTimeout, time.Second, me.ElasticsearchLogstashStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -408,7 +415,7 @@ func (me *ElasticsearchService) UpdateLogstashInstance(ctx context.Context, inst } func (me *ElasticsearchService) UpdateJdk(ctx context.Context, instanceId string, params map[string]interface{}) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewUpdateJdkRequest() request.InstanceId = helper.String(instanceId) @@ -428,7 +435,7 @@ func (me *ElasticsearchService) UpdateJdk(ctx context.Context, instanceId string func (me *ElasticsearchService) DescribeElasticsearchInstanceLogsByFilter(ctx context.Context, param map[string]interface{}) (elasticsearchInstanceLogs []*es.InstanceLog, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = es.NewDescribeInstanceLogsRequest() ) @@ -491,7 +498,7 @@ func (me *ElasticsearchService) DescribeElasticsearchInstanceLogsByFilter(ctx co func (me *ElasticsearchService) DescribeElasticsearchInstanceOperationsByFilter(ctx context.Context, param map[string]interface{}) (instanceOperations []*elasticsearch.Operation, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = es.NewDescribeInstanceOperationsRequest() ) @@ -545,7 +552,7 @@ func (me *ElasticsearchService) DescribeElasticsearchInstanceOperationsByFilter( func (me *ElasticsearchService) DescribeElasticsearchLogstashInstanceLogsByFilter(ctx context.Context, param map[string]interface{}) (logstashInstanceLogs []*elasticsearch.InstanceLog, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = es.NewDescribeLogstashInstanceLogsRequest() ) @@ -608,7 +615,7 @@ func (me *ElasticsearchService) DescribeElasticsearchLogstashInstanceLogsByFilte func (me *ElasticsearchService) DescribeElasticsearchLogstashInstanceOperationsByFilter(ctx context.Context, param map[string]interface{}) (logstashInstanceOperations []*elasticsearch.Operation, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = es.NewDescribeLogstashInstanceOperationsRequest() ) @@ -662,7 +669,7 @@ func (me *ElasticsearchService) DescribeElasticsearchLogstashInstanceOperationsB func (me *ElasticsearchService) DescribeElasticsearchViewsByFilter(ctx context.Context, param map[string]interface{}) (clusterView *elasticsearch.ClusterView, nodesViews []*elasticsearch.NodeView, kibanasViews []*elasticsearch.KibanaView, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = es.NewDescribeViewsRequest() ) @@ -699,7 +706,7 @@ func (me *ElasticsearchService) DescribeElasticsearchViewsByFilter(ctx context.C func (me *ElasticsearchService) ElasticsearchInstanceRefreshFunc(instanceId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeInstanceById(ctx, instanceId) log.Printf("object: %v, err: %v", object, err) @@ -714,7 +721,7 @@ func (me *ElasticsearchService) ElasticsearchInstanceRefreshFunc(instanceId stri } func (me *ElasticsearchService) DescribeElasticsearchDictionariesById(ctx context.Context, instanceId string) (Dictionaries *elasticsearch.DiagnoseResult, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewDescribeDiagnoseRequest() request.InstanceId = &instanceId @@ -743,7 +750,7 @@ func (me *ElasticsearchService) DescribeElasticsearchDictionariesById(ctx contex } func (me *ElasticsearchService) UpdateDiagnoseSettings(ctx context.Context, instanceId string, params map[string]interface{}) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewUpdateDiagnoseSettingsRequest() request.InstanceId = helper.String(instanceId) @@ -756,10 +763,10 @@ func (me *ElasticsearchService) UpdateDiagnoseSettings(ctx context.Context, inst } } ratelimit.Check(request.GetAction()) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := me.client.UseEsClient().UpdateDiagnoseSettings(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -773,7 +780,7 @@ func (me *ElasticsearchService) UpdateDiagnoseSettings(ctx context.Context, inst } func (me *ElasticsearchService) GetDiagnoseSettingsById(ctx context.Context, instanceId string) (diagnoseSettings *es.GetDiagnoseSettingsResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := es.NewGetDiagnoseSettingsRequest() request.InstanceId = &instanceId @@ -799,7 +806,7 @@ func (me *ElasticsearchService) GetDiagnoseSettingsById(ctx context.Context, ins func (me *ElasticsearchService) DescribeElasticsearchDiagnoseByFilter(ctx context.Context, param map[string]interface{}) (diagnose []*elasticsearch.DiagnoseResult, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = es.NewDescribeDiagnoseRequest() ) @@ -840,7 +847,7 @@ func (me *ElasticsearchService) DescribeElasticsearchDiagnoseByFilter(ctx contex func (me *ElasticsearchService) DescribeElasticsearchInstancePluginListByFilter(ctx context.Context, param map[string]interface{}) (InstancePluginList []*elasticsearch.DescribeInstancePluginInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = es.NewDescribeInstancePluginListRequest() ) @@ -897,7 +904,7 @@ func (me *ElasticsearchService) DescribeElasticsearchInstancePluginListByFilter( func (me *ElasticsearchService) DescribeElasticsearchDescribeIndexListByFilter(ctx context.Context, param map[string]interface{}) (DescribeIndexList []*elasticsearch.IndexMetaField, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = elasticsearch.NewDescribeIndexListRequest() ) diff --git a/tencentcloud/services/es/service_tencentcloud_tag.go b/tencentcloud/services/es/service_tencentcloud_tag.go new file mode 100644 index 0000000000..f22a5d4e64 --- /dev/null +++ b/tencentcloud/services/es/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package es + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/services/fl/extension_security_group.go b/tencentcloud/services/fl/extension_security_group.go new file mode 100644 index 0000000000..7f19ec0456 --- /dev/null +++ b/tencentcloud/services/fl/extension_security_group.go @@ -0,0 +1,3 @@ +package fl + +const DESCRIBE_SECURITY_GROUP_LIMIT = 50 diff --git a/tencentcloud/services/fl/extension_tags.go b/tencentcloud/services/fl/extension_tags.go new file mode 100644 index 0000000000..8c7f667f24 --- /dev/null +++ b/tencentcloud/services/fl/extension_tags.go @@ -0,0 +1,3 @@ +package fl + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/services/fl/extension_vpc.go b/tencentcloud/services/fl/extension_vpc.go new file mode 100644 index 0000000000..49d5d19c78 --- /dev/null +++ b/tencentcloud/services/fl/extension_vpc.go @@ -0,0 +1,339 @@ +package fl + +/* +all gate way types +https://cloud.tencent.com/document/api/215/15824#Route +*/ +const GATE_WAY_TYPE_CVM = "CVM" +const GATE_WAY_TYPE_VPN = "VPN" +const GATE_WAY_TYPE_DIRECTCONNECT = "DIRECTCONNECT" +const GATE_WAY_TYPE_PEERCONNECTION = "PEERCONNECTION" +const GATE_WAY_TYPE_SSLVPN = "SSLVPN" +const GATE_WAY_TYPE_HAVIP = "HAVIP" +const GATE_WAY_TYPE_NAT = "NAT" +const GATE_WAY_TYPE_NORMAL_CVM = "NORMAL_CVM" +const GATE_WAY_TYPE_EIP = "EIP" +const GATE_WAY_TYPE_CCN = "CCN" +const GATE_WAY_TYPE_LOCAL_GATEWAY = "LOCAL_GATEWAY" + +var ALL_GATE_WAY_TYPES = []string{ + GATE_WAY_TYPE_CVM, + GATE_WAY_TYPE_VPN, + GATE_WAY_TYPE_DIRECTCONNECT, + GATE_WAY_TYPE_PEERCONNECTION, + GATE_WAY_TYPE_SSLVPN, + GATE_WAY_TYPE_HAVIP, + GATE_WAY_TYPE_NAT, + GATE_WAY_TYPE_NORMAL_CVM, + GATE_WAY_TYPE_EIP, + GATE_WAY_TYPE_CCN, + GATE_WAY_TYPE_LOCAL_GATEWAY, +} + +const VPC_SERVICE_TYPE = "vpc" + +/* +EIP +*/ +const ( + EIP_STATUS_CREATING = "CREATING" + EIP_STATUS_BINDING = "BINDING" + EIP_STATUS_BIND = "BIND" + EIP_STATUS_UNBINDING = "UNBINDING" + EIP_STATUS_UNBIND = "UNBIND" + EIP_STATUS_OFFLINING = "OFFLINING" + EIP_STATUS_BIND_ENI = "BIND_ENI" + + EIP_TYPE_EIP = "EIP" + EIP_TYPE_ANYCAST = "AnycastEIP" + EIP_TYPE_HIGH_QUALITY = "HighQualityEIP" + EIP_TYPE_ANTI_DDOS = "AntiDDoSEIP" + + EIP_ANYCAST_ZONE_GLOBAL = "ANYCAST_ZONE_GLOBAL" + EIP_ANYCAST_ZONE_OVERSEAS = "ANYCAST_ZONE_OVERSEAS" + + EIP_INTERNET_PROVIDER_BGP = "BGP" + EIP_INTERNET_PROVIDER_CMCC = "CMCC" + EIP_INTERNET_PROVIDER_CTCC = "CTCC" + EIP_INTERNET_PROVIDER_CUCC = "CUCC" + + EIP_RESOURCE_TYPE = "eip" + + EIP_TASK_STATUS_SUCCESS = "SUCCESS" + EIP_TASK_STATUS_RUNNING = "RUNNING" + EIP_TASK_STATUS_FAILED = "FAILED" +) + +var EIP_INTERNET_PROVIDER = []string{ + EIP_INTERNET_PROVIDER_BGP, + EIP_INTERNET_PROVIDER_CMCC, + EIP_INTERNET_PROVIDER_CTCC, + EIP_INTERNET_PROVIDER_CUCC, +} + +var EIP_TYPE = []string{ + EIP_TYPE_EIP, + EIP_TYPE_ANYCAST, + EIP_TYPE_HIGH_QUALITY, + EIP_TYPE_ANTI_DDOS, +} + +var EIP_ANYCAST_ZONE = []string{ + EIP_ANYCAST_ZONE_GLOBAL, + EIP_ANYCAST_ZONE_OVERSEAS, +} + +var EIP_AVAILABLE_PERIOD = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36} + +// ENI +const ( + ENI_DESCRIBE_LIMIT = 100 +) + +const ( + ENI_STATE_PENDING = "PENDING" + ENI_STATE_AVAILABLE = "AVAILABLE" + ENI_STATE_ATTACHING = "ATTACHING" + ENI_STATE_DETACHING = "DETACHING" + ENI_STATE_DELETING = "DELETING" +) + +const ( + ENI_IP_PENDING = "PENDING" + ENI_IP_AVAILABLE = "AVAILABLE" + ENI_IP_ATTACHING = "ATTACHING" + ENI_IP_DETACHING = "DETACHING" + ENI_IP_DELETING = "DELETING" +) + +/* +NAT +*/ + +const ( + NAT_DESCRIBE_LIMIT = 100 + NAT_EIP_MAX_LIMIT = 10 +) + +const ( + NAT_FAILED_STATE = "FAILED" +) + +const ( + NAT_GATEWAY_TYPE_SUBNET = "SUBNET" + NAT_GATEWAY_TYPE_NETWORK_INTERFACE = "NETWORKINTERFACE" +) + +/* +VPN +*/ + +const ( + VPN_DESCRIBE_LIMIT = 100 +) + +const ( + VPN_TASK_STATUS_SUCCESS = "SUCCESS" + VPN_TASK_STATUS_RUNNING = "RUNNING" + VPN_TASK_STATUS_FAILED = "FAILED" +) + +const ( + VPN_STATE_PENDING = "PENDING" + VPN_STATE_DELETING = "DELETING" + VPN_STATE_AVAILABLE = "AVAILABLE" +) + +var VPN_STATE = []string{ + VPN_STATE_PENDING, + VPN_STATE_DELETING, + VPN_STATE_AVAILABLE, +} + +const ( + VPN_PERIOD_PREPAID_RENEW_FLAG_AUTO_NOTIFY = "NOTIFY_AND_AUTO_RENEW" + VPN_PERIOD_PREPAID_RENEW_FLAG_NOT = "NOTIFY_AND_MANUAL_RENEW" +) + +var VPN_PERIOD_PREPAID_RENEW_FLAG = []string{ + VPN_PERIOD_PREPAID_RENEW_FLAG_AUTO_NOTIFY, + VPN_PERIOD_PREPAID_RENEW_FLAG_NOT, +} + +const ( + VPN_CHARGE_TYPE_PREPAID = "PREPAID" + VPN_CHARGE_TYPE_POSTPAID_BY_HOUR = "POSTPAID_BY_HOUR" +) + +var VPN_CHARGE_TYPE = []string{ + VPN_CHARGE_TYPE_PREPAID, + VPN_CHARGE_TYPE_POSTPAID_BY_HOUR, +} + +const ( + VPN_PURCHASE_PLAN_PRE_POST = "PREPAID_TO_POSTPAID" +) + +var VPN_PURCHASE_PLAN = []string{ + VPN_PURCHASE_PLAN_PRE_POST, +} + +const ( + VPN_RESTRICT_STATE_NORMAL = "NORMAL" + VPN_RESTRICT_STATE_ISOLATE = "PRETECIVELY_ISOLATED" +) + +var VPN_RESTRICT_STATE = []string{ + VPN_RESTRICT_STATE_NORMAL, + VPN_RESTRICT_STATE_ISOLATE, +} + +const ( + VPN_IKE_PROPO_ENCRY_ALGORITHM_3DESCBC = "3DES-CBC" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC128 = "AES-CBC-128" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC192 = "AES-CBS-192`" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC256 = "AES-CBC-256" + VPN_IKE_PROPO_ENCRY_ALGORITHM_DESCBC = "DES-CBC" +) + +var VPN_IKE_PROPO_ENCRY_ALGORITHM = []string{ + VPN_IKE_PROPO_ENCRY_ALGORITHM_3DESCBC, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC128, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC192, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC256, + VPN_IKE_PROPO_ENCRY_ALGORITHM_DESCBC, +} + +const ( + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA = "SHA" + VPN_IKE_PROPO_AUTHEN_ALGORITHM_MD5 = "MD5" + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA256 = "SHA-256" +) + +var VPN_IKE_PROPO_AUTHEN_ALGORITHM = []string{ + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA, + VPN_IKE_PROPO_AUTHEN_ALGORITHM_MD5, + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA256, +} + +const ( + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA1 = "SHA1" + VPN_IPSEC_INTEGRITY_ALGORITHM_MD5 = "MD5" + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA256 = "SHA-256" +) + +var VPN_IPSEC_INTEGRITY_ALGORITHM = []string{ + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA1, + VPN_IPSEC_INTEGRITY_ALGORITHM_MD5, + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA256, +} + +const ( + VPN_IKE_EXCHANGE_MODE_AGGRESSIVE = "AGGRESSIVE" + VPN_IKE_EXCHANGE_MODE_MAIN = "MAIN" +) + +var VPN_IKE_EXCHANGE_MODE = []string{ + VPN_IKE_EXCHANGE_MODE_AGGRESSIVE, + VPN_IKE_EXCHANGE_MODE_MAIN, +} + +const ( + ROUTE_TYPE_STATIC = "STATIC" + ROUTE_TYPE_STATIC_ROUTE = "StaticRoute" + ROUTE_TYPE_POLICY = "Policy" +) + +var VPN_CONNECTION_ROUTE_TYPE = []string{ + ROUTE_TYPE_STATIC, + ROUTE_TYPE_STATIC_ROUTE, + ROUTE_TYPE_POLICY, +} + +const ( + VPN_IKE_IDENTITY_ADDRESS = "ADDRESS" + VPN_IKE_IDENTITY_FQDN = "FQDN" +) + +var VPN_IKE_IDENTITY = []string{ + VPN_IKE_IDENTITY_ADDRESS, + VPN_IKE_IDENTITY_FQDN, +} + +const ( + VPN_IKE_DH_GROUP_NAME_GROUP1 = "GROUP1" + VPN_IKE_DH_GROUP_NAME_GROUP2 = "GROUP2" + VPN_IKE_DH_GROUP_NAME_GROUP5 = "GROUP5" + VPN_IKE_DH_GROUP_NAME_GROUP14 = "GROUP14" + VPN_IKE_DH_GROUP_NAME_GROUP24 = "GROUP24" +) + +var VPN_IKE_DH_GROUP_NAME = []string{ + VPN_IKE_DH_GROUP_NAME_GROUP1, + VPN_IKE_DH_GROUP_NAME_GROUP2, + VPN_IKE_DH_GROUP_NAME_GROUP5, + VPN_IKE_DH_GROUP_NAME_GROUP14, + VPN_IKE_DH_GROUP_NAME_GROUP24, +} + +const ( + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP1 = "DH-GROUP1" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP2 = "DH-GROUP2" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP5 = "DH-GROUP5" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP14 = "DH-GROUP14" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP24 = "DH-GROUP24" + VPN_IPSEC_PFS_DH_GROUP_NAME_NULL = "NULL" +) + +var VPN_IPSEC_PFS_DH_GROUP_NAME = []string{ + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP1, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP2, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP5, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP14, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP24, + VPN_IPSEC_PFS_DH_GROUP_NAME_NULL, +} + +const ( + VPN_IPSEC_ENCRY_ALGORITHM_3DESCBC = "3DES-CBC" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC128 = "AES-CBC-128" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC192 = "AES-CBS-192`" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC256 = "AES-CBC-256" + VPN_IPSEC_ENCRY_ALGORITHM_DESCBC = "DES-CBC" + VPN_IPSEC_ENCRY_ALGORITHM_NULL = "NULL" +) + +var VPN_IPSEC_ENCRY_ALGORITHM = []string{ + VPN_IPSEC_ENCRY_ALGORITHM_3DESCBC, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC128, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC192, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC256, + VPN_IPSEC_ENCRY_ALGORITHM_DESCBC, + VPN_IPSEC_ENCRY_ALGORITHM_NULL, +} + +/* +HAVIP +*/ + +const ( + HAVIP_DESCRIBE_LIMIT = 100 +) + +/* +COMMON +*/ +const ( + VPCNotFound = "ResourceNotFound" + VPCUnsupportedOperation = "UnsupportedOperation" +) + +const ( + DPD_ACTION_CLEAR = "clear" + DPD_ACTION_RESTART = "restart" +) + +var DPD_ACTIONS = []string{ + DPD_ACTION_CLEAR, + DPD_ACTION_RESTART, +} diff --git a/tencentcloud/resource_tc_vpc_flow_log.go b/tencentcloud/services/fl/resource_tc_vpc_flow_log.go similarity index 82% rename from tencentcloud/resource_tc_vpc_flow_log.go rename to tencentcloud/services/fl/resource_tc_vpc_flow_log.go index 3d8f0c7505..fee2148bde 100644 --- a/tencentcloud/resource_tc_vpc_flow_log.go +++ b/tencentcloud/services/fl/resource_tc_vpc_flow_log.go @@ -1,4 +1,4 @@ -package tencentcloud +package fl import ( "context" @@ -7,13 +7,16 @@ import ( "regexp" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudVpcFlowLog() *schema.Resource { +func ResourceTencentCloudVpcFlowLog() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudVpcFlowLogCreate, Read: resourceTencentCloudVpcFlowLogRead, @@ -102,10 +105,10 @@ func resourceTencentCloudVpcFlowLog() *schema.Resource { } func resourceTencentCloudVpcFlowLogCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_flow_log.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_flow_log.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = vpc.NewCreateFlowLogRequest() @@ -159,10 +162,10 @@ func resourceTencentCloudVpcFlowLogCreate(d *schema.ResourceData, meta interface request.CloudLogRegion = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().CreateFlowLog(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().CreateFlowLog(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -183,10 +186,10 @@ func resourceTencentCloudVpcFlowLogCreate(d *schema.ResourceData, meta interface resourceTencentCloudSetFlowLogId(d, flowLogId, d.Get("vpc_id").(string)) if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := TagService{client} - ctx := context.WithValue(context.TODO(), logIdKey, logId) - resourceName := BuildTagResourceName("vpc", "fl", client.Region, flowLogId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + resourceName := tccommon.BuildTagResourceName("vpc", "fl", client.Region, flowLogId) err := tagService.ModifyTags(ctx, resourceName, tags, nil) if err != nil { return err @@ -197,14 +200,14 @@ func resourceTencentCloudVpcFlowLogCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudVpcFlowLogRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_flow_log.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_flow_log.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} flowLogId, vpcId, err := resourceTencentCloudGetFlowLogId(d) @@ -272,7 +275,7 @@ func resourceTencentCloudVpcFlowLogRead(d *schema.ResourceData, meta interface{} _ = d.Set("cloud_log_region", flowLog.CloudLogRegion) } - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: client} tags, err := tagService.DescribeResourceTags(ctx, "vpc", "fl", client.Region, flowLogId) if err != nil { @@ -287,11 +290,11 @@ func resourceTencentCloudVpcFlowLogRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudVpcFlowLogUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_flow_log.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_flow_log.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request := vpc.NewModifyFlowLogAttributeRequest() @@ -335,10 +338,10 @@ func resourceTencentCloudVpcFlowLogUpdate(d *schema.ResourceData, meta interface } } - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().ModifyFlowLogAttribute(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyFlowLogAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -350,12 +353,12 @@ func resourceTencentCloudVpcFlowLogUpdate(d *schema.ResourceData, meta interface } if d.HasChange("tags") { - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := TagService{client} oldValue, newValue := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{})) - resourceName := BuildTagResourceName("vpc", "fl", client.Region, flowLogId) + resourceName := tccommon.BuildTagResourceName("vpc", "fl", client.Region, flowLogId) err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags) if err != nil { return err @@ -366,13 +369,13 @@ func resourceTencentCloudVpcFlowLogUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudVpcFlowLogDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_flow_log.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_flow_log.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} flowLogId, vpcId, err := resourceTencentCloudGetFlowLogId(d) if err != nil { @@ -387,7 +390,7 @@ func resourceTencentCloudVpcFlowLogDelete(d *schema.ResourceData, meta interface } func resourceTencentCloudSetFlowLogId(d *schema.ResourceData, id, vpcId string) { - d.SetId(id + FILED_SP + vpcId) + d.SetId(id + tccommon.FILED_SP + vpcId) } func resourceTencentCloudGetFlowLogId(d *schema.ResourceData) (id, vpcId string, err error) { @@ -397,7 +400,7 @@ func resourceTencentCloudGetFlowLogId(d *schema.ResourceData) (id, vpcId string, err = fmt.Errorf("invalid id format %s, expect `fl-xxxxxxxx#vpc-xxxxxxxx`", rawId) return } - ids := strings.Split(rawId, FILED_SP) + ids := strings.Split(rawId, tccommon.FILED_SP) id = ids[0] vpcId = ids[1] return diff --git a/tencentcloud/resource_tc_vpc_flow_log_config.go b/tencentcloud/services/fl/resource_tc_vpc_flow_log_config.go similarity index 69% rename from tencentcloud/resource_tc_vpc_flow_log_config.go rename to tencentcloud/services/fl/resource_tc_vpc_flow_log_config.go index c6943d4789..dd7b3007b6 100644 --- a/tencentcloud/resource_tc_vpc_flow_log_config.go +++ b/tencentcloud/services/fl/resource_tc_vpc_flow_log_config.go @@ -1,15 +1,17 @@ -package tencentcloud +package fl import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" ) -func resourceTencentCloudVpcFlowLogConfig() *schema.Resource { +func ResourceTencentCloudVpcFlowLogConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudVpcFlowLogConfigCreate, Read: resourceTencentCloudVpcFlowLogConfigRead, @@ -35,8 +37,8 @@ func resourceTencentCloudVpcFlowLogConfig() *schema.Resource { } func resourceTencentCloudVpcFlowLogConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_flow_log_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_flow_log_config.create")() + defer tccommon.InconsistentCheck(d, meta)() flowLogId := d.Get("flow_log_id").(string) @@ -46,14 +48,14 @@ func resourceTencentCloudVpcFlowLogConfigCreate(d *schema.ResourceData, meta int } func resourceTencentCloudVpcFlowLogConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_flow_log_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_flow_log_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} flowLogId := d.Id() @@ -83,10 +85,10 @@ func resourceTencentCloudVpcFlowLogConfigRead(d *schema.ResourceData, meta inter } func resourceTencentCloudVpcFlowLogConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_flow_log_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_flow_log_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( enable bool @@ -102,10 +104,10 @@ func resourceTencentCloudVpcFlowLogConfigUpdate(d *schema.ResourceData, meta int if enable { enableRequest.FlowLogIds = []*string{&flowLogId} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().EnableFlowLogs(enableRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().EnableFlowLogs(enableRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, enableRequest.GetAction(), enableRequest.ToJsonString(), result.ToJsonString()) } @@ -117,10 +119,10 @@ func resourceTencentCloudVpcFlowLogConfigUpdate(d *schema.ResourceData, meta int } } else { disableRequest.FlowLogIds = []*string{&flowLogId} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().DisableFlowLogs(disableRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().DisableFlowLogs(disableRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, disableRequest.GetAction(), disableRequest.ToJsonString(), result.ToJsonString()) } @@ -136,8 +138,8 @@ func resourceTencentCloudVpcFlowLogConfigUpdate(d *schema.ResourceData, meta int } func resourceTencentCloudVpcFlowLogConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_flow_log_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_flow_log_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_vpc_flow_log_config_test.go b/tencentcloud/services/fl/resource_tc_vpc_flow_log_config_test.go similarity index 86% rename from tencentcloud/resource_tc_vpc_flow_log_config_test.go rename to tencentcloud/services/fl/resource_tc_vpc_flow_log_config_test.go index ced0d5686b..b3d89ae33b 100644 --- a/tencentcloud/resource_tc_vpc_flow_log_config_test.go +++ b/tencentcloud/services/fl/resource_tc_vpc_flow_log_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package fl_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudVpcFlowLogConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccVpcFlowLogConfig, diff --git a/tencentcloud/resource_tc_vpc_flow_log_test.go b/tencentcloud/services/fl/resource_tc_vpc_flow_log_test.go similarity index 78% rename from tencentcloud/resource_tc_vpc_flow_log_test.go rename to tencentcloud/services/fl/resource_tc_vpc_flow_log_test.go index 28cabe799a..197b657359 100644 --- a/tencentcloud/resource_tc_vpc_flow_log_test.go +++ b/tencentcloud/services/fl/resource_tc_vpc_flow_log_test.go @@ -1,13 +1,18 @@ -package tencentcloud +package fl_test import ( "context" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + svcfl "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/fl" ) func init() { @@ -15,12 +20,12 @@ func init() { resource.AddTestSweepers("ap-guangzhou", &resource.Sweeper{ Name: "ap-guangzhou", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - client := cli.(*TencentCloudClient).apiV3Conn + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + client := cli.(tccommon.ProviderMeta).GetAPIV3Conn() - service := VpcService{client} + service := svcfl.NewVpcService(client) request := vpc.NewDescribeFlowLogsRequest() result, err := service.DescribeFlowLogs(ctx, request) @@ -30,11 +35,11 @@ func init() { for i := range result { fl := result[i] - created, err := time.Parse(TENCENTCLOUD_COMMON_TIME_LAYOUT, "*fl.CreatedTime") + created, err := time.Parse(tccommon.TENCENTCLOUD_COMMON_TIME_LAYOUT, "*fl.CreatedTime") if err != nil { created = time.Time{} } - if isResourcePersist(*fl.FlowLogName, &created) { + if tcacctest.IsResourcePersist(*fl.FlowLogName, &created) { continue } vpcId := "" @@ -52,9 +57,9 @@ func TestAccTencentCloudVpcFlowLogResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccVpcFlowLog, @@ -87,7 +92,7 @@ func TestAccTencentCloudVpcFlowLogResource_basic(t *testing.T) { }) } -const testAccVpcFlowLog = defaultVpcSubnets + ` +const testAccVpcFlowLog = tcacctest.DefaultVpcSubnets + ` data "tencentcloud_enis" "eni" { name = "keep-fl-eni" } @@ -107,7 +112,7 @@ resource "tencentcloud_vpc_flow_log" "flow_log" { } ` -const testAccVpcFlowLogUpdate = defaultVpcSubnets + ` +const testAccVpcFlowLogUpdate = tcacctest.DefaultVpcSubnets + ` data "tencentcloud_enis" "eni" { name = "keep-fl-eni" } diff --git a/tencentcloud/services/fl/service_tencentcloud_tag.go b/tencentcloud/services/fl/service_tencentcloud_tag.go new file mode 100644 index 0000000000..a39239696a --- /dev/null +++ b/tencentcloud/services/fl/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package fl + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/services/fl/service_tencentcloud_vpc.go b/tencentcloud/services/fl/service_tencentcloud_vpc.go new file mode 100644 index 0000000000..047312499b --- /dev/null +++ b/tencentcloud/services/fl/service_tencentcloud_vpc.go @@ -0,0 +1,8150 @@ +package fl + +import ( + "context" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "log" + "net" + "regexp" + "strconv" + "strings" + "sync" + "time" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +var eipUnattachLocker = &sync.Mutex{} + +/* For Adun Sake please DO NOT Declare the redundant Type STRUCT!! */ +// VPC basic information +type VpcBasicInfo struct { + vpcId string + name string + cidr string + isMulticast bool + isDefault bool + dnsServers []string + createTime string + tags []*vpc.Tag + assistantCidrs []string + dockerAssistantCidrs []string +} + +// subnet basic information +type VpcSubnetBasicInfo struct { + vpcId string + subnetId string + routeTableId string + name string + cidr string + isMulticast bool + isDefault bool + zone string + availableIpCount int64 + createTime string +} + +// route entry basic information +type VpcRouteEntryBasicInfo struct { + routeEntryId int64 + destinationCidr string + nextType string + nextBub string + description string + entryType string + enabled bool +} + +// route table basic information +type VpcRouteTableBasicInfo struct { + routeTableId string + name string + vpcId string + isDefault bool + subnetIds []string + entryInfos []VpcRouteEntryBasicInfo + createTime string +} + +type VpcSecurityGroupLiteRule struct { + action string + cidrIp string + port string + protocol string + addressId string + addressGroupId string + securityGroupId string + protocolTemplateId string + protocolTemplateGroupId string +} + +var securityGroupIdRE = regexp.MustCompile(`^sg-\w{8}$`) +var ipAddressIdRE = regexp.MustCompile(`^ipm-\w{8}$`) +var ipAddressGroupIdRE = regexp.MustCompile(`^ipmg-\w{8}$`) +var protocolTemplateRE = regexp.MustCompile(`^ppmg?-\w{8}$`) +var protocolTemplateIdRE = regexp.MustCompile(`^ppm-\w{8}$`) +var protocolTemplateGroupIdRE = regexp.MustCompile(`^ppmg-\w{8}$`) +var portRE = regexp.MustCompile(`^(\d{1,5},)*\d{1,5}$|^\d{1,5}-\d{1,5}$`) + +// acl rule +type VpcACLRule struct { + action string + cidrIp string + port string + protocol string +} + +type VpcEniIP struct { + ip net.IP + primary bool + desc *string +} + +func (rule VpcSecurityGroupLiteRule) String() string { + + var source string + + if rule.cidrIp != "" { + source = rule.cidrIp + } + if rule.securityGroupId != "" { + source = rule.securityGroupId + } + if rule.addressId != "" { + source = rule.addressId + } + if rule.addressGroupId != "" { + source = rule.addressGroupId + } + + protocol := rule.protocol + + if protocol == "" && rule.protocolTemplateId != "" { + protocol = rule.protocolTemplateId + } else if protocol == "" && rule.protocolTemplateGroupId != "" { + protocol = rule.protocolTemplateGroupId + } + + return fmt.Sprintf("%s#%s#%s#%s", rule.action, source, rule.port, protocol) +} + +func getSecurityGroupPolicies(rules []VpcSecurityGroupLiteRule) []*vpc.SecurityGroupPolicy { + policies := make([]*vpc.SecurityGroupPolicy, 0) + + for i := range rules { + rule := rules[i] + policy := &vpc.SecurityGroupPolicy{ + Action: &rule.action, + } + + if rule.securityGroupId != "" { + policy.SecurityGroupId = &rule.securityGroupId + } else if rule.addressId != "" || rule.addressGroupId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + if rule.addressId != "" { + policy.AddressTemplate.AddressId = &rule.addressId + } + if rule.addressGroupId != "" { + policy.AddressTemplate.AddressGroupId = &rule.addressGroupId + } + } else { + policy.CidrBlock = &rule.cidrIp + } + + usingProtocolTemplate := rule.protocolTemplateId != "" || rule.protocolTemplateGroupId != "" + + if usingProtocolTemplate { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + if rule.protocolTemplateId != "" { + policy.ServiceTemplate.ServiceId = &rule.protocolTemplateId + } + if rule.protocolTemplateGroupId != "" { + policy.ServiceTemplate.ServiceGroupId = &rule.protocolTemplateGroupId + } + } + + if !usingProtocolTemplate { + policy.Protocol = &rule.protocol + } + + if !usingProtocolTemplate && rule.port != "" { + policy.Port = &rule.port + } + + policies = append(policies, policy) + } + return policies +} + +func NewVpcService(client *connectivity.TencentCloudClient) VpcService { + return VpcService{client: client} +} + +type VpcService struct { + client *connectivity.TencentCloudClient +} + +// ///////common +func (me *VpcService) fillFilter(ins []*vpc.Filter, key, value string) (outs []*vpc.Filter) { + if ins == nil { + ins = make([]*vpc.Filter, 0, 2) + } + + var filter = vpc.Filter{Name: &key, Values: []*string{&value}} + ins = append(ins, &filter) + outs = ins + return +} + +// ////////api +func (me *VpcService) CreateVpc(ctx context.Context, name, cidr string, + isMulticast bool, dnsServers []string, tags map[string]string) (vpcId string, isDefault bool, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateVpcRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcName = &name + request.CidrBlock = &cidr + + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + request.EnableMulticast = &enableMulticast + + if len(dnsServers) > 0 { + request.DnsServers = make([]*string, 0, len(dnsServers)) + for index := range dnsServers { + request.DnsServers = append(request.DnsServers, &dnsServers[index]) + } + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + var response *vpc.CreateVpcResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().CreateVpc(request) + if err != nil { + return tccommon.RetryError(err) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s create vpc failed, reason: %v", logId, err) + errRet = err + return + } + vpcId, isDefault = *response.Response.Vpc.VpcId, *response.Response.Vpc.IsDefault + return +} + +func (me *VpcService) DescribeVpc(ctx context.Context, + vpcId string, + tagKey string, + cidrBlock string) (info VpcBasicInfo, has int, errRet error) { + infos, err := me.DescribeVpcs(ctx, vpcId, "", nil, nil, tagKey, cidrBlock) + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return +} + +func (me *VpcService) DescribeVpcs(ctx context.Context, + vpcId, name string, + tags map[string]string, + isDefaultPtr *bool, + tagKey string, + cidrBlock string) (infos []VpcBasicInfo, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpcsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + infos = make([]VpcBasicInfo, 0, 100) + + var ( + offset = 0 + limit = 100 + total = -1 + hasVpc = map[string]bool{} + filters []*vpc.Filter + ) + + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + + if name != "" { + filters = me.fillFilter(filters, "vpc-name", name) + } + + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + + if cidrBlock != "" { + filters = me.fillFilter(filters, "cidr-block", cidrBlock) + } + + if isDefaultPtr != nil { + filters = me.fillFilter(filters, "is-default", map[bool]string{true: "true", false: "false"}[*isDefaultPtr]) + } + + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + var response *vpc.DescribeVpcsResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().DescribeVpcs(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s read vpc failed, reason: %v", logId, err) + return nil, err + } + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.VpcSet) > 0 { + offset += limit + } else { + // get empty VpcInfo, we're done + return + } + for _, item := range response.Response.VpcSet { + var basicInfo VpcBasicInfo + basicInfo.cidr = *item.CidrBlock + basicInfo.createTime = *item.CreatedTime + basicInfo.dnsServers = make([]string, 0, len(item.DnsServerSet)) + + for _, v := range item.DnsServerSet { + basicInfo.dnsServers = append(basicInfo.dnsServers, *v) + } + basicInfo.isDefault = *item.IsDefault + basicInfo.isMulticast = *item.EnableMulticast + basicInfo.name = *item.VpcName + basicInfo.vpcId = *item.VpcId + + if hasVpc[basicInfo.vpcId] { + errRet = fmt.Errorf("get repeated vpc_id[%s] when doing DescribeVpcs", basicInfo.vpcId) + return + } + hasVpc[basicInfo.vpcId] = true + + if len(item.AssistantCidrSet) > 0 { + for i := range item.AssistantCidrSet { + kind := item.AssistantCidrSet[i].AssistantType + cidr := item.AssistantCidrSet[i].CidrBlock + if kind != nil && *kind == 0 { + basicInfo.assistantCidrs = append(basicInfo.assistantCidrs, *cidr) + } else { + basicInfo.dockerAssistantCidrs = append(basicInfo.dockerAssistantCidrs, *cidr) + } + } + } + + if len(item.TagSet) > 0 { + basicInfo.tags = item.TagSet + } + + infos = append(infos, basicInfo) + } + goto getMoreData + +} +func (me *VpcService) DescribeSubnet(ctx context.Context, + subnetId string, + isRemoteVpcSNAT *bool, + tagKey, + cidrBlock string) (info VpcSubnetBasicInfo, has int, errRet error) { + infos, err := me.DescribeSubnets(ctx, subnetId, "", "", "", nil, nil, isRemoteVpcSNAT, tagKey, cidrBlock) + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return +} + +func (me *VpcService) DescribeSubnets(ctx context.Context, + subnetId, + vpcId, + subnetName, + zone string, + tags map[string]string, + isDefaultPtr *bool, + isRemoteVpcSNAT *bool, + tagKey, + cidrBlock string) (infos []VpcSubnetBasicInfo, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeSubnetsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var ( + offset = 0 + limit = 100 + total = -1 + hasSubnet = map[string]bool{} + filters []*vpc.Filter + ) + + if subnetId != "" { + filters = me.fillFilter(filters, "subnet-id", subnetId) + } + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + if subnetName != "" { + filters = me.fillFilter(filters, "subnet-name", subnetName) + } + if zone != "" { + filters = me.fillFilter(filters, "zone", zone) + } + + if isDefaultPtr != nil { + filters = me.fillFilter(filters, "is-default", map[bool]string{true: "true", false: "false"}[*isDefaultPtr]) + } + + if isRemoteVpcSNAT != nil { + filters = me.fillFilter(filters, "is-remote-vpc-snat", map[bool]string{true: "true", false: "false"}[*isRemoteVpcSNAT]) + } + + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + if cidrBlock != "" { + filters = me.fillFilter(filters, "cidr-block", cidrBlock) + } + + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + var response *vpc.DescribeSubnetsResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().DescribeSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s read subnets failed, reason: %v", logId, err) + return nil, err + } + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.SubnetSet) > 0 { + offset += limit + } else { + // get empty subnet, we're done + return + } + for _, item := range response.Response.SubnetSet { + var basicInfo VpcSubnetBasicInfo + + basicInfo.cidr = *item.CidrBlock + basicInfo.createTime = *item.CreatedTime + basicInfo.vpcId = *item.VpcId + basicInfo.subnetId = *item.SubnetId + basicInfo.routeTableId = *item.RouteTableId + + basicInfo.name = *item.SubnetName + basicInfo.isDefault = *item.IsDefault + basicInfo.isMulticast = *item.EnableBroadcast + + basicInfo.zone = *item.Zone + basicInfo.availableIpCount = int64(*item.AvailableIpAddressCount) + + if hasSubnet[basicInfo.subnetId] { + errRet = fmt.Errorf("get repeated subnetId[%s] when doing DescribeSubnets", basicInfo.subnetId) + return + } + hasSubnet[basicInfo.subnetId] = true + infos = append(infos, basicInfo) + } + goto getMoreData +} + +func (me *VpcService) ModifyVpcAttribute(ctx context.Context, vpcId, name string, isMulticast bool, dnsServers []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyVpcAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcId = &vpcId + request.VpcName = &name + + if len(dnsServers) > 0 { + request.DnsServers = make([]*string, 0, len(dnsServers)) + for index := range dnsServers { + request.DnsServers = append(request.DnsServers, &dnsServers[index]) + } + } + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + request.EnableMulticast = &enableMulticast + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyVpcAttribute(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify vpc failed, reason: %v", logId, err) + return err + } + + return +} + +func (me *VpcService) DeleteVpc(ctx context.Context, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpcRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + if vpcId == "" { + errRet = fmt.Errorf("DeleteVpc can not delete empty vpc_id.") + return + } + + request.VpcId = &vpcId + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteVpc(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete vpc failed, reason: %v", logId, err) + return err + } + return + +} + +func (me *VpcService) CreateSubnet(ctx context.Context, vpcId, name, cidr, zone string, tags map[string]string) (subnetId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateSubnetRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if vpcId == "" { + errRet = fmt.Errorf("CreateSubnet can not invoke by empty vpc_id.") + return + } + request.VpcId = &vpcId + request.SubnetName = &name + request.CidrBlock = &cidr + request.Zone = &zone + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + var response *vpc.CreateSubnetResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().CreateSubnet(request) + if err != nil { + return tccommon.RetryError(err) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s create subnet failed, reason: %v", logId, err) + return "", err + } + + subnetId = *response.Response.Subnet.SubnetId + + return +} + +func (me *VpcService) ModifySubnetAttribute(ctx context.Context, subnetId, name string, isMulticast bool) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifySubnetAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + + request.SubnetId = &subnetId + request.SubnetName = &name + request.EnableBroadcast = &enableMulticast + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifySubnetAttribute(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify subnet failed, reason: %v", logId, err) + return err + } + return +} + +func (me *VpcService) DeleteSubnet(ctx context.Context, subnetId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteSubnetRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SubnetId = &subnetId + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteSubnet(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete subnet failed, reason: %v", logId, err) + return err + } + return + +} + +func (me *VpcService) ReplaceRouteTableAssociation(ctx context.Context, subnetId string, routeTableId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewReplaceRouteTableAssociationRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SubnetId = &subnetId + request.RouteTableId = &routeTableId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ReplaceRouteTableAssociation(request) + + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return +} + +func (me *VpcService) IsRouteTableInVpc(ctx context.Context, routeTableId, vpcId string) (info VpcRouteTableBasicInfo, has int, errRet error) { + + infos, err := me.DescribeRouteTables(ctx, routeTableId, "", vpcId, nil, nil, "") + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return + +} + +func (me *VpcService) DescribeRouteTable(ctx context.Context, routeTableId string) (info VpcRouteTableBasicInfo, has int, errRet error) { + + infos, err := me.DescribeRouteTables(ctx, routeTableId, "", "", nil, nil, "") + if err != nil { + errRet = err + return + } + + has = len(infos) + + if has == 0 { + return + } + info = infos[0] + return +} +func (me *VpcService) DescribeRouteTables(ctx context.Context, + routeTableId, + routeTableName, + vpcId string, + tags map[string]string, + associationMain *bool, + tagKey string) (infos []VpcRouteTableBasicInfo, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeRouteTablesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + infos = make([]VpcRouteTableBasicInfo, 0, 100) + var offset = 0 + var limit = 100 + var total = -1 + var hasTableMap = map[string]bool{} + + var filters []*vpc.Filter + if routeTableId != "" { + filters = me.fillFilter(filters, "route-table-id", routeTableId) + } + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + if routeTableName != "" { + filters = me.fillFilter(filters, "route-table-name", routeTableName) + } + if associationMain != nil { + filters = me.fillFilter(filters, "association.main", map[bool]string{true: "true", false: "false"}[*associationMain]) + } + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteTables(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.RouteTableSet) > 0 { + offset += limit + } else { + // get empty Vpcinfo, we're done + return + } + for _, item := range response.Response.RouteTableSet { + var basicInfo VpcRouteTableBasicInfo + basicInfo.createTime = *item.CreatedTime + basicInfo.isDefault = *item.Main + basicInfo.name = *item.RouteTableName + basicInfo.routeTableId = *item.RouteTableId + basicInfo.vpcId = *item.VpcId + + basicInfo.subnetIds = make([]string, 0, len(item.AssociationSet)) + for _, v := range item.AssociationSet { + basicInfo.subnetIds = append(basicInfo.subnetIds, *v.SubnetId) + } + + basicInfo.entryInfos = make([]VpcRouteEntryBasicInfo, 0, len(item.RouteSet)) + + for _, v := range item.RouteSet { + var entry VpcRouteEntryBasicInfo + entry.destinationCidr = *v.DestinationCidrBlock + entry.nextBub = *v.GatewayId + entry.nextType = *v.GatewayType + entry.description = *v.RouteDescription + entry.routeEntryId = int64(*v.RouteId) + entry.entryType = *v.RouteType + entry.enabled = *v.Enabled + basicInfo.entryInfos = append(basicInfo.entryInfos, entry) + } + if hasTableMap[basicInfo.routeTableId] { + errRet = fmt.Errorf("get repeated route_table_id[%s] when doing DescribeRouteTables", basicInfo.routeTableId) + return + } + hasTableMap[basicInfo.routeTableId] = true + infos = append(infos, basicInfo) + } + goto getMoreData + +} + +func (me *VpcService) CreateRouteTable(ctx context.Context, name, vpcId string, tags map[string]string) (routeTableId string, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateRouteTableRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if vpcId == "" { + errRet = fmt.Errorf("CreateRouteTable can not invoke by empty vpc_id.") + return + } + request.VpcId = &vpcId + request.RouteTableName = &name + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateRouteTable(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + routeTableId = *response.Response.RouteTable.RouteTableId + } + return +} + +func (me *VpcService) DeleteRouteTable(ctx context.Context, routeTableId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteRouteTableRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("DeleteRouteTable can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteRouteTable(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + return +} + +func (me *VpcService) ModifyRouteTableAttribute(ctx context.Context, routeTableId string, name string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyRouteTableAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("ModifyRouteTableAttribute can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + request.RouteTableName = &name + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyRouteTableAttribute(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + return +} + +func (me *VpcService) GetRouteId(ctx context.Context, + routeTableId, destinationCidrBlock, nextType, nextHub, description string) (entryId int64, errRet error) { + + logId := tccommon.GetLogId(ctx) + + info, has, err := me.DescribeRouteTable(ctx, routeTableId) + if err != nil { + errRet = err + return + } + if has == 0 { + errRet = fmt.Errorf("not fonud the route table of this route entry") + return + } + + if has != 1 { + errRet = fmt.Errorf("one routeTableId id get %d routeTableId infos", has) + return + } + + for _, v := range info.entryInfos { + + if v.destinationCidr == destinationCidrBlock && v.nextType == nextType && v.nextBub == nextHub { + entryId = v.routeEntryId + return + } + } + errRet = fmt.Errorf("not found route entry id from route table [%s]", routeTableId) + + for _, v := range info.entryInfos { + log.Printf("%s[WARN] GetRouteId [%+v] vs [%+v],[%+v] vs [%+v],[%+v] vs [%+v] %+v\n", + logId, + v.destinationCidr, + destinationCidrBlock, + v.nextType, + nextType, + v.nextBub, + nextHub, + v.destinationCidr == destinationCidrBlock && v.nextType == nextType && v.nextBub == nextHub) + } + + return + +} + +func (me *VpcService) DeleteRoutes(ctx context.Context, routeTableId string, entryId uint64) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("DeleteRoutes can not invoke by empty routeTableId.") + return + } + + request.RouteTableId = &routeTableId + var route vpc.Route + route.RouteId = &entryId + request.Routes = []*vpc.Route{&route} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteRoutes(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return +} + +func (me *VpcService) CreateRoutes(ctx context.Context, + routeTableId, destinationCidrBlock, nextType, nextHub, description string, enabled bool) (entryId int64, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("CreateRoutes can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + var route vpc.Route + route.DestinationCidrBlock = &destinationCidrBlock + route.RouteDescription = &description + route.GatewayType = &nextType + route.GatewayId = &nextHub + route.Enabled = &enabled + request.Routes = []*vpc.Route{&route} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateRoutes(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } else { + return + } + + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + + if errRet != nil { + time.Sleep(3 * time.Second) + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + } + + if errRet != nil { + time.Sleep(5 * time.Second) + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + } + + /* + if *(response.Response.TotalCount) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTable . but we only request 1.", *response.Response.TotalCount) + return + } + + if len(response.Response.RouteTableSet) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTable info . but we only request 1.", len(response.Response.RouteTableSet)) + return + } + + if len(response.Response.RouteTableSet[0].RouteSet) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTableSet info . but we only create 1.", len(response.Response.RouteTableSet[0].RouteSet)) + return + } + + entryId = int64(*response.Response.RouteTableSet[0].RouteSet[0].RouteId) + */ + + return +} + +func (me *VpcService) SwitchRouteEnabled(ctx context.Context, routeTableId string, routeId uint64, enabled bool) error { + if enabled { + request := vpc.NewEnableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.EnableRoutes(ctx, request) + } else { + request := vpc.NewDisableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.DisableRoutes(ctx, request) + } +} + +func (me *VpcService) EnableRoutes(ctx context.Context, request *vpc.EnableRoutesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().EnableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *VpcService) DisableRoutes(ctx context.Context, request *vpc.DisableRoutesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *VpcService) CreateSecurityGroup(ctx context.Context, name, desc string, projectId *int, tags map[string]string) (id string, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewCreateSecurityGroupRequest() + + request.GroupName = &name + request.GroupDescription = &desc + + if projectId != nil { + request.ProjectId = helper.String(strconv.Itoa(*projectId)) + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().CreateSecurityGroup(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + if response.Response.SecurityGroup == nil || response.Response.SecurityGroup.SecurityGroupId == nil { + err := fmt.Errorf("api[%s] return security group id is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + id = *response.Response.SecurityGroup.SecurityGroupId + return nil + }); err != nil { + log.Printf("[CRITAL]%s create security group failed, reason: %v", logId, err) + return "", err + } + + return +} + +func (me *VpcService) DescribeSecurityGroup(ctx context.Context, id string) (sg *vpc.SecurityGroup, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupsRequest() + request.SecurityGroupIds = []*string{&id} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroups(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err, tccommon.InternalError) + } + + if len(response.Response.SecurityGroupSet) == 0 { + return nil + } + + sg = response.Response.SecurityGroupSet[0] + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read security group failed, reason: %v", logId, err) + return nil, err + } + + return +} + +func (me *VpcService) ModifySecurityGroup(ctx context.Context, id string, newName, newDesc *string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupAttributeRequest() + + request.SecurityGroupId = &id + request.GroupName = newName + request.GroupDescription = newDesc + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifySecurityGroupAttribute(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify security group failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DeleteSecurityGroup(ctx context.Context, id string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupRequest() + request.SecurityGroupId = &id + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().DeleteSecurityGroup(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete security group failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DescribeSecurityGroupsAssociate(ctx context.Context, ids []string) ([]*vpc.SecurityGroupAssociationStatistics, error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupAssociationStatisticsRequest() + request.SecurityGroupIds = common.StringPtrs(ids) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupAssociationStatistics(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil, err + } + + return response.Response.SecurityGroupAssociationStatisticsSet, nil +} + +// Deprecated: the redundant type struct cause cause unnecessary mental burden, use sdk request directly +func (me *VpcService) CreateSecurityGroupPolicy(ctx context.Context, info securityGroupRuleBasicInfoWithPolicyIndex) (ruleId string, err error) { + logId := tccommon.GetLogId(ctx) + + createRequest := vpc.NewCreateSecurityGroupPoliciesRequest() + createRequest.SecurityGroupId = &info.SgId + + createRequest.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + + policy.CidrBlock = info.CidrIp + policy.SecurityGroupId = info.SourceSgId + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + policy.AddressTemplate.AddressId = info.AddressTemplateId + } + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + policy.AddressTemplate.AddressGroupId = info.AddressTemplateGroupId + } + + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + policy.ServiceTemplate.ServiceId = info.ProtocolTemplateId + } + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + policy.ServiceTemplate.ServiceGroupId = info.ProtocolTemplateGroupId + } + + if info.Protocol != nil { + policy.Protocol = common.StringPtr(strings.ToUpper(*info.Protocol)) + } + policy.PolicyIndex = helper.Int64(info.PolicyIndex) + policy.Port = info.PortRange + policy.PolicyDescription = info.Description + policy.Action = common.StringPtr(strings.ToUpper(info.Action)) + + switch strings.ToLower(info.PolicyType) { + case "ingress": + createRequest.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + createRequest.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(createRequest.GetAction()) + if _, err := me.client.UseVpcClient().CreateSecurityGroupPolicies(createRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, createRequest.GetAction(), createRequest.ToJsonString(), err) + return "", err + } + + if info.CidrIp == nil { + info.CidrIp = common.StringPtr("") + } + if info.Protocol == nil { + info.Protocol = common.StringPtr("ALL") + } + if info.PortRange == nil { + info.PortRange = common.StringPtr("ALL") + } + if info.SourceSgId == nil { + info.SourceSgId = common.StringPtr("") + } + + ruleId, err = buildSecurityGroupRuleId(info.securityGroupRuleBasicInfo) + if err != nil { + return "", fmt.Errorf("build rule id error, reason: %v", err) + } + + return ruleId, nil +} + +func (me *VpcService) CreateSecurityGroupPolicies(ctx context.Context, request *vpc.CreateSecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +// Deprecated: use DescribeSecurityGroupPolicies instead +func (me *VpcService) DescribeSecurityGroupPolicy(ctx context.Context, ruleId string) (sgId string, policyType string, policy *vpc.SecurityGroupPolicy, errRet error) { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + errRet = err + return + } + + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + request.SecurityGroupId = &info.SgId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + // if security group does not exist, security group rule does not exist too + if sdkError.Code == "ResourceNotFound" { + return + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + policySet := response.Response.SecurityGroupPolicySet + + if policySet == nil { + log.Printf("[DEBUG]%s policy set is nil", logId) + return + } + + var policies []*vpc.SecurityGroupPolicy + + switch strings.ToLower(info.PolicyType) { + case "ingress": + policies = policySet.Ingress + + case "egress": + policies = policySet.Egress + } + + for _, pl := range policies { + if comparePolicyAndSecurityGroupInfo(pl, info) { + policy = pl + break + } + } + + if policy == nil { + log.Printf("[DEBUG]%s can't find security group rule, maybe user modify rules on web console", logId) + return + } + + return info.SgId, info.PolicyType, policy, nil +} + +func (me *VpcService) DescribeSecurityGroupPolicies(ctx context.Context, sgId string) (result *vpc.SecurityGroupPolicySet, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SecurityGroupId = &sgId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + result = response.Response.SecurityGroupPolicySet + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteSecurityGroupPolicy(ctx context.Context, ruleId string) error { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + return err + } + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = &info.SgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + policy.Action = common.StringPtr(strings.ToUpper(info.Action)) + + if *info.CidrIp != "" { + policy.CidrBlock = info.CidrIp + } + + if *info.Protocol != "ALL" { + policy.Protocol = common.StringPtr(strings.ToUpper(*info.Protocol)) + } + + if *info.PortRange != "ALL" { + policy.Port = info.PortRange + } + + if *info.SourceSgId != "" { + policy.SecurityGroupId = info.SourceSgId + } + + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + policy.AddressTemplate.AddressGroupId = info.AddressTemplateGroupId + } + + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + policy.AddressTemplate.AddressId = info.AddressTemplateId + } + + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + policy.ServiceTemplate.ServiceGroupId = info.ProtocolTemplateGroupId + } + + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + policy.ServiceTemplate.ServiceId = info.ProtocolTemplateId + } + + if info.Description != nil && *info.Description != "" { + policy.PolicyDescription = info.Description + } + + switch strings.ToLower(info.PolicyType) { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + + return nil +} + +func (me *VpcService) DeleteSecurityGroupPolicies(ctx context.Context, request *vpc.DeleteSecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteSecurityGroupPolicyByPolicyIndex(ctx context.Context, policyIndex int64, sgId, policyType string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = helper.String(sgId) + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + policy.PolicyIndex = helper.Int64(policyIndex) + switch strings.ToLower(policyType) { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + return nil + +} + +func (me *VpcService) DeleteSecurityGroupPolicyByPolicyIndexList(ctx context.Context, sgId string, policyIndexList []*int64, policyType string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = helper.String(sgId) + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + tmpList := make([]*vpc.SecurityGroupPolicy, 0) + for _, v := range policyIndexList { + policy := new(vpc.SecurityGroupPolicy) + policy.PolicyIndex = v + tmpList = append(tmpList, policy) + } + + switch strings.ToLower(policyType) { + + case "ingress": + request.SecurityGroupPolicySet.Ingress = tmpList + + case "egress": + request.SecurityGroupPolicySet.Egress = tmpList + } + + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + return nil + +} + +// Deprecated: Use ModifySecurityGroupPolicies instead +func (me *VpcService) ModifySecurityGroupPolicy(ctx context.Context, ruleId string, desc *string) error { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + return err + } + + request := vpc.NewReplaceSecurityGroupPolicyRequest() + request.SecurityGroupId = &info.SgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := &vpc.SecurityGroupPolicy{ + Action: &info.Action, + CidrBlock: info.CidrIp, + Protocol: info.Protocol, + Port: info.PortRange, + SecurityGroupId: info.SourceSgId, + PolicyDescription: desc, + } + + switch info.PolicyType { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().ReplaceSecurityGroupPolicy(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + + return nil +} + +func (me *VpcService) ModifySecurityGroupPolicies(ctx context.Context, request *vpc.ModifySecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeSecurityGroups(ctx context.Context, sgId, sgName *string, projectId *int, tags map[string]string) (sgs []*vpc.SecurityGroup, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupsRequest() + + if sgId != nil { + request.SecurityGroupIds = []*string{sgId} + } else { + if sgName != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("security-group-name"), + Values: []*string{sgName}, + }) + } + + if projectId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("project-id"), + Values: []*string{helper.String(strconv.Itoa(*projectId))}, + }) + } + + for k, v := range tags { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("tag:" + k), + Values: []*string{helper.String(v)}, + }) + } + } + + request.Limit = helper.String(strconv.Itoa(DESCRIBE_SECURITY_GROUP_LIMIT)) + + offset := 0 + count := DESCRIBE_SECURITY_GROUP_LIMIT + // run loop at least once + for count == DESCRIBE_SECURITY_GROUP_LIMIT { + request.Offset = helper.String(strconv.Itoa(offset)) + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroups(request) + if err != nil { + count = 0 + + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err, tccommon.InternalError) + } + + set := response.Response.SecurityGroupSet + count = len(set) + sgs = append(sgs, set...) + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read security groups failed, reason: %v", logId, err) + return nil, err + } + + offset += count + } + + return +} + +func (me *VpcService) modifyLiteRulesInSecurityGroup(ctx context.Context, sgId string, ingress, egress []VpcSecurityGroupLiteRule) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + request.SecurityGroupPolicySet.Egress = getSecurityGroupPolicies(egress) + request.SecurityGroupPolicySet.Ingress = getSecurityGroupPolicies(ingress) + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }) +} + +func (me *VpcService) DeleteLiteRules(ctx context.Context, sgId string, rules []VpcSecurityGroupLiteRule, isIngress bool) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + if isIngress { + request.SecurityGroupPolicySet.Ingress = getSecurityGroupPolicies(rules) + } else { + request.SecurityGroupPolicySet.Egress = getSecurityGroupPolicies(rules) + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + + return tccommon.RetryError(err) + } + + return nil + }) +} + +func (me *VpcService) AttachLiteRulesToSecurityGroup(ctx context.Context, sgId string, ingress, egress []VpcSecurityGroupLiteRule) error { + logId := tccommon.GetLogId(ctx) + + if err := me.modifyLiteRulesInSecurityGroup(ctx, sgId, ingress, egress); err != nil { + log.Printf("[CRITAL]%s attach lite rules to security group failed, reason: %v", logId, err) + + return err + } + + return nil +} + +func (me *VpcService) DescribeSecurityGroupPolices(ctx context.Context, sgId string) (ingress, egress []VpcSecurityGroupLiteRule, exist bool, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + policySet := response.Response.SecurityGroupPolicySet + + for _, in := range policySet.Ingress { + if nilFields := tccommon.CheckNil(in, map[string]string{ + "Action": "action", + "SecurityGroupId": "nested security group id", + }); len(nilFields) > 0 { + err := fmt.Errorf("api[%s] security group ingress %v are nil", request.GetAction(), nilFields) + log.Printf("[CRITAL]%s %v", logId, err) + } + + liteRule := VpcSecurityGroupLiteRule{ + //protocol: strings.ToUpper(*in.Protocol), + //port: *in.Port, + cidrIp: *in.CidrBlock, + action: *in.Action, + securityGroupId: *in.SecurityGroupId, + } + + if in.Protocol != nil { + liteRule.protocol = strings.ToUpper(*in.Protocol) + } + + if in.Port != nil { + liteRule.port = *in.Port + } + + if in.AddressTemplate != nil { + liteRule.addressId = *in.AddressTemplate.AddressId + liteRule.addressGroupId = *in.AddressTemplate.AddressGroupId + } + + if in.ServiceTemplate != nil { + liteRule.protocolTemplateId = *in.ServiceTemplate.ServiceId + liteRule.protocolTemplateGroupId = *in.ServiceTemplate.ServiceGroupId + } + + ingress = append(ingress, liteRule) + } + + for _, eg := range policySet.Egress { + if nilFields := tccommon.CheckNil(eg, map[string]string{ + "Action": "action", + "SecurityGroupId": "nested security group id", + }); len(nilFields) > 0 { + err := fmt.Errorf("api[%s] security group egress %v are nil", request.GetAction(), nilFields) + log.Printf("[CRITAL]%s %v", logId, err) + } + + liteRule := VpcSecurityGroupLiteRule{ + action: *eg.Action, + cidrIp: *eg.CidrBlock, + securityGroupId: *eg.SecurityGroupId, + } + + if eg.Port != nil { + liteRule.port = *eg.Port + } + + if eg.Protocol != nil { + liteRule.protocol = strings.ToUpper(*eg.Protocol) + } + + if eg.AddressTemplate != nil { + liteRule.addressId = *eg.AddressTemplate.AddressId + liteRule.addressGroupId = *eg.AddressTemplate.AddressGroupId + } + + if eg.ServiceTemplate != nil { + liteRule.protocolTemplateId = *eg.ServiceTemplate.ServiceId + liteRule.protocolTemplateGroupId = *eg.ServiceTemplate.ServiceGroupId + } + + egress = append(egress, liteRule) + } + + exist = true + + return nil + }); err != nil { + log.Printf("[CRITAL]%s describe security group policies failed, rason: %v", logId, err) + return nil, nil, false, err + } + + return +} + +func (me *VpcService) DetachAllLiteRulesFromSecurityGroup(ctx context.Context, sgId string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = &vpc.SecurityGroupPolicySet{ + Version: helper.String("0"), + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }) +} + +type securityGroupRuleBasicInfo struct { + SgId string `json:"sg_id"` + PolicyType string `json:"policy_type"` + CidrIp *string `json:"cidr_ip,omitempty"` + Protocol *string `json:"protocol"` + PortRange *string `json:"port_range"` + Action string `json:"action"` + SourceSgId *string `json:"source_sg_id"` + Description *string `json:"description,omitempty"` + AddressTemplateId *string `json:"address_template_id,omitempty"` + AddressTemplateGroupId *string `json:"address_template_group_id,omitempty"` + ProtocolTemplateId *string `json:"protocol_template_id,omitempty"` + ProtocolTemplateGroupId *string `json:"protocol_template_group_id,omitempty"` +} + +type securityGroupRuleBasicInfoWithPolicyIndex struct { + securityGroupRuleBasicInfo + PolicyIndex int64 `json:"policy_index"` +} + +// Build an ID for a Security Group Rule (new version) +func buildSecurityGroupRuleId(info securityGroupRuleBasicInfo) (ruleId string, err error) { + b, err := json.Marshal(info) + if err != nil { + return "", err + } + + log.Printf("[DEBUG] build rule is %s", string(b)) + + return base64.StdEncoding.EncodeToString(b), nil +} + +// Parse Security Group Rule ID +func parseSecurityGroupRuleId(ruleId string) (info securityGroupRuleBasicInfo, errRet error) { + log.Printf("[DEBUG] parseSecurityGroupRuleId before: %v", ruleId) + + // new version ID + if b, err := base64.StdEncoding.DecodeString(ruleId); err == nil { + errRet = json.Unmarshal(b, &info) + return + } + + // old version ID + m := make(map[string]string) + ruleQueryStrings := strings.Split(ruleId, "&") + if len(ruleQueryStrings) == 0 { + errRet = errors.New("ruleId is invalid") + return + } + for _, str := range ruleQueryStrings { + arr := strings.Split(str, "=") + if len(arr) != 2 { + errRet = errors.New("ruleId is invalid") + return + } + m[arr[0]] = arr[1] + } + + info.SgId = m["sgId"] + info.PolicyType = m["direction"] + info.Action = m["action"] + + // the newest version include template + addressTemplateId, addressTemplateOk := m["address_template_id"] + addressGroupTemplateId, addressTemplateGroupOk := m["address_template_group_id"] + if addressTemplateOk || addressTemplateGroupOk { + if addressTemplateGroupOk { + info.AddressTemplateGroupId = common.StringPtr(addressGroupTemplateId) + } else { + info.AddressTemplateId = common.StringPtr(addressTemplateId) + } + info.CidrIp = common.StringPtr("") + info.SourceSgId = common.StringPtr("") + } else { + if m["sourceSgid"] == "" { + info.CidrIp = common.StringPtr(m["cidrIp"]) + } else { + info.CidrIp = common.StringPtr("") + } + info.SourceSgId = common.StringPtr(m["sourceSgid"]) + } + + protocolTemplateId, protocolTemplateOk := m["protocol_template_id"] + protocolGroupTemplateId, protocolTemplateGroupOk := m["protocol_template_group_id"] + if protocolTemplateOk || protocolTemplateGroupOk { + if protocolTemplateGroupOk { + info.ProtocolTemplateGroupId = common.StringPtr(protocolGroupTemplateId) + } else { + info.ProtocolTemplateId = common.StringPtr(protocolTemplateId) + } + info.Protocol = common.StringPtr("") + info.PortRange = common.StringPtr("") + } else { + info.Protocol = common.StringPtr(m["ipProtocol"]) + info.PortRange = common.StringPtr(m["portRange"]) + } + + info.Description = common.StringPtr(m["description"]) + + log.Printf("[DEBUG] parseSecurityGroupRuleId after: %v", info) + return +} + +func comparePolicyAndSecurityGroupInfo(policy *vpc.SecurityGroupPolicy, info securityGroupRuleBasicInfo) bool { + if policy.PolicyDescription != nil && *policy.PolicyDescription != "" { + if info.Description == nil || *policy.PolicyDescription != *info.Description { + return false + } + } else { + if info.Description != nil && *info.Description != "" { + return false + } + } + // policy.CidrBlock will be nil if address template is set + if policy.CidrBlock != nil && *policy.CidrBlock != "" { + if info.CidrIp == nil || *policy.CidrBlock != *info.CidrIp { + return false + } + } else { + if info.CidrIp != nil && *info.CidrIp != "" { + return false + } + } + + // policy.Port will be nil if protocol template is set + if policy.Port != nil && *policy.Port != "" { + if info.PortRange == nil || *policy.Port != *info.PortRange { + return false + } + } else { + if info.PortRange != nil && *info.PortRange != "" && *info.PortRange != "ALL" { + return false + } + } + + // policy.Protocol will be nil if protocol template is set + if policy.Protocol != nil && *policy.Protocol != "" { + if info.Protocol == nil || !strings.EqualFold(*policy.Protocol, *info.Protocol) { + return false + } + } else { + if info.Protocol != nil && *info.Protocol != "" && *info.Protocol != "ALL" { + return false + } + } + + // policy.SecurityGroupId always not nil + if *policy.SecurityGroupId != *info.SourceSgId { + return false + } + + if !strings.EqualFold(*policy.Action, info.Action) { + return false + } + + // if template is not null it must be compared + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + if policy.ServiceTemplate == nil || policy.ServiceTemplate.ServiceId == nil || *info.ProtocolTemplateId != *policy.ServiceTemplate.ServiceId { + log.Printf("%s %v test", *info.ProtocolTemplateId, policy.ServiceTemplate) + return false + } + } else { + if policy.ServiceTemplate != nil && policy.ServiceTemplate.ServiceId != nil && *policy.ServiceTemplate.ServiceId != "" { + return false + } + } + + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + if policy.ServiceTemplate == nil || policy.ServiceTemplate.ServiceGroupId == nil || *info.ProtocolTemplateGroupId != *policy.ServiceTemplate.ServiceGroupId { + log.Printf("%s %v test", *info.ProtocolTemplateGroupId, policy.ServiceTemplate) + return false + } + } else { + if policy.ServiceTemplate != nil && policy.ServiceTemplate.ServiceGroupId != nil && *policy.ServiceTemplate.ServiceGroupId != "" { + return false + } + } + + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + if policy.AddressTemplate == nil || policy.AddressTemplate.AddressGroupId == nil || *info.AddressTemplateGroupId != *policy.AddressTemplate.AddressGroupId { + return false + } + } else { + if policy.AddressTemplate != nil && policy.AddressTemplate.AddressGroupId != nil && *policy.AddressTemplate.AddressGroupId != "" { + return false + } + } + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + if policy.AddressTemplate == nil || policy.AddressTemplate.AddressId == nil || *info.AddressTemplateId != *policy.AddressTemplate.AddressId { + return false + } + } else { + if policy.AddressTemplate != nil && policy.AddressTemplate.AddressId != nil && *policy.AddressTemplate.AddressId != "" { + return false + } + } + + return true +} + +func parseRule(str string) (liteRule VpcSecurityGroupLiteRule, err error) { + split := strings.Split(str, "#") + if len(split) != 4 { + err = fmt.Errorf("invalid security group rule %s", str) + return + } + + var ( + source string + port string + protocol string + // source is "sg-xxxxxx" / "ipm-xxxxxx" / "ipmg-xxxxxx" formatted + isInstanceIdSource = true + ) + + liteRule.action, source, port, protocol = split[0], split[1], split[2], split[3] + + if securityGroupIdRE.MatchString(source) { + liteRule.securityGroupId = source + } else if ipAddressIdRE.MatchString(source) { + liteRule.addressId = source + } else if ipAddressGroupIdRE.MatchString(source) { + liteRule.addressGroupId = source + } else { + isInstanceIdSource = false + liteRule.cidrIp = source + } + + if v := liteRule.action; v != "ACCEPT" && v != "DROP" { + err = fmt.Errorf("invalid action `%s`, available actions: `ACCEPT`, `DROP`", v) + return + } + + if net.ParseIP(liteRule.cidrIp) == nil && !isInstanceIdSource { + if _, _, err = net.ParseCIDR(liteRule.cidrIp); err != nil { + err = fmt.Errorf("invalid cidr_ip %s, allow cidr_ip format is `8.8.8.8` or `10.0.1.0/24`", liteRule.cidrIp) + return + } + } + + liteRule.port = port + if port != "ALL" && !portRE.MatchString(port) && !protocolTemplateRE.MatchString(protocol) { + err = fmt.Errorf("invalid port %s, allow port format is `ALL`, `53`, `80,443` or `80-90`", liteRule.port) + return + } + + liteRule.protocol = protocol + if protocolTemplateRE.MatchString(protocol) { + liteRule.port = "" + liteRule.protocol = "" + if protocolTemplateIdRE.MatchString(protocol) { + liteRule.protocolTemplateId = protocol + } else if protocolTemplateGroupIdRE.MatchString(protocol) { + liteRule.protocolTemplateGroupId = protocol + } + } else if protocol != "TCP" && protocol != "UDP" && protocol != "ALL" && protocol != "ICMP" { + err = fmt.Errorf("invalid protocol %s, allow protocol is `ALL`, `TCP`, `UDP`, `ICMP` or `ppm(g?)-xxxxxxxx`", liteRule.protocol) + } else if protocol == "ALL" || protocol == "ICMP" { + if liteRule.port != "ALL" { + err = fmt.Errorf("when protocol is %s, port must be ALL", protocol) + } else { + liteRule.port = "" + } + } + + if err != nil { + return + } + + return +} + +/* +EIP +*/ +func (me *VpcService) DescribeEipById(ctx context.Context, eipId string) (eip *vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressesRequest() + request.AddressIds = []*string{&eipId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AddressSet) < 1 { + return + } + eip = response.Response.AddressSet[0] + return +} + +func (me *VpcService) DescribeEipByFilter(ctx context.Context, filters map[string][]string) (eips []*vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressesRequest() + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := &vpc.Filter{ + Name: helper.String(k), + Values: []*string{}, + } + for _, vv := range v { + filter.Values = append(filter.Values, helper.String(vv)) + } + request.Filters = append(request.Filters, filter) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + eips = response.Response.AddressSet + return +} + +func (me *VpcService) ModifyEipName(ctx context.Context, eipId, eipName string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressAttributeRequest() + request.AddressId = &eipId + request.AddressName = &eipName + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressAttribute(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) ModifyEipBandwidthOut(ctx context.Context, eipId string, bandwidthOut int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressesBandwidthRequest() + request.AddressIds = []*string{&eipId} + request.InternetMaxBandwidthOut = helper.IntInt64(bandwidthOut) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressesBandwidth(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) ModifyEipInternetChargeType(ctx context.Context, eipId string, internetChargeType string, bandwidthOut, period, renewFlag int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressInternetChargeTypeRequest() + request.AddressId = &eipId + request.InternetChargeType = &internetChargeType + request.InternetMaxBandwidthOut = helper.IntUint64(bandwidthOut) + + if internetChargeType == "BANDWIDTH_PREPAID_BY_MONTH" { + addressChargePrepaid := vpc.AddressChargePrepaid{} + addressChargePrepaid.AutoRenewFlag = helper.IntInt64(renewFlag) + addressChargePrepaid.Period = helper.IntInt64(period) + request.AddressChargePrepaid = &addressChargePrepaid + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressInternetChargeType(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) RenewAddress(ctx context.Context, eipId string, period int, renewFlag int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewRenewAddressesRequest() + request.AddressIds = []*string{&eipId} + addressChargePrepaid := vpc.AddressChargePrepaid{} + addressChargePrepaid.AutoRenewFlag = helper.IntInt64(renewFlag) + addressChargePrepaid.Period = helper.IntInt64(period) + request.AddressChargePrepaid = &addressChargePrepaid + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().RenewAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) DeleteEip(ctx context.Context, eipId string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewReleaseAddressesRequest() + request.AddressIds = []*string{&eipId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ReleaseAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) AttachEip(ctx context.Context, eipId, instanceId string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewAssociateAddressRequest() + request.AddressId = &eipId + request.InstanceId = &instanceId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().AssociateAddress(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) DescribeNatGatewayById(ctx context.Context, natGateWayId string) (natGateWay *vpc.NatGateway, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeNatGatewaysRequest() + request.NatGatewayIds = []*string{&natGateWayId} + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeNatGateways(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NatGatewaySet) > 0 { + natGateWay = response.Response.NatGatewaySet[0] + } + + return +} + +func (me *VpcService) DescribeNatGatewayByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.NatGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNatGatewaysRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.NatGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeNatGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NatGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.NatGatewaySet...) + if len(response.Response.NatGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteNatGateway(ctx context.Context, natGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteNatGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteNatGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DisassociateNatGatewayAddress(ctx context.Context, request *vpc.DisassociateNatGatewayAddressRequest) (result *vpc.DisassociateNatGatewayAddressResponse, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + // Check if Nat Gateway Ip still associate + gateway, err := me.DescribeNatGatewayById(ctx, *request.NatGatewayId) + + if err != nil { + errRet = err + return + } + + if gateway == nil || len(gateway.PublicIpAddressSet) == 0 { + return + } + + var gatewayAddresses []string + var candidates []*string + + for i := range gateway.PublicIpAddressSet { + addr := gateway.PublicIpAddressSet[i].PublicIpAddress + gatewayAddresses = append(gatewayAddresses, *addr) + } + + for i := range request.PublicIpAddresses { + addr := request.PublicIpAddresses[i] + if helper.StringsContain(gatewayAddresses, *addr) { + candidates = append(candidates, addr) + } + } + + if len(candidates) == 0 { + return nil, nil + } + + request.PublicIpAddresses = candidates + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisassociateNatGatewayAddress(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + result = response + return +} + +func (me *VpcService) UnattachEip(ctx context.Context, eipId string) error { + eipUnattachLocker.Lock() + defer eipUnattachLocker.Unlock() + + logId := tccommon.GetLogId(ctx) + eip, err := me.DescribeEipById(ctx, eipId) + if err != nil { + return err + } + if eip == nil || *eip.AddressStatus == EIP_STATUS_UNBIND { + return nil + } + + // DisassociateAddress Doesn't support Disassociate NAT Address + if eip.InstanceId != nil && strings.HasPrefix(*eip.InstanceId, "nat-") { + request := vpc.NewDisassociateNatGatewayAddressRequest() + request.NatGatewayId = eip.InstanceId + request.PublicIpAddresses = []*string{eip.AddressIp} + _, err := me.DisassociateNatGatewayAddress(ctx, request) + if err != nil { + return err + } + + outErr := resource.Retry(tccommon.ReadRetryTimeout*3, func() *resource.RetryError { + eip, err := me.DescribeEipById(ctx, eipId) + if err != nil { + return tccommon.RetryError(err) + } + if eip != nil && *eip.AddressStatus != EIP_STATUS_UNBIND { + return resource.RetryableError(fmt.Errorf("eip is still %s", EIP_STATUS_UNBIND)) + } + return nil + }) + + if outErr != nil { + return outErr + } + } + + request := vpc.NewDisassociateAddressRequest() + request.AddressId = &eipId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisassociateAddress(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + if response.Response.TaskId == nil { + return nil + } + taskId, err := strconv.ParseUint(*response.Response.TaskId, 10, 64) + if err != nil { + return nil + } + + taskRequest := vpc.NewDescribeTaskResultRequest() + taskRequest.TaskId = &taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(taskRequest.GetAction()) + taskResponse, err := me.client.UseVpcClient().DescribeTaskResult(taskRequest) + if err != nil { + return tccommon.RetryError(err) + } + if taskResponse.Response.Result != nil && *taskResponse.Response.Result == EIP_TASK_STATUS_RUNNING { + return resource.RetryableError(errors.New("eip task is running")) + } + return nil + }) + if err != nil { + return err + } + + return nil +} + +func (me *VpcService) CreateEni( + ctx context.Context, + name, vpcId, subnetId, desc string, + securityGroups []string, + ipv4Count *int, + ipv4s []VpcEniIP, + tags map[string]string, +) (id string, err error) { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + createRequest := vpc.NewCreateNetworkInterfaceRequest() + createRequest.NetworkInterfaceName = &name + createRequest.VpcId = &vpcId + createRequest.SubnetId = &subnetId + createRequest.NetworkInterfaceDescription = &desc + + if len(securityGroups) > 0 { + createRequest.SecurityGroupIds = common.StringPtrs(securityGroups) + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + createRequest.Tags = append(createRequest.Tags, &tag) + } + } + + if ipv4Count != nil { + // create will assign a primary ip, secondary ip count is *ipv4Count-1 + createRequest.SecondaryPrivateIpAddressCount = helper.IntUint64(*ipv4Count - 1) + } + + var wantIpv4 []string + + for _, ipv4 := range ipv4s { + wantIpv4 = append(wantIpv4, ipv4.ip.String()) + createRequest.PrivateIpAddresses = append(createRequest.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4.ip.String()), + Primary: helper.Bool(ipv4.primary), + Description: ipv4.desc, + }) + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(createRequest.GetAction()) + + response, err := client.CreateNetworkInterface(createRequest) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, createRequest.GetAction(), createRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + eni := response.Response.NetworkInterface + + if eni == nil { + err := fmt.Errorf("api[%s] eni is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + ipv4Set := eni.PrivateIpAddressSet + + if len(wantIpv4) > 0 { + checkMap := make(map[string]bool, len(wantIpv4)) + for _, ipv4 := range wantIpv4 { + checkMap[ipv4] = false + } + + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + checkMap[*ipv4.PrivateIpAddress] = true + } + + for ipv4, checked := range checkMap { + if !checked { + err := fmt.Errorf("api[%s] doesn't assign %s ip", createRequest.GetAction(), ipv4) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + } + } else { + if len(ipv4Set) != *ipv4Count { + err := fmt.Errorf("api[%s] doesn't assign enough ip", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = make([]string, 0, *ipv4Count) + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = append(wantIpv4, *ipv4.PrivateIpAddress) + } + } + + id = *eni.NetworkInterfaceId + + return nil + }); err != nil { + log.Printf("[CRITAL]%s create eni failed, reason: %v", logId, err) + return "", err + } + + if err := waitEniReady(ctx, id, client, wantIpv4, nil); err != nil { + log.Printf("[CRITAL]%s create eni failed, reason: %v", logId, err) + return "", err + } + + return +} + +func (me *VpcService) describeEnis( + ctx context.Context, + ids []string, + vpcId, subnetId, id, cvmId, sgId, name, desc, ipv4 *string, + tags map[string]string, +) (enis []*vpc.NetworkInterface, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkInterfacesRequest() + + if len(ids) > 0 { + request.NetworkInterfaceIds = common.StringPtrs(ids) + } + + if vpcId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("vpc-id"), + Values: []*string{vpcId}, + }) + } + + if subnetId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("subnet-id"), + Values: []*string{subnetId}, + }) + } + + if id != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-id"), + Values: []*string{id}, + }) + } + + if cvmId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("attachment.instance-id"), + Values: []*string{cvmId}, + }) + } + + if sgId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("groups.security-group-id"), + Values: []*string{sgId}, + }) + } + + if name != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-name"), + Values: []*string{name}, + }) + } + + if desc != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-description"), + Values: []*string{desc}, + }) + } + + if ipv4 != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("address-ip"), + Values: []*string{ipv4}, + }) + } + + for k, v := range tags { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("tag:" + k), + Values: []*string{helper.String(v)}, + }) + } + + var offset uint64 + request.Offset = &offset + request.Limit = helper.IntUint64(ENI_DESCRIBE_LIMIT) + + count := ENI_DESCRIBE_LIMIT + for count == ENI_DESCRIBE_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkInterfaces(request) + if err != nil { + count = 0 + + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + eniSet := response.Response.NetworkInterfaceSet + count = len(eniSet) + enis = append(enis, eniSet...) + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read eni list failed, reason: %v", logId, err) + return nil, err + } + + offset += uint64(count) + } + + return +} + +func (me *VpcService) DescribeEniById(ctx context.Context, ids []string) (enis []*vpc.NetworkInterface, err error) { + return me.describeEnis(ctx, ids, nil, nil, nil, nil, nil, nil, nil, nil, nil) +} + +func (me *VpcService) ModifyEniAttribute(ctx context.Context, id string, name, desc *string, sgs []string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewModifyNetworkInterfaceAttributeRequest() + request.NetworkInterfaceId = &id + request.NetworkInterfaceName = name + request.NetworkInterfaceDescription = desc + request.SecurityGroupIds = common.StringPtrs(sgs) + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.ModifyNetworkInterfaceAttribute(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify eni attribute failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, nil, nil); err != nil { + log.Printf("[CRITAL]%s modify eni attribute failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) UnAssignIpv4FromEni(ctx context.Context, id string, ipv4s []string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewUnassignPrivateIpAddressesRequest() + request.NetworkInterfaceId = &id + request.PrivateIpAddresses = make([]*vpc.PrivateIpAddressSpecification, 0, len(ipv4s)) + for _, ipv4 := range ipv4s { + request.PrivateIpAddresses = append(request.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4), + }) + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.UnassignPrivateIpAddresses(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s unassign ipv4 from eni failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, nil, ipv4s); err != nil { + log.Printf("[CRITAL]%s unassign ipv4 from eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) AssignIpv4ToEni(ctx context.Context, id string, ipv4s []VpcEniIP, ipv4Count *int) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewAssignPrivateIpAddressesRequest() + request.NetworkInterfaceId = &id + + if ipv4Count != nil { + request.SecondaryPrivateIpAddressCount = helper.IntUint64(*ipv4Count) + } + + var wantIpv4 []string + + if len(ipv4s) > 0 { + request.PrivateIpAddresses = make([]*vpc.PrivateIpAddressSpecification, 0, len(ipv4s)) + wantIpv4 = make([]string, 0, len(ipv4s)) + + for _, ipv4 := range ipv4s { + wantIpv4 = append(wantIpv4, ipv4.ip.String()) + request.PrivateIpAddresses = append(request.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4.ip.String()), + Primary: helper.Bool(ipv4.primary), + Description: ipv4.desc, + }) + } + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.AssignPrivateIpAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + ipv4Set := response.Response.PrivateIpAddressSet + + if len(wantIpv4) > 0 { + checkMap := make(map[string]bool, len(wantIpv4)) + for _, ipv4 := range wantIpv4 { + checkMap[ipv4] = false + } + + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + checkMap[*ipv4.PrivateIpAddress] = true + } + + for ipv4, checked := range checkMap { + if !checked { + err := fmt.Errorf("api[%s] doesn't assign %s ip", request.GetAction(), ipv4) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + } + } else { + if len(ipv4Set) != *ipv4Count { + err := fmt.Errorf("api[%s] doesn't assign enough ip", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = make([]string, 0, *ipv4Count) + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = append(wantIpv4, *ipv4.PrivateIpAddress) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s assign ipv4 to eni failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, wantIpv4, nil); err != nil { + log.Printf("[CRITAL]%s assign ipv4 to eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DeleteEni(ctx context.Context, id string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + deleteRequest := vpc.NewDeleteNetworkInterfaceRequest() + deleteRequest.NetworkInterfaceId = &id + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(deleteRequest.GetAction()) + + if _, err := client.DeleteNetworkInterface(deleteRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete eni failed, reason: %v", logId, err) + return err + } + + describeRequest := vpc.NewDescribeNetworkInterfacesRequest() + describeRequest.NetworkInterfaceIds = []*string{&id} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(describeRequest.GetAction()) + + response, err := client.DescribeNetworkInterfaces(describeRequest) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + for _, eni := range response.Response.NetworkInterfaceSet { + if eni.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.NetworkInterfaceId == id { + err := errors.New("eni still exists") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) AttachEniToCvm(ctx context.Context, eniId, cvmId string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + attachRequest := vpc.NewAttachNetworkInterfaceRequest() + attachRequest.NetworkInterfaceId = &eniId + attachRequest.InstanceId = &cvmId + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(attachRequest.GetAction()) + + if _, err := client.AttachNetworkInterface(attachRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, attachRequest.GetAction(), attachRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s attach eni to instance failed, reason: %v", logId, err) + return err + } + + describeRequest := vpc.NewDescribeNetworkInterfacesRequest() + describeRequest.NetworkInterfaceIds = []*string{&eniId} + + if err := resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(describeRequest.GetAction()) + + response, err := client.DescribeNetworkInterfaces(describeRequest) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + var eni *vpc.NetworkInterface + for _, e := range response.Response.NetworkInterfaceSet { + if e.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *e.NetworkInterfaceId == eniId { + eni = e + break + } + } + + if eni == nil { + err := fmt.Errorf("api[%s] eni not found", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.Attachment == nil { + err := fmt.Errorf("api[%s] eni attachment is not ready", describeRequest.GetAction()) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + if eni.Attachment.InstanceId == nil { + err := fmt.Errorf("api[%s] eni attach instance id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.Attachment.InstanceId != cvmId { + err := fmt.Errorf("api[%s] eni attach instance id is not right", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.State == nil { + err := fmt.Errorf("api[%s] eni state is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.State != ENI_STATE_AVAILABLE { + err := errors.New("eni is not ready") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s attach eni to instance failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DetachEniFromCvm(ctx context.Context, eniId, cvmId string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewDetachNetworkInterfaceRequest() + request.NetworkInterfaceId = &eniId + request.InstanceId = &cvmId + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.DetachNetworkInterface(request); err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + switch sdkError.Code { + case "UnsupportedOperation.InvalidState": + return resource.RetryableError(errors.New("cvm may still bind eni")) + + case "ResourceNotFound": + // eni or cvm doesn't exist + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s detach eni from instance failed, reason: %v", logId, err) + return err + } + + if err := waitEniDetach(ctx, eniId, client); err != nil { + log.Printf("[CRITAL]%s detach eni from instance failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) ModifyEniPrimaryIpv4Desc(ctx context.Context, id, ip string, desc *string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewModifyPrivateIpAddressesAttributeRequest() + request.NetworkInterfaceId = &id + request.PrivateIpAddresses = []*vpc.PrivateIpAddressSpecification{ + { + PrivateIpAddress: &ip, + Description: desc, + }, + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.ModifyPrivateIpAddressesAttribute(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify eni primary ipv4 description failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, []string{ip}, nil); err != nil { + log.Printf("[CRITAL]%s modify eni primary ipv4 description failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DescribeEniByFilters( + ctx context.Context, + vpcId, subnetId, cvmId, sgId, name, desc, ipv4 *string, + tags map[string]string, +) (enis []*vpc.NetworkInterface, err error) { + return me.describeEnis(ctx, nil, vpcId, subnetId, nil, cvmId, sgId, name, desc, ipv4, tags) +} + +func (me *VpcService) DescribeHaVipByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.HaVip, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeHaVipsRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.HaVip, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeHaVips(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.HaVipSet) < 1 { + break + } + instances = append(instances, response.Response.HaVipSet...) + if len(response.Response.HaVipSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DescribeHaVipEipById(ctx context.Context, haVipEipAttachmentId string) (eip string, haVip string, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + items := strings.Split(haVipEipAttachmentId, "#") + if len(items) != 2 { + errRet = fmt.Errorf("decode HA VIP EIP attachment ID error %s", haVipEipAttachmentId) + return + } + haVipId := items[0] + addressIp := items[1] + + request := vpc.NewDescribeHaVipsRequest() + request.HaVipIds = []*string{&haVipId} + eip = "" + haVip = "" + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if result, err := client.DescribeHaVips(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } else { + length := len(result.Response.HaVipSet) + if length != 1 { + if length == 0 { + return nil + } else { + err = fmt.Errorf("query havip %s eip %s failed, the SDK returns %d HaVips", haVipId, addressIp, length) + return resource.NonRetryableError(err) + } + } else { + eip = *result.Response.HaVipSet[0].AddressIp + if addressIp != eip { + return nil + } + has = true + haVip = haVipId + } + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s describe HA VIP attachment failed, reason: %v", logId, err) + errRet = err + } + return eip, haVip, has, errRet +} + +func (me *VpcService) DeleteHaVip(ctx context.Context, haVipId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteHaVipRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.HaVipId = &haVipId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteHaVip(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func waitEniReady(ctx context.Context, id string, client *vpc.Client, wantIpv4s []string, dropIpv4s []string) error { + logId := tccommon.GetLogId(ctx) + + wantCheckMap := make(map[string]bool, len(wantIpv4s)) + for _, ipv4 := range wantIpv4s { + wantCheckMap[ipv4] = false + } + + dropCheckMap := make(map[string]struct{}, len(dropIpv4s)) + for _, ipv4 := range dropIpv4s { + dropCheckMap[ipv4] = struct{}{} + } + + request := vpc.NewDescribeNetworkInterfacesRequest() + request.NetworkInterfaceIds = []*string{helper.String(id)} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.DescribeNetworkInterfaces(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + var eni *vpc.NetworkInterface + for _, networkInterface := range response.Response.NetworkInterfaceSet { + if networkInterface.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *networkInterface.NetworkInterfaceId == id { + eni = networkInterface + break + } + } + + if eni == nil { + err := fmt.Errorf("api[%s] eni not exist", request.GetAction()) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + if eni.State == nil { + err := fmt.Errorf("api[%s] eni state is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.State != ENI_STATE_AVAILABLE { + err := errors.New("eni is not available") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + for _, ipv4 := range eni.PrivateIpAddressSet { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + // check drop + if _, ok := dropCheckMap[*ipv4.PrivateIpAddress]; ok { + err := fmt.Errorf("api[%s] drop ip %s still exists", request.GetAction(), *ipv4.PrivateIpAddress) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + // check want + if _, ok := wantCheckMap[*ipv4.PrivateIpAddress]; ok { + wantCheckMap[*ipv4.PrivateIpAddress] = true + } + + if ipv4.State == nil { + err := fmt.Errorf("api[%s] eni ipv4 state is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *ipv4.State != ENI_IP_AVAILABLE { + err := errors.New("eni ipv4 is not available") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + for ipv4, checked := range wantCheckMap { + if !checked { + err := fmt.Errorf("api[%s] ipv4 %s is no ready", request.GetAction(), ipv4) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s eni is not available failed, reason: %v", logId, err) + return err + } + + return nil +} + +func flattenVpnSPDList(spd []*vpc.SecurityPolicyDatabase) (mapping []*map[string]interface{}) { + mapping = make([]*map[string]interface{}, 0, len(spd)) + for _, spg := range spd { + item := make(map[string]interface{}) + item["local_cidr_block"] = spg.LocalCidrBlock + item["remote_cidr_block"] = spg.RemoteCidrBlock + mapping = append(mapping, &item) + } + return +} + +func waitEniDetach(ctx context.Context, id string, client *vpc.Client) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkInterfacesRequest() + request.NetworkInterfaceIds = []*string{helper.String(id)} + + return resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.DescribeNetworkInterfaces(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok && sdkError.Code == "ResourceNotFound" { + return nil + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + enis := response.Response.NetworkInterfaceSet + + if len(enis) == 0 { + return nil + } + + eni := enis[0] + + if eni.Attachment == nil { + return nil + } + + if eni.Attachment.InstanceId != nil && *eni.Attachment.InstanceId != "" { + return resource.RetryableError(fmt.Errorf("eni %s still bind in cvm %s", id, *eni.Attachment.InstanceId)) + } + + if eni.State == nil { + return resource.NonRetryableError(fmt.Errorf("eni %s state is nil", id)) + } + + if *eni.State != ENI_STATE_AVAILABLE { + return resource.RetryableError(errors.New("eni is not available")) + } + + return nil + }) +} + +// deal acl +func parseACLRule(str string) (liteRule VpcACLRule, err error) { + split := strings.Split(str, "#") + if len(split) != 4 { + err = fmt.Errorf("invalid acl rule %s", str) + return + } + + liteRule.action, liteRule.cidrIp, liteRule.port, liteRule.protocol = split[0], split[1], split[2], split[3] + + switch liteRule.action { + default: + err = fmt.Errorf("invalid action %s, allow action is `ACCEPT` or `DROP`", liteRule.action) + return + case "ACCEPT", "DROP": + } + + if net.ParseIP(liteRule.cidrIp) == nil { + if _, _, err = net.ParseCIDR(liteRule.cidrIp); err != nil { + err = fmt.Errorf("invalid cidr_ip %s, allow cidr_ip format is `8.8.8.8` or `10.0.1.0/24`", liteRule.cidrIp) + return + } + } + + if liteRule.port != "ALL" && !regexp.MustCompile(`^(\d{1,5},)*\d{1,5}$|^\d{1,5}-\d{1,5}$`).MatchString(liteRule.port) { + err = fmt.Errorf("invalid port %s, allow port format is `ALL`, `53`, `80,443` or `80-90`", liteRule.port) + return + } + + switch liteRule.protocol { + default: + err = fmt.Errorf("invalid protocol %s, allow protocol is `ALL`, `TCP`, `UDP` or `ICMP`", liteRule.protocol) + return + + case "ALL", "ICMP": + if liteRule.port != "ALL" { + err = fmt.Errorf("when protocol is %s, port must be ALL", liteRule.protocol) + return + } + + // when protocol is ALL or ICMP, port should be "" to avoid sdk error + liteRule.port = "" + + case "TCP", "UDP": + } + + return +} + +func (me *VpcService) CreateVpcNetworkAcl(ctx context.Context, vpcID string, name string, tags map[string]string) (aclID string, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewCreateNetworkAclRequest() + response *vpc.CreateNetworkAclResponse + err error + ) + + request.VpcId = &vpcID + request.NetworkAclName = &name + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err = me.client.UseVpcClient().CreateNetworkAcl(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + aclID = *response.Response.NetworkAcl.NetworkAclId + return +} + +func (me *VpcService) AttachRulesToACL(ctx context.Context, aclID string, ingressParm, egressParm []VpcACLRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + + if len(ingressParm) == 0 && len(egressParm) == 0 { + return + } + if errRet = me.ModifyNetWorkAclRules(ctx, aclID, ingressParm, egressParm); errRet != nil { + log.Printf("[CRITAL]%s attach rules to acl failed, reason: %v", logId, errRet) + } + return +} + +func (me *VpcService) ModifyNetWorkAclRules(ctx context.Context, aclID string, ingressParm, egressParm []VpcACLRule) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewModifyNetworkAclEntriesRequest() + err error + ingress []*vpc.NetworkAclEntry + egress []*vpc.NetworkAclEntry + ) + + for i := range ingressParm { + policy := &vpc.NetworkAclEntry{ + Protocol: &ingressParm[i].protocol, + CidrBlock: &ingressParm[i].cidrIp, + Action: &ingressParm[i].action, + } + + if ingressParm[i].port != "" { + policy.Port = &ingressParm[i].port + } + + ingress = append(ingress, policy) + } + + for i := range egressParm { + policy := &vpc.NetworkAclEntry{ + Protocol: &egressParm[i].protocol, + CidrBlock: &egressParm[i].cidrIp, + Action: &egressParm[i].action, + } + + if egressParm[i].port != "" { + policy.Port = &egressParm[i].port + } + + egress = append(egress, policy) + } + + request.NetworkAclId = &aclID + request.NetworkAclEntrySet = &vpc.NetworkAclEntrySet{ + Ingress: ingress, + Egress: egress, + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().ModifyNetworkAclEntries(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) DescribeNetWorkByACLID(ctx context.Context, aclID string) (info *vpc.NetworkAcl, has int, errRet error) { + results, err := me.DescribeNetWorkAcls(ctx, aclID, "", "") + if err != nil { + errRet = err + return + } + + has = len(results) + if has == 0 { + return + } + + info = results[0] + return +} + +func (me *VpcService) DeleteAcl(ctx context.Context, aclID string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + err error + networkAcls []*vpc.NetworkAcl + request = vpc.NewDeleteNetworkAclRequest() + ) + + // Disassociate Network Acl Subnets + networkAcls, err = me.DescribeNetWorkAcls(ctx, aclID, "", "") + if err != nil { + errRet = err + return + } + + if len(networkAcls) > 0 { + subnets := networkAcls[0].SubnetSet + if len(subnets) > 0 { + requestSubnet := vpc.NewDisassociateNetworkAclSubnetsRequest() + requestSubnet.NetworkAclId = &aclID + + for i := range subnets { + requestSubnet.SubnetIds = append(requestSubnet.SubnetIds, subnets[i].SubnetId) + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DisassociateNetworkAclSubnets(requestSubnet) + if err != nil { + if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil + } + } + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + if err != nil { + errRet = err + return + } + } + } + + // delete acl + request.NetworkAclId = &aclID + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DeleteNetworkAcl(request) + + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err, tccommon.InternalError) + } + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil + } + return tccommon.RetryError(err, tccommon.InternalError) + } + + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) ModifyVpcNetworkAcl(ctx context.Context, id *string, name *string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + err error + request = vpc.NewModifyNetworkAclAttributeRequest() + ) + + request.NetworkAclId = id + request.NetworkAclName = name + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().ModifyNetworkAclAttribute(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err, tccommon.InternalError) + } + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return resource.NonRetryableError(err) + } + return tccommon.RetryError(err, tccommon.InternalError) + } + + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) AssociateAclSubnets(ctx context.Context, aclId string, subnetIds []string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewAssociateNetworkAclSubnetsRequest() + err error + subIds []*string + ) + + for _, i := range subnetIds { + subIds = append(subIds, &i) + } + + request.NetworkAclId = &aclId + request.SubnetIds = subIds + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().AssociateNetworkAclSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + return +} + +func (me *VpcService) DescribeNetWorkAcls(ctx context.Context, aclID, vpcID, name string) (info []*vpc.NetworkAcl, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkAclsRequest() + response *vpc.DescribeNetworkAclsResponse + err error + filters []*vpc.Filter + offset, pageSize uint64 = 0, 100 + ) + + if vpcID != "" { + filters = me.fillFilter(filters, "vpc-id", vpcID) + } + if aclID != "" { + filters = me.fillFilter(filters, "network-acl-id", aclID) + } + if name != "" { + filters = me.fillFilter(filters, "network-acl-name", name) + } + + if len(filters) > 0 { + request.Filters = filters + } + + request.Offset = &offset + request.Limit = &pageSize + for { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err = me.client.UseVpcClient().DescribeNetworkAcls(request) + if err != nil { + if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if ee.Code == VPCNotFound { + return nil + } + } + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + if response.Response == nil { + return + } + + info = append(info, response.Response.NetworkAclSet...) + if len(response.Response.NetworkAclSet) < int(pageSize) { + break + } + + offset += pageSize + } + + return +} + +func (me *VpcService) DescribeByAclId(ctx context.Context, attachmentAcl string) (has bool, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDisassociateNetworkAclSubnetsRequest() + aclId string + ) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + if attachmentAcl == "" { + errRet = fmt.Errorf("DisassociateNetworkAclSubnets can not invoke by empty routeTableId.") + return + } + + aclId = strings.Split(attachmentAcl, "#")[0] + + results, err := me.DescribeNetWorkAcls(ctx, aclId, "", "") + if err != nil { + errRet = err + return + } + if len(results) < 1 || len(results[0].SubnetSet) < 1 { + return + } + + has = true + return +} + +func (me *VpcService) DeleteAclAttachment(ctx context.Context, attachmentAcl string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDisassociateNetworkAclSubnetsRequest() + err error + ) + + if attachmentAcl == "" { + errRet = fmt.Errorf("DeleteRouteTable can not invoke by empty NetworkAclId.") + return + } + + items := strings.Split(attachmentAcl, "#") + request.NetworkAclId = &items[0] + request.SubnetIds = helper.Strings(items[1:]) + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DisassociateNetworkAclSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + return +} + +func (me *VpcService) DescribeVpngwById(ctx context.Context, vpngwId string) (has bool, gateway *vpc.VpnGateway, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaysRequest() + response *vpc.DescribeVpnGatewaysResponse + ) + request.VpnGatewayIds = []*string{&vpngwId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGateways(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.VpnGatewaySet) < 1 { + has = false + return + } + + gateway = response.Response.VpnGatewaySet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.VpnGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaysRequest() + ) + request.Filters = make([]*vpc.FilterObject, 0, len(filters)) + for k, v := range filters { + filter := vpc.FilterObject{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.VpnGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpnGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.VpnGatewaySet...) + if len(response.Response.VpnGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGateway(ctx context.Context, vpnGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteVpnGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeCustomerGatewayByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.CustomerGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCustomerGatewaysRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.CustomerGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeCustomerGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CustomerGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.CustomerGatewaySet...) + if len(response.Response.CustomerGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteCustomerGateway(ctx context.Context, customerGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteCustomerGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.CustomerGatewayId = &customerGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteCustomerGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) CreateAddressTemplate(ctx context.Context, name string, addresses []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateAddressTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateName = &name + request.Addresses = make([]*string, len(addresses)) + for i, v := range addresses { + request.Addresses[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAddressTemplate(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.AddressTemplate == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.AddressTemplate.AddressTemplateId + return +} + +func (me *VpcService) DescribeAddressTemplateById(ctx context.Context, templateId string) (template *vpc.AddressTemplate, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("address-template-id"), Values: []*string{&templateId}} + templates, err := me.DescribeAddressTemplates(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeAddressTemplates(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.AddressTemplate, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressTemplatesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddressTemplates(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.AddressTemplateSet...) + if len(response.Response.AddressTemplateSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) ModifyAddressTemplate(ctx context.Context, templateId string, name string, addresses []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressTemplateAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateId = &templateId + request.AddressTemplateName = &name + request.Addresses = make([]*string, len(addresses)) + for i, v := range addresses { + request.Addresses[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyAddressTemplateAttribute(request) + return err +} + +func (me *VpcService) DeleteAddressTemplate(ctx context.Context, templateId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteAddressTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.AddressTemplateId = &templateId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteAddressTemplate(request) + return err +} + +func (me *VpcService) CreateAddressTemplateGroup(ctx context.Context, name string, addressTemplate []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateAddressTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateGroupName = &name + request.AddressTemplateIds = make([]*string, len(addressTemplate)) + for i, v := range addressTemplate { + request.AddressTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAddressTemplateGroup(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.AddressTemplateGroup == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.AddressTemplateGroup.AddressTemplateGroupId + return +} + +func (me *VpcService) ModifyAddressTemplateGroup(ctx context.Context, templateGroupId string, name string, templateIds []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressTemplateGroupAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateGroupId = &templateGroupId + request.AddressTemplateGroupName = &name + request.AddressTemplateIds = make([]*string, len(templateIds)) + for i, v := range templateIds { + request.AddressTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyAddressTemplateGroupAttribute(request) + return err +} + +func (me *VpcService) DescribeAddressTemplateGroupById(ctx context.Context, templateGroupId string) (templateGroup *vpc.AddressTemplateGroup, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("address-template-group-id"), Values: []*string{&templateGroupId}} + templateGroups, err := me.DescribeAddressTemplateGroups(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templateGroups) == 0 { + return + } + if len(templateGroups) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one template group, instanceId %s", templateGroupId) + } + + has = true + templateGroup = templateGroups[0] + return +} + +func (me *VpcService) DescribeAddressTemplateGroups(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.AddressTemplateGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressTemplateGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddressTemplateGroups(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.AddressTemplateGroupSet...) + if len(response.Response.AddressTemplateGroupSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) DeleteAddressTemplateGroup(ctx context.Context, templateGroupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteAddressTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.AddressTemplateGroupId = &templateGroupId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteAddressTemplateGroup(request) + return err +} + +func (me *VpcService) CreateServiceTemplate(ctx context.Context, name string, services []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateServiceTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateName = &name + request.Services = make([]*string, len(services)) + for i, v := range services { + request.Services[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateServiceTemplate(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.ServiceTemplate == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.ServiceTemplate.ServiceTemplateId + return +} + +func (me *VpcService) ModifyServiceTemplate(ctx context.Context, templateId string, name string, services []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyServiceTemplateAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateId = &templateId + request.ServiceTemplateName = &name + request.Services = make([]*string, len(services)) + for i, v := range services { + request.Services[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyServiceTemplateAttribute(request) + return err +} + +func (me *VpcService) DescribeServiceTemplateById(ctx context.Context, templateId string) (template *vpc.ServiceTemplate, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("service-template-id"), Values: []*string{&templateId}} + templates, err := me.DescribeServiceTemplates(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeServiceTemplates(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.ServiceTemplate, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeServiceTemplatesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeServiceTemplates(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.ServiceTemplateSet...) + if len(response.Response.ServiceTemplateSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) DeleteServiceTemplate(ctx context.Context, templateId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteServiceTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.ServiceTemplateId = &templateId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteServiceTemplate(request) + return err +} + +func (me *VpcService) CreateServiceTemplateGroup(ctx context.Context, name string, serviceTemplate []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateServiceTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateGroupName = &name + request.ServiceTemplateIds = make([]*string, len(serviceTemplate)) + for i, v := range serviceTemplate { + request.ServiceTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateServiceTemplateGroup(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.ServiceTemplateGroup == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.ServiceTemplateGroup.ServiceTemplateGroupId + return +} + +func (me *VpcService) DescribeServiceTemplateGroupById(ctx context.Context, templateGroupId string) (template *vpc.ServiceTemplateGroup, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("service-template-group-id"), Values: []*string{&templateGroupId}} + templates, err := me.DescribeServiceTemplateGroups(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateGroupId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeServiceTemplateGroups(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.ServiceTemplateGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeServiceTemplateGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeServiceTemplateGroups(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.ServiceTemplateGroupSet...) + if len(response.Response.ServiceTemplateGroupSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) ModifyServiceTemplateGroup(ctx context.Context, serviceGroupId string, name string, templateIds []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyServiceTemplateGroupAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateGroupId = &serviceGroupId + request.ServiceTemplateGroupName = &name + request.ServiceTemplateIds = make([]*string, len(templateIds)) + for i, v := range templateIds { + request.ServiceTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyServiceTemplateGroupAttribute(request) + return err +} + +func (me *VpcService) DeleteServiceTemplateGroup(ctx context.Context, templateGroupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteServiceTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.ServiceTemplateGroupId = &templateGroupId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteServiceTemplateGroup(request) + return err +} + +func (me *VpcService) CreateVpnGatewayRoute(ctx context.Context, vpnGatewayId string, vpnGwRoutes []*vpc.VpnGatewayRoute) (errRet error, routes []*vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.Routes = vpnGwRoutes + + var response *vpc.CreateVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().CreateVpnGatewayRoutes(request) + if errRet != nil { + log.Printf("[CRITAL]%s create vpn gateway route failed, reason: %v", logId, errRet) + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil || response.Response.Routes == nil || len(response.Response.Routes) == 0 { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %+v, %s", response, request.GetAction()) + } else { + routes = response.Response.Routes + } + return +} + +func (me *VpcService) ModifyVpnGatewayRoute(ctx context.Context, vpnGatewayId, routeId, status string) (errRet error, routes *vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.Routes = []*vpc.VpnGatewayRouteModify{{ + RouteId: &routeId, + Status: &status, + }} + + var response *vpc.ModifyVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().ModifyVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil || response.Response.Routes == nil || len(response.Response.Routes) == 0 { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } else { + routes = response.Response.Routes[0] + } + return +} + +func (me *VpcService) DeleteVpnGatewayRoutes(ctx context.Context, vpnGatewayId string, routeIds []*string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.RouteIds = routeIds + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeVpnGatewayRoutes(ctx context.Context, vpnGatewayId string, filters []*vpc.Filter) (errRet error, result []*vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + if len(filters) > 0 { + request.Filters = filters + } + + offset := int64(0) + limit := int64(VPN_DESCRIBE_LIMIT) + for { + request.Offset = &offset + request.Limit = &limit + var response *vpc.DescribeVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().DescribeVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil { + return fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()), nil + } else if len(response.Response.Routes) > 0 { + result = append(result, response.Response.Routes...) + } else { + return + } + offset = offset + limit + } +} + +func (me *VpcService) DescribeVpcTaskResult(ctx context.Context, taskId *string) (err error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpcTaskResultRequest() + defer func() { + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), err.Error()) + } + }() + request.TaskId = taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpcTaskResult(request) + if err != nil { + return tccommon.RetryError(err) + } + if response.Response.Status != nil && *response.Response.Status == VPN_TASK_STATUS_RUNNING { + return resource.RetryableError(errors.New("VPN task is running")) + } + return nil + }) + if err != nil { + return err + } + return +} + +func (me *VpcService) DescribeTaskResult(ctx context.Context, taskId *uint64) (result *vpc.DescribeTaskResultResponse, err error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeTaskResultRequest() + defer func() { + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), err.Error()) + } + }() + request.TaskId = taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeTaskResult(request) + if err != nil { + return tccommon.RetryError(err) + } + result = response + return nil + }) + if err != nil { + return nil, err + } + return +} + +func (me *VpcService) DescribeVpnSslServerById(ctx context.Context, sslId string) (has bool, gateway *vpc.SslVpnSever, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslServersRequest() + response *vpc.DescribeVpnGatewaySslServersResponse + ) + request.SslVpnServerIds = []*string{&sslId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGatewaySslServers(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.SslVpnSeverSet) < 1 { + has = false + return + } + + gateway = response.Response.SslVpnSeverSet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwSslServerByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.SslVpnSever, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslServersRequest() + ) + request.Filters = make([]*vpc.FilterObject, 0, len(filters)) + for k, v := range filters { + filter := vpc.FilterObject{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.SslVpnSever, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGatewaySslServers(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SslVpnSeverSet) < 1 { + break + } + instances = append(instances, response.Response.SslVpnSeverSet...) + if len(response.Response.SslVpnSeverSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGatewaySslServer(ctx context.Context, SslServerId string) (taskId uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewaySslServerRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SslVpnServerId = &SslServerId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslServer(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + taskId = *response.Response.TaskId + return nil + }) + return +} + +func (me *VpcService) DescribeVpnSslClientById(ctx context.Context, sslId string) (has bool, gateway *vpc.SslVpnClient, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslClientsRequest() + response *vpc.DescribeVpnGatewaySslClientsResponse + ) + request.SslVpnClientIds = []*string{&sslId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGatewaySslClients(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.SslVpnClientSet) < 1 { + has = false + return + } + + gateway = response.Response.SslVpnClientSet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwSslClientByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.SslVpnClient, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslClientsRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.SslVpnClient, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGatewaySslClients(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SslVpnClientSet) < 1 { + break + } + instances = append(instances, response.Response.SslVpnClientSet...) + if len(response.Response.SslVpnClientSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGatewaySslClient(ctx context.Context, SslClientId string) (taskId *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewaySslClientRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SslVpnClientId = &SslClientId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslClient(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + taskId = response.Response.TaskId + return nil + }) + return +} + +func (me *VpcService) CreateNatGatewaySnat(ctx context.Context, natGatewayId string, snat *vpc.SourceIpTranslationNatRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.SourceIpTranslationNatRules = []*vpc.SourceIpTranslationNatRule{snat} + + var response *vpc.CreateNatGatewaySourceIpTranslationNatRuleResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().CreateNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + log.Printf("[CRITAL]%s create nat gateway source ip translation nat rule failed, reason: %v", logId, errRet) + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %+v, %s", response, request.GetAction()) + } + return +} + +func (me *VpcService) ModifyNatGatewaySnat(ctx context.Context, natGatewayId string, snat *vpc.SourceIpTranslationNatRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.SourceIpTranslationNatRule = snat + + var response *vpc.ModifyNatGatewaySourceIpTranslationNatRuleResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().ModifyNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + return +} + +func (me *VpcService) DeleteNatGatewaySnat(ctx context.Context, natGatewayId string, snatId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.NatGatewaySnatIds = []*string{&snatId} + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeNatGatewaySnats(ctx context.Context, natGatewayId string, filters []*vpc.Filter) (errRet error, result []*vpc.SourceIpTranslationNatRule) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeNatGatewaySourceIpTranslationNatRulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + if len(filters) > 0 { + request.Filters = filters + } + + offset := int64(0) + limit := int64(VPN_DESCRIBE_LIMIT) + for { + request.Offset = &offset + request.Limit = &limit + var response *vpc.DescribeNatGatewaySourceIpTranslationNatRulesResponse + errRet = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().DescribeNatGatewaySourceIpTranslationNatRules(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil { + return fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()), nil + } else if len(response.Response.SourceIpTranslationNatRuleSet) > 0 { + result = append(result, response.Response.SourceIpTranslationNatRuleSet...) + } else { + return + } + offset = offset + limit + } +} + +func (me *VpcService) DescribeAssistantCidr(ctx context.Context, vpcId string) (info []*vpc.AssistantCidr, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAssistantCidrRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcIds = []*string{&vpcId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.AssistantCidrSet + + return +} + +// CheckAssistantCidr used for check if cidr conflict +func (me *VpcService) CheckAssistantCidr(ctx context.Context, request *vpc.CheckAssistantCidrRequest) (info []*vpc.ConflictSource, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CheckAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.ConflictSourceSet + + return +} + +func (me *VpcService) CreateAssistantCidr(ctx context.Context, request *vpc.CreateAssistantCidrRequest) (info []*vpc.AssistantCidr, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.AssistantCidrSet + + return +} + +func (me *VpcService) ModifyAssistantCidr(ctx context.Context, request *vpc.ModifyAssistantCidrRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteAssistantCidr(ctx context.Context, request *vpc.DeleteAssistantCidrRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackage(ctx context.Context, bandwidthPackageId string) (resource *vpc.BandwidthPackage, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackagesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.BandwidthPackageIds = []*string{&bandwidthPackageId} + //request.Filters = append( + // request.Filters, + // &bwp.Filter{ + // Name: helper.String("bandwidth-package_id"), + // Values: []*string{&bandwidthPackageId}, + // }, + //) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackages(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil && len(response.Response.BandwidthPackageSet) > 0 { + resource = response.Response.BandwidthPackageSet[0] + } + + return +} + +func (me *VpcService) DeleteVpcBandwidthPackageById(ctx context.Context, bandwidthPackageId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteBandwidthPackageRequest() + + request.BandwidthPackageId = &bandwidthPackageId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteBandwidthPackage(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageAttachment(ctx context.Context, bandwidthPackageId, resourceId string) (bandwidthPackageResources *vpc.Resource, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageResourcesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.BandwidthPackageId = &bandwidthPackageId + request.Filters = append( + request.Filters, + &vpc.Filter{ + Name: helper.String("resource-id"), + Values: []*string{&resourceId}, + }, + ) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackageResources(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.ResourceSet) < 1 { + return + } + bandwidthPackageResources = response.Response.ResourceSet[0] + + return + +} + +func (me *VpcService) DeleteVpcBandwidthPackageAttachmentById(ctx context.Context, bandwidthPackageId, resourceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewRemoveBandwidthPackageResourcesRequest() + + if strings.HasPrefix(resourceId, "eip") { + request.ResourceType = helper.String("Address") + } else { + request.ResourceType = helper.String("LoadBalance") + } + + request.BandwidthPackageId = &bandwidthPackageId + request.ResourceIds = []*string{&resourceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().RemoveBandwidthPackageResources(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeFlowLogs(ctx context.Context, request *vpc.DescribeFlowLogsRequest) (result []*vpc.FlowLog, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeFlowLogs(request) + + if err != nil { + errRet = err + return + } + + result = response.Response.FlowLog + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcFlowLogById(ctx context.Context, flowLogId, vpcId string) (FlowLog *vpc.FlowLog, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeFlowLogRequest() + request.FlowLogId = &flowLogId + + if vpcId != "" { + request.VpcId = &vpcId + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeFlowLog(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.FlowLog) < 1 { + return + } + + FlowLog = response.Response.FlowLog[0] + return +} + +func (me *VpcService) DeleteVpcFlowLogById(ctx context.Context, flowLogId, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteFlowLogRequest() + request.FlowLogId = &flowLogId + if vpcId != "" { + request.VpcId = &vpcId + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteFlowLog(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointServiceById(ctx context.Context, endPointServiceId string) (endPointService *vpc.EndPointService, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointServiceRequest() + request.EndPointServiceIds = []*string{&endPointServiceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.EndPointService, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPointService(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.EndPointServiceSet) < 1 { + break + } + instances = append(instances, response.Response.EndPointServiceSet...) + if len(response.Response.EndPointServiceSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPointService = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointServiceById(ctx context.Context, endPointServiceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointServiceRequest() + request.EndPointServiceId = &endPointServiceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPointService(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointById(ctx context.Context, endPointId string) (endPoint *vpc.EndPoint, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointRequest() + request.EndPointId = []*string{&endPointId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.EndPoint, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPoint(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.EndPointSet) < 1 { + break + } + instances = append(instances, response.Response.EndPointSet...) + if len(response.Response.EndPointSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPoint = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointById(ctx context.Context, endPointId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointRequest() + request.EndPointId = &endPointId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPoint(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointServiceWhiteListById(ctx context.Context, userUin string, endPointServiceId string) (endPointServiceWhiteList *vpc.VpcEndPointServiceUser, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointServiceWhiteListRequest() + + request.Filters = make([]*vpc.Filter, 0) + if userUin != "" { + filter := &vpc.Filter{ + Name: helper.String("user-uin"), + Values: []*string{&userUin}, + } + request.Filters = append(request.Filters, filter) + } + if endPointServiceId != "" { + filter := &vpc.Filter{ + Name: helper.String("end-point-service-id"), + Values: []*string{&endPointServiceId}, + } + request.Filters = append(request.Filters, filter) + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.VpcEndPointServiceUser, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPointServiceWhiteList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpcEndpointServiceUserSet) < 1 { + break + } + instances = append(instances, response.Response.VpcEndpointServiceUserSet...) + if len(response.Response.VpcEndpointServiceUserSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPointServiceWhiteList = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointServiceWhiteListById(ctx context.Context, userUin string, endPointServiceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointServiceWhiteListRequest() + request.UserUin = []*string{&userUin} + request.EndPointServiceId = &endPointServiceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPointServiceWhiteList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageByEip(ctx context.Context, eipId string) (resource *vpc.BandwidthPackage, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackagesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.Filters = append( + request.Filters, + &vpc.Filter{ + Name: helper.String("resource.resource-id"), + Values: []*string{&eipId}, + }, + ) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackages(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil && len(response.Response.BandwidthPackageSet) > 0 { + resource = response.Response.BandwidthPackageSet[0] + } + + return +} + +func (me *VpcService) DescribeVpcCcnRoutesById(ctx context.Context, ccnId string, routeId string) (ccnRoutes *vpc.CcnRoute, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeCcnRoutesRequest() + request.CcnId = &ccnId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCcnRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + for _, route := range response.Response.RouteSet { + if *route.RouteId == routeId { + ccnRoutes = route + return + } + } + + return +} + +func (me *VpcService) DescribeCcnCrossBorderComplianceByFilter(ctx context.Context, param map[string]interface{}) (crossBorderCompliance []*vpc.CrossBorderCompliance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderComplianceRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "service_provider" { + request.ServiceProvider = v.(*string) + } + if k == "compliance_id" { + if *v.(*uint64) != 0 { + request.ComplianceId = v.(*uint64) + } + } + if k == "company" { + request.Company = v.(*string) + } + if k == "uniform_social_credit_code" { + request.UniformSocialCreditCode = v.(*string) + } + if k == "legal_person" { + request.LegalPerson = v.(*string) + } + if k == "issuing_authority" { + request.IssuingAuthority = v.(*string) + } + if k == "business_address" { + request.BusinessAddress = v.(*string) + } + if k == "post_code" { + if *v.(*uint64) != 0 { + request.PostCode = v.(*uint64) + } + } + if k == "manager" { + request.Manager = v.(*string) + } + if k == "manager_id" { + request.ManagerId = v.(*string) + } + if k == "manager_address" { + request.ManagerAddress = v.(*string) + } + if k == "manager_telephone" { + request.ManagerTelephone = v.(*string) + } + if k == "email" { + request.Email = v.(*string) + } + if k == "service_start_date" { + request.ServiceStartDate = v.(*string) + } + if k == "service_end_date" { + request.ServiceEndDate = v.(*string) + } + if k == "state" { + request.State = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeCrossBorderCompliance(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CrossBorderComplianceSet) < 1 { + break + } + crossBorderCompliance = append(crossBorderCompliance, response.Response.CrossBorderComplianceSet...) + if len(response.Response.CrossBorderComplianceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeTenantCcnByFilter(ctx context.Context, param map[string]interface{}) (tenantCcn []*vpc.CcnInstanceInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeTenantCcnsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.Filters = make([]*vpc.Filter, 0, len(param)) + for k, v := range param { + filter := &vpc.Filter{ + Name: helper.String(k), + Values: v.([]*string), + } + request.Filters = append(request.Filters, filter) + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeTenantCcns(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CcnSet) < 1 { + break + } + tenantCcn = append(tenantCcn, response.Response.CcnSet...) + if len(response.Response.CcnSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeCcnCrossBorderFlowMonitorByFilter(ctx context.Context, param map[string]interface{}) (crossBorderFlowMonitor []*vpc.CrossBorderFlowMonitorData, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderFlowMonitorRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "source_region" { + request.SourceRegion = v.(*string) + } + if k == "destination_region" { + request.DestinationRegion = v.(*string) + } + if k == "ccn_id" { + request.CcnId = v.(*string) + } + if k == "ccn_uin" { + request.CcnUin = v.(*string) + } + if k == "period" { + if *v.(*int64) != 0 { + request.Period = v.(*int64) + } + } + if k == "start_time" { + request.StartTime = v.(*string) + } + if k == "end_time" { + request.EndTime = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCrossBorderFlowMonitor(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CrossBorderFlowMonitorData) < 1 { + return + } + + crossBorderFlowMonitor = response.Response.CrossBorderFlowMonitorData + + return +} + +func (me *VpcService) DescribeVpnCustomerGatewayVendors(ctx context.Context) (vpnCustomerGatewayVendors []*vpc.CustomerGatewayVendor, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCustomerGatewayVendorsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCustomerGatewayVendors(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CustomerGatewayVendorSet) < 1 { + return + } + + vpnCustomerGatewayVendors = response.Response.CustomerGatewayVendorSet + return +} + +func (me *VpcService) DescribeVpcVpnGatewayCcnRoutesById(ctx context.Context, vpnGatewayId string, routeId string) (vpnGatewayCcnRoutes *vpc.VpngwCcnRoutes, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpnGatewayCcnRoutesRequest() + request.VpnGatewayId = &vpnGatewayId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpnGatewayCcnRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.RouteSet) < 1 { + return + } + + for _, route := range response.Response.RouteSet { + if *route.RouteId == routeId { + vpnGatewayCcnRoutes = route + break + } + } + return +} + +func (me *VpcService) DescribeVpcIpv6AddressById(ctx context.Context, ip6AddressId string) (ipv6Address *vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeIp6AddressesRequest() + request.Ip6AddressIds = []*string{&ip6AddressId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeIp6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AddressSet) < 1 { + return + } + + ipv6Address = response.Response.AddressSet[0] + return +} + +func (me *VpcService) DeleteVpcIpv6AddressById(ctx context.Context, ip6AddressId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewReleaseIp6AddressesBandwidthRequest() + request.Ip6AddressIds = []*string{&ip6AddressId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().ReleaseIp6AddressesBandwidth(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) VpcIpv6AddressStateRefreshFunc(taskId string, failStates []string) resource.StateRefreshFunc { + return func() (interface{}, string, error) { + ctx := tccommon.ContextNil + + taskId := helper.StrToUint64Point(taskId) + + object, err := me.DescribeTaskResult(ctx, taskId) + + if err != nil { + return nil, "", err + } + + return object, helper.PString(object.Response.Result), nil + } +} + +func (me *VpcService) DescribeVpcCcnRegionBandwidthLimitsByFilter(ctx context.Context, param map[string]interface{}) (CcnRegionBandwidthLimits []*vpc.CcnBandwidth, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderCcnRegionBandwidthLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeCrossBorderCcnRegionBandwidthLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CcnBandwidthSet) < 1 { + break + } + CcnRegionBandwidthLimits = append(CcnRegionBandwidthLimits, response.Response.CcnBandwidthSet...) + if len(response.Response.CcnBandwidthSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeNatDcRouteByFilter(ctx context.Context, param map[string]interface{}) (natDcRoute []*vpc.NatDirectConnectGatewayRoute, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNatGatewayDirectConnectGatewayRouteRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "NatGatewayId" { + request.NatGatewayId = v.(*string) + } + if k == "VpcId" { + request.VpcId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeNatGatewayDirectConnectGatewayRoute(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NatDirectConnectGatewayRouteSet) < 1 { + break + } + natDcRoute = append(natDcRoute, response.Response.NatDirectConnectGatewayRouteSet...) + if len(response.Response.NatDirectConnectGatewayRouteSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeEipAddressQuota(ctx context.Context) (addressQuota []*vpc.Quota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeAddressQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeAddressQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + addressQuota = append(addressQuota, response.Response.QuotaSet...) + + return +} + +func (me *VpcService) DescribeEipNetworkAccountType(ctx context.Context) (networkAccountType *string, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkAccountTypeRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkAccountType(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + networkAccountType = response.Response.NetworkAccountType + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageQuota(ctx context.Context) (bandwidthPackageQuota []*vpc.Quota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeBandwidthPackageQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + bandwidthPackageQuota = append(bandwidthPackageQuota, response.Response.QuotaSet...) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageBillUsageByFilter(ctx context.Context, param map[string]interface{}) (bandwidthPackageBillUsage []*vpc.BandwidthPackageBillBandwidth, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageBillUsageRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "BandwidthPackageId" { + request.BandwidthPackageId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeBandwidthPackageBillUsage(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + bandwidthPackageBillUsage = append(bandwidthPackageBillUsage, response.Response.BandwidthPackageBillBandwidthSet...) + + return +} + +func (me *VpcService) DescribeVpcTrafficPackageById(ctx context.Context, trafficPackageId string) (TrafficPackage *vpc.TrafficPackage, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeTrafficPackagesRequest() + request.TrafficPackageIds = []*string{&trafficPackageId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeTrafficPackages(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.TrafficPackageSet) < 1 { + return + } + + TrafficPackage = response.Response.TrafficPackageSet[0] + return +} + +func (me *VpcService) DeleteVpcTrafficPackageById(ctx context.Context, trafficPackageId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteTrafficPackagesRequest() + request.TrafficPackageIds = []*string{&trafficPackageId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteTrafficPackages(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcSnapshotPoliciesById(ctx context.Context, snapshotPolicyId string) (snapshotPolices []*vpc.SnapshotPolicy, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSnapshotPoliciesRequest() + request.SnapshotPolicyIds = []*string{&snapshotPolicyId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSnapshotPolicies(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + snapshotPolices = response.Response.SnapshotPolicySet + return +} + +func (me *VpcService) DeleteVpcSnapshotPoliciesById(ctx context.Context, snapshotPolicyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSnapshotPoliciesRequest() + request.SnapshotPolicyIds = []*string{&snapshotPolicyId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteSnapshotPolicies(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcSnapshotPolicyAttachmentById(ctx context.Context, snapshotPolicyId string) (snapshotPolicyAttachment []*vpc.SnapshotInstance, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSnapshotAttachedInstancesRequest() + request.SnapshotPolicyId = &snapshotPolicyId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSnapshotAttachedInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.InstanceSet) < 1 { + return + } + + snapshotPolicyAttachment = response.Response.InstanceSet + return +} + +func (me *VpcService) DeleteVpcSnapshotPolicyAttachmentById(ctx context.Context, snapshotPolicyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDetachSnapshotInstancesRequest() + request.SnapshotPolicyId = &snapshotPolicyId + + snapshotInstace, err := me.DescribeVpcSnapshotPolicyAttachmentById(ctx, snapshotPolicyId) + if err != nil { + errRet = err + return + } + request.Instances = snapshotInstace + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DetachSnapshotInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcNetDetectById(ctx context.Context, netDetectId string) (netDetect *vpc.NetDetect, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetDetectsRequest() + request.NetDetectIds = []*string{&netDetectId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetDetects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NetDetectSet) < 1 { + return + } + + netDetect = response.Response.NetDetectSet[0] + return +} + +func (me *VpcService) DeleteVpcNetDetectById(ctx context.Context, netDetectId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteNetDetectRequest() + request.NetDetectId = &netDetectId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteNetDetect(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcClassicLinkAttachmentById(ctx context.Context, vpcId string, instanceId string) (classicLinkAttachment *vpc.ClassicLinkInstance, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeClassicLinkInstancesRequest() + filter := vpc.FilterObject{ + Name: helper.String("vpc-id"), + Values: []*string{&vpcId}, + } + request.Filters = append(request.Filters, &filter) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.ClassicLinkInstance, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeClassicLinkInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.ClassicLinkInstanceSet) < 1 { + break + } + instances = append(instances, response.Response.ClassicLinkInstanceSet...) + if len(response.Response.ClassicLinkInstanceSet) < int(limit) { + break + } + offset += limit + } + + if len(instances) < 1 { + return + } + + for _, instance := range instances { + if *instance.InstanceId == instanceId { + classicLinkAttachment = instance + } + } + + return +} + +func (me *VpcService) DeleteVpcClassicLinkAttachmentById(ctx context.Context, vpcId string, instanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDetachClassicLinkVpcRequest() + request.VpcId = &vpcId + request.InstanceIds = []*string{&instanceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DetachClassicLinkVpc(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcDhcpIpById(ctx context.Context, dhcpIpId string) (dhcpIp *vpc.DhcpIp, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeDhcpIpsRequest() + request.DhcpIpIds = []*string{&dhcpIpId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeDhcpIps(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.DhcpIpSet) < 1 { + return + } + + dhcpIp = response.Response.DhcpIpSet[0] + return +} + +func (me *VpcService) DeleteVpcDhcpIpById(ctx context.Context, dhcpIpId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteDhcpIpRequest() + request.DhcpIpId = &dhcpIpId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteDhcpIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcDhcpAssociateAddressById(ctx context.Context, dhcpIpId string, addressIp string) (dhcpAssociateAddress *vpc.DhcpIp, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeDhcpIpsRequest() + request.DhcpIpIds = []*string{&dhcpIpId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeDhcpIps(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.DhcpIpSet) < 1 { + return + } + + dhcpIp := response.Response.DhcpIpSet[0] + if *dhcpIp.AddressIp != addressIp { + return + } + dhcpAssociateAddress = dhcpIp + + return +} + +func (me *VpcService) DeleteVpcDhcpAssociateAddressById(ctx context.Context, dhcpIpId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDisassociateDhcpIpWithAddressIpRequest() + request.DhcpIpId = &dhcpIpId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DisassociateDhcpIpWithAddressIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcById(ctx context.Context, vpcId string) (instance *vpc.Vpc, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcsRequest() + request.VpcIds = []*string{&vpcId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.Vpc, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeVpcs(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpcSet) < 1 { + break + } + instances = append(instances, response.Response.VpcSet...) + if len(response.Response.VpcSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + instance = instances[0] + return +} + +func (me *VpcService) DeleteVpcIpv6CidrBlockById(ctx context.Context, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6CidrBlockRequest() + request.VpcId = &vpcId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6CidrBlock(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeSubnetById(ctx context.Context, subnetId string) (instance *vpc.Subnet, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSubnetsRequest() + request.SubnetIds = []*string{&subnetId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.Subnet, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeSubnets(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SubnetSet) < 1 { + break + } + instances = append(instances, response.Response.SubnetSet...) + if len(response.Response.SubnetSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + instance = instances[0] + return +} + +func (me *VpcService) DeleteVpcIpv6SubnetCidrBlockById(ctx context.Context, vpcId string, subnetId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6SubnetCidrBlockRequest() + request.VpcId = &vpcId + + ipv6SubnetCidrBlock := vpc.Ipv6SubnetCidrBlock{} + ipv6SubnetCidrBlock.SubnetId = &subnetId + request.Ipv6SubnetCidrBlocks = append(request.Ipv6SubnetCidrBlocks, &ipv6SubnetCidrBlock) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6SubnetCidrBlock(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcIpv6EniAddressById(ctx context.Context, vpcId string, ipv6Address string) (ipv6EniAddress *vpc.VpcIpv6Address, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcIpv6AddressesRequest() + request.VpcId = &vpcId + request.Ipv6Addresses = []*string{&ipv6Address} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcIpv6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.Ipv6AddressSet) < 1 { + return + } + + ipv6EniAddress = response.Response.Ipv6AddressSet[0] + return +} + +func (me *VpcService) DeleteVpcIpv6EniAddressById(ctx context.Context, networkInterfaceId string, ipv6Address string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6AddressesRequest() + request.NetworkInterfaceId = &networkInterfaceId + address := vpc.Ipv6Address{} + address.Address = &ipv6Address + request.Ipv6Addresses = append(request.Ipv6Addresses, &address) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcLocalGatewayById(ctx context.Context, localGatewayId string) (localGateway *vpc.LocalGateway, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeLocalGatewayRequest() + + filter := vpc.Filter{ + Name: helper.String("local-gateway-id"), + Values: []*string{&localGatewayId}, + } + + request.Filters = append(request.Filters, &filter) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeLocalGateway(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.LocalGatewaySet) < 1 { + return + } + + localGateway = response.Response.LocalGatewaySet[0] + return +} + +func (me *VpcService) DeleteVpcLocalGatewayById(ctx context.Context, cdcId string, localGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteLocalGatewayRequest() + request.CdcId = &cdcId + request.LocalGatewayId = &localGatewayId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteLocalGateway(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcAccountAttributes(ctx context.Context) (accountAttributes []*vpc.AccountAttribute, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeAccountAttributesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeAccountAttributes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + accountAttributes = response.Response.AccountAttributeSet + + return +} + +func (me *VpcService) DescribeVpcClassicLinkInstancesByFilter(ctx context.Context, param map[string]interface{}) (classicLinkInstances []*vpc.ClassicLinkInstance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeClassicLinkInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Filters" { + request.Filters = v.([]*vpc.FilterObject) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeClassicLinkInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.ClassicLinkInstanceSet) < 1 { + break + } + classicLinkInstances = append(classicLinkInstances, response.Response.ClassicLinkInstanceSet...) + if len(response.Response.ClassicLinkInstanceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcGatewayFlowMonitorDetailByFilter(ctx context.Context, param map[string]interface{}) (GatewayFlowMonitorDetail []*vpc.GatewayFlowMonitorDetail, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeGatewayFlowMonitorDetailRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "TimePoint" { + request.TimePoint = v.(*string) + } + if k == "VpnId" { + request.VpnId = v.(*string) + } + if k == "DirectConnectGatewayId" { + request.DirectConnectGatewayId = v.(*string) + } + if k == "PeeringConnectionId" { + request.PeeringConnectionId = v.(*string) + } + if k == "NatId" { + request.NatId = v.(*string) + } + if k == "OrderField" { + request.OrderField = v.(*string) + } + if k == "OrderDirection" { + request.OrderDirection = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeGatewayFlowMonitorDetail(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.GatewayFlowMonitorDetailSet) < 1 { + break + } + GatewayFlowMonitorDetail = append(GatewayFlowMonitorDetail, response.Response.GatewayFlowMonitorDetailSet...) + if len(response.Response.GatewayFlowMonitorDetailSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcGatewayFlowQosByFilter(ctx context.Context, param map[string]interface{}) (GatewayFlowQos []*vpc.GatewayQos, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeGatewayFlowQosRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "GatewayId" { + request.GatewayId = v.(*string) + } + if k == "IpAddresses" { + request.IpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeGatewayFlowQos(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.GatewayQosSet) < 1 { + break + } + GatewayFlowQos = append(GatewayFlowQos, response.Response.GatewayQosSet...) + if len(response.Response.GatewayQosSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcCvmInstancesByFilter(ctx context.Context, param map[string]interface{}) (CvmInstances []*vpc.CvmInstance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.InstanceSet) < 1 { + break + } + CvmInstances = append(CvmInstances, response.Response.InstanceSet...) + if len(response.Response.InstanceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcNetDetectStatesByFilter(ctx context.Context, param map[string]interface{}) (NetDetectStates []*vpc.NetDetectState, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetDetectStatesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "NetDetectIds" { + request.NetDetectIds = v.([]*string) + } + if k == "Filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeNetDetectStates(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NetDetectStateSet) < 1 { + break + } + NetDetectStates = append(NetDetectStates, response.Response.NetDetectStateSet...) + if len(response.Response.NetDetectStateSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcNetworkInterfaceLimit(ctx context.Context, param map[string]interface{}) (networkInterfaceLimit *vpc.DescribeNetworkInterfaceLimitResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkInterfaceLimitRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkInterfaceLimit(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + networkInterfaceLimit = response.Response + + return +} + +func (me *VpcService) DescribeVpcPrivateIpAddresses(ctx context.Context, param map[string]interface{}) (PrivateIpAddresses []*vpc.VpcPrivateIpAddress, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcPrivateIpAddressesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "PrivateIpAddresses" { + request.PrivateIpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcPrivateIpAddresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + PrivateIpAddresses = response.Response.VpcPrivateIpAddressSet + + return +} + +func (me *VpcService) DescribeVpcProductQuota(ctx context.Context, param map[string]interface{}) (ProductQuota []*vpc.ProductQuota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeProductQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Product" { + request.Product = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeProductQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ProductQuota = response.Response.ProductQuotaSet + + return +} + +func (me *VpcService) DescribeVpcResourceDashboard(ctx context.Context, param map[string]interface{}) (ResourceDashboard []*vpc.ResourceDashboard, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcResourceDashboardRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcIds" { + request.VpcIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcResourceDashboard(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ResourceDashboard = response.Response.ResourceDashboardSet + + return +} + +func (me *VpcService) DescribeVpcRouteConflicts(ctx context.Context, param map[string]interface{}) (routeConflicts []*vpc.RouteConflict, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeRouteConflictsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "RouteTableId" { + request.RouteTableId = v.(*string) + } + if k == "DestinationCidrBlocks" { + request.DestinationCidrBlocks = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteConflicts(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + routeConflicts = response.Response.RouteConflictSet + + return +} + +func (me *VpcService) DescribeVpcSecurityGroupLimits(ctx context.Context, param map[string]interface{}) (securityGroupLimit *vpc.SecurityGroupLimitSet, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSecurityGroupLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + securityGroupLimit = response.Response.SecurityGroupLimitSet + + return +} + +func (me *VpcService) DescribeVpcSecurityGroupReferences(ctx context.Context, param map[string]interface{}) (securityGroupReferences []*vpc.ReferredSecurityGroup, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSecurityGroupReferencesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SecurityGroupIds" { + request.SecurityGroupIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupReferences(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + securityGroupReferences = response.Response.ReferredSecurityGroupSet + + return +} + +func (me *VpcService) DescribeVpcSgSnapshotFileContent(ctx context.Context, param map[string]interface{}) (sgSnapshotFileContent *vpc.DescribeSgSnapshotFileContentResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSgSnapshotFileContentRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SnapshotPolicyId" { + request.SnapshotPolicyId = v.(*string) + } + if k == "SnapshotFileId" { + request.SnapshotFileId = v.(*string) + } + if k == "SecurityGroupId" { + request.SecurityGroupId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSgSnapshotFileContent(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + sgSnapshotFileContent = response.Response + + return +} + +func (me *VpcService) DescribeVpcSnapshotFilesByFilter(ctx context.Context, param map[string]interface{}) (SnapshotFiles []*vpc.SnapshotFileInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSnapshotFilesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "BusinessType" { + request.BusinessType = v.(*string) + } + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + if k == "StartDate" { + request.StartDate = v.(*string) + } + if k == "EndDate" { + request.EndDate = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeSnapshotFiles(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SnapshotFileSet) < 1 { + break + } + SnapshotFiles = append(SnapshotFiles, response.Response.SnapshotFileSet...) + if len(response.Response.SnapshotFileSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcSubnetResourceDashboardByFilter(ctx context.Context, param map[string]interface{}) (subnetResourceDashboard []*vpc.ResourceStatistics, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSubnetResourceDashboardRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SubnetIds" { + request.SubnetIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSubnetResourceDashboard(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + subnetResourceDashboard = response.Response.ResourceStatisticsSet + + return +} + +func (me *VpcService) DescribeVpcTemplateLimits(ctx context.Context) (templateLimit *vpc.TemplateLimit, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeTemplateLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeTemplateLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + templateLimit = response.Response.TemplateLimit + + return +} + +func (me *VpcService) DescribeVpcUsedIpAddressByFilter(ctx context.Context, param map[string]interface{}) (UsedIpAddress []*vpc.IpAddressStates, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeUsedIpAddressRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "SubnetId" { + request.SubnetId = v.(*string) + } + if k == "IpAddresses" { + request.IpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeUsedIpAddress(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.IpAddressStates) < 1 { + break + } + UsedIpAddress = append(UsedIpAddress, response.Response.IpAddressStates...) + if len(response.Response.IpAddressStates) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcLimitsByFilter(ctx context.Context, param map[string]interface{}) (limits []*vpc.VpcLimit, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "LimitTypes" { + request.LimitTypes = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + limits = response.Response.VpcLimitSet + + return +} + +func (me *VpcService) DescribeVpcNetworkAclQuintupleById(ctx context.Context, networkAclId string) (networkAclQuintuples []*vpc.NetworkAclQuintupleEntry, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkAclQuintupleEntriesRequest() + request.NetworkAclId = &networkAclId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkAclQuintupleEntries(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NetworkAclQuintupleSet) < 1 { + return + } + + networkAclQuintuples = response.Response.NetworkAclQuintupleSet + return +} + +func (me *VpcService) DeleteVpcNetworkAclQuintupleById(ctx context.Context, networkAclId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteNetworkAclQuintupleEntriesRequest() + request.NetworkAclId = &networkAclId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteNetworkAclQuintupleEntries(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteVpcEniSgAttachmentById(ctx context.Context, networkInterfaceId string, securityGroupIds []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDisassociateNetworkInterfaceSecurityGroupsRequest() + request.NetworkInterfaceIds = []*string{&networkInterfaceId} + request.SecurityGroupIds = common.StringPtrs(securityGroupIds) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DisassociateNetworkInterfaceSecurityGroups(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcNetDetectStateCheck(ctx context.Context, param map[string]interface{}) (netDetectStateCheck []*vpc.NetDetectIpState, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewCheckNetDetectStateRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "DetectDestinationIp" { + request.DetectDestinationIp = v.([]*string) + } + if k == "NextHopType" { + request.NextHopType = v.(*string) + } + if k == "NextHopDestination" { + request.NextHopDestination = v.(*string) + } + if k == "NetDetectId" { + request.NetDetectId = v.(*string) + } + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "SubnetId" { + request.SubnetId = v.(*string) + } + if k == "NetDetectName" { + request.NetDetectName = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().CheckNetDetectState(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + netDetectStateCheck = response.Response.NetDetectIpStateSet + + return +} + +func (me *VpcService) DescribeVpcNotifyRoutesById(ctx context.Context, routeTableId string, routeItemId string) (notifyRoute *vpc.Route, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeRouteTablesRequest() + request.RouteTableIds = []*string{&routeTableId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteTables(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.RouteTableSet) < 1 { + return + } + + for _, routeTable := range response.Response.RouteTableSet { + for _, route := range routeTable.RouteSet { + if *route.RouteItemId == routeItemId { + notifyRoute = route + break + } + } + } + return +} + +func (me *VpcService) DeleteVpcNotifyRoutesById(ctx context.Context, routeTableId string, routeItemId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewWithdrawNotifyRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteItemIds = []*string{&routeItemId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().WithdrawNotifyRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpnDefaultHealthCheckIp(ctx context.Context, param map[string]interface{}) (defaultHealthCheck *vpc.GenerateVpnConnectionDefaultHealthCheckIpResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewGenerateVpnConnectionDefaultHealthCheckIpRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpnGatewayId" { + request.VpnGatewayId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().GenerateVpnConnectionDefaultHealthCheckIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + defaultHealthCheck = response.Response + + return +} +func (me *VpcService) DescribeVpcPeerConnectManagerById(ctx context.Context, peeringConnectionId string) (PeerConnectManager *vpc.PeerConnection, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcPeeringConnectionsRequest() + request.PeeringConnectionIds = []*string{&peeringConnectionId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcPeeringConnections(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.PeerConnectionSet) < 1 { + return + } + + PeerConnectManager = response.Response.PeerConnectionSet[0] + return +} +func (me *VpcService) DeleteVpcPeerConnectManagerById(ctx context.Context, peeringConnectionId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcPeeringConnectionRequest() + request.PeeringConnectionId = &peeringConnectionId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcPeeringConnection(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteVpcPeerConnectAccecptOrRejectById(ctx context.Context, peeringConnectionId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewRejectVpcPeeringConnectionRequest() + request.PeeringConnectionId = &peeringConnectionId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().RejectVpcPeeringConnection(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/data_source_tc_gaap_access_regions.go b/tencentcloud/services/gaap/data_source_tc_gaap_access_regions.go similarity index 87% rename from tencentcloud/data_source_tc_gaap_access_regions.go rename to tencentcloud/services/gaap/data_source_tc_gaap_access_regions.go index c3f81b16dd..1596233765 100644 --- a/tencentcloud/data_source_tc_gaap_access_regions.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_access_regions.go @@ -1,15 +1,18 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapAccessRegions() *schema.Resource { +func DataSourceTencentCloudGaapAccessRegions() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapAccessRegionsRead, Schema: map[string]*schema.Schema{ @@ -80,19 +83,19 @@ func dataSourceTencentCloudGaapAccessRegions() *schema.Resource { } func dataSourceTencentCloudGaapAccessRegionsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_access_regions.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_access_regions.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var accessRegionSet []*gaap.RegionDetail - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeGaapAccessRegions(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } accessRegionSet = result return nil @@ -152,7 +155,7 @@ func dataSourceTencentCloudGaapAccessRegionsRead(d *schema.ResourceData, meta in d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_gaap_access_regions_by_dest_region.go b/tencentcloud/services/gaap/data_source_tc_gaap_access_regions_by_dest_region.go similarity index 89% rename from tencentcloud/data_source_tc_gaap_access_regions_by_dest_region.go rename to tencentcloud/services/gaap/data_source_tc_gaap_access_regions_by_dest_region.go index 837c515e76..1feb745f57 100644 --- a/tencentcloud/data_source_tc_gaap_access_regions_by_dest_region.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_access_regions_by_dest_region.go @@ -1,15 +1,18 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapAccessRegionsByDestRegion() *schema.Resource { +func DataSourceTencentCloudGaapAccessRegionsByDestRegion() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapAccessRegionsByDestRegionRead, Schema: map[string]*schema.Schema{ @@ -97,12 +100,12 @@ func dataSourceTencentCloudGaapAccessRegionsByDestRegion() *schema.Resource { } func dataSourceTencentCloudGaapAccessRegionsByDestRegionRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_access_regions_by_dest_region.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_access_regions_by_dest_region.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("dest_region"); ok { @@ -117,14 +120,14 @@ func dataSourceTencentCloudGaapAccessRegionsByDestRegionRead(d *schema.ResourceD paramMap["package_type"] = helper.String(v.(string)) } - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var accessRegionSet []*gaap.AccessRegionDetial - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeGaapAccessRegionsByDestRegionByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } accessRegionSet = result return nil @@ -182,7 +185,7 @@ func dataSourceTencentCloudGaapAccessRegionsByDestRegionRead(d *schema.ResourceD d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_gaap_access_regions_by_dest_region_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_access_regions_by_dest_region_test.go similarity index 65% rename from tencentcloud/data_source_tc_gaap_access_regions_by_dest_region_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_access_regions_by_dest_region_test.go index 17895f0973..d7754599c1 100644 --- a/tencentcloud/data_source_tc_gaap_access_regions_by_dest_region_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_access_regions_by_dest_region_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapAccessRegionsByDestRegionDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapAccessRegionsByDestRegionDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_access_regions_by_dest_region.access_regions_by_dest_region"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_access_regions_by_dest_region.access_regions_by_dest_region"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_access_regions_by_dest_region.access_regions_by_dest_region", "access_region_set.#"), ), }, diff --git a/tencentcloud/data_source_tc_gaap_access_regions_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_access_regions_test.go similarity index 63% rename from tencentcloud/data_source_tc_gaap_access_regions_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_access_regions_test.go index 5319c36e43..e1714e21ec 100644 --- a/tencentcloud/data_source_tc_gaap_access_regions_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_access_regions_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapAccessRegionsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapAccessRegionsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_access_regions.access_regions"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_access_regions.access_regions"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_access_regions.access_regions", "access_region_set.#"), ), }, diff --git a/tencentcloud/data_source_tc_gaap_black_header.go b/tencentcloud/services/gaap/data_source_tc_gaap_black_header.go similarity index 66% rename from tencentcloud/data_source_tc_gaap_black_header.go rename to tencentcloud/services/gaap/data_source_tc_gaap_black_header.go index 4b87785669..7543ce8f85 100644 --- a/tencentcloud/data_source_tc_gaap_black_header.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_black_header.go @@ -1,14 +1,17 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapBlackHeader() *schema.Resource { +func DataSourceTencentCloudGaapBlackHeader() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapBlackHeaderRead, Schema: map[string]*schema.Schema{ @@ -31,21 +34,21 @@ func dataSourceTencentCloudGaapBlackHeader() *schema.Resource { } func dataSourceTencentCloudGaapBlackHeaderRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_black_header.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_black_header.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var blackHeaders []*string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeGaapBlackHeader(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } blackHeaders = result return nil @@ -62,7 +65,7 @@ func dataSourceTencentCloudGaapBlackHeaderRead(d *schema.ResourceData, meta inte d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), blackHeaders); e != nil { + if e := tccommon.WriteToFile(output.(string), blackHeaders); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_gaap_black_header_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_black_header_test.go similarity index 62% rename from tencentcloud/data_source_tc_gaap_black_header_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_black_header_test.go index dae3ded90d..38cc1b0b04 100644 --- a/tencentcloud/data_source_tc_gaap_black_header_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_black_header_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapBlackHeaderDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapBlackHeaderDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_black_header.black_header"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_black_header.black_header"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_black_header.black_header", "black_headers.#"), ), }, diff --git a/tencentcloud/data_source_tc_gaap_certificates.go b/tencentcloud/services/gaap/data_source_tc_gaap_certificates.go similarity index 88% rename from tencentcloud/data_source_tc_gaap_certificates.go rename to tencentcloud/services/gaap/data_source_tc_gaap_certificates.go index 9b71908fd8..257b477b0c 100644 --- a/tencentcloud/data_source_tc_gaap_certificates.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_certificates.go @@ -1,16 +1,19 @@ -package tencentcloud +package gaap import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapCertificates() *schema.Resource { +func DataSourceTencentCloudGaapCertificates() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapCertificatesRead, Schema: map[string]*schema.Schema{ @@ -27,7 +30,7 @@ func dataSourceTencentCloudGaapCertificates() *schema.Resource { "type": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue([]string{"BASIC", "CLIENT", "SERVER", "REALSERVER", "PROXY"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"BASIC", "CLIENT", "SERVER", "REALSERVER", "PROXY"}), Description: "Type of the certificate to be queried. Valid values: `BASIC`, `CLIENT`, `SERVER`, `REALSERVER` and `PROXY`. `BASIC` means basic certificate; `CLIENT` means client CA certificate; `SERVER` means server SSL certificate; `REALSERVER` means realserver CA certificate; `PROXY` means proxy SSL certificate.", }, "result_output_file": { @@ -91,9 +94,9 @@ func dataSourceTencentCloudGaapCertificates() *schema.Resource { } func dataSourceTencentCloudGaapCertificatesRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_certificates.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_certificates.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( id *string @@ -113,7 +116,7 @@ func dataSourceTencentCloudGaapCertificatesRead(d *schema.ResourceData, m interf certificateType = common.IntPtr(gaapCertificateStringMap[raw.(string)]) } - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} respCertificates, err := service.DescribeCertificates(ctx, id, name, certificateType) if err != nil { @@ -163,7 +166,7 @@ func dataSourceTencentCloudGaapCertificatesRead(d *schema.ResourceData, m interf d.SetId(helper.DataResourceIdsHash(ids)) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), certificates); err != nil { + if err := tccommon.WriteToFile(output.(string), certificates); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%s]\n", logId, output.(string), err.Error()) return err diff --git a/tencentcloud/data_source_tc_gaap_certificates_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_certificates_test.go similarity index 86% rename from tencentcloud/data_source_tc_gaap_certificates_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_certificates_test.go index da0ede2f6e..0fcca0776b 100644 --- a/tencentcloud/data_source_tc_gaap_certificates_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_certificates_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package gaap_test import ( "fmt" "regexp" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,13 +14,13 @@ func TestAccDataSourceTencentCloudGaapCertificates_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapCertificatesBasic, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_certificates.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_certificates.foo"), resource.TestCheckResourceAttr("data.tencentcloud_gaap_certificates.foo", "certificates.#", "1"), resource.TestCheckResourceAttr("data.tencentcloud_gaap_certificates.foo", "certificates.0.name", "ci-server-ca"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_certificates.foo", "certificates.0.type"), @@ -37,13 +39,13 @@ func TestAccDataSourceTencentCloudGaapCertificates_name(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapCertificatesName, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_certificates.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_certificates.foo"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_certificates.foo", "certificates.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestMatchResourceAttr("data.tencentcloud_gaap_certificates.foo", "certificates.0.name", regexp.MustCompile("ci-server-ca")), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_certificates.foo", "certificates.0.type"), @@ -61,13 +63,13 @@ func TestAccDataSourceTencentCloudGaapCertificates_name(t *testing.T) { func TestAccDataSourceTencentCloudGaapCertificates_type(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapCertificatesType, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_certificates.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_certificates.foo"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_certificates.foo", "certificates.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_certificates.foo", "certificates.0.name"), resource.TestCheckResourceAttr("data.tencentcloud_gaap_certificates.foo", "certificates.0.type", "SERVER"), diff --git a/tencentcloud/data_source_tc_gaap_check_proxy_create.go b/tencentcloud/services/gaap/data_source_tc_gaap_check_proxy_create.go similarity index 85% rename from tencentcloud/data_source_tc_gaap_check_proxy_create.go rename to tencentcloud/services/gaap/data_source_tc_gaap_check_proxy_create.go index ced5f5533c..36176a5c7a 100644 --- a/tencentcloud/data_source_tc_gaap_check_proxy_create.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_check_proxy_create.go @@ -1,14 +1,17 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapCheckProxyCreate() *schema.Resource { +func DataSourceTencentCloudGaapCheckProxyCreate() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapCheckProxyCreateRead, Schema: map[string]*schema.Schema{ @@ -76,12 +79,12 @@ func dataSourceTencentCloudGaapCheckProxyCreate() *schema.Resource { } func dataSourceTencentCloudGaapCheckProxyCreateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_check_proxy_create.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_check_proxy_create.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("access_region"); ok { @@ -116,13 +119,13 @@ func dataSourceTencentCloudGaapCheckProxyCreateRead(d *schema.ResourceData, meta paramMap["PackageType"] = helper.String(v.(string)) } - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var checkFlag *uint64 - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeGaapCheckProxyCreate(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } checkFlag = result return nil @@ -141,7 +144,7 @@ func dataSourceTencentCloudGaapCheckProxyCreateRead(d *schema.ResourceData, meta d.SetId(helper.BuildToken()) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_gaap_check_proxy_create_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_check_proxy_create_test.go similarity index 69% rename from tencentcloud/data_source_tc_gaap_check_proxy_create_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_check_proxy_create_test.go index a125e234db..866ec1a6a4 100644 --- a/tencentcloud/data_source_tc_gaap_check_proxy_create_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_check_proxy_create_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapCheckProxyCreateDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapCheckProxyCreateDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_check_proxy_create.check_proxy_create"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_check_proxy_create.check_proxy_create"), resource.TestCheckResourceAttr("data.tencentcloud_gaap_check_proxy_create.check_proxy_create", "check_flag", "1"), ), }, diff --git a/tencentcloud/data_source_tc_gaap_country_area_mapping.go b/tencentcloud/services/gaap/data_source_tc_gaap_country_area_mapping.go similarity index 84% rename from tencentcloud/data_source_tc_gaap_country_area_mapping.go rename to tencentcloud/services/gaap/data_source_tc_gaap_country_area_mapping.go index d41443f00a..f9ba439be1 100644 --- a/tencentcloud/data_source_tc_gaap_country_area_mapping.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_country_area_mapping.go @@ -1,15 +1,18 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapCountryAreaMapping() *schema.Resource { +func DataSourceTencentCloudGaapCountryAreaMapping() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapCountryAreaMappingRead, Schema: map[string]*schema.Schema{ @@ -68,20 +71,20 @@ func dataSourceTencentCloudGaapCountryAreaMapping() *schema.Resource { } func dataSourceTencentCloudGaapCountryAreaMappingRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_country_area_mapping.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_country_area_mapping.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var countryAreaMappingList []*gaap.CountryAreaMap - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeGaapCountryAreaMapping(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } countryAreaMappingList = result return nil @@ -135,7 +138,7 @@ func dataSourceTencentCloudGaapCountryAreaMappingRead(d *schema.ResourceData, me d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_gaap_country_area_mapping_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_country_area_mapping_test.go similarity index 64% rename from tencentcloud/data_source_tc_gaap_country_area_mapping_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_country_area_mapping_test.go index 14491388b2..25a03d5f3d 100644 --- a/tencentcloud/data_source_tc_gaap_country_area_mapping_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_country_area_mapping_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapCountryAreaMappingDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapCountryAreaMappingDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_country_area_mapping.country_area_mapping"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_country_area_mapping.country_area_mapping"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_country_area_mapping.country_area_mapping", "country_area_mapping_list.#"), ), }, diff --git a/tencentcloud/data_source_tc_gaap_custom_header.go b/tencentcloud/services/gaap/data_source_tc_gaap_custom_header.go similarity index 77% rename from tencentcloud/data_source_tc_gaap_custom_header.go rename to tencentcloud/services/gaap/data_source_tc_gaap_custom_header.go index 069a5ed01d..d7c89dc4e5 100644 --- a/tencentcloud/data_source_tc_gaap_custom_header.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_custom_header.go @@ -1,15 +1,18 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapCustomHeader() *schema.Resource { +func DataSourceTencentCloudGaapCustomHeader() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapCustomHeaderRead, Schema: map[string]*schema.Schema{ @@ -49,19 +52,19 @@ func dataSourceTencentCloudGaapCustomHeader() *schema.Resource { } func dataSourceTencentCloudGaapCustomHeaderRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_custom_header.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_custom_header.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var headers []*gaap.HttpHeaderParam - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ruleId := d.Get("rule_id").(string) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeGaapCustomHeader(ctx, ruleId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } headers = result return nil @@ -94,7 +97,7 @@ func dataSourceTencentCloudGaapCustomHeaderRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_gaap_custom_header_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_custom_header_test.go similarity index 63% rename from tencentcloud/data_source_tc_gaap_custom_header_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_custom_header_test.go index b7b58a0700..4860a9ab65 100644 --- a/tencentcloud/data_source_tc_gaap_custom_header_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_custom_header_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapCustomHeaderDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapCustomHeaderDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_custom_header.custom_header"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_custom_header.custom_header"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_custom_header.custom_header", "headers.#"), ), }, diff --git a/tencentcloud/data_source_tc_gaap_dest_regions.go b/tencentcloud/services/gaap/data_source_tc_gaap_dest_regions.go similarity index 87% rename from tencentcloud/data_source_tc_gaap_dest_regions.go rename to tencentcloud/services/gaap/data_source_tc_gaap_dest_regions.go index ede6a0252e..407269806b 100644 --- a/tencentcloud/data_source_tc_gaap_dest_regions.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_dest_regions.go @@ -1,15 +1,18 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapDestRegions() *schema.Resource { +func DataSourceTencentCloudGaapDestRegions() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapDestRegionsRead, Schema: map[string]*schema.Schema{ @@ -80,20 +83,20 @@ func dataSourceTencentCloudGaapDestRegions() *schema.Resource { } func dataSourceTencentCloudGaapDestRegionsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_dest_regions.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_dest_regions.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var destRegionSet []*gaap.RegionDetail - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeGaapDestRegions(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } destRegionSet = result return nil @@ -153,7 +156,7 @@ func dataSourceTencentCloudGaapDestRegionsRead(d *schema.ResourceData, meta inte d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_gaap_dest_regions_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_dest_regions_test.go similarity index 62% rename from tencentcloud/data_source_tc_gaap_dest_regions_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_dest_regions_test.go index 0938ebd005..bfbcd3189a 100644 --- a/tencentcloud/data_source_tc_gaap_dest_regions_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_dest_regions_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapDestRegionsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapDestRegionsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_dest_regions.dest_regions"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_dest_regions.dest_regions"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_dest_regions.dest_regions", "dest_region_set.#"), ), }, diff --git a/tencentcloud/data_source_tc_gaap_domain_error_page_infos.go b/tencentcloud/services/gaap/data_source_tc_gaap_domain_error_page_infos.go similarity index 89% rename from tencentcloud/data_source_tc_gaap_domain_error_page_infos.go rename to tencentcloud/services/gaap/data_source_tc_gaap_domain_error_page_infos.go index 83e3dbefc6..2568c5b818 100644 --- a/tencentcloud/data_source_tc_gaap_domain_error_page_infos.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_domain_error_page_infos.go @@ -1,15 +1,18 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapDomainErrorPageInfos() *schema.Resource { +func DataSourceTencentCloudGaapDomainErrorPageInfos() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapDomainErrorPageInfosRead, Schema: map[string]*schema.Schema{ @@ -107,12 +110,12 @@ func dataSourceTencentCloudGaapDomainErrorPageInfos() *schema.Resource { } func dataSourceTencentCloudGaapDomainErrorPageInfosRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_domain_error_page_infos.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_domain_error_page_infos.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("error_page_ids"); ok { @@ -120,14 +123,14 @@ func dataSourceTencentCloudGaapDomainErrorPageInfosRead(d *schema.ResourceData, paramMap["ErrorPageIds"] = helper.InterfacesStringsPoint(errorPageIdsSet) } - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var errorPageSet []*gaap.DomainErrorPageInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeGaapDomainErrorPageInfosByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } errorPageSet = result return nil @@ -204,7 +207,7 @@ func dataSourceTencentCloudGaapDomainErrorPageInfosRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_gaap_domain_error_page_infos_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_domain_error_page_infos_test.go similarity index 65% rename from tencentcloud/data_source_tc_gaap_domain_error_page_infos_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_domain_error_page_infos_test.go index 8368b3eee5..549218b1db 100644 --- a/tencentcloud/data_source_tc_gaap_domain_error_page_infos_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_domain_error_page_infos_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapDomainErrorPageInfosDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapDomainErrorPageInfosDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_domain_error_page_infos.domain_error_page_infos"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_domain_error_page_infos.domain_error_page_infos"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_domain_error_page_infos.domain_error_page_infos", "error_page_set.#"), ), }, diff --git a/tencentcloud/data_source_tc_gaap_domain_error_pages.go b/tencentcloud/services/gaap/data_source_tc_gaap_domain_error_pages.go similarity index 88% rename from tencentcloud/data_source_tc_gaap_domain_error_pages.go rename to tencentcloud/services/gaap/data_source_tc_gaap_domain_error_pages.go index 530bec407b..7175cc635f 100644 --- a/tencentcloud/data_source_tc_gaap_domain_error_pages.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_domain_error_pages.go @@ -1,14 +1,17 @@ -package tencentcloud +package gaap import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapDomainErrorPageInfoList() *schema.Resource { +func DataSourceTencentCloudGaapDomainErrorPageInfoList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapDomainErrorPageInfoListRead, Schema: map[string]*schema.Schema{ @@ -92,9 +95,9 @@ func dataSourceTencentCloudGaapDomainErrorPageInfoList() *schema.Resource { } func dataSourceTencentCloudGaapDomainErrorPageInfoListRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_domain_error_pages.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_domain_error_pages.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) listenerId := d.Get("listener_id").(string) domain := d.Get("domain").(string) @@ -105,7 +108,7 @@ func dataSourceTencentCloudGaapDomainErrorPageInfoListRead(d *schema.ResourceDat ids = helper.InterfacesStrings(raw.(*schema.Set).List()) } - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} respList, err := service.DescribeDomainErrorPageInfoList(ctx, listenerId, domain) if err != nil { @@ -147,7 +150,7 @@ func dataSourceTencentCloudGaapDomainErrorPageInfoListRead(d *schema.ResourceDat d.SetId(helper.DataResourceIdsHash(idList)) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), list); err != nil { + if err := tccommon.WriteToFile(output.(string), list); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%v]", logId, output.(string), err) return err diff --git a/tencentcloud/data_source_tc_gaap_domain_error_pages_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_domain_error_pages_test.go similarity index 89% rename from tencentcloud/data_source_tc_gaap_domain_error_pages_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_domain_error_pages_test.go index b2b11da511..aa14f1fecf 100644 --- a/tencentcloud/data_source_tc_gaap_domain_error_pages_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_domain_error_pages_test.go @@ -1,22 +1,24 @@ -package tencentcloud +package gaap_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccDataSourceTencentCloudGaapDomainErrorPages_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapDomainErrorPagesBasic, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_domain_error_pages.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_domain_error_pages.foo"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_domain_error_pages.foo", "listener_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_domain_error_pages.foo", "domain"), resource.TestCheckResourceAttr("data.tencentcloud_gaap_domain_error_pages.foo", "error_page_info_list.#", "1"), @@ -37,13 +39,13 @@ func TestAccDataSourceTencentCloudGaapDomainErrorPages_basic(t *testing.T) { func TestAccDataSourceTencentCloudGaapDomainErrorPages_Ids(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapDomainErrorPagesIds, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_domain_error_pages.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_domain_error_pages.foo"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_domain_error_pages.foo", "listener_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_domain_error_pages.foo", "domain"), resource.TestCheckResourceAttr("data.tencentcloud_gaap_domain_error_pages.foo", "error_page_info_list.#", "1"), @@ -92,7 +94,7 @@ data tencentcloud_gaap_domain_error_pages "foo" { listener_id = tencentcloud_gaap_domain_error_page.foo.listener_id domain = tencentcloud_gaap_domain_error_page.foo.domain } -`, 8081, defaultGaapProxyId2) +`, 8081, tcacctest.DefaultGaapProxyId2) var testAccGaapDomainErrorPagesIds = fmt.Sprintf(testAccGaapDomainErrorPagesListenerAndDomain+` resource tencentcloud_gaap_domain_error_page "foo" { @@ -121,4 +123,4 @@ data tencentcloud_gaap_domain_error_pages "foo" { domain = tencentcloud_gaap_domain_error_page.foo.domain ids = [tencentcloud_gaap_domain_error_page.foo.id] } -`, 8082, defaultGaapProxyId2) +`, 8082, tcacctest.DefaultGaapProxyId2) diff --git a/tencentcloud/data_source_tc_gaap_group_and_statistics_proxy.go b/tencentcloud/services/gaap/data_source_tc_gaap_group_and_statistics_proxy.go similarity index 88% rename from tencentcloud/data_source_tc_gaap_group_and_statistics_proxy.go rename to tencentcloud/services/gaap/data_source_tc_gaap_group_and_statistics_proxy.go index 7915612e8f..3ab6e2283b 100644 --- a/tencentcloud/data_source_tc_gaap_group_and_statistics_proxy.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_group_and_statistics_proxy.go @@ -1,15 +1,18 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapGroupAndStatisticsProxy() *schema.Resource { +func DataSourceTencentCloudGaapGroupAndStatisticsProxy() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapGroupAndStatisticsProxyRead, Schema: map[string]*schema.Schema{ @@ -97,26 +100,26 @@ func dataSourceTencentCloudGaapGroupAndStatisticsProxy() *schema.Resource { } func dataSourceTencentCloudGaapGroupAndStatisticsProxyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_group_and_statistics_proxy.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_group_and_statistics_proxy.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, _ := d.GetOk("project_id"); v != nil { paramMap["ProjectId"] = helper.IntUint64(v.(int)) } - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var groupSet []*gaap.GroupStatisticsInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeGaapGroupAndStatisticsProxyByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } groupSet = result return nil @@ -196,7 +199,7 @@ func dataSourceTencentCloudGaapGroupAndStatisticsProxyRead(d *schema.ResourceDat d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_gaap_group_and_statistics_proxy_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_group_and_statistics_proxy_test.go similarity index 64% rename from tencentcloud/data_source_tc_gaap_group_and_statistics_proxy_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_group_and_statistics_proxy_test.go index c1038b536e..32f08e4142 100644 --- a/tencentcloud/data_source_tc_gaap_group_and_statistics_proxy_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_group_and_statistics_proxy_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapGroupAndStatisticsProxyDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapGroupAndStatisticsProxyDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_group_and_statistics_proxy.group_and_statistics_proxy"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_group_and_statistics_proxy.group_and_statistics_proxy"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_group_and_statistics_proxy.group_and_statistics_proxy", "group_set.#"), ), }, diff --git a/tencentcloud/data_source_tc_gaap_http_domains.go b/tencentcloud/services/gaap/data_source_tc_gaap_http_domains.go similarity index 92% rename from tencentcloud/data_source_tc_gaap_http_domains.go rename to tencentcloud/services/gaap/data_source_tc_gaap_http_domains.go index 189028a542..2a09746cef 100644 --- a/tencentcloud/data_source_tc_gaap_http_domains.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_http_domains.go @@ -1,14 +1,17 @@ -package tencentcloud +package gaap import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapHttpDomains() *schema.Resource { +func DataSourceTencentCloudGaapHttpDomains() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapHttpDomainsRead, Schema: map[string]*schema.Schema{ @@ -107,14 +110,14 @@ func dataSourceTencentCloudGaapHttpDomains() *schema.Resource { } func dataSourceTencentCloudGaapHttpDomainsRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_http_domains.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_http_domains.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) listenerId := d.Get("listener_id").(string) domain := d.Get("domain").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} domainRules, err := service.DescribeDomains(ctx, listenerId, domain) if err != nil { @@ -198,7 +201,7 @@ func dataSourceTencentCloudGaapHttpDomainsRead(d *schema.ResourceData, m interfa d.SetId(helper.DataResourceIdsHash(ids)) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), domains); err != nil { + if err := tccommon.WriteToFile(output.(string), domains); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%v]", logId, output.(string), err) return err diff --git a/tencentcloud/data_source_tc_gaap_http_domains_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_http_domains_test.go similarity index 83% rename from tencentcloud/data_source_tc_gaap_http_domains_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_http_domains_test.go index f17bac1f18..84b3cce387 100644 --- a/tencentcloud/data_source_tc_gaap_http_domains_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_http_domains_test.go @@ -1,23 +1,25 @@ -package tencentcloud +package gaap_test import ( "fmt" "regexp" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccDataSourceTencentCloudGaapHttpDomains_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapHttpDomainsBasic, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_http_domains.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_http_domains.foo"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_http_domains.foo", "domains.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestMatchResourceAttr("data.tencentcloud_gaap_http_domains.foo", "domains.0.domain", regexp.MustCompile(`www\.qq\.com`)), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_http_domains.foo", "domains.0.certificate_id"), @@ -49,4 +51,4 @@ data "tencentcloud_gaap_http_domains" "foo" { listener_id = tencentcloud_gaap_layer7_listener.foo.id domain = tencentcloud_gaap_http_domain.foo.domain } -`, defaultGaapProxyId2) +`, tcacctest.DefaultGaapProxyId2) diff --git a/tencentcloud/data_source_tc_gaap_http_rules.go b/tencentcloud/services/gaap/data_source_tc_gaap_http_rules.go similarity index 92% rename from tencentcloud/data_source_tc_gaap_http_rules.go rename to tencentcloud/services/gaap/data_source_tc_gaap_http_rules.go index 5f20becde6..88fef17ea2 100644 --- a/tencentcloud/data_source_tc_gaap_http_rules.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_http_rules.go @@ -1,4 +1,4 @@ -package tencentcloud +package gaap import ( "context" @@ -7,11 +7,14 @@ import ( "log" "net" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapHttpRules() *schema.Resource { +func DataSourceTencentCloudGaapHttpRules() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapHttpRulesRead, Schema: map[string]*schema.Schema{ @@ -28,7 +31,7 @@ func dataSourceTencentCloudGaapHttpRules() *schema.Resource { "path": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringPrefix("/"), + ValidateFunc: tccommon.ValidateStringPrefix("/"), Description: "Path of the forward rule to be queried.", }, "forward_host": { @@ -172,9 +175,9 @@ func dataSourceTencentCloudGaapHttpRules() *schema.Resource { } func dataSourceTencentCloudGaapHttpRulesRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_http_rules.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_http_rules.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) listenerId := d.Get("listener_id").(string) @@ -196,7 +199,7 @@ func dataSourceTencentCloudGaapHttpRulesRead(d *schema.ResourceData, m interface forwardHost = helper.String(raw.(string)) } - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} domainRuleSets, err := service.DescribeDomains(ctx, listenerId, domain) if err != nil { @@ -208,7 +211,7 @@ func dataSourceTencentCloudGaapHttpRulesRead(d *schema.ResourceData, m interface for _, domainRule := range domainRuleSets { for _, rule := range domainRule.RuleSet { - if nilFields := CheckNil(rule, map[string]string{ + if nilFields := tccommon.CheckNil(rule, map[string]string{ "RuleId": "id", "Path": "path", "RealServerType": "realserver type", @@ -222,7 +225,7 @@ func dataSourceTencentCloudGaapHttpRulesRead(d *schema.ResourceData, m interface checkParams := rule.CheckParams - if nilFields := CheckNil(checkParams, map[string]string{ + if nilFields := tccommon.CheckNil(checkParams, map[string]string{ "DelayLoop": "interval", "ConnectTimeout": "connect timeout", "Path": "path", @@ -269,7 +272,7 @@ func dataSourceTencentCloudGaapHttpRulesRead(d *schema.ResourceData, m interface realservers := make([]map[string]interface{}, 0, len(rule.RealServerSet)) for _, rs := range rule.RealServerSet { - if nilFields := CheckNil(rs, map[string]string{ + if nilFields := tccommon.CheckNil(rs, map[string]string{ "RealServerId": "id", "RealServerIP": "ip or domain", "RealServerPort": "port", @@ -305,7 +308,7 @@ func dataSourceTencentCloudGaapHttpRulesRead(d *schema.ResourceData, m interface d.SetId(helper.DataResourceIdsHash(ids)) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), rules); err != nil { + if err := tccommon.WriteToFile(output.(string), rules); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%v]", logId, output.(string), err) return err diff --git a/tencentcloud/data_source_tc_gaap_http_rules_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_http_rules_test.go similarity index 88% rename from tencentcloud/data_source_tc_gaap_http_rules_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_http_rules_test.go index c1985c6d2e..e599503e42 100644 --- a/tencentcloud/data_source_tc_gaap_http_rules_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_http_rules_test.go @@ -1,22 +1,24 @@ -package tencentcloud +package gaap_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccDataSourceTencentCloudGaapHttpRules_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapHttpRulesDomain, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_http_rules.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_http_rules.foo"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_http_rules.foo", "rules.0.id"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_http_rules.foo", "rules.0.listener_id"), resource.TestCheckResourceAttr("data.tencentcloud_gaap_http_rules.foo", "rules.0.domain", "www.qq.com"), @@ -40,13 +42,13 @@ func TestAccDataSourceTencentCloudGaapHttpRules_basic(t *testing.T) { func TestAccDataSourceTencentCloudGaapHttpRules_path(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapHttpRulesPath, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_http_rules.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_http_rules.foo"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_http_rules.foo", "rules.0.id"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_http_rules.foo", "rules.0.listener_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_http_rules.foo", "rules.0.domain"), @@ -70,13 +72,13 @@ func TestAccDataSourceTencentCloudGaapHttpRules_path(t *testing.T) { func TestAccDataSourceTencentCloudGaapHttpRules_forwardHost(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapHttpRulesForwardHost, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_http_rules.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_http_rules.foo"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_http_rules.foo", "rules.0.id"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_http_rules.foo", "rules.0.listener_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_http_rules.foo", "rules.0.domain"), @@ -126,7 +128,7 @@ resource "tencentcloud_gaap_http_rule" "foo" { forward_host = "www.qqq.com" } -`, port, defaultGaapProxyId2, defaultGaapRealserverIpId1, defaultGaapRealserverIp1) +`, port, tcacctest.DefaultGaapProxyId2, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1) } var TestAccDataSourceTencentCloudGaapHttpRulesDomain = gaapHttpRulesResources(8090) + ` diff --git a/tencentcloud/data_source_tc_gaap_layer4_listeners.go b/tencentcloud/services/gaap/data_source_tc_gaap_layer4_listeners.go similarity index 90% rename from tencentcloud/data_source_tc_gaap_layer4_listeners.go rename to tencentcloud/services/gaap/data_source_tc_gaap_layer4_listeners.go index 804ee8786b..471898b355 100644 --- a/tencentcloud/data_source_tc_gaap_layer4_listeners.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_layer4_listeners.go @@ -1,23 +1,26 @@ -package tencentcloud +package gaap import ( "context" "errors" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapLayer4Listeners() *schema.Resource { +func DataSourceTencentCloudGaapLayer4Listeners() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapLayer4ListenersRead, Schema: map[string]*schema.Schema{ "protocol": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue([]string{"TCP", "UDP"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"TCP", "UDP"}), Description: "Protocol of the layer4 listener to be queried. Valid values: `TCP` and `UDP`.", }, "proxy_id": { @@ -38,7 +41,7 @@ func dataSourceTencentCloudGaapLayer4Listeners() *schema.Resource { "port": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "Port of the layer4 listener to be queried.", }, "result_output_file": { @@ -122,9 +125,9 @@ func dataSourceTencentCloudGaapLayer4Listeners() *schema.Resource { } func dataSourceTencentCloudGaapLayer4ListenersRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_layer4_listeners.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_layer4_listeners.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) protocol := d.Get("protocol").(string) @@ -155,7 +158,7 @@ func dataSourceTencentCloudGaapLayer4ListenersRead(d *schema.ResourceData, m int port = common.IntPtr(raw.(int)) } - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} switch protocol { case "TCP": @@ -224,7 +227,7 @@ func dataSourceTencentCloudGaapLayer4ListenersRead(d *schema.ResourceData, m int d.SetId(helper.DataResourceIdsHash(ids)) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), listeners); err != nil { + if err := tccommon.WriteToFile(output.(string), listeners); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%v]", logId, output.(string), err) return err diff --git a/tencentcloud/data_source_tc_gaap_layer4_listeners_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_layer4_listeners_test.go similarity index 88% rename from tencentcloud/data_source_tc_gaap_layer4_listeners_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_layer4_listeners_test.go index cf650f0533..10e01eb9eb 100644 --- a/tencentcloud/data_source_tc_gaap_layer4_listeners_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_layer4_listeners_test.go @@ -1,23 +1,25 @@ -package tencentcloud +package gaap_test import ( "fmt" "regexp" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccDataSourceTencentCloudGaapLayer4Listeners_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapLayer4ListenersBasic, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.foo"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer4_listeners.foo", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer4_listeners.foo", "listeners.0.protocol", "TCP"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer4_listeners.foo", "listeners.0.id"), @@ -40,13 +42,13 @@ func TestAccDataSourceTencentCloudGaapLayer4Listeners_basic(t *testing.T) { func TestAccDataSourceTencentCloudGaapLayer4Listeners_tcp(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapLayer4ListenersListenerName, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.name"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.name"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer4_listeners.name", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer4_listeners.name", "listeners.0.protocol", "TCP"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer4_listeners.name", "listeners.0.id"), @@ -63,7 +65,7 @@ func TestAccDataSourceTencentCloudGaapLayer4Listeners_tcp(t *testing.T) { { Config: TestAccDataSourceTencentCloudGaapLayer4ListenersPort, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.port"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.port"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer4_listeners.port", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer4_listeners.port", "listeners.0.protocol", "TCP"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer4_listeners.port", "listeners.0.id"), @@ -84,13 +86,13 @@ func TestAccDataSourceTencentCloudGaapLayer4Listeners_tcp(t *testing.T) { func TestAccDataSourceTencentCloudGaapLayer4Listeners_UDP(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapLayer4ListenersUDP, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.foo"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer4_listeners.foo", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer4_listeners.foo", "listeners.0.protocol", "UDP"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer4_listeners.foo", "listeners.0.id"), @@ -106,7 +108,7 @@ func TestAccDataSourceTencentCloudGaapLayer4Listeners_UDP(t *testing.T) { { Config: TestAccDataSourceTencentCloudGaapLayer4ListenersUDPName, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.name"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.name"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer4_listeners.name", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer4_listeners.name", "listeners.0.protocol", "UDP"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer4_listeners.name", "listeners.0.id"), @@ -123,7 +125,7 @@ func TestAccDataSourceTencentCloudGaapLayer4Listeners_UDP(t *testing.T) { { Config: TestAccDataSourceTencentCloudGaapLayer4ListenersUDPPort, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.port"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer4_listeners.port"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer4_listeners.port", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer4_listeners.port", "listeners.0.protocol", "UDP"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer4_listeners.port", "listeners.0.id"), @@ -160,7 +162,7 @@ resource "tencentcloud_gaap_layer4_listener" "foo" { port = 80 } } -`, port, defaultGaapProxyId2, defaultGaapRealserverIpId1, defaultGaapRealserverIp1) +`, port, tcacctest.DefaultGaapProxyId2, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1) } func gaapLayer4Listener2(port int) string { @@ -181,7 +183,7 @@ resource tencentcloud_gaap_layer4_listener "bar" { port = 80 } } -`, port, defaultGaapProxyId2, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, port, tcacctest.DefaultGaapProxyId2, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) } var TestAccDataSourceTencentCloudGaapLayer4ListenersBasic = gaapLayer4Listener(8101) + ` @@ -199,7 +201,7 @@ data tencentcloud_gaap_layer4_listeners "name" { proxy_id = "%s" listener_name = tencentcloud_gaap_layer4_listener.foo.name } -`, defaultGaapProxyId2) +`, tcacctest.DefaultGaapProxyId2) var TestAccDataSourceTencentCloudGaapLayer4ListenersPort = gaapLayer4Listener(8104) + gaapLayer4Listener2(8105) + fmt.Sprintf(` @@ -208,7 +210,7 @@ data tencentcloud_gaap_layer4_listeners "port" { proxy_id = "%s" port = tencentcloud_gaap_layer4_listener.foo.port } -`, defaultGaapProxyId2) +`, tcacctest.DefaultGaapProxyId2) var TestAccDataSourceTencentCloudGaapLayer4ListenersUDP = fmt.Sprintf(` @@ -232,7 +234,7 @@ data tencentcloud_gaap_layer4_listeners "foo" { proxy_id = "%s" listener_id = tencentcloud_gaap_layer4_listener.foo.id } -`, defaultGaapProxyId2, defaultGaapRealserverIpId2, defaultGaapRealserverIp2, defaultGaapProxyId2) +`, tcacctest.DefaultGaapProxyId2, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2, tcacctest.DefaultGaapProxyId2) var TestAccDataSourceTencentCloudGaapLayer4ListenersUDPName = TestAccDataSourceTencentCloudGaapLayer4ListenersUDP + fmt.Sprintf(` @@ -241,7 +243,7 @@ data tencentcloud_gaap_layer4_listeners "name" { proxy_id = "%s" listener_name = tencentcloud_gaap_layer4_listener.foo.name } -`, defaultGaapProxyId2) +`, tcacctest.DefaultGaapProxyId2) var TestAccDataSourceTencentCloudGaapLayer4ListenersUDPPort = TestAccDataSourceTencentCloudGaapLayer4ListenersUDP + fmt.Sprintf(` @@ -250,4 +252,4 @@ data tencentcloud_gaap_layer4_listeners "port" { proxy_id = "%s" port = tencentcloud_gaap_layer4_listener.foo.port } -`, defaultGaapProxyId2) +`, tcacctest.DefaultGaapProxyId2) diff --git a/tencentcloud/data_source_tc_gaap_layer7_listeners.go b/tencentcloud/services/gaap/data_source_tc_gaap_layer7_listeners.go similarity index 92% rename from tencentcloud/data_source_tc_gaap_layer7_listeners.go rename to tencentcloud/services/gaap/data_source_tc_gaap_layer7_listeners.go index 4eeaa6a4f9..668049c083 100644 --- a/tencentcloud/data_source_tc_gaap_layer7_listeners.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_layer7_listeners.go @@ -1,23 +1,26 @@ -package tencentcloud +package gaap import ( "context" "errors" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudGaapLayer7Listeners() *schema.Resource { +func DataSourceTencentCloudGaapLayer7Listeners() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudGaapLayer7ListenersRead, Schema: map[string]*schema.Schema{ "protocol": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue([]string{"HTTP", "HTTPS"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"HTTP", "HTTPS"}), Description: "Protocol of the layer7 listener to be queried. Valid values: `HTTP` and `HTTPS`.", }, "proxy_id": { @@ -38,7 +41,7 @@ func dataSourceTencentCloudGaapLayer7Listeners() *schema.Resource { "port": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "Port of the layer7 listener to be queried.", }, "result_output_file": { @@ -124,9 +127,9 @@ func dataSourceTencentCloudGaapLayer7Listeners() *schema.Resource { } func dataSourceTencentCloudGaapLayer7ListenersRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("data_source.tencentcloud_gaap_layer7_listeners.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("data_source.tencentcloud_gaap_layer7_listeners.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) protocol := d.Get("protocol").(string) @@ -157,7 +160,7 @@ func dataSourceTencentCloudGaapLayer7ListenersRead(d *schema.ResourceData, m int port = common.IntPtr(raw.(int)) } - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} switch protocol { case "HTTP": @@ -271,7 +274,7 @@ func dataSourceTencentCloudGaapLayer7ListenersRead(d *schema.ResourceData, m int d.SetId(helper.DataResourceIdsHash(ids)) if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - if err := writeToFile(output.(string), listeners); err != nil { + if err := tccommon.WriteToFile(output.(string), listeners); err != nil { log.Printf("[CRITAL]%s output file[%s] fail, reason[%v]", logId, output.(string), err) return err diff --git a/tencentcloud/data_source_tc_gaap_layer7_listeners_test.go b/tencentcloud/services/gaap/data_source_tc_gaap_layer7_listeners_test.go similarity index 88% rename from tencentcloud/data_source_tc_gaap_layer7_listeners_test.go rename to tencentcloud/services/gaap/data_source_tc_gaap_layer7_listeners_test.go index e4ff10b2ed..8d98acf815 100644 --- a/tencentcloud/data_source_tc_gaap_layer7_listeners_test.go +++ b/tencentcloud/services/gaap/data_source_tc_gaap_layer7_listeners_test.go @@ -1,23 +1,25 @@ -package tencentcloud +package gaap_test import ( "fmt" "regexp" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccDataSourceTencentCloudGaapLayer7Listeners_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapLayer7ListenersListenerId, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.listenerId"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.listenerId"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer7_listeners.listenerId", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer7_listeners.listenerId", "listeners.0.protocol", "HTTP"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer7_listeners.listenerId", "listeners.0.id"), @@ -31,7 +33,7 @@ func TestAccDataSourceTencentCloudGaapLayer7Listeners_basic(t *testing.T) { { Config: TestAccDataSourceTencentCloudGaapLayer7ListenersListenerName, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.listenerName"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.listenerName"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer7_listeners.listenerName", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer7_listeners.listenerName", "listeners.0.protocol", "HTTP"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer7_listeners.listenerName", "listeners.0.id"), @@ -45,7 +47,7 @@ func TestAccDataSourceTencentCloudGaapLayer7Listeners_basic(t *testing.T) { { Config: TestAccDataSourceTencentCloudGaapLayer7ListenersPort, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.port"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.port"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer7_listeners.port", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer7_listeners.port", "listeners.0.protocol", "HTTP"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer7_listeners.port", "listeners.0.id"), @@ -62,13 +64,13 @@ func TestAccDataSourceTencentCloudGaapLayer7Listeners_basic(t *testing.T) { func TestAccDataSourceTencentCloudGaapLayer7Listeners_https(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: TestAccDataSourceTencentCloudGaapLayer7ListenersHttpsListenerId, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.listenerId"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.listenerId"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer7_listeners.listenerId", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer7_listeners.listenerId", "listeners.0.protocol", "HTTPS"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer7_listeners.listenerId", "listeners.0.id"), @@ -85,7 +87,7 @@ func TestAccDataSourceTencentCloudGaapLayer7Listeners_https(t *testing.T) { { Config: TestAccDataSourceTencentCloudGaapLayer7ListenersHttpsListenerName, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.name"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.name"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer7_listeners.name", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer7_listeners.name", "listeners.0.protocol", "HTTPS"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer7_listeners.name", "listeners.0.id"), @@ -102,7 +104,7 @@ func TestAccDataSourceTencentCloudGaapLayer7Listeners_https(t *testing.T) { { Config: TestAccDataSourceTencentCloudGaapLayer7ListenersHttpsPort, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.port"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_gaap_layer7_listeners.port"), resource.TestMatchResourceAttr("data.tencentcloud_gaap_layer7_listeners.port", "listeners.#", regexp.MustCompile(`^[1-9]\d*$`)), resource.TestCheckResourceAttr("data.tencentcloud_gaap_layer7_listeners.port", "listeners.0.protocol", "HTTPS"), resource.TestCheckResourceAttrSet("data.tencentcloud_gaap_layer7_listeners.port", "listeners.0.id"), @@ -132,7 +134,7 @@ data tencentcloud_gaap_layer7_listeners "listenerId" { protocol = "HTTP" listener_id = tencentcloud_gaap_layer7_listener.foo.id } -`, defaultGaapProxyId) +`, tcacctest.DefaultGaapProxyId) var TestAccDataSourceTencentCloudGaapLayer7ListenersListenerName = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -147,7 +149,7 @@ data tencentcloud_gaap_layer7_listeners "listenerName" { proxy_id = "%s" listener_name = tencentcloud_gaap_layer7_listener.foo.name } -`, defaultGaapProxyId, defaultGaapProxyId) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapProxyId) var TestAccDataSourceTencentCloudGaapLayer7ListenersPort = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -162,7 +164,7 @@ data tencentcloud_gaap_layer7_listeners "port" { proxy_id = "%s" port = tencentcloud_gaap_layer7_listener.foo.port } -`, defaultGaapProxyId, defaultGaapProxyId) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapProxyId) var TestAccDataSourceTencentCloudGaapLayer7ListenersHttpsListenerId = fmt.Sprintf(` resource tencentcloud_gaap_certificate "foo" { @@ -186,7 +188,7 @@ data tencentcloud_gaap_layer7_listeners "listenerId" { proxy_id = "%s" listener_id = tencentcloud_gaap_layer7_listener.foo.id } -`, "< 0 { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} - resourceName := BuildTagResourceName("gaap", "domain", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("gaap", "domain", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err } @@ -130,16 +133,16 @@ func resourceTencentCloudGaapGlobalDomainCreate(d *schema.ResourceData, meta int } func resourceTencentCloudGaapGlobalDomainRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_global_domain.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_global_domain.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -182,7 +185,7 @@ func resourceTencentCloudGaapGlobalDomainRead(d *schema.ResourceData, meta inter } } - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "gaap", "domain", tcClient.Region, d.Id()) if err != nil { @@ -195,15 +198,15 @@ func resourceTencentCloudGaapGlobalDomainRead(d *schema.ResourceData, meta inter } func resourceTencentCloudGaapGlobalDomainUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_global_domain.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_global_domain.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request := gaap.NewModifyGlobalDomainAttributeRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -239,10 +242,10 @@ func resourceTencentCloudGaapGlobalDomainUpdate(d *schema.ResourceData, meta int } } if isAttributeChange { - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseGaapClient().ModifyGlobalDomainAttribute(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseGaapClient().ModifyGlobalDomainAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -258,9 +261,9 @@ func resourceTencentCloudGaapGlobalDomainUpdate(d *schema.ResourceData, meta int oldValue, newValue := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{})) - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} - resourceName := BuildTagResourceName("gaap", "domain", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("gaap", "domain", tcClient.Region, d.Id()) err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags) if err != nil { return err @@ -270,13 +273,13 @@ func resourceTencentCloudGaapGlobalDomainUpdate(d *schema.ResourceData, meta int if d.HasChange("status") { if v, ok := d.GetOk("status"); ok { status := v.(string) - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if status == GLOBAL_DOMAIN_STATUS_OPEN { if err := service.EnableGlobalDomain(ctx, domainId); err != nil { return err } - conf := BuildStateChangeConf([]string{}, []string{"0"}, 1*readRetryTimeout, time.Second, service.DomainInstanceStateRefreshFunc(domainId, projectId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"0"}, 1*tccommon.ReadRetryTimeout, time.Second, service.DomainInstanceStateRefreshFunc(domainId, projectId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -286,7 +289,7 @@ func resourceTencentCloudGaapGlobalDomainUpdate(d *schema.ResourceData, meta int return err } - conf := BuildStateChangeConf([]string{}, []string{"1"}, 1*readRetryTimeout, time.Second, service.DomainInstanceStateRefreshFunc(domainId, projectId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 1*tccommon.ReadRetryTimeout, time.Second, service.DomainInstanceStateRefreshFunc(domainId, projectId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -298,14 +301,14 @@ func resourceTencentCloudGaapGlobalDomainUpdate(d *schema.ResourceData, meta int } func resourceTencentCloudGaapGlobalDomainDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_global_domain.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_global_domain.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -324,7 +327,7 @@ func resourceTencentCloudGaapGlobalDomainDelete(d *schema.ResourceData, meta int if err := service.DisableGlobalDomain(ctx, domainId); err != nil { return err } - conf := BuildStateChangeConf([]string{}, []string{"1"}, 1*readRetryTimeout, time.Second, service.DomainInstanceStateRefreshFunc(domainId, projectId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 1*tccommon.ReadRetryTimeout, time.Second, service.DomainInstanceStateRefreshFunc(domainId, projectId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } diff --git a/tencentcloud/resource_tc_gaap_global_domain_dns.go b/tencentcloud/services/gaap/resource_tc_gaap_global_domain_dns.go similarity index 72% rename from tencentcloud/resource_tc_gaap_global_domain_dns.go rename to tencentcloud/services/gaap/resource_tc_gaap_global_domain_dns.go index 56bd2d7d55..4aa9c96f23 100644 --- a/tencentcloud/resource_tc_gaap_global_domain_dns.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_global_domain_dns.go @@ -1,4 +1,4 @@ -package tencentcloud +package gaap import ( "context" @@ -8,13 +8,16 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudGaapGlobalDomainDns() *schema.Resource { +func ResourceTencentCloudGaapGlobalDomainDns() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudGaapGlobalDomainDnsCreate, Read: resourceTencentCloudGaapGlobalDomainDnsRead, @@ -52,11 +55,11 @@ func resourceTencentCloudGaapGlobalDomainDns() *schema.Resource { } func resourceTencentCloudGaapGlobalDomainDnsCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_global_domain_dns.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_global_domain_dns.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = gaap.NewCreateGlobalDomainDnsRequest() @@ -87,10 +90,10 @@ func resourceTencentCloudGaapGlobalDomainDnsCreate(d *schema.ResourceData, meta request.NationCountryInnerCodes = helper.Strings(nationCountryInnerCodeList) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseGaapClient().CreateGlobalDomainDns(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseGaapClient().CreateGlobalDomainDns(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -101,7 +104,7 @@ func resourceTencentCloudGaapGlobalDomainDnsCreate(d *schema.ResourceData, meta return err } - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} parmas := map[string]interface{}{ "AccessList": proxyIdList, "CountryAreaList": nationCountryInnerCodeList, @@ -112,26 +115,26 @@ func resourceTencentCloudGaapGlobalDomainDnsCreate(d *schema.ResourceData, meta } dnsRecordId := strconv.Itoa(int(*globalDomainDns.DnsRecordId)) - conf := BuildStateChangeConf([]string{}, []string{"1"}, 1*readRetryTimeout, time.Second, service.GlobalDomainDnsStateRefreshFunc(domainId, int(*globalDomainDns.DnsRecordId), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 1*tccommon.ReadRetryTimeout, time.Second, service.GlobalDomainDnsStateRefreshFunc(domainId, int(*globalDomainDns.DnsRecordId), []string{})) if _, e := conf.WaitForState(); e != nil { return e } - d.SetId(domainId + FILED_SP + dnsRecordId) + d.SetId(domainId + tccommon.FILED_SP + dnsRecordId) return resourceTencentCloudGaapGlobalDomainDnsRead(d, meta) } func resourceTencentCloudGaapGlobalDomainDnsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_global_domain_dns.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_global_domain_dns.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -173,14 +176,14 @@ func resourceTencentCloudGaapGlobalDomainDnsRead(d *schema.ResourceData, meta in } func resourceTencentCloudGaapGlobalDomainDnsUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_global_domain_dns.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_global_domain_dns.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := gaap.NewModifyGlobalDomainDnsRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -220,10 +223,10 @@ func resourceTencentCloudGaapGlobalDomainDnsUpdate(d *schema.ResourceData, meta } } - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseGaapClient().ModifyGlobalDomainDns(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseGaapClient().ModifyGlobalDomainDns(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -234,8 +237,8 @@ func resourceTencentCloudGaapGlobalDomainDnsUpdate(d *schema.ResourceData, meta return err } - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} - conf := BuildStateChangeConf([]string{}, []string{"1"}, 1*readRetryTimeout, time.Second, service.GlobalDomainDnsStateRefreshFunc(domainId, dnsRecordIdInt, []string{})) + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + conf := tccommon.BuildStateChangeConf([]string{}, []string{"1"}, 1*tccommon.ReadRetryTimeout, time.Second, service.GlobalDomainDnsStateRefreshFunc(domainId, dnsRecordIdInt, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -244,14 +247,14 @@ func resourceTencentCloudGaapGlobalDomainDnsUpdate(d *schema.ResourceData, meta } func resourceTencentCloudGaapGlobalDomainDnsDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_global_domain_dns.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_global_domain_dns.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := GaapService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := GaapService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_gaap_global_domain_dns_test.go b/tencentcloud/services/gaap/resource_tc_gaap_global_domain_dns_test.go similarity index 89% rename from tencentcloud/resource_tc_gaap_global_domain_dns_test.go rename to tencentcloud/services/gaap/resource_tc_gaap_global_domain_dns_test.go index 8cd8e0fe3d..a171d0609f 100644 --- a/tencentcloud/resource_tc_gaap_global_domain_dns_test.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_global_domain_dns_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapGlobalDomainDnsResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapGlobalDomainDns, diff --git a/tencentcloud/resource_tc_gaap_global_domain_test.go b/tencentcloud/services/gaap/resource_tc_gaap_global_domain_test.go similarity index 90% rename from tencentcloud/resource_tc_gaap_global_domain_test.go rename to tencentcloud/services/gaap/resource_tc_gaap_global_domain_test.go index 02de9215fb..89d6340463 100644 --- a/tencentcloud/resource_tc_gaap_global_domain_test.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_global_domain_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package gaap_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudGaapGlobalDomainResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccGaapGlobalDomain, diff --git a/tencentcloud/resource_tc_gaap_http_domain.go b/tencentcloud/services/gaap/resource_tc_gaap_http_domain.go similarity index 92% rename from tencentcloud/resource_tc_gaap_http_domain.go rename to tencentcloud/services/gaap/resource_tc_gaap_http_domain.go index fbaf4aaeaf..393909ae86 100644 --- a/tencentcloud/resource_tc_gaap_http_domain.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_http_domain.go @@ -1,4 +1,4 @@ -package tencentcloud +package gaap import ( "context" @@ -7,11 +7,14 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudGaapHttpDomain() *schema.Resource { +func ResourceTencentCloudGaapHttpDomain() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudGaapHttpDomainCreate, Read: resourceTencentCloudGaapHttpDomainRead, @@ -115,17 +118,17 @@ func resourceTencentCloudGaapHttpDomain() *schema.Resource { } func resourceTencentCloudGaapHttpDomainCreate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_http_domain.create")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_http_domain.create")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) listenerId := d.Get("listener_id").(string) domain := d.Get("domain").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( protocol string @@ -264,11 +267,11 @@ func resourceTencentCloudGaapHttpDomainCreate(d *schema.ResourceData, m interfac } func resourceTencentCloudGaapHttpDomainRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_http_domain.read")() - defer inconsistentCheck(d, m)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_http_domain.read")() + defer tccommon.InconsistentCheck(d, m)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() var ( @@ -285,7 +288,7 @@ func resourceTencentCloudGaapHttpDomainRead(d *schema.ResourceData, m interface{ listenerId, _, domain = split[0], split[1], split[2] - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} httpDomain, err := service.DescribeDomain(ctx, listenerId, domain) if err != nil { @@ -352,12 +355,12 @@ func resourceTencentCloudGaapHttpDomainRead(d *schema.ResourceData, m interface{ } func resourceTencentCloudGaapHttpDomainUpdate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_http_domain.update")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_http_domain.update")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() var ( @@ -373,7 +376,7 @@ func resourceTencentCloudGaapHttpDomainUpdate(d *schema.ResourceData, m interfac } listenerId, protocol, domain = split[0], split[1], split[2] - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} switch protocol { case "HTTP": @@ -573,12 +576,12 @@ func resourceTencentCloudGaapHttpDomainUpdate(d *schema.ResourceData, m interfac } func resourceTencentCloudGaapHttpDomainDelete(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_http_domain.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_http_domain.delete")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() var ( @@ -594,7 +597,7 @@ func resourceTencentCloudGaapHttpDomainDelete(d *schema.ResourceData, m interfac listenerId, domain = split[0], split[2] - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} return service.DeleteDomain(ctx, listenerId, domain) } diff --git a/tencentcloud/resource_tc_gaap_http_domain_test.go b/tencentcloud/services/gaap/resource_tc_gaap_http_domain_test.go similarity index 92% rename from tencentcloud/resource_tc_gaap_http_domain_test.go rename to tencentcloud/services/gaap/resource_tc_gaap_http_domain_test.go index c77c51e973..db974055aa 100644 --- a/tencentcloud/resource_tc_gaap_http_domain_test.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_http_domain_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package gaap_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcgaap "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/gaap" + "context" "errors" "fmt" @@ -16,8 +20,8 @@ func TestAccTencentCloudGaapHttpDomainResource_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpDomainDestroy(id), Steps: []resource.TestStep{ { @@ -54,8 +58,8 @@ func TestAccTencentCloudGaapHttpDomainResource_https_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpDomainDestroy(id), Steps: []resource.TestStep{ { @@ -92,8 +96,8 @@ func TestAccTencentCloudGaapHttpDomainResource_httpsMutualAuthentication(t *test id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpDomainDestroy(id), Steps: []resource.TestStep{ { @@ -133,8 +137,8 @@ func TestAccTencentCloudGaapHttpDomainResource_httpsPolyClientCertificateIds(t * id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpDomainDestroy(id), Steps: []resource.TestStep{ { @@ -167,8 +171,8 @@ func TestAccTencentCloudGaapHttpDomainResource_httpsCCIdToPolyIds(t *testing.T) id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpDomainDestroy(id), Steps: []resource.TestStep{ { @@ -202,8 +206,8 @@ func TestAccTencentCloudGaapHttpDomainResource_httpsRealserverCertificateIdOldTo id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpDomainDestroy(id), Steps: []resource.TestStep{ { @@ -244,8 +248,8 @@ func TestAccTencentCloudGaapHttpDomainResource_httpsRealserverCertificateIds(t * id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpDomainDestroy(id), Steps: []resource.TestStep{ { @@ -296,7 +300,7 @@ func testAccCheckGaapHttpDomainExists(n string, id *string) resource.TestCheckFu split := strings.Split(rs.Primary.ID, "+") listenerId, domain := split[0], split[2] - service := GaapService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcgaap.NewGaapService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) httpDomain, err := service.DescribeDomain(context.TODO(), listenerId, domain) if err != nil { @@ -315,8 +319,8 @@ func testAccCheckGaapHttpDomainExists(n string, id *string) resource.TestCheckFu func testAccCheckGaapHttpDomainDestroy(id *string) resource.TestCheckFunc { return func(s *terraform.State) error { - client := testAccProvider.Meta().(*TencentCloudClient).apiV3Conn - service := GaapService{client: client} + client := tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn() + service := svcgaap.NewGaapService(client) if *id == "" { return errors.New("domain id is nil") @@ -350,7 +354,7 @@ resource tencentcloud_gaap_http_domain "foo" { listener_id = tencentcloud_gaap_layer7_listener.foo.id domain = "www.qq.com" } -`, defaultGaapProxyId) +`, tcacctest.DefaultGaapProxyId) var testAccGaapHttpDomainBasicUpdateDomain = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -364,7 +368,7 @@ resource tencentcloud_gaap_http_domain "foo" { listener_id = tencentcloud_gaap_layer7_listener.foo.id domain = "t.qq.com" } -`, defaultGaapProxyId) +`, tcacctest.DefaultGaapProxyId) var testAccGaapHttpDomainHttps = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -382,7 +386,7 @@ resource tencentcloud_gaap_http_domain "foo" { domain = "zhyu-10.elementtest.org" } -`, defaultGaapProxyId, defaultHttpsDomainCertificateId) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultHttpsDomainCertificateId) var testAccGaapHttpDomainHttpsUpdateDomain = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -400,7 +404,7 @@ resource tencentcloud_gaap_http_domain "foo" { domain = "zhyu-9.elementtest.org" } -`, defaultGaapProxyId, defaultHttpsDomainCertificateId) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultHttpsDomainCertificateId) var testAccGaapHttpDomainHttpsMutualAuthentication = fmt.Sprintf(` resource tencentcloud_gaap_certificate "bar" { @@ -425,7 +429,7 @@ resource tencentcloud_gaap_http_domain "foo" { domain = "zhyu-10.elementtest.org" } -`, "< 0 { return } - return validateStringPrefix("/")(v, k) + return tccommon.ValidateStringPrefix("/")(v, k) }, Description: "Path of the forward rule. Maximum length is 80.", }, "realserver_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue([]string{"IP", "DOMAIN"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"IP", "DOMAIN"}), ForceNew: true, Description: "Type of the realserver. Valid value: `IP` and `DOMAIN`.", }, @@ -57,7 +60,7 @@ func resourceTencentCloudGaapHttpRule() *schema.Resource { Type: schema.TypeString, Optional: true, Default: "rr", - ValidateFunc: validateAllowedStringValue([]string{"rr", "wrr", "lc"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"rr", "wrr", "lc"}), Description: "Scheduling policy of the forward rule, default value is `rr`. Valid value: `rr`, `wrr` and `lc`.", }, "health_check": { @@ -69,14 +72,14 @@ func resourceTencentCloudGaapHttpRule() *schema.Resource { Type: schema.TypeInt, Optional: true, Default: 5, - ValidateFunc: validateIntegerInRange(5, 300), + ValidateFunc: tccommon.ValidateIntegerInRange(5, 300), Description: "Interval of the health check, default value is 5s.", }, "connect_timeout": { Type: schema.TypeInt, Optional: true, Default: 2, - ValidateFunc: validateIntegerInRange(2, 60), + ValidateFunc: tccommon.ValidateIntegerInRange(2, 60), Description: "Timeout of the health check response, default value is 2s.", }, "health_check_path": { @@ -84,12 +87,12 @@ func resourceTencentCloudGaapHttpRule() *schema.Resource { Optional: true, Default: "/", ValidateFunc: func(v interface{}, k string) (ws []string, errs []error) { - _, errs = validateStringLengthInRange(1, 80)(v, k) + _, errs = tccommon.ValidateStringLengthInRange(1, 80)(v, k) if len(errs) > 0 { return } - return validateStringPrefix("/")(v, k) + return tccommon.ValidateStringPrefix("/")(v, k) }, Description: "Path of health check. Maximum length is 80.", }, @@ -97,7 +100,7 @@ func resourceTencentCloudGaapHttpRule() *schema.Resource { Type: schema.TypeString, Optional: true, Default: http.MethodHead, - ValidateFunc: validateAllowedStringValue([]string{http.MethodGet, http.MethodHead}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{http.MethodGet, http.MethodHead}), Description: "Method of the health check. Valid value: `GET` and `HEAD`.", }, "health_check_status_codes": { @@ -132,14 +135,14 @@ func resourceTencentCloudGaapHttpRule() *schema.Resource { "port": { Type: schema.TypeInt, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "Port of the GAAP realserver.", }, "weight": { Type: schema.TypeInt, Optional: true, Default: 1, - ValidateFunc: validateIntegerInRange(1, 100), + ValidateFunc: tccommon.ValidateIntegerInRange(1, 100), Description: "Scheduling weight, default value is `1`. Valid value ranges: (1~100).", }, }, @@ -155,7 +158,7 @@ func resourceTencentCloudGaapHttpRule() *schema.Resource { Type: schema.TypeString, Optional: true, Computed: true, - ValidateFunc: validateAllowedStringValue([]string{GAAP_SERVER_NAME_INDICATION_SWITCH_ON, GAAP_SERVER_NAME_INDICATION_SWITCH_OFF}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{GAAP_SERVER_NAME_INDICATION_SWITCH_ON, GAAP_SERVER_NAME_INDICATION_SWITCH_OFF}), Description: "ServerNameIndication (SNI) switch. ON means on and OFF means off.", }, "sni": { @@ -169,12 +172,12 @@ func resourceTencentCloudGaapHttpRule() *schema.Resource { } func resourceTencentCloudGaapHttpRuleCreate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_http_rule.create")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_http_rule.create")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) listenerId := d.Get("listener_id").(string) @@ -220,7 +223,7 @@ func resourceTencentCloudGaapHttpRuleCreate(d *schema.ResourceData, m interface{ if rule.serverNameIndicationSwitch == GAAP_SERVER_NAME_INDICATION_SWITCH_ON && rule.serverNameIndication == "" { return fmt.Errorf("ServerNameIndication (SNI) is required when the SNI switch is turned on.") } - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} id, err := service.CreateHttpRule(ctx, rule) if err != nil { @@ -252,13 +255,13 @@ func resourceTencentCloudGaapHttpRuleCreate(d *schema.ResourceData, m interface{ } func resourceTencentCloudGaapHttpRuleRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_http_rule.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_gaap_http_rule.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} rule, err := service.DescribeHttpRule(ctx, id) if err != nil { @@ -309,12 +312,12 @@ func resourceTencentCloudGaapHttpRuleRead(d *schema.ResourceData, m interface{}) } func resourceTencentCloudGaapHttpRuleUpdate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_http_rule.update")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_http_rule.update")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() listenerId := d.Get("listener_id").(string) @@ -382,7 +385,7 @@ func resourceTencentCloudGaapHttpRuleUpdate(d *schema.ResourceData, m interface{ } } - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} d.Partial(true) @@ -415,17 +418,17 @@ func resourceTencentCloudGaapHttpRuleUpdate(d *schema.ResourceData, m interface{ } func resourceTencentCloudGaapHttpRuleDelete(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_http_rule.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_http_rule.delete")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() listenerId := d.Get("listener_id").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} return service.DeleteHttpRule(ctx, listenerId, id) } diff --git a/tencentcloud/resource_tc_gaap_http_rule_test.go b/tencentcloud/services/gaap/resource_tc_gaap_http_rule_test.go similarity index 88% rename from tencentcloud/resource_tc_gaap_http_rule_test.go rename to tencentcloud/services/gaap/resource_tc_gaap_http_rule_test.go index 601d44fd33..16ba717c8c 100644 --- a/tencentcloud/resource_tc_gaap_http_rule_test.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_http_rule_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package gaap_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcgaap "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/gaap" + "context" "errors" "fmt" @@ -15,8 +19,8 @@ func TestAccTencentCloudGaapHttpRule_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpRuleDestroy(id), Steps: []resource.TestStep{ { @@ -52,8 +56,8 @@ func TestAccTencentCloudGaapHttpRule_httpUpdate_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpRuleDestroy(id), Steps: []resource.TestStep{ { @@ -113,8 +117,8 @@ func TestAccTencentCloudGaapHttpRule_httpUpdateRealservers(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpRuleDestroy(id), Steps: []resource.TestStep{ { @@ -151,8 +155,8 @@ func TestAccTencentCloudGaapHttpRule_noHealth(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpRuleDestroy(id), Steps: []resource.TestStep{ { @@ -181,8 +185,8 @@ func TestAccTencentCloudGaapHttpRule_domainRealserver(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpRuleDestroy(id), Steps: []resource.TestStep{ { @@ -214,8 +218,8 @@ func TestAccTencentCloudGaapHttpRule_noRealserver(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpRuleDestroy(id), Steps: []resource.TestStep{ { @@ -251,8 +255,8 @@ func TestAccTencentCloudGaapHttpRule_deleteRealserver(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapHttpRuleDestroy(id), Steps: []resource.TestStep{ { @@ -301,7 +305,7 @@ func testAccCheckGaapHttpRuleExists(n string, id *string) resource.TestCheckFunc return errors.New("no http rule id is set") } - service := GaapService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcgaap.NewGaapService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rule, err := service.DescribeHttpRule(context.TODO(), rs.Primary.ID) if err != nil { @@ -320,8 +324,8 @@ func testAccCheckGaapHttpRuleExists(n string, id *string) resource.TestCheckFunc func testAccCheckGaapHttpRuleDestroy(id *string) resource.TestCheckFunc { return func(s *terraform.State) error { - client := testAccProvider.Meta().(*TencentCloudClient).apiV3Conn - service := GaapService{client: client} + client := tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn() + service := svcgaap.NewGaapService(client) if *id == "" { return errors.New("http rule id is nil") @@ -375,7 +379,7 @@ resource tencentcloud_gaap_http_rule "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapHttpRuleBasic1 = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -412,7 +416,7 @@ resource tencentcloud_gaap_http_rule "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapHttpRuleUpdate = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -451,7 +455,7 @@ resource tencentcloud_gaap_http_rule "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapHttpRuleUpdateDisableHealth = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -489,7 +493,7 @@ resource tencentcloud_gaap_http_rule "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapHttpRuleUpdateForwardHost = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -529,7 +533,7 @@ resource tencentcloud_gaap_http_rule "foo" { forward_host = "www.qqq.com" } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapHttpRuleBasic2 = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -566,7 +570,7 @@ resource tencentcloud_gaap_http_rule "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapHttpRuleBasic3 = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -603,7 +607,7 @@ resource tencentcloud_gaap_http_rule "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapHttpRuleHttpUpdateRealservers = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -635,7 +639,7 @@ resource tencentcloud_gaap_http_rule "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1) var testAccGaapHttpRuleNoHealth = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -669,7 +673,7 @@ resource tencentcloud_gaap_http_rule "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapHttpRuleDomainRealserver = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -703,7 +707,7 @@ resource tencentcloud_gaap_http_rule "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverDomainId1, defaultGaapRealserverDomain1, defaultGaapRealserverDomainId2, defaultGaapRealserverDomain2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverDomainId1, tcacctest.DefaultGaapRealserverDomain1, tcacctest.DefaultGaapRealserverDomainId2, tcacctest.DefaultGaapRealserverDomain2) var testAccGaapHttpRuleNoRealserver = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -728,7 +732,7 @@ resource tencentcloud_gaap_http_rule "foo" { health_check_method = "GET" health_check_status_codes = [200] } -`, defaultGaapProxyId) +`, tcacctest.DefaultGaapProxyId) var testAccGaapHttpRuleNoRealserver2 = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -753,4 +757,4 @@ resource tencentcloud_gaap_http_rule "foo" { health_check_method = "GET" health_check_status_codes = [200] } -`, defaultGaapProxyId) +`, tcacctest.DefaultGaapProxyId) diff --git a/tencentcloud/resource_tc_gaap_layer4_listener.go b/tencentcloud/services/gaap/resource_tc_gaap_layer4_listener.go similarity index 86% rename from tencentcloud/resource_tc_gaap_layer4_listener.go rename to tencentcloud/services/gaap/resource_tc_gaap_layer4_listener.go index 6bfe4d755b..98dff02ee1 100644 --- a/tencentcloud/resource_tc_gaap_layer4_listener.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_layer4_listener.go @@ -1,15 +1,18 @@ -package tencentcloud +package gaap import ( "context" "errors" "fmt" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudGaapLayer4Listener() *schema.Resource { +func ResourceTencentCloudGaapLayer4Listener() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudGaapLayer4ListenerCreate, Read: resourceTencentCloudGaapLayer4ListenerRead, @@ -23,20 +26,20 @@ func resourceTencentCloudGaapLayer4Listener() *schema.Resource { "protocol": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue([]string{"TCP", "UDP"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"TCP", "UDP"}), ForceNew: true, Description: "Protocol of the layer4 listener. Valid value: `TCP` and `UDP`.", }, "name": { Type: schema.TypeString, Required: true, - ValidateFunc: validateStringLengthInRange(1, 30), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 30), Description: "Name of the layer4 listener, the maximum length is 30.", }, "port": { Type: schema.TypeInt, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, ForceNew: true, Description: "Port of the layer4 listener.", }, @@ -44,13 +47,13 @@ func resourceTencentCloudGaapLayer4Listener() *schema.Resource { Type: schema.TypeString, Optional: true, Default: "rr", - ValidateFunc: validateAllowedStringValue([]string{"rr", "wrr", "lc"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"rr", "wrr", "lc"}), Description: "Scheduling policy of the layer4 listener, default value is `rr`. Valid value: `rr`, `wrr` and `lc`.", }, "realserver_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue([]string{"IP", "DOMAIN"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"IP", "DOMAIN"}), ForceNew: true, Description: "Type of the realserver. Valid value: `IP` and `DOMAIN`. NOTES: when the `protocol` is specified as `TCP` and the `scheduler` is specified as `wrr`, the item can only be set to `IP`.", }, @@ -70,14 +73,14 @@ func resourceTencentCloudGaapLayer4Listener() *schema.Resource { Type: schema.TypeInt, Optional: true, Default: 5, - ValidateFunc: validateIntegerInRange(5, 300), + ValidateFunc: tccommon.ValidateIntegerInRange(5, 300), Description: "Interval of the health check, default value is 5s. NOTES: Only supports listeners of `TCP` protocol.", }, "connect_timeout": { Type: schema.TypeInt, Optional: true, Default: 2, - ValidateFunc: validateIntegerInRange(2, 60), + ValidateFunc: tccommon.ValidateIntegerInRange(2, 60), Description: "Timeout of the health check response, should less than interval, default value is 2s. NOTES: Only supports listeners of `TCP` protocol and require less than `interval`.", }, "client_ip_method": { @@ -85,7 +88,7 @@ func resourceTencentCloudGaapLayer4Listener() *schema.Resource { Optional: true, ForceNew: true, Default: 0, - ValidateFunc: validateAllowedIntValue([]int{0, 1}), + ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}), Description: "The way the listener gets the client IP, 0 for TOA, 1 for Proxy Protocol, default value is 0. NOTES: Only supports listeners of `TCP` protocol.", }, "realserver_bind_set": { @@ -111,14 +114,14 @@ func resourceTencentCloudGaapLayer4Listener() *schema.Resource { "port": { Type: schema.TypeInt, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, Description: "Port of the GAAP realserver.", }, "weight": { Type: schema.TypeInt, Optional: true, Default: 1, - ValidateFunc: validateIntegerInRange(1, 100), + ValidateFunc: tccommon.ValidateIntegerInRange(1, 100), Description: "Scheduling weight, default value is `1`. The range of values is [1,100].", }, }, @@ -141,12 +144,12 @@ func resourceTencentCloudGaapLayer4Listener() *schema.Resource { } func resourceTencentCloudGaapLayer4ListenerCreate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_layer4_listener.create")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_layer4_listener.create")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) protocol := d.Get("protocol").(string) name := d.Get("name").(string) @@ -199,7 +202,7 @@ func resourceTencentCloudGaapLayer4ListenerCreate(d *schema.ResourceData, m inte err error ) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} switch protocol { case "TCP": @@ -227,11 +230,11 @@ func resourceTencentCloudGaapLayer4ListenerCreate(d *schema.ResourceData, m inte } func resourceTencentCloudGaapLayer4ListenerRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_layer4_listener.read")() - defer inconsistentCheck(d, m)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_layer4_listener.read")() + defer tccommon.InconsistentCheck(d, m)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() @@ -251,7 +254,7 @@ func resourceTencentCloudGaapLayer4ListenerRead(d *schema.ResourceData, m interf proxyId *string ) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} tcpListeners, err := service.DescribeTCPListeners(ctx, nil, &id, nil, nil) if err != nil { @@ -360,12 +363,12 @@ func resourceTencentCloudGaapLayer4ListenerRead(d *schema.ResourceData, m interf } func resourceTencentCloudGaapLayer4ListenerUpdate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_layer4_listener.update")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_layer4_listener.update")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() protocol := d.Get("protocol").(string) @@ -379,7 +382,7 @@ func resourceTencentCloudGaapLayer4ListenerUpdate(d *schema.ResourceData, m inte attrChange []string ) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} d.Partial(true) @@ -455,18 +458,18 @@ func resourceTencentCloudGaapLayer4ListenerUpdate(d *schema.ResourceData, m inte } func resourceTencentCloudGaapLayer4ListenerDelete(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_layer4_listener.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_layer4_listener.delete")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() protocol := d.Get("protocol").(string) proxyId := d.Get("proxy_id").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} return service.DeleteLayer4Listener(ctx, id, proxyId, protocol) } diff --git a/tencentcloud/resource_tc_gaap_layer4_listener_test.go b/tencentcloud/services/gaap/resource_tc_gaap_layer4_listener_test.go similarity index 83% rename from tencentcloud/resource_tc_gaap_layer4_listener_test.go rename to tencentcloud/services/gaap/resource_tc_gaap_layer4_listener_test.go index 0657c4812d..f5c5912efb 100644 --- a/tencentcloud/resource_tc_gaap_layer4_listener_test.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_layer4_listener_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package gaap_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcgaap "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/gaap" + "context" "errors" "fmt" @@ -18,15 +22,15 @@ func init() { resource.AddTestSweepers("tencentcloud_gaap_layer4_listener", &resource.Sweeper{ Name: "tencentcloud_gaap_layer4_listener", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - sharedClient, err := sharedClientForRegion(r) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + sharedClient, err := tcacctest.SharedClientForRegion(r) if err != nil { return fmt.Errorf("getting tencentcloud client error: %s", err.Error()) } - client := sharedClient.(*TencentCloudClient) - service := GaapService{client: client.apiV3Conn} - proxyIds := []string{defaultGaapProxyId, defaultGaapProxyId2} + client := sharedClient.(tccommon.ProviderMeta) + service := svcgaap.NewGaapService(client.GetAPIV3Conn()) + proxyIds := []string{tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapProxyId2} for _, proxyId := range proxyIds { proxyIdTmp := proxyId tcpListeners, err := service.DescribeTCPListeners(ctx, &proxyIdTmp, nil, nil, nil) @@ -40,11 +44,11 @@ func init() { createTime := time.Unix(int64(*tcpListener.CreateTime), 0) interval := now.Sub(createTime).Minutes() - if strings.HasPrefix(instanceName, keepResource) || strings.HasPrefix(instanceName, defaultResource) { + if strings.HasPrefix(instanceName, tcacctest.KeepResource) || strings.HasPrefix(instanceName, tcacctest.DefaultResource) { continue } - if needProtect == 1 && int64(interval) < 30 { + if tccommon.NeedProtect == 1 && int64(interval) < 30 { continue } @@ -66,11 +70,11 @@ func init() { createTime := time.Unix(int64(*udpListener.CreateTime), 0) interval := now.Sub(createTime).Minutes() - if strings.HasPrefix(instanceName, keepResource) || strings.HasPrefix(instanceName, defaultResource) { + if strings.HasPrefix(instanceName, tcacctest.KeepResource) || strings.HasPrefix(instanceName, tcacctest.DefaultResource) { continue } - if needProtect == 1 && int64(interval) < 30 { + if tccommon.NeedProtect == 1 && int64(interval) < 30 { continue } @@ -91,8 +95,8 @@ func TestAccTencentCloudGaapLayer4Listener_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer4ListenerDestroy(id, "TCP"), Steps: []resource.TestStep{ { @@ -127,8 +131,8 @@ func TestAccTencentCloudGaapLayer4Listener_TcpDomain(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer4ListenerDestroy(id, "TCP"), Steps: []resource.TestStep{ { @@ -158,8 +162,8 @@ func TestAccTencentCloudGaapLayer4Listener_update(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer4ListenerDestroy(id, "TCP"), Steps: []resource.TestStep{ { @@ -214,8 +218,8 @@ func TestAccTencentCloudGaapLayer4Listener_udp_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer4ListenerDestroy(id, "UDP"), Steps: []resource.TestStep{ { @@ -249,8 +253,8 @@ func TestAccTencentCloudGaapLayer4Listener_udpDomain(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer4ListenerDestroy(id, "UDP"), Steps: []resource.TestStep{ { @@ -279,8 +283,8 @@ func TestAccTencentCloudGaapLayer4Listener_udpUpdate(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer4ListenerDestroy(id, "UDP"), Steps: []resource.TestStep{ { @@ -322,7 +326,7 @@ func testAccCheckGaapLayer4ListenerExists(n string, id *string, protocol string) return errors.New("no listener ID is set") } - service := GaapService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcgaap.NewGaapService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) switch protocol { case "TCP": @@ -368,15 +372,15 @@ func testAccCheckGaapLayer4ListenerExists(n string, id *string, protocol string) func testAccCheckGaapLayer4ListenerDestroy(id *string, protocol string) resource.TestCheckFunc { return func(s *terraform.State) error { - client := testAccProvider.Meta().(*TencentCloudClient).apiV3Conn - service := GaapService{client: client} + client := tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn() + service := svcgaap.NewGaapService(client) switch protocol { case "TCP": listeners, err := service.DescribeTCPListeners(context.TODO(), nil, id, nil, nil) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { - if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") { + if sdkError.Code == svcgaap.GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") { return nil } } @@ -423,7 +427,7 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapLayer4ListenerTcpDomain = fmt.Sprintf(` @@ -447,7 +451,7 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverDomainId1, defaultGaapRealserverDomain1, defaultGaapRealserverDomainId2, defaultGaapRealserverDomain2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverDomainId1, tcacctest.DefaultGaapRealserverDomain1, tcacctest.DefaultGaapRealserverDomainId2, tcacctest.DefaultGaapRealserverDomain2) var testAccGaapLayer4ListenerUpdateBasic = fmt.Sprintf(` @@ -471,7 +475,7 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapLayer4ListenerUpdateNameAndHealthConfigAndScheduler = fmt.Sprintf(` resource tencentcloud_gaap_layer4_listener "foo" { @@ -497,7 +501,7 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapLayer4ListenerUpdateNoHealthCheck = fmt.Sprintf(` resource tencentcloud_gaap_layer4_listener "foo" { @@ -515,7 +519,7 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1) var testAccGaapLayer4ListenerTcpUpdateRealserverSet = fmt.Sprintf(` @@ -534,7 +538,7 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1) var testAccGaapLayer4ListenerUdp = fmt.Sprintf(` resource tencentcloud_gaap_layer4_listener "foo" { @@ -556,7 +560,7 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapLayer4ListenerUdpDomain = fmt.Sprintf(` @@ -579,7 +583,7 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverDomainId1, defaultGaapRealserverDomain1, defaultGaapRealserverDomainId2, defaultGaapRealserverDomain2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverDomainId1, tcacctest.DefaultGaapRealserverDomain1, tcacctest.DefaultGaapRealserverDomainId2, tcacctest.DefaultGaapRealserverDomain2) var testAccGaapLayer4ListenerUdpUpdateBasic = fmt.Sprintf(` resource tencentcloud_gaap_layer4_listener "foo" { @@ -601,7 +605,7 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) var testAccGaapLayer4ListenerUdpUpdate = fmt.Sprintf(` @@ -624,4 +628,4 @@ resource tencentcloud_gaap_layer4_listener "foo" { port = 80 } } -`, defaultGaapProxyId, defaultGaapRealserverIpId1, defaultGaapRealserverIp1, defaultGaapRealserverIpId2, defaultGaapRealserverIp2) +`, tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapRealserverIpId1, tcacctest.DefaultGaapRealserverIp1, tcacctest.DefaultGaapRealserverIpId2, tcacctest.DefaultGaapRealserverIp2) diff --git a/tencentcloud/resource_tc_gaap_layer7_listener.go b/tencentcloud/services/gaap/resource_tc_gaap_layer7_listener.go similarity index 86% rename from tencentcloud/resource_tc_gaap_layer7_listener.go rename to tencentcloud/services/gaap/resource_tc_gaap_layer7_listener.go index 35a006c65d..88f43247fa 100644 --- a/tencentcloud/resource_tc_gaap_layer7_listener.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_layer7_listener.go @@ -1,15 +1,18 @@ -package tencentcloud +package gaap import ( "context" "errors" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudGaapLayer7Listener() *schema.Resource { +func ResourceTencentCloudGaapLayer7Listener() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudGaapLayer7ListenerCreate, Read: resourceTencentCloudGaapLayer7ListenerRead, @@ -23,20 +26,20 @@ func resourceTencentCloudGaapLayer7Listener() *schema.Resource { "protocol": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue([]string{"HTTP", "HTTPS"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"HTTP", "HTTPS"}), ForceNew: true, Description: "Protocol of the layer7 listener. Valid value: `HTTP` and `HTTPS`.", }, "name": { Type: schema.TypeString, Required: true, - ValidateFunc: validateStringLengthInRange(1, 30), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 30), Description: "Name of the layer7 listener, the maximum length is 30.", }, "port": { Type: schema.TypeInt, Required: true, - ValidateFunc: validatePort, + ValidateFunc: tccommon.ValidatePort, ForceNew: true, Description: "Port of the layer7 listener.", }, @@ -55,14 +58,14 @@ func resourceTencentCloudGaapLayer7Listener() *schema.Resource { "forward_protocol": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue([]string{"HTTP", "HTTPS"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"HTTP", "HTTPS"}), ForceNew: true, Description: "Protocol type of the forwarding. Valid value: `HTTP` and `HTTPS`. NOTES: Only supports listeners of `HTTPS` protocol.", }, "auth_type": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateAllowedIntValue([]int{0, 1}), + ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}), ForceNew: true, Description: "Authentication type of the layer7 listener. `0` is one-way authentication and `1` is mutual authentication. NOTES: Only supports listeners of `HTTPS` protocol.", }, @@ -100,19 +103,19 @@ func resourceTencentCloudGaapLayer7Listener() *schema.Resource { } func resourceTencentCloudGaapLayer7ListenerCreate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_layer7_listener.create")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_layer7_listener.create")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) protocol := d.Get("protocol").(string) name := d.Get("name").(string) port := d.Get("port").(int) proxyId := d.Get("proxy_id").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} var ( id string @@ -179,11 +182,11 @@ func resourceTencentCloudGaapLayer7ListenerCreate(d *schema.ResourceData, m inte } func resourceTencentCloudGaapLayer7ListenerRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_layer7_listener.read")() - defer inconsistentCheck(d, m)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_layer7_listener.read")() + defer tccommon.InconsistentCheck(d, m)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() protocol := d.Get("protocol").(string) @@ -200,7 +203,7 @@ func resourceTencentCloudGaapLayer7ListenerRead(d *schema.ResourceData, m interf proxyId *string ) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} LOOP: for { @@ -328,18 +331,18 @@ LOOP: } func resourceTencentCloudGaapLayer7ListenerUpdate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_layer7_listener.update")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_layer7_listener.update")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() protocol := d.Get("protocol").(string) proxyId := d.Get("proxy_id").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} switch protocol { case "HTTP": @@ -388,15 +391,15 @@ func resourceTencentCloudGaapLayer7ListenerUpdate(d *schema.ResourceData, m inte } func resourceTencentCloudGaapLayer7ListenerDelete(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_layer7_listener.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_gaap_layer7_listener.delete")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() proxyId := d.Get("proxy_id").(string) protocol := d.Get("protocol").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} return service.DeleteLayer7Listener(ctx, id, proxyId, protocol) } diff --git a/tencentcloud/resource_tc_gaap_layer7_listener_test.go b/tencentcloud/services/gaap/resource_tc_gaap_layer7_listener_test.go similarity index 88% rename from tencentcloud/resource_tc_gaap_layer7_listener_test.go rename to tencentcloud/services/gaap/resource_tc_gaap_layer7_listener_test.go index a2fcd9a68b..db1228896c 100644 --- a/tencentcloud/resource_tc_gaap_layer7_listener_test.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_layer7_listener_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package gaap_test import ( "context" @@ -8,9 +8,14 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + + svcgaap "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/gaap" ) func init() { @@ -18,15 +23,15 @@ func init() { resource.AddTestSweepers("tencentcloud_gaap_layer7_listener", &resource.Sweeper{ Name: "tencentcloud_gaap_layer7_listener", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - sharedClient, err := sharedClientForRegion(r) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + sharedClient, err := tcacctest.SharedClientForRegion(r) if err != nil { return fmt.Errorf("getting tencentcloud client error: %s", err.Error()) } - client := sharedClient.(*TencentCloudClient) - service := GaapService{client: client.apiV3Conn} - proxyIds := []string{defaultGaapProxyId, defaultGaapProxyId2} + client := sharedClient.(tccommon.ProviderMeta) + service := svcgaap.NewGaapService(client.GetAPIV3Conn()) + proxyIds := []string{tcacctest.DefaultGaapProxyId, tcacctest.DefaultGaapProxyId2} for _, proxyId := range proxyIds { proxyIdTmp := proxyId httpListeners, err := service.DescribeHTTPListeners(ctx, &proxyIdTmp, nil, nil, nil) @@ -40,11 +45,11 @@ func init() { createTime := time.Unix(int64(*httpListener.CreateTime), 0) interval := now.Sub(createTime).Minutes() - if strings.HasPrefix(instanceName, keepResource) || strings.HasPrefix(instanceName, defaultResource) { + if strings.HasPrefix(instanceName, tcacctest.KeepResource) || strings.HasPrefix(instanceName, tcacctest.DefaultResource) { continue } - if needProtect == 1 && int64(interval) < 30 { + if tccommon.NeedProtect == 1 && int64(interval) < 30 { continue } @@ -66,11 +71,11 @@ func init() { createTime := time.Unix(int64(*httpsListener.CreateTime), 0) interval := now.Sub(createTime).Minutes() - if strings.HasPrefix(instanceName, keepResource) || strings.HasPrefix(instanceName, defaultResource) { + if strings.HasPrefix(instanceName, tcacctest.KeepResource) || strings.HasPrefix(instanceName, tcacctest.DefaultResource) { continue } - if needProtect == 1 && int64(interval) < 30 { + if tccommon.NeedProtect == 1 && int64(interval) < 30 { continue } @@ -91,8 +96,8 @@ func TestAccTencentCloudGaapLayer7Listener_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer7ListenerDestroy(id, "HTTP"), Steps: []resource.TestStep{ { @@ -128,8 +133,8 @@ func TestAccTencentCloudGaapLayer7Listener_https_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer7ListenerDestroy(id, "HTTPS"), Steps: []resource.TestStep{ { @@ -169,8 +174,8 @@ func TestAccTencentCloudGaapLayer7Listener_httpsTwoWayAuthentication(t *testing. id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer7ListenerDestroy(id, "HTTPS"), Steps: []resource.TestStep{ { @@ -198,8 +203,8 @@ func TestAccTencentCloudGaapLayer7Listener_httpsForwardHttps(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer7ListenerDestroy(id, "HTTPS"), Steps: []resource.TestStep{ { @@ -226,8 +231,8 @@ func TestAccTencentCloudGaapLayer7Listener_httpsPolyClientCertificateIds(t *test id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer7ListenerDestroy(id, "HTTPS"), Steps: []resource.TestStep{ { @@ -268,8 +273,8 @@ func TestAccTencentCloudGaapLayer7Listener_httpsCcToPoly(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapLayer7ListenerDestroy(id, "HTTPS"), Steps: []resource.TestStep{ { @@ -312,7 +317,7 @@ func testAccCheckGaapLayer7ListenerExists(n string, id *string, protocol string) return errors.New("no listener ID is set") } - service := GaapService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcgaap.NewGaapService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) switch protocol { case "HTTP": @@ -358,15 +363,15 @@ func testAccCheckGaapLayer7ListenerExists(n string, id *string, protocol string) func testAccCheckGaapLayer7ListenerDestroy(id *string, protocol string) resource.TestCheckFunc { return func(s *terraform.State) error { - client := testAccProvider.Meta().(*TencentCloudClient).apiV3Conn - service := GaapService{client: client} + client := tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn() + service := svcgaap.NewGaapService(client) switch protocol { case "HTTP": listeners, err := service.DescribeHTTPListeners(context.TODO(), nil, id, nil, nil) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { - if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") { + if sdkError.Code == svcgaap.GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") { return nil } } @@ -381,7 +386,7 @@ func testAccCheckGaapLayer7ListenerDestroy(id *string, protocol string) resource listeners, err := service.DescribeHTTPSListeners(context.TODO(), nil, id, nil, nil) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { - if sdkError.Code == GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") { + if sdkError.Code == svcgaap.GAAPResourceNotFound || (sdkError.Code == "InvalidParameter" && sdkError.Message == "ListenerId") { return nil } } @@ -404,7 +409,7 @@ resource tencentcloud_gaap_layer7_listener "foo" { port = 8080 proxy_id = "%s" } -`, defaultGaapProxyId) +`, tcacctest.DefaultGaapProxyId) var testAccGaapLayer7ListenerHttpUpdateName = fmt.Sprintf(` resource tencentcloud_gaap_layer7_listener "foo" { @@ -413,7 +418,7 @@ resource tencentcloud_gaap_layer7_listener "foo" { port = 8080 proxy_id = "%s" } -`, defaultGaapProxyId) +`, tcacctest.DefaultGaapProxyId) var testAccGaapLayer7ListenerHttps = fmt.Sprintf(` resource tencentcloud_gaap_certificate "foo" { @@ -432,7 +437,7 @@ resource tencentcloud_gaap_layer7_listener "foo" { auth_type = 0 } -`, "< 0 { - tagClient := m.(*TencentCloudClient).apiV3Conn + tagClient := m.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tagClient} - resourceName := BuildTagResourceName("gaap", "realServer", tagClient.Region, id) + resourceName := tccommon.BuildTagResourceName("gaap", "realServer", tagClient.Region, id) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err } @@ -114,15 +117,15 @@ func resourceTencentCloudGaapRealserverCreate(d *schema.ResourceData, m interfac } func resourceTencentCloudGaapRealserverRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_realserver.read")() - defer inconsistentCheck(d, m)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_realserver.read")() + defer tccommon.InconsistentCheck(d, m)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} realservers, err := service.DescribeRealservers(ctx, nil, nil, nil, -1) if err != nil { @@ -165,7 +168,7 @@ func resourceTencentCloudGaapRealserverRead(d *schema.ResourceData, m interface{ } _ = d.Set("project_id", realserver.ProjectId) - tagClient := m.(*TencentCloudClient).apiV3Conn + tagClient := m.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := TagService{client: tagClient} tags, err := tagService.DescribeResourceTags(ctx, "gaap", "realServer", tagClient.Region, id) if err != nil { @@ -177,9 +180,9 @@ func resourceTencentCloudGaapRealserverRead(d *schema.ResourceData, m interface{ } func resourceTencentCloudGaapRealserverUpdate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_realserver.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_gaap_realserver.update")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() @@ -188,7 +191,7 @@ func resourceTencentCloudGaapRealserverUpdate(d *schema.ResourceData, m interfac if d.HasChange("name") { newName := d.Get("name").(string) - gaapService := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + gaapService := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} if err := gaapService.ModifyRealserverName(ctx, id, newName); err != nil { return err @@ -200,10 +203,10 @@ func resourceTencentCloudGaapRealserverUpdate(d *schema.ResourceData, m interfac oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - tagService := TagService{client: m.(*TencentCloudClient).apiV3Conn} + tagService := TagService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} - region := m.(*TencentCloudClient).apiV3Conn.Region - resourceName := BuildTagResourceName("gaap", "realServer", region, id) + region := m.(tccommon.ProviderMeta).GetAPIV3Conn().Region + resourceName := tccommon.BuildTagResourceName("gaap", "realServer", region, id) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err @@ -217,13 +220,13 @@ func resourceTencentCloudGaapRealserverUpdate(d *schema.ResourceData, m interfac } func resourceTencentCloudGaapRealserverDelete(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_realserver.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_gaap_realserver.delete")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} return service.DeleteRealserver(ctx, id) } diff --git a/tencentcloud/resource_tc_gaap_realserver_test.go b/tencentcloud/services/gaap/resource_tc_gaap_realserver_test.go similarity index 82% rename from tencentcloud/resource_tc_gaap_realserver_test.go rename to tencentcloud/services/gaap/resource_tc_gaap_realserver_test.go index 984b84daa2..aaa71804db 100644 --- a/tencentcloud/resource_tc_gaap_realserver_test.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_realserver_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package gaap_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcgaap "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/gaap" + "context" "errors" "fmt" @@ -17,14 +21,14 @@ func init() { resource.AddTestSweepers("tencentcloud_gaap_realserver", &resource.Sweeper{ Name: "tencentcloud_gaap_realserver", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - sharedClient, err := sharedClientForRegion(r) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + sharedClient, err := tcacctest.SharedClientForRegion(r) if err != nil { return fmt.Errorf("getting tencentcloud client error: %s", err.Error()) } - client := sharedClient.(*TencentCloudClient) - service := GaapService{client: client.apiV3Conn} + client := sharedClient.(tccommon.ProviderMeta) + service := svcgaap.NewGaapService(client.GetAPIV3Conn()) realservers, err := service.DescribeRealservers(ctx, nil, nil, nil, -1) if err != nil { @@ -33,7 +37,7 @@ func init() { for _, realserver := range realservers { instanceName := *realserver.RealServerName - if strings.HasPrefix(instanceName, keepResource) || strings.HasPrefix(instanceName, defaultResource) { + if strings.HasPrefix(instanceName, tcacctest.KeepResource) || strings.HasPrefix(instanceName, tcacctest.DefaultResource) { continue } @@ -53,8 +57,8 @@ func TestAccTencentCloudGaapRealserver_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapRealserverDestroy(id), Steps: []resource.TestStep{ { @@ -82,8 +86,8 @@ func TestAccTencentCloudGaapRealserver_domain(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapRealserverDestroy(id), Steps: []resource.TestStep{ { @@ -106,8 +110,8 @@ func TestAccTencentCloudGaapRealserver_updateName(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapRealserverDestroy(id), Steps: []resource.TestStep{ { @@ -124,7 +128,7 @@ func TestAccTencentCloudGaapRealserver_updateName(t *testing.T) { { Config: testAccGaapRealserverNewName, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("tencentcloud_gaap_realserver.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("tencentcloud_gaap_realserver.foo"), resource.TestCheckResourceAttr("tencentcloud_gaap_realserver.foo", "name", "ci-test-gaap-realserver-new"), ), }, @@ -137,8 +141,8 @@ func TestAccTencentCloudGaapRealserver_updateTags(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapRealserverDestroy(id), Steps: []resource.TestStep{ { @@ -165,8 +169,8 @@ func TestAccTencentCloudGaapRealserver_updateTags(t *testing.T) { func testAccCheckGaapRealserverDestroy(id *string) resource.TestCheckFunc { return func(s *terraform.State) error { - client := testAccProvider.Meta().(*TencentCloudClient).apiV3Conn - service := GaapService{client: client} + client := tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn() + service := svcgaap.NewGaapService(client) realservers, err := service.DescribeRealservers(context.TODO(), id, nil, nil, -1) if err != nil { @@ -198,7 +202,7 @@ func testAccCheckGaapRealserverExists(n string, id *string) resource.TestCheckFu return err } - service := GaapService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcgaap.NewGaapService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) realservers, err := service.DescribeRealservers(context.TODO(), nil, nil, nil, projectId) if err != nil { diff --git a/tencentcloud/resource_tc_gaap_security_policy.go b/tencentcloud/services/gaap/resource_tc_gaap_security_policy.go similarity index 67% rename from tencentcloud/resource_tc_gaap_security_policy.go rename to tencentcloud/services/gaap/resource_tc_gaap_security_policy.go index 58576845d7..09b337c59e 100644 --- a/tencentcloud/resource_tc_gaap_security_policy.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_security_policy.go @@ -1,12 +1,14 @@ -package tencentcloud +package gaap import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func resourceTencentCloudGaapSecurityPolicy() *schema.Resource { +func ResourceTencentCloudGaapSecurityPolicy() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudGaapSecurityPolicyCreate, Read: resourceTencentCloudGaapSecurityPolicyRead, @@ -26,7 +28,7 @@ func resourceTencentCloudGaapSecurityPolicy() *schema.Resource { "action": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue([]string{"ACCEPT", "DROP"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"ACCEPT", "DROP"}), ForceNew: true, Description: "Default policy. Valid value: `ACCEPT` and `DROP`.", }, @@ -41,18 +43,18 @@ func resourceTencentCloudGaapSecurityPolicy() *schema.Resource { } func resourceTencentCloudGaapSecurityPolicyCreate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_security_policy.create")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_security_policy.create")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) proxyId := d.Get("proxy_id").(string) action := d.Get("action").(string) enable := d.Get("enable").(bool) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} id, err := service.CreateSecurityPolicy(ctx, proxyId, action) if err != nil { @@ -71,15 +73,15 @@ func resourceTencentCloudGaapSecurityPolicyCreate(d *schema.ResourceData, m inte } func resourceTencentCloudGaapSecurityPolicyRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_security_policy.read")() - defer inconsistentCheck(d, m)() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_security_policy.read")() + defer tccommon.InconsistentCheck(d, m)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} proxyId, status, action, exist, err := service.DescribeSecurityPolicy(ctx, id) if err != nil { @@ -99,18 +101,18 @@ func resourceTencentCloudGaapSecurityPolicyRead(d *schema.ResourceData, m interf } func resourceTencentCloudGaapSecurityPolicyUpdate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_security_policy.update")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_security_policy.update")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() proxyId := d.Get("proxy_id").(string) enable := d.Get("enable").(bool) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} if enable { if err := service.EnableSecurityPolicy(ctx, proxyId, id); err != nil { @@ -126,18 +128,18 @@ func resourceTencentCloudGaapSecurityPolicyUpdate(d *schema.ResourceData, m inte } func resourceTencentCloudGaapSecurityPolicyDelete(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_security_policy.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_security_policy.delete")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() enable := d.Get("enable").(bool) proxyId := d.Get("proxy_id").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} if enable { if err := service.DisableSecurityPolicy(ctx, proxyId, id); err != nil { diff --git a/tencentcloud/resource_tc_gaap_security_policy_test.go b/tencentcloud/services/gaap/resource_tc_gaap_security_policy_test.go similarity index 78% rename from tencentcloud/resource_tc_gaap_security_policy_test.go rename to tencentcloud/services/gaap/resource_tc_gaap_security_policy_test.go index b9f034a1e9..223d8a3c72 100644 --- a/tencentcloud/resource_tc_gaap_security_policy_test.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_security_policy_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package gaap_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcgaap "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/gaap" + "context" "errors" "fmt" @@ -14,8 +18,8 @@ func TestAccTencentCloudGaapSecurityPolicy_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapSecurityPolicyDestroy(id), Steps: []resource.TestStep{ { @@ -39,8 +43,8 @@ func TestAccTencentCloudGaapSecurityPolicy_disable(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapSecurityPolicyDestroy(id), Steps: []resource.TestStep{ { @@ -66,8 +70,8 @@ func TestAccTencentCloudGaapSecurityPolicy_drop(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapSecurityPolicyDestroy(id), Steps: []resource.TestStep{ { @@ -93,7 +97,7 @@ func testAccCheckGaapSecurityPolicyExists(n string, id *string) resource.TestChe return errors.New("no listener ID is set") } - service := GaapService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcgaap.NewGaapService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, _, _, exist, err := service.DescribeSecurityPolicy(context.TODO(), rs.Primary.ID) if err != nil { @@ -112,8 +116,8 @@ func testAccCheckGaapSecurityPolicyExists(n string, id *string) resource.TestChe func testAccCheckGaapSecurityPolicyDestroy(id *string) resource.TestCheckFunc { return func(s *terraform.State) error { - client := testAccProvider.Meta().(*TencentCloudClient).apiV3Conn - service := GaapService{client: client} + client := tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn() + service := svcgaap.NewGaapService(client) _, _, _, exist, err := service.DescribeSecurityPolicy(context.TODO(), *id) if err != nil { @@ -133,7 +137,7 @@ resource tencentcloud_gaap_security_policy "foo" { proxy_id = "%s" action = "ACCEPT" } -`, defaultGaapProxyId2) +`, tcacctest.DefaultGaapProxyId2) var testAccGaapSecurityPolicyDisable = fmt.Sprintf(` resource tencentcloud_gaap_security_policy "foo" { @@ -141,11 +145,11 @@ resource tencentcloud_gaap_security_policy "foo" { action = "ACCEPT" enable = false } -`, defaultGaapProxyId2) +`, tcacctest.DefaultGaapProxyId2) var testAccGaapSecurityPolicyDrop = fmt.Sprintf(` resource tencentcloud_gaap_security_policy "foo" { proxy_id = "%s" action = "DROP" } -`, defaultGaapProxyId2) +`, tcacctest.DefaultGaapProxyId2) diff --git a/tencentcloud/resource_tc_gaap_security_rule.go b/tencentcloud/services/gaap/resource_tc_gaap_security_rule.go similarity index 73% rename from tencentcloud/resource_tc_gaap_security_rule.go rename to tencentcloud/services/gaap/resource_tc_gaap_security_rule.go index 9004c2a9c1..08ff7d1262 100644 --- a/tencentcloud/resource_tc_gaap_security_rule.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_security_rule.go @@ -1,4 +1,4 @@ -package tencentcloud +package gaap import ( "context" @@ -7,10 +7,12 @@ import ( "regexp" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func resourceTencentCloudGaapSecurityRule() *schema.Resource { +func ResourceTencentCloudGaapSecurityRule() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudGaapSecurityRuleCreate, Read: resourceTencentCloudGaapSecurityRuleRead, @@ -30,27 +32,27 @@ func resourceTencentCloudGaapSecurityRule() *schema.Resource { "cidr_ip": { Type: schema.TypeString, Required: true, - ValidateFunc: validateCidrIp, + ValidateFunc: tccommon.ValidateCidrIp, Description: "A network address block of the request source.", }, "action": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue([]string{"ACCEPT", "DROP"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"ACCEPT", "DROP"}), Description: "Policy of the rule. Valid value: `ACCEPT` and `DROP`.", }, "name": { Type: schema.TypeString, Optional: true, Default: "", - ValidateFunc: validateStringLengthInRange(0, 30), + ValidateFunc: tccommon.ValidateStringLengthInRange(0, 30), Description: "Name of the security policy rule. Maximum length is 30.", }, "protocol": { Type: schema.TypeString, Optional: true, Default: "ALL", - ValidateFunc: validateAllowedStringValue([]string{"ALL", "TCP", "UDP"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"ALL", "TCP", "UDP"}), Description: "Protocol of the security policy rule. Default value is `ALL`. Valid value: `TCP`, `UDP` and `ALL`.", }, "port": { @@ -74,12 +76,12 @@ func resourceTencentCloudGaapSecurityRule() *schema.Resource { } func resourceTencentCloudGaapSecurityRuleCreate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_security_rule.create")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_security_rule.create")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) policyId := d.Get("policy_id").(string) cidrIp := d.Get("cidr_ip").(string) @@ -92,7 +94,7 @@ func resourceTencentCloudGaapSecurityRuleCreate(d *schema.ResourceData, m interf return errors.New("when protocol is ALL, port should be ALL, too") } - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} id, err := service.CreateSecurityRule(ctx, policyId, name, cidrIp, port, action, protocol) if err != nil { @@ -105,13 +107,13 @@ func resourceTencentCloudGaapSecurityRuleCreate(d *schema.ResourceData, m interf } func resourceTencentCloudGaapSecurityRuleRead(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_security_rule.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_gaap_security_rule.read")() + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} rule, err := service.DescribeSecurityRule(ctx, id) if err != nil { @@ -147,12 +149,12 @@ func resourceTencentCloudGaapSecurityRuleRead(d *schema.ResourceData, m interfac } func resourceTencentCloudGaapSecurityRuleUpdate(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_security_rule.update")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_security_rule.update")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() policyId := d.Get("policy_id").(string) @@ -162,7 +164,7 @@ func resourceTencentCloudGaapSecurityRuleUpdate(d *schema.ResourceData, m interf protocol := d.Get("protocol").(string) name := d.Get("name").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} if err := service.ModifySecurityRule(ctx, policyId, id, cidrIp, action, port, protocol, name); err != nil { return err @@ -172,17 +174,17 @@ func resourceTencentCloudGaapSecurityRuleUpdate(d *schema.ResourceData, m interf } func resourceTencentCloudGaapSecurityRuleDelete(d *schema.ResourceData, m interface{}) error { - defer logElapsed("resource.tencentcloud_gaap_security_rule.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_gaap_security_rule.delete")() gaapActionMu.Lock() defer gaapActionMu.Unlock() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id := d.Id() policyId := d.Get("policy_id").(string) - service := GaapService{client: m.(*TencentCloudClient).apiV3Conn} + service := GaapService{client: m.(tccommon.ProviderMeta).GetAPIV3Conn()} return service.DeleteSecurityRule(ctx, policyId, id) } diff --git a/tencentcloud/resource_tc_gaap_security_rule_test.go b/tencentcloud/services/gaap/resource_tc_gaap_security_rule_test.go similarity index 79% rename from tencentcloud/resource_tc_gaap_security_rule_test.go rename to tencentcloud/services/gaap/resource_tc_gaap_security_rule_test.go index 2a1be16da2..b41b8ce886 100644 --- a/tencentcloud/resource_tc_gaap_security_rule_test.go +++ b/tencentcloud/services/gaap/resource_tc_gaap_security_rule_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package gaap_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcgaap "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/gaap" + "context" "errors" "fmt" @@ -16,27 +20,27 @@ func init() { resource.AddTestSweepers("tencentcloud_gaap_security_rule", &resource.Sweeper{ Name: "tencentcloud_gaap_security_rule", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - sharedClient, err := sharedClientForRegion(r) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + sharedClient, err := tcacctest.SharedClientForRegion(r) if err != nil { return fmt.Errorf("getting tencentcloud client error: %s", err.Error()) } - client := sharedClient.(*TencentCloudClient) - service := GaapService{client: client.apiV3Conn} + client := sharedClient.(tccommon.ProviderMeta) + service := svcgaap.NewGaapService(client.GetAPIV3Conn()) - securityRules, err := service.DescribeSecurityRules(ctx, defaultGaapSecurityPolicyId) + securityRules, err := service.DescribeSecurityRules(ctx, tcacctest.DefaultGaapSecurityPolicyId) if err != nil { return err } for _, securityRule := range securityRules { instanceName := *securityRule.AliasName - if strings.HasPrefix(instanceName, keepResource) || strings.HasPrefix(instanceName, defaultResource) { + if strings.HasPrefix(instanceName, tcacctest.KeepResource) || strings.HasPrefix(instanceName, tcacctest.DefaultResource) { continue } - ee := service.DeleteSecurityRule(ctx, defaultGaapSecurityPolicyId, *securityRule.RuleId) + ee := service.DeleteSecurityRule(ctx, tcacctest.DefaultGaapSecurityPolicyId, *securityRule.RuleId) if ee != nil { continue } @@ -52,8 +56,8 @@ func TestAccTencentCloudGaapSecurityRuleResource_basic(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapSecurityRuleDestroy(id), Steps: []resource.TestStep{ { @@ -80,8 +84,8 @@ func TestAccTencentCloudGaapSecurityRuleResource_drop(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapSecurityRuleDestroy(id), Steps: []resource.TestStep{ { @@ -103,8 +107,8 @@ func TestAccTencentCloudGaapSecurityRuleResource_name(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapSecurityRuleDestroy(id), Steps: []resource.TestStep{ { @@ -134,8 +138,8 @@ func TestAccTencentCloudGaapSecurityRuleResource_ipSubnet(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapSecurityRuleDestroy(id), Steps: []resource.TestStep{ { @@ -157,8 +161,8 @@ func TestAccTencentCloudGaapSecurityRuleResource_allProtocols(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapSecurityRuleDestroy(id), Steps: []resource.TestStep{ { @@ -180,8 +184,8 @@ func TestAccTencentCloudGaapSecurityRuleResource_AllPorts(t *testing.T) { id := new(string) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckGaapSecurityRuleDestroy(id), Steps: []resource.TestStep{ { @@ -209,7 +213,7 @@ func testAccCheckGaapSecurityRuleExists(n string, id *string) resource.TestCheck return errors.New("no security rule ID is set") } - service := GaapService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcgaap.NewGaapService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) rule, err := service.DescribeSecurityRule(context.TODO(), rs.Primary.ID) if err != nil { @@ -228,8 +232,8 @@ func testAccCheckGaapSecurityRuleExists(n string, id *string) resource.TestCheck func testAccCheckGaapSecurityRuleDestroy(id *string) resource.TestCheckFunc { return func(s *terraform.State) error { - client := testAccProvider.Meta().(*TencentCloudClient).apiV3Conn - service := GaapService{client: client} + client := tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn() + service := svcgaap.NewGaapService(client) rule, err := service.DescribeSecurityRule(context.TODO(), *id) if err != nil { @@ -252,7 +256,7 @@ resource tencentcloud_gaap_security_rule "foo" { protocol = "TCP" port = "80" } -`, defaultGaapSecurityPolicyId) +`, tcacctest.DefaultGaapSecurityPolicyId) var testAccGaapSecurityRuleWithName = fmt.Sprintf(` resource tencentcloud_gaap_security_rule "foo" { @@ -263,7 +267,7 @@ resource tencentcloud_gaap_security_rule "foo" { protocol = "TCP" port = "81" } -`, defaultGaapSecurityPolicyId) +`, tcacctest.DefaultGaapSecurityPolicyId) var testAccGaapSecurityRuleDrop = fmt.Sprintf(` @@ -274,7 +278,7 @@ resource tencentcloud_gaap_security_rule "foo" { protocol = "TCP" port = "80" } -`, defaultGaapSecurityPolicyId) +`, tcacctest.DefaultGaapSecurityPolicyId) var testAccGaapSecurityRuleUpdateName = fmt.Sprintf(` resource tencentcloud_gaap_security_rule "foo" { @@ -285,7 +289,7 @@ resource tencentcloud_gaap_security_rule "foo" { protocol = "TCP" port = "81" } -`, defaultGaapSecurityPolicyId) +`, tcacctest.DefaultGaapSecurityPolicyId) var testAccGaapSecurityRuleIpSubnet = fmt.Sprintf(` @@ -296,7 +300,7 @@ resource tencentcloud_gaap_security_rule "foo" { protocol = "TCP" port = "80" } -`, defaultGaapSecurityPolicyId) +`, tcacctest.DefaultGaapSecurityPolicyId) var testAccGaapSecurityRuleAllProtocols = fmt.Sprintf(` @@ -305,7 +309,7 @@ resource tencentcloud_gaap_security_rule "foo" { cidr_ip = "1.1.1.1" action = "ACCEPT" } -`, defaultGaapSecurityPolicyId) +`, tcacctest.DefaultGaapSecurityPolicyId) var testAccGaapSecurityRuleAllPorts = fmt.Sprintf(` resource tencentcloud_gaap_security_rule "foo" { @@ -314,4 +318,4 @@ resource tencentcloud_gaap_security_rule "foo" { action = "ACCEPT" protocol = "TCP" } -`, defaultGaapSecurityPolicyId) +`, tcacctest.DefaultGaapSecurityPolicyId) diff --git a/tencentcloud/service_tencentcloud_gaap.go b/tencentcloud/services/gaap/service_tencentcloud_gaap.go similarity index 90% rename from tencentcloud/service_tencentcloud_gaap.go rename to tencentcloud/services/gaap/service_tencentcloud_gaap.go index d30c34d288..6a5aba208e 100644 --- a/tencentcloud/service_tencentcloud_gaap.go +++ b/tencentcloud/services/gaap/service_tencentcloud_gaap.go @@ -1,4 +1,4 @@ -package tencentcloud +package gaap import ( "context" @@ -9,10 +9,13 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" @@ -42,26 +45,30 @@ type gaapHttpRule struct { serverNameIndication string } +func NewGaapService(client *connectivity.TencentCloudClient) GaapService { + return GaapService{client: client} +} + type GaapService struct { client *connectivity.TencentCloudClient } func (me *GaapService) CreateRealserver(ctx context.Context, address, name string, projectId int) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewAddRealServersRequest() request.RealServerName = &name request.RealServerIP = []*string{&address} request.ProjectId = helper.IntUint64(projectId) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().AddRealServers(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if len(response.Response.RealServerSet) != 1 { @@ -96,7 +103,7 @@ func (me *GaapService) CreateRealserver(ctx context.Context, address, name strin } func (me *GaapService) DescribeRealservers(ctx context.Context, address, name *string, tags map[string]string, projectId int) (realservers []*gaap.BindRealServerInfo, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeRealServersRequest() request.SearchValue = address @@ -122,7 +129,7 @@ func (me *GaapService) DescribeRealservers(ctx context.Context, address, name *s for count == 50 { request.Offset = helper.IntUint64(offset) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeRealServers(request) @@ -131,7 +138,7 @@ func (me *GaapService) DescribeRealservers(ctx context.Context, address, name *s log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } realservers = append(realservers, response.Response.RealServerSet...) @@ -150,19 +157,19 @@ func (me *GaapService) DescribeRealservers(ctx context.Context, address, name *s } func (me *GaapService) ModifyRealserverName(ctx context.Context, id, name string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewModifyRealServerNameRequest() request.RealServerId = &id request.RealServerName = &name - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := me.client.UseGaapClient().ModifyRealServerName(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -173,18 +180,18 @@ func (me *GaapService) ModifyRealserverName(ctx context.Context, id, name string } func (me *GaapService) DeleteRealserver(ctx context.Context, id string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewRemoveRealServersRequest() request.RealServerIds = []*string{&id} - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := me.client.UseGaapClient().RemoveRealServers(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -196,7 +203,7 @@ func (me *GaapService) DeleteRealserver(ctx context.Context, id string) error { } func (me *GaapService) createCertificate(ctx context.Context, certificateType int, content, name string, key *string) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewCreateCertificateRequest() request.CertificateType = helper.IntInt64(certificateType) @@ -204,14 +211,14 @@ func (me *GaapService) createCertificate(ctx context.Context, certificateType in request.CertificateAlias = &name request.CertificateKey = key - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().CreateCertificate(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if response.Response.CertificateId == nil { err := fmt.Errorf("certificate id is nil") @@ -231,12 +238,12 @@ func (me *GaapService) createCertificate(ctx context.Context, certificateType in } func (me *GaapService) DescribeCertificateById(ctx context.Context, id string) (certificate *gaap.CertificateDetail, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeCertificateDetailRequest() request.CertificateId = &id - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeCertificateDetail(request) @@ -249,7 +256,7 @@ func (me *GaapService) DescribeCertificateById(ctx context.Context, id string) ( log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } certificate = response.Response.CertificateDetail @@ -263,19 +270,19 @@ func (me *GaapService) DescribeCertificateById(ctx context.Context, id string) ( } func (me *GaapService) ModifyCertificateName(ctx context.Context, id, name string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewModifyCertificateAttributesRequest() request.CertificateId = &id request.CertificateAlias = &name - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := me.client.UseGaapClient().ModifyCertificateAttributes(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -287,18 +294,18 @@ func (me *GaapService) ModifyCertificateName(ctx context.Context, id, name strin } func (me *GaapService) DeleteCertificate(ctx context.Context, id string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDeleteCertificateRequest() request.CertificateId = &id - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := me.client.UseGaapClient().DeleteCertificate(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -316,7 +323,7 @@ func (me *GaapService) CreateProxy( tags map[string]string, params map[string]interface{}, ) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() createRequest := gaap.NewCreateProxyRequest() @@ -336,7 +343,7 @@ func (me *GaapService) CreateProxy( createRequest.NetworkType = helper.String(v.(string)) } - if err := resource.Retry(2*writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(2*tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(createRequest.GetAction()) createRequest.ClientToken = helper.String(helper.BuildToken()) @@ -344,7 +351,7 @@ func (me *GaapService) CreateProxy( if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, createRequest.GetAction(), createRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if response.Response.InstanceId == nil { @@ -363,14 +370,14 @@ func (me *GaapService) CreateProxy( describeRequest := gaap.NewDescribeProxiesRequest() describeRequest.ProxyIds = []*string{&id} - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeProxies(describeRequest) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } proxies := response.Response.ProxySet @@ -412,13 +419,13 @@ func (me *GaapService) CreateProxy( } func (me *GaapService) EnableProxy(ctx context.Context, id string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() enableRequest := gaap.NewOpenProxiesRequest() enableRequest.ProxyIds = []*string{&id} - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(enableRequest.GetAction()) enableRequest.ClientToken = helper.String(helper.BuildToken()) @@ -426,7 +433,7 @@ func (me *GaapService) EnableProxy(ctx context.Context, id string) error { if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, enableRequest.GetAction(), enableRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if len(response.Response.OperationFailedInstanceSet) > 0 { @@ -450,14 +457,14 @@ func (me *GaapService) EnableProxy(ctx context.Context, id string) error { describeRequest := gaap.NewDescribeProxiesRequest() describeRequest.ProxyIds = []*string{&id} - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeProxies(describeRequest) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } proxies := response.Response.ProxySet @@ -491,13 +498,13 @@ func (me *GaapService) EnableProxy(ctx context.Context, id string) error { } func (me *GaapService) DisableProxy(ctx context.Context, id string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() disableRequest := gaap.NewCloseProxiesRequest() disableRequest.ProxyIds = []*string{&id} - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(disableRequest.GetAction()) disableRequest.ClientToken = helper.String(helper.BuildToken()) @@ -505,7 +512,7 @@ func (me *GaapService) DisableProxy(ctx context.Context, id string) error { if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, disableRequest.GetAction(), disableRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if len(response.Response.OperationFailedInstanceSet) > 0 { @@ -529,14 +536,14 @@ func (me *GaapService) DisableProxy(ctx context.Context, id string) error { describeRequest := gaap.NewDescribeProxiesRequest() describeRequest.ProxyIds = []*string{&id} - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeProxies(describeRequest) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } proxies := response.Response.ProxySet @@ -576,7 +583,7 @@ func (me *GaapService) DescribeProxies( accessRegion, realserverRegion *string, tags map[string]string, ) (proxies []*gaap.ProxyInfo, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeProxiesRequest() if len(ids) > 0 { @@ -615,7 +622,7 @@ func (me *GaapService) DescribeProxies( for count == 100 { request.Offset = helper.IntUint64(offset) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeProxies(request) @@ -630,7 +637,7 @@ func (me *GaapService) DescribeProxies( log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } count = len(response.Response.ProxySet) @@ -649,20 +656,20 @@ func (me *GaapService) DescribeProxies( } func (me *GaapService) ModifyProxyName(ctx context.Context, id, name string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewModifyProxiesAttributeRequest() request.ProxyIds = []*string{&id} request.ProxyName = &name - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) request.ClientToken = helper.String(helper.BuildToken()) if _, err := me.client.UseGaapClient().ModifyProxiesAttribute(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -674,20 +681,20 @@ func (me *GaapService) ModifyProxyName(ctx context.Context, id, name string) err } func (me *GaapService) ModifyProxyProjectId(ctx context.Context, id string, projectId int) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewModifyProxiesProjectRequest() request.ProxyIds = []*string{&id} request.ProjectId = helper.IntInt64(projectId) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) request.ClientToken = helper.String(helper.BuildToken()) if _, err := me.client.UseGaapClient().ModifyProxiesProject(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -699,7 +706,7 @@ func (me *GaapService) ModifyProxyProjectId(ctx context.Context, id string, proj } func (me *GaapService) ModifyProxyConfiguration(ctx context.Context, id string, bandwidth, concurrent *int) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() modifyRequest := gaap.NewModifyProxyConfigurationRequest() @@ -711,14 +718,14 @@ func (me *GaapService) ModifyProxyConfiguration(ctx context.Context, id string, modifyRequest.Concurrent = helper.IntUint64(*concurrent) } - if err := resource.Retry(2*writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(2*tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(modifyRequest.GetAction()) modifyRequest.ClientToken = helper.String(helper.BuildToken()) if _, err := client.ModifyProxyConfiguration(modifyRequest); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, modifyRequest.GetAction(), modifyRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -729,14 +736,14 @@ func (me *GaapService) ModifyProxyConfiguration(ctx context.Context, id string, describeRequest := gaap.NewDescribeProxiesRequest() describeRequest.ProxyIds = []*string{&id} - if err := resource.Retry(3*readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeProxies(describeRequest) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } proxies := response.Response.ProxySet @@ -770,14 +777,14 @@ func (me *GaapService) ModifyProxyConfiguration(ctx context.Context, id string, } func (me *GaapService) DeleteProxy(ctx context.Context, id string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() deleteRequest := gaap.NewDestroyProxiesRequest() deleteRequest.ProxyIds = []*string{&id} deleteRequest.Force = helper.IntInt64(1) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(deleteRequest.GetAction()) deleteRequest.ClientToken = helper.String(helper.BuildToken()) @@ -785,7 +792,7 @@ func (me *GaapService) DeleteProxy(ctx context.Context, id string) error { if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if len(response.Response.OperationFailedInstanceSet) > 0 { @@ -809,7 +816,7 @@ func (me *GaapService) DeleteProxy(ctx context.Context, id string) error { describeRequest := gaap.NewDescribeProxiesRequest() describeRequest.ProxyIds = []*string{&id} - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeProxies(describeRequest) @@ -822,7 +829,7 @@ func (me *GaapService) DeleteProxy(ctx context.Context, id string) error { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if len(response.Response.ProxySet) > 0 { @@ -846,7 +853,7 @@ func (me *GaapService) CreateTCPListener( port, interval, connectTimeout, clientIPMethod int, healthCheck bool, ) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewCreateTCPListenersRequest() @@ -864,14 +871,14 @@ func (me *GaapService) CreateTCPListener( request.ConnectTimeout = helper.IntUint64(connectTimeout) request.ClientIPMethod = helper.IntInt64(clientIPMethod) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.CreateTCPListeners(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if len(response.Response.ListenerIds) != 1 { @@ -900,7 +907,7 @@ func (me *GaapService) CreateUDPListener( name, scheduler, realserverType, proxyId string, port int, ) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewCreateUDPListenersRequest() @@ -910,14 +917,14 @@ func (me *GaapService) CreateUDPListener( request.ProxyId = &proxyId request.Ports = []*uint64{helper.IntUint64(port)} - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.CreateUDPListeners(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if len(response.Response.ListenerIds) != 1 { @@ -942,7 +949,7 @@ func (me *GaapService) CreateUDPListener( } func (me *GaapService) BindLayer4ListenerRealservers(ctx context.Context, id, protocol, proxyId string, realserverBinds []gaapRealserverBind) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewBindListenerRealServersRequest() @@ -957,13 +964,13 @@ func (me *GaapService) BindLayer4ListenerRealservers(ctx context.Context, id, pr }) } - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := client.BindListenerRealServers(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -980,7 +987,7 @@ func (me *GaapService) BindLayer4ListenerRealservers(ctx context.Context, id, pr } func (me *GaapService) DescribeTCPListeners(ctx context.Context, proxyId, listenerId, name *string, port *int) (listeners []*gaap.TCPListener, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeTCPListenersRequest() request.ProxyId = proxyId @@ -1007,7 +1014,7 @@ func (me *GaapService) DescribeTCPListeners(ctx context.Context, proxyId, listen for count == 50 { request.Offset = helper.IntUint64(offset) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeTCPListeners(request) @@ -1022,7 +1029,7 @@ func (me *GaapService) DescribeTCPListeners(ctx context.Context, proxyId, listen log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } count = len(response.Response.ListenerSet) @@ -1041,7 +1048,7 @@ func (me *GaapService) DescribeTCPListeners(ctx context.Context, proxyId, listen } func (me *GaapService) DescribeUDPListeners(ctx context.Context, proxyId, id, name *string, port *int) (listeners []*gaap.UDPListener, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeUDPListenersRequest() request.ProxyId = proxyId @@ -1068,7 +1075,7 @@ func (me *GaapService) DescribeUDPListeners(ctx context.Context, proxyId, id, na for count == 50 { request.Offset = helper.IntUint64(offset) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeUDPListeners(request) @@ -1083,7 +1090,7 @@ func (me *GaapService) DescribeUDPListeners(ctx context.Context, proxyId, id, na log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } count = len(response.Response.ListenerSet) @@ -1108,7 +1115,7 @@ func (me *GaapService) ModifyTCPListenerAttribute( healthCheck *bool, interval, connectTimeout int, ) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewModifyTCPListenerAttributeRequest() @@ -1126,13 +1133,13 @@ func (me *GaapService) ModifyTCPListenerAttribute( request.DelayLoop = helper.IntUint64(interval) request.ConnectTimeout = helper.IntUint64(connectTimeout) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := client.ModifyTCPListenerAttribute(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -1153,7 +1160,7 @@ func (me *GaapService) ModifyUDPListenerAttribute( proxyId, id string, name, scheduler *string, ) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewModifyUDPListenerAttributeRequest() @@ -1162,13 +1169,13 @@ func (me *GaapService) ModifyUDPListenerAttribute( request.ListenerName = name request.Scheduler = scheduler - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := client.ModifyUDPListenerAttribute(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -1185,7 +1192,7 @@ func (me *GaapService) ModifyUDPListenerAttribute( } func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, protocol string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() deleteRequest := gaap.NewDeleteListenersRequest() @@ -1193,14 +1200,14 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr deleteRequest.ListenerIds = []*string{&id} deleteRequest.Force = helper.IntUint64(0) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(deleteRequest.GetAction()) response, err := client.DeleteListeners(deleteRequest) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } // listener may not exist @@ -1233,7 +1240,7 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr describeRequest := gaap.NewDescribeTCPListenersRequest() describeRequest.ListenerId = &id - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeTCPListeners(describeRequest) @@ -1246,7 +1253,7 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } if len(response.Response.ListenerSet) > 0 { @@ -1265,7 +1272,7 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr describeRequest := gaap.NewDescribeUDPListenersRequest() describeRequest.ListenerId = &id - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeUDPListeners(describeRequest) @@ -1278,7 +1285,7 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } if len(response.Response.ListenerSet) > 0 { @@ -1298,20 +1305,20 @@ func (me *GaapService) DeleteLayer4Listener(ctx context.Context, id, proxyId, pr } func (me *GaapService) CreateSecurityPolicy(ctx context.Context, proxyId, action string) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewCreateSecurityPolicyRequest() request.ProxyId = &proxyId request.DefaultAction = &action - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().CreateSecurityPolicy(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if response.Response.PolicyId == nil { @@ -1331,19 +1338,19 @@ func (me *GaapService) CreateSecurityPolicy(ctx context.Context, proxyId, action } func (me *GaapService) EnableSecurityPolicy(ctx context.Context, proxyId, policyId string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() enableRequest := gaap.NewOpenSecurityPolicyRequest() enableRequest.ProxyId = &proxyId - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(enableRequest.GetAction()) if _, err := client.OpenSecurityPolicy(enableRequest); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, enableRequest.GetAction(), enableRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -1354,7 +1361,7 @@ func (me *GaapService) EnableSecurityPolicy(ctx context.Context, proxyId, policy describeRequest := gaap.NewDescribeSecurityPolicyDetailRequest() describeRequest.PolicyId = &policyId - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeSecurityPolicyDetail(describeRequest) @@ -1366,7 +1373,7 @@ func (me *GaapService) EnableSecurityPolicy(ctx context.Context, proxyId, policy } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if response.Response.Status == nil { @@ -1391,19 +1398,19 @@ func (me *GaapService) EnableSecurityPolicy(ctx context.Context, proxyId, policy } func (me *GaapService) DisableSecurityPolicy(ctx context.Context, proxyId, policyId string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() disableRequest := gaap.NewCloseSecurityPolicyRequest() disableRequest.ProxyId = &proxyId - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(disableRequest.GetAction()) if _, err := client.CloseSecurityPolicy(disableRequest); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, disableRequest.GetAction(), disableRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -1414,7 +1421,7 @@ func (me *GaapService) DisableSecurityPolicy(ctx context.Context, proxyId, polic describeRequest := gaap.NewDescribeSecurityPolicyDetailRequest() describeRequest.PolicyId = &policyId - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeSecurityPolicyDetail(describeRequest) @@ -1426,7 +1433,7 @@ func (me *GaapService) DisableSecurityPolicy(ctx context.Context, proxyId, polic } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if response.Response.Status == nil { @@ -1451,12 +1458,12 @@ func (me *GaapService) DisableSecurityPolicy(ctx context.Context, proxyId, polic } func (me *GaapService) DescribeSecurityPolicy(ctx context.Context, id string) (proxyId, status, action string, exist bool, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeSecurityPolicyDetailRequest() request.PolicyId = &id - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeSecurityPolicyDetail(request) @@ -1469,7 +1476,7 @@ func (me *GaapService) DescribeSecurityPolicy(ctx context.Context, id string) (p log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if response.Response.ProxyId == nil { @@ -1505,19 +1512,19 @@ func (me *GaapService) DescribeSecurityPolicy(ctx context.Context, id string) (p } func (me *GaapService) DeleteSecurityPolicy(ctx context.Context, id string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() deleteRequest := gaap.NewDeleteSecurityPolicyRequest() deleteRequest.PolicyId = &id - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(deleteRequest.GetAction()) if _, err := client.DeleteSecurityPolicy(deleteRequest); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -1528,7 +1535,7 @@ func (me *GaapService) DeleteSecurityPolicy(ctx context.Context, id string) erro describeRequest := gaap.NewDescribeSecurityPolicyDetailRequest() describeRequest.PolicyId = &id - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) _, err := client.DescribeSecurityPolicyDetail(describeRequest) @@ -1540,7 +1547,7 @@ func (me *GaapService) DeleteSecurityPolicy(ctx context.Context, id string) erro } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } err = errors.New("security policy still exists") @@ -1558,7 +1565,7 @@ func (me *GaapService) CreateSecurityRule( ctx context.Context, policyId, name, cidrIp, port, action, protocol string, ) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewCreateSecurityRulesRequest() request.PolicyId = &policyId @@ -1572,14 +1579,14 @@ func (me *GaapService) CreateSecurityRule( }, } - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().CreateSecurityRules(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if len(response.Response.RuleIdList) != 1 { @@ -1605,12 +1612,12 @@ func (me *GaapService) CreateSecurityRule( } func (me *GaapService) DescribeSecurityRule(ctx context.Context, id string) (securityRule *gaap.SecurityPolicyRuleOut, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeSecurityRulesRequest() request.SecurityRuleIds = []*string{&id} - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeSecurityRules(request) @@ -1623,7 +1630,7 @@ func (me *GaapService) DescribeSecurityRule(ctx context.Context, id string) (sec log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } switch len(response.Response.SecurityRuleSet) { @@ -1650,7 +1657,7 @@ func (me *GaapService) DescribeSecurityRule(ctx context.Context, id string) (sec } func (me *GaapService) ModifySecurityRule(ctx context.Context, policyId, ruleId, cidrIp, action, port, protocol, name string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewModifySecurityRuleRequest() request.PolicyId = &policyId @@ -1662,13 +1669,13 @@ func (me *GaapService) ModifySecurityRule(ctx context.Context, policyId, ruleId, request.AliasName = &name - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := me.client.UseGaapClient().ModifySecurityRule(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -1680,19 +1687,19 @@ func (me *GaapService) ModifySecurityRule(ctx context.Context, policyId, ruleId, } func (me *GaapService) DeleteSecurityRule(ctx context.Context, policyId, ruleId string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDeleteSecurityRulesRequest() request.PolicyId = &policyId request.RuleIdList = []*string{&ruleId} - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := me.client.UseGaapClient().DeleteSecurityRules(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -1704,7 +1711,7 @@ func (me *GaapService) DeleteSecurityRule(ctx context.Context, policyId, ruleId } func (me *GaapService) CreateHTTPListener(ctx context.Context, name, proxyId string, port int) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewCreateHTTPListenerRequest() @@ -1712,14 +1719,14 @@ func (me *GaapService) CreateHTTPListener(ctx context.Context, name, proxyId str request.ListenerName = &name request.Port = helper.IntUint64(port) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.CreateHTTPListener(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if response.Response.ListenerId == nil { @@ -1749,7 +1756,7 @@ func (me *GaapService) CreateHTTPSListener( polyClientCertificateIds []string, port, authType int, ) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewCreateHTTPSListenerRequest() @@ -1761,14 +1768,14 @@ func (me *GaapService) CreateHTTPSListener( request.AuthType = helper.IntUint64(authType) request.PolyClientCertificateIds = helper.Strings(polyClientCertificateIds) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.CreateHTTPSListener(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if response.Response.ListenerId == nil { @@ -1797,7 +1804,7 @@ func (me *GaapService) DescribeHTTPListeners( proxyId, id, name *string, port *int, ) (listeners []*gaap.HTTPListener, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeHTTPListenersRequest() request.ProxyId = proxyId @@ -1824,7 +1831,7 @@ func (me *GaapService) DescribeHTTPListeners( for count == 50 { request.Offset = helper.IntUint64(offset) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeHTTPListeners(request) @@ -1839,7 +1846,7 @@ func (me *GaapService) DescribeHTTPListeners( log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } count = len(response.Response.ListenerSet) @@ -1862,7 +1869,7 @@ func (me *GaapService) DescribeHTTPSListeners( proxyId, listenerId, name *string, port *int, ) (listeners []*gaap.HTTPSListener, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeHTTPSListenersRequest() request.ProxyId = proxyId @@ -1889,7 +1896,7 @@ func (me *GaapService) DescribeHTTPSListeners( for count == 50 { request.Offset = helper.IntUint64(offset) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeHTTPSListeners(request) @@ -1904,7 +1911,7 @@ func (me *GaapService) DescribeHTTPSListeners( log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } count = len(response.Response.ListenerSet) @@ -1923,7 +1930,7 @@ func (me *GaapService) DescribeHTTPSListeners( } func (me *GaapService) ModifyHTTPListener(ctx context.Context, id, proxyId, name string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewModifyHTTPListenerAttributeRequest() @@ -1931,13 +1938,13 @@ func (me *GaapService) ModifyHTTPListener(ctx context.Context, id, proxyId, name request.ListenerName = &name request.ProxyId = &proxyId - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := client.ModifyHTTPListenerAttribute(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -1959,7 +1966,7 @@ func (me *GaapService) ModifyHTTPSListener( name, forwardProtocol, certificateId *string, polyClientCertificateIds []string, ) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewModifyHTTPSListenerAttributeRequest() @@ -1970,13 +1977,13 @@ func (me *GaapService) ModifyHTTPSListener( request.CertificateId = certificateId request.PolyClientCertificateIds = helper.Strings(polyClientCertificateIds) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := client.ModifyHTTPSListenerAttribute(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -1993,7 +2000,7 @@ func (me *GaapService) ModifyHTTPSListener( } func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, protocol string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() deleteRequest := gaap.NewDeleteListenersRequest() @@ -2001,14 +2008,14 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr deleteRequest.ListenerIds = []*string{helper.String(id)} deleteRequest.Force = helper.IntUint64(0) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(deleteRequest.GetAction()) response, err := client.DeleteListeners(deleteRequest) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } // listener may not exist @@ -2039,11 +2046,11 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr switch protocol { case "HTTP": describeRequest := gaap.NewDescribeHTTPListenersRequest() - // don't set proxy id it may cause InternalError + // don't set proxy id it may cause tccommon.InternalError //describeRequest.ProxyId = &proxyId describeRequest.ListenerId = &id - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeHTTPListeners(describeRequest) @@ -2056,7 +2063,7 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } if len(response.Response.ListenerSet) > 0 { @@ -2073,11 +2080,11 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr case "HTTPS": describeRequest := gaap.NewDescribeHTTPSListenersRequest() - // don't set proxy id it may cause InternalError + // don't set proxy id it may cause tccommon.InternalError //describeRequest.ProxyId = &proxyId describeRequest.ListenerId = &id - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeHTTPSListeners(describeRequest) @@ -2090,7 +2097,7 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } if len(response.Response.ListenerSet) > 0 { @@ -2110,21 +2117,21 @@ func (me *GaapService) DeleteLayer7Listener(ctx context.Context, id, proxyId, pr } func waitLayer4ListenerReady(ctx context.Context, client *gaap.Client, id, protocol string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) switch protocol { case "TCP": request := gaap.NewDescribeTCPListenersRequest() request.ListenerId = &id - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.DescribeTCPListeners(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } switch len(response.Response.ListenerSet) { @@ -2161,14 +2168,14 @@ func waitLayer4ListenerReady(ctx context.Context, client *gaap.Client, id, proto request := gaap.NewDescribeUDPListenersRequest() request.ListenerId = &id - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.DescribeUDPListeners(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } switch len(response.Response.ListenerSet) { @@ -2206,7 +2213,7 @@ func waitLayer4ListenerReady(ctx context.Context, client *gaap.Client, id, proto } func waitLayer7ListenerReady(ctx context.Context, client *gaap.Client, proxyId, id, protocol string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) switch protocol { case "HTTP": @@ -2214,7 +2221,7 @@ func waitLayer7ListenerReady(ctx context.Context, client *gaap.Client, proxyId, request.ProxyId = &proxyId request.ListenerId = &id - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.DescribeHTTPListeners(request) @@ -2227,7 +2234,7 @@ func waitLayer7ListenerReady(ctx context.Context, client *gaap.Client, proxyId, log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } switch len(response.Response.ListenerSet) { @@ -2265,7 +2272,7 @@ func waitLayer7ListenerReady(ctx context.Context, client *gaap.Client, proxyId, request.ProxyId = &proxyId request.ListenerId = &id - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.DescribeHTTPSListeners(request) @@ -2277,7 +2284,7 @@ func waitLayer7ListenerReady(ctx context.Context, client *gaap.Client, proxyId, } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } switch len(response.Response.ListenerSet) { @@ -2315,20 +2322,20 @@ func waitLayer7ListenerReady(ctx context.Context, client *gaap.Client, proxyId, } func (me *GaapService) CreateHTTPDomain(ctx context.Context, listenerId, domain string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() createRequest := gaap.NewCreateDomainRequest() createRequest.ListenerId = &listenerId createRequest.Domain = &domain - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(createRequest.GetAction()) if _, err := client.CreateDomain(createRequest); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, createRequest.GetAction(), createRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -2339,7 +2346,7 @@ func (me *GaapService) CreateHTTPDomain(ctx context.Context, listenerId, domain describeRequest := gaap.NewDescribeRulesRequest() describeRequest.ListenerId = &listenerId - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeRules(describeRequest) @@ -2351,7 +2358,7 @@ func (me *GaapService) CreateHTTPDomain(ctx context.Context, listenerId, domain } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } for _, rule := range response.Response.DomainRuleSet { @@ -2382,7 +2389,7 @@ func (me *GaapService) CreateHTTPSDomain( listenerId, domain, certificateId string, polyClientCertificateIds []string, ) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() createRequest := gaap.NewCreateDomainRequest() @@ -2394,13 +2401,13 @@ func (me *GaapService) CreateHTTPSDomain( createRequest.PolyClientCertificateIds = append(createRequest.PolyClientCertificateIds, helper.String(polyId)) } - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(createRequest.GetAction()) if _, err := client.CreateDomain(createRequest); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, createRequest.GetAction(), createRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -2411,7 +2418,7 @@ func (me *GaapService) CreateHTTPSDomain( describeRequest := gaap.NewDescribeRulesRequest() describeRequest.ListenerId = &listenerId - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeRules(describeRequest) @@ -2423,7 +2430,7 @@ func (me *GaapService) CreateHTTPSDomain( } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } for _, rule := range response.Response.DomainRuleSet { @@ -2456,7 +2463,7 @@ func (me *GaapService) SetAdvancedAuth( realserverCertificateIds []string, realserverCertificateDomain, basicAuthId, gaapAuthId *string, ) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewSetAuthenticationRequest() request.ListenerId = &listenerId @@ -2490,13 +2497,13 @@ func (me *GaapService) SetAdvancedAuth( request.GaapCertificateId = gaapAuthId - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := me.client.UseGaapClient().SetAuthentication(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -2508,12 +2515,12 @@ func (me *GaapService) SetAdvancedAuth( } func (me *GaapService) DescribeDomain(ctx context.Context, listenerId, domain string) (domainRet *gaap.DomainRuleSet, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeRulesRequest() request.ListenerId = &listenerId - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeRules(request) @@ -2525,7 +2532,7 @@ func (me *GaapService) DescribeDomain(ctx context.Context, listenerId, domain st } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } for _, rule := range response.Response.DomainRuleSet { @@ -2555,7 +2562,7 @@ func (me *GaapService) ModifyDomainCertificate( listenerId, domain, certificateId string, polyClientCertificateIds []string, ) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewModifyCertificateRequest() request.ListenerId = &listenerId @@ -2566,13 +2573,13 @@ func (me *GaapService) ModifyDomainCertificate( request.PolyClientCertificateIds = append(request.PolyClientCertificateIds, helper.String(polyId)) } - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := me.client.UseGaapClient().ModifyCertificate(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -2584,7 +2591,7 @@ func (me *GaapService) ModifyDomainCertificate( } func (me *GaapService) DeleteDomain(ctx context.Context, listenerId, domain string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() deleteRequest := gaap.NewDeleteDomainRequest() @@ -2592,13 +2599,13 @@ func (me *GaapService) DeleteDomain(ctx context.Context, listenerId, domain stri deleteRequest.Domain = &domain deleteRequest.Force = helper.IntUint64(0) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(deleteRequest.GetAction()) if _, err := client.DeleteDomain(deleteRequest); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -2609,7 +2616,7 @@ func (me *GaapService) DeleteDomain(ctx context.Context, listenerId, domain stri describeRequest := gaap.NewDescribeRulesRequest() describeRequest.ListenerId = &listenerId - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeRules(describeRequest) @@ -2621,7 +2628,7 @@ func (me *GaapService) DeleteDomain(ctx context.Context, listenerId, domain stri } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } for _, rule := range response.Response.DomainRuleSet { @@ -2648,7 +2655,7 @@ func (me *GaapService) DeleteDomain(ctx context.Context, listenerId, domain stri } func (me *GaapService) CreateHttpRule(ctx context.Context, httpRule gaapHttpRule) (id string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewCreateRuleRequest() @@ -2682,14 +2689,14 @@ func (me *GaapService) CreateHttpRule(ctx context.Context, httpRule gaapHttpRule request.ServerNameIndication = &httpRule.serverNameIndication } - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.CreateRule(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if response.Response.RuleId == nil { @@ -2714,7 +2721,7 @@ func (me *GaapService) CreateHttpRule(ctx context.Context, httpRule gaapHttpRule } func (me *GaapService) BindHttpRuleRealservers(ctx context.Context, listenerId, ruleId string, realservers []gaapRealserverBind) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewBindRuleRealServersRequest() @@ -2730,13 +2737,13 @@ func (me *GaapService) BindHttpRuleRealservers(ctx context.Context, listenerId, }) } - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := client.BindRuleRealServers(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -2753,12 +2760,12 @@ func (me *GaapService) BindHttpRuleRealservers(ctx context.Context, listenerId, } func (me *GaapService) DescribeHttpRule(ctx context.Context, id string) (rule *gaap.RuleInfo, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeRulesByRuleIdsRequest() request.RuleIds = []*string{&id} - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeRulesByRuleIds(request) @@ -2771,7 +2778,7 @@ func (me *GaapService) DescribeHttpRule(ctx context.Context, id string) (rule *g log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } if len(response.Response.RuleSet) == 0 { @@ -2796,7 +2803,7 @@ func (me *GaapService) ModifyHTTPRuleAttribute( interval, connectTimeout int, healthCheckStatusCodes []int, ) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewModifyRuleAttributeRequest() @@ -2824,13 +2831,13 @@ func (me *GaapService) ModifyHTTPRuleAttribute( request.CheckParams.StatusCode = append(request.CheckParams.StatusCode, helper.IntUint64(code)) } - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := client.ModifyRuleAttribute(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -2842,7 +2849,7 @@ func (me *GaapService) ModifyHTTPRuleAttribute( } func (me *GaapService) DeleteHttpRule(ctx context.Context, listenerId, ruleId string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() deleteRequest := gaap.NewDeleteRuleRequest() @@ -2850,13 +2857,13 @@ func (me *GaapService) DeleteHttpRule(ctx context.Context, listenerId, ruleId st deleteRequest.RuleId = &ruleId deleteRequest.Force = helper.IntUint64(1) - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(deleteRequest.GetAction()) if _, err := client.DeleteRule(deleteRequest); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil }); err != nil { @@ -2867,7 +2874,7 @@ func (me *GaapService) DeleteHttpRule(ctx context.Context, listenerId, ruleId st describeRequest := gaap.NewDescribeRulesRequest() describeRequest.ListenerId = &listenerId - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(describeRequest.GetAction()) response, err := client.DescribeRules(describeRequest) @@ -2879,7 +2886,7 @@ func (me *GaapService) DeleteHttpRule(ctx context.Context, listenerId, ruleId st } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) - return retryError(err, GAAPInternalError) + return tccommon.RetryError(err, GAAPInternalError) } for _, domainRule := range response.Response.DomainRuleSet { @@ -2908,12 +2915,12 @@ func (me *GaapService) DeleteHttpRule(ctx context.Context, listenerId, ruleId st } func waitHttpRuleReady(ctx context.Context, client *gaap.Client, listenerId, ruleId string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeRulesRequest() request.ListenerId = &listenerId - return resource.Retry(readRetryTimeout, func() *resource.RetryError { + return resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := client.DescribeRules(request) @@ -2925,7 +2932,7 @@ func waitHttpRuleReady(ctx context.Context, client *gaap.Client, listenerId, rul } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } for _, domainRule := range response.Response.DomainRuleSet { @@ -2960,12 +2967,12 @@ func waitHttpRuleReady(ctx context.Context, client *gaap.Client, listenerId, rul } func (me *GaapService) DescribeDomains(ctx context.Context, listenerId, domain string) (domains []*gaap.DomainRuleSet, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeRulesRequest() request.ListenerId = &listenerId - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeRules(request) @@ -2977,7 +2984,7 @@ func (me *GaapService) DescribeDomains(ctx context.Context, listenerId, domain s } log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } for _, domainRule := range response.Response.DomainRuleSet { @@ -3002,12 +3009,12 @@ func (me *GaapService) DescribeDomains(ctx context.Context, listenerId, domain s } func (me *GaapService) DescribeSecurityRules(ctx context.Context, policyId string) (securityRules []*gaap.SecurityPolicyRuleOut, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeSecurityPolicyDetailRequest() request.PolicyId = &policyId - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeSecurityPolicyDetail(request) @@ -3020,7 +3027,7 @@ func (me *GaapService) DescribeSecurityRules(ctx context.Context, policyId strin log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } securityRules = response.Response.RuleList @@ -3035,7 +3042,7 @@ func (me *GaapService) DescribeSecurityRules(ctx context.Context, policyId strin } func (me *GaapService) DescribeCertificates(ctx context.Context, id, name *string, certificateType *int) (certificates []*gaap.Certificate, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeCertificatesRequest() @@ -3051,7 +3058,7 @@ func (me *GaapService) DescribeCertificates(ctx context.Context, id, name *strin for count == 50 { request.Offset = helper.IntUint64(offset) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := me.client.UseGaapClient().DescribeCertificates(request) @@ -3060,7 +3067,7 @@ func (me *GaapService) DescribeCertificates(ctx context.Context, id, name *strin log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } count = len(response.Response.CertificateSet) @@ -3115,7 +3122,7 @@ func (me *GaapService) DescribeCertificates(ctx context.Context, id, name *strin } func (me *GaapService) ModifyHTTPRuleForwardHost(ctx context.Context, listenerId, ruleId, forwardHost string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) client := me.client.UseGaapClient() request := gaap.NewModifyRuleAttributeRequest() @@ -3123,13 +3130,13 @@ func (me *GaapService) ModifyHTTPRuleForwardHost(ctx context.Context, listenerId request.RuleId = &ruleId request.ForwardHost = &forwardHost - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := client.ModifyRuleAttribute(request); err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) - return retryError(err) + return tccommon.RetryError(err) } return nil @@ -3174,14 +3181,14 @@ func (me *GaapService) CreateDomainErrorPageInfo(ctx context.Context, }) } - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { resp, err := client.CreateDomainErrorPageInfo(request) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok && sdkError.Code == "FailedOperation.DomainAlreadyExisted" { return resource.NonRetryableError(helper.WrapErrorf(err, "", sdkError.RequestId, sdkError.Message)) } - return retryError(err) + return tccommon.RetryError(err) } id = *resp.Response.ErrorPageId @@ -3201,7 +3208,7 @@ func (me *GaapService) DescribeDomainErrorPageInfo(ctx context.Context, listener request.ListenerId = &listenerId request.Domain = &domain - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { resp, err := client.DescribeDomainErrorPageInfo(request) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { @@ -3210,7 +3217,7 @@ func (me *GaapService) DescribeDomainErrorPageInfo(ctx context.Context, listener } } - return retryError(err) + return tccommon.RetryError(err) } for _, pageInfo := range resp.Response.ErrorPageSet { @@ -3235,14 +3242,14 @@ func (me *GaapService) DescribeDomainErrorPageInfoList(ctx context.Context, list request.ListenerId = &listenerId request.Domain = &domain - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { resp, err := client.DescribeDomainErrorPageInfo(request) if err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok && sdkError.Code == "ResourceNotFound" { return nil } - return retryError(err) + return tccommon.RetryError(err) } list = resp.Response.ErrorPageSet @@ -3261,13 +3268,13 @@ func (me *GaapService) DeleteDomainErrorPageInfo(ctx context.Context, id string) request := gaap.NewDeleteDomainErrorPageInfoRequest() request.ErrorPageId = &id - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { if _, err := client.DeleteDomainErrorPageInfo(request); err != nil { if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok && sdkError.Code == "ResourceNotFound" { return nil } - return retryError(err) + return tccommon.RetryError(err) } return nil @@ -3280,7 +3287,7 @@ func (me *GaapService) DeleteDomainErrorPageInfo(ctx context.Context, id string) func (me *GaapService) DescribeGaapAccessRegions(ctx context.Context) (describeAccessRegions []*gaap.RegionDetail, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeAccessRegionsRequest() ) @@ -3308,7 +3315,7 @@ func (me *GaapService) DescribeGaapAccessRegions(ctx context.Context) (describeA func (me *GaapService) DescribeGaapAccessRegionsByDestRegionByFilter(ctx context.Context, param map[string]interface{}) (accessRegionsByDestRegion []*gaap.AccessRegionDetial, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeAccessRegionsByDestRegionRequest() ) @@ -3349,7 +3356,7 @@ func (me *GaapService) DescribeGaapAccessRegionsByDestRegionByFilter(ctx context func (me *GaapService) DescribeGaapBlackHeader(ctx context.Context) (blackHeader []*string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeBlackHeaderRequest() ) @@ -3377,7 +3384,7 @@ func (me *GaapService) DescribeGaapBlackHeader(ctx context.Context) (blackHeader func (me *GaapService) DescribeGaapCountryAreaMapping(ctx context.Context) (countryAreaMapping []*gaap.CountryAreaMap, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeCountryAreaMappingRequest() ) @@ -3406,7 +3413,7 @@ func (me *GaapService) DescribeGaapCountryAreaMapping(ctx context.Context) (coun func (me *GaapService) DescribeGaapCustomHeader(ctx context.Context, ruleId string) (customHeader []*gaap.HttpHeaderParam, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeCustomHeaderRequest() ) @@ -3434,7 +3441,7 @@ func (me *GaapService) DescribeGaapCustomHeader(ctx context.Context, ruleId stri } func (me *GaapService) CreateCustomHeader(ctx context.Context, ruleId string, headers []*gaap.HttpHeaderParam) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewCreateCustomHeaderRequest() request.RuleId = &ruleId @@ -3460,7 +3467,7 @@ func (me *GaapService) CreateCustomHeader(ctx context.Context, ruleId string, he func (me *GaapService) DescribeGaapDestRegions(ctx context.Context) (destRegions []*gaap.RegionDetail, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeDestRegionsRequest() ) @@ -3488,7 +3495,7 @@ func (me *GaapService) DescribeGaapDestRegions(ctx context.Context) (destRegions func (me *GaapService) DescribeGaapProxyDetail(ctx context.Context, proxyId string) (proxyDetail *gaap.ProxyInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeProxyDetailRequest() ) @@ -3517,7 +3524,7 @@ func (me *GaapService) DescribeGaapProxyDetail(ctx context.Context, proxyId stri func (me *GaapService) DescribeGaapProxyGroupsByFilter(ctx context.Context, param map[string]interface{}) (proxyGroups []*gaap.ProxyGroupInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeProxyGroupListRequest() ) @@ -3571,7 +3578,7 @@ func (me *GaapService) DescribeGaapProxyGroupsByFilter(ctx context.Context, para func (me *GaapService) DescribeGaapProxyStatisticsByFilter(ctx context.Context, param map[string]interface{}) (proxyStatistics []*gaap.MetricStatisticsInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeProxyStatisticsRequest() ) @@ -3621,7 +3628,7 @@ func (me *GaapService) DescribeGaapProxyStatisticsByFilter(ctx context.Context, func (me *GaapService) DescribeGaapProxyGroupStatisticsByFilter(ctx context.Context, param map[string]interface{}) (proxyGroupStatistics []*gaap.MetricStatisticsInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeProxyGroupStatisticsRequest() ) @@ -3668,7 +3675,7 @@ func (me *GaapService) DescribeGaapProxyGroupStatisticsByFilter(ctx context.Cont func (me *GaapService) DescribeGaapRealServersStatusByFilter(ctx context.Context, param map[string]interface{}) (realServersStatus []*gaap.RealServerStatus, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeRealServersStatusRequest() ) @@ -3703,7 +3710,7 @@ func (me *GaapService) DescribeGaapRealServersStatusByFilter(ctx context.Context func (me *GaapService) DescribeGaapRuleRealServersByFilter(ctx context.Context, param map[string]interface{}) (ruleRealServers []*gaap.RealServer, bindRealServers []*gaap.BindRealServer, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeRuleRealServersRequest() ) @@ -3755,7 +3762,7 @@ func (me *GaapService) DescribeGaapRuleRealServersByFilter(ctx context.Context, func (me *GaapService) DescribeGaapResourcesByTagByFilter(ctx context.Context, param map[string]interface{}) (resourcesByTag []*gaap.TagResourceInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeResourcesByTagRequest() ) @@ -3796,7 +3803,7 @@ func (me *GaapService) DescribeGaapResourcesByTagByFilter(ctx context.Context, p func (me *GaapService) DescribeGaapRegionAndPriceByFilter(ctx context.Context, param map[string]interface{}) (regionAndPrice []*gaap.RegionDetail, bandwidthUnitPrice []*gaap.BandwidthPriceGradient, currency *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeRegionAndPriceRequest() ) @@ -3839,7 +3846,7 @@ func (me *GaapService) DescribeGaapRegionAndPriceByFilter(ctx context.Context, p func (me *GaapService) DescribeGaapProxyAndStatisticsListenersByFilter(ctx context.Context, param map[string]interface{}) (proxyAndStatisticsListeners []*gaap.ProxySimpleInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeProxyAndStatisticsListenersRequest() ) @@ -3874,7 +3881,7 @@ func (me *GaapService) DescribeGaapProxyAndStatisticsListenersByFilter(ctx conte func (me *GaapService) DescribeGaapProxiesStatusByFilter(ctx context.Context, param map[string]interface{}) (proxiesStatus []*gaap.ProxyStatus, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeProxiesStatusRequest() ) @@ -3912,7 +3919,7 @@ func (me *GaapService) DescribeGaapProxiesStatusByFilter(ctx context.Context, pa func (me *GaapService) DescribeGaapListenerStatisticsByFilter(ctx context.Context, param map[string]interface{}) (listenerStatistics []*gaap.MetricStatisticsInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeListenerStatisticsRequest() ) @@ -3959,7 +3966,7 @@ func (me *GaapService) DescribeGaapListenerStatisticsByFilter(ctx context.Contex func (me *GaapService) DescribeGaapListenerRealServersByFilter(ctx context.Context, param map[string]interface{}) (listenerRealServers []*gaap.RealServer, bindRealServers []*gaap.BindRealServer, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeListenerRealServersRequest() ) @@ -3994,7 +4001,7 @@ func (me *GaapService) DescribeGaapListenerRealServersByFilter(ctx context.Conte func (me *GaapService) DescribeGaapGroupAndStatisticsProxyByFilter(ctx context.Context, param map[string]interface{}) (groupAndStatisticsProxy []*gaap.GroupStatisticsInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeGroupAndStatisticsProxyRequest() ) @@ -4029,7 +4036,7 @@ func (me *GaapService) DescribeGaapGroupAndStatisticsProxyByFilter(ctx context.C func (me *GaapService) DescribeGaapDomainErrorPageInfosByFilter(ctx context.Context, param map[string]interface{}) (domainErrorPageInfos []*gaap.DomainErrorPageInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewDescribeDomainErrorPageInfoByIdsRequest() ) @@ -4064,7 +4071,7 @@ func (me *GaapService) DescribeGaapDomainErrorPageInfosByFilter(ctx context.Cont func (me *GaapService) DescribeGaapCheckProxyCreate(ctx context.Context, param map[string]interface{}) (checkProxyCreate *uint64, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = gaap.NewCheckProxyCreateRequest() ) @@ -4122,7 +4129,7 @@ func (me *GaapService) DescribeGaapCheckProxyCreate(ctx context.Context, param m } func (me *GaapService) DescribeGaapProxyGroupById(ctx context.Context, groupId string) (proxyGroup *gaap.ProxyGroupDetail, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeProxyGroupDetailsRequest() request.GroupId = &groupId @@ -4152,7 +4159,7 @@ func (me *GaapService) DescribeGaapProxyGroupById(ctx context.Context, groupId s } func (me *GaapService) DescribeGaapProxyGroupProxies(ctx context.Context, groupId string) (proxies []*gaap.ProxyInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeProxiesRequest() request.Filters = append(request.Filters, &gaap.Filter{ @@ -4196,7 +4203,7 @@ func (me *GaapService) DescribeGaapProxyGroupProxies(ctx context.Context, groupI } func (me *GaapService) DeleteGaapProxyGroupById(ctx context.Context, groupId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDeleteProxyGroupRequest() request.GroupId = &groupId @@ -4220,7 +4227,7 @@ func (me *GaapService) DeleteGaapProxyGroupById(ctx context.Context, groupId str } func (me *GaapService) DescribeGaapGlobalDomainById(ctx context.Context, domainId string, projectId int) (globalDomain *gaap.Domain, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeGlobalDomainsRequest() request.Filters = []*gaap.Filter{ @@ -4257,7 +4264,7 @@ func (me *GaapService) DescribeGaapGlobalDomainById(ctx context.Context, domainI func (me *GaapService) DomainInstanceStateRefreshFunc(instanceId string, projectId int, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeGaapGlobalDomainById(ctx, instanceId, projectId) @@ -4270,7 +4277,7 @@ func (me *GaapService) DomainInstanceStateRefreshFunc(instanceId string, project } func (me *GaapService) DisableGlobalDomain(ctx context.Context, domainId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDisableGlobalDomainRequest() request.DomainId = &domainId @@ -4294,7 +4301,7 @@ func (me *GaapService) DisableGlobalDomain(ctx context.Context, domainId string) } func (me *GaapService) EnableGlobalDomain(ctx context.Context, domainId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewEnableGlobalDomainRequest() request.DomainId = &domainId @@ -4318,7 +4325,7 @@ func (me *GaapService) EnableGlobalDomain(ctx context.Context, domainId string) } func (me *GaapService) DeleteGaapGlobalDomainById(ctx context.Context, domainId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDeleteGlobalDomainRequest() request.DomainId = &domainId @@ -4342,7 +4349,7 @@ func (me *GaapService) DeleteGaapGlobalDomainById(ctx context.Context, domainId } func (me *GaapService) DescribeGaapGlobalDomainDnsById(ctx context.Context, domainId string, params map[string]interface{}) (globalDomainDns *gaap.GlobalDns, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDescribeGlobalDomainDnsRequest() request.DomainId = &domainId @@ -4410,7 +4417,7 @@ func (me *GaapService) DescribeGaapGlobalDomainDnsById(ctx context.Context, doma func (me *GaapService) GlobalDomainDnsStateRefreshFunc(domainId string, dnsRecordId int, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil params := make(map[string]interface{}) params["DnsRecordId"] = dnsRecordId @@ -4425,7 +4432,7 @@ func (me *GaapService) GlobalDomainDnsStateRefreshFunc(domainId string, dnsRecor } func (me *GaapService) DeleteGaapGlobalDomainDnsById(ctx context.Context, dnsRecordId int) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewDeleteGlobalDomainDnsRequest() request.DnsRecordId = helper.IntUint64(dnsRecordId) @@ -4449,7 +4456,7 @@ func (me *GaapService) DeleteGaapGlobalDomainDnsById(ctx context.Context, dnsRec } func (me *GaapService) ModifyDomain(ctx context.Context, listenerId, oldDomain, newDomain string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := gaap.NewModifyDomainRequest() request.ListenerId = &listenerId @@ -4477,7 +4484,7 @@ func (me *GaapService) ModifyDomain(ctx context.Context, listenerId, oldDomain, } func (me *GaapService) SwitchProxyGroup(ctx context.Context, groupId, status string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) if status == "open" { request := gaap.NewOpenProxyGroupRequest() diff --git a/tencentcloud/services/gaap/service_tencentcloud_tag.go b/tencentcloud/services/gaap/service_tencentcloud_tag.go new file mode 100644 index 0000000000..344170759f --- /dev/null +++ b/tencentcloud/services/gaap/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package gaap + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/data_source_tc_kms_describe_keys.go b/tencentcloud/services/kms/data_source_tc_kms_describe_keys.go similarity index 86% rename from tencentcloud/data_source_tc_kms_describe_keys.go rename to tencentcloud/services/kms/data_source_tc_kms_describe_keys.go index 0770b93fb9..12ab418f08 100644 --- a/tencentcloud/data_source_tc_kms_describe_keys.go +++ b/tencentcloud/services/kms/data_source_tc_kms_describe_keys.go @@ -1,15 +1,17 @@ -package tencentcloud +package kms import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudKmsDescribeKeys() *schema.Resource { +func DataSourceTencentCloudKmsDescribeKeys() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKmsDescribeKeysRead, Schema: map[string]*schema.Schema{ @@ -103,13 +105,13 @@ func dataSourceTencentCloudKmsDescribeKeys() *schema.Resource { } func dataSourceTencentCloudKmsDescribeKeysRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_kms_describe_keys.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_kms_describe_keys.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} keyMetadata []*kms.KeyMetadata ) @@ -119,10 +121,10 @@ func dataSourceTencentCloudKmsDescribeKeysRead(d *schema.ResourceData, meta inte paramMap["KeyIds"] = helper.InterfacesStringsPoint(keyIdsSet) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKmsKeyListsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } keyMetadata = result @@ -164,7 +166,7 @@ func dataSourceTencentCloudKmsDescribeKeysRead(d *schema.ResourceData, meta inte d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_kms_describe_keys_test.go b/tencentcloud/services/kms/data_source_tc_kms_describe_keys_test.go similarity index 87% rename from tencentcloud/data_source_tc_kms_describe_keys_test.go rename to tencentcloud/services/kms/data_source_tc_kms_describe_keys_test.go index 8d30866e88..37a13959aa 100644 --- a/tencentcloud/data_source_tc_kms_describe_keys_test.go +++ b/tencentcloud/services/kms/data_source_tc_kms_describe_keys_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudKmsDescribeKeysDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsKeyListsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_kms_describe_keys.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_kms_describe_keys.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_kms_describe_keys.example", "key_list.0.key_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_kms_describe_keys.example", "key_list.0.create_time"), resource.TestCheckResourceAttrSet("data.tencentcloud_kms_describe_keys.example", "key_list.0.description"), diff --git a/tencentcloud/data_source_tc_kms_get_parameters_for_import.go b/tencentcloud/services/kms/data_source_tc_kms_get_parameters_for_import.go similarity index 81% rename from tencentcloud/data_source_tc_kms_get_parameters_for_import.go rename to tencentcloud/services/kms/data_source_tc_kms_get_parameters_for_import.go index ebfe49124e..11a204161e 100644 --- a/tencentcloud/data_source_tc_kms_get_parameters_for_import.go +++ b/tencentcloud/services/kms/data_source_tc_kms_get_parameters_for_import.go @@ -1,15 +1,17 @@ -package tencentcloud +package kms import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudKmsGetParametersForImport() *schema.Resource { +func DataSourceTencentCloudKmsGetParametersForImport() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKmsGetParametersForImportRead, Schema: map[string]*schema.Schema{ @@ -53,13 +55,13 @@ func dataSourceTencentCloudKmsGetParametersForImport() *schema.Resource { } func dataSourceTencentCloudKmsGetParametersForImportRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_kms_get_parameters_for_import.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_kms_get_parameters_for_import.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} getParametersForImport *kms.GetParametersForImportResponseParams keyId string ) @@ -78,10 +80,10 @@ func dataSourceTencentCloudKmsGetParametersForImportRead(d *schema.ResourceData, paramMap["WrappingKeySpec"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKmsGetParametersForImportByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } getParametersForImport = result @@ -111,7 +113,7 @@ func dataSourceTencentCloudKmsGetParametersForImportRead(d *schema.ResourceData, d.SetId(keyId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_kms_get_parameters_for_import_test.go b/tencentcloud/services/kms/data_source_tc_kms_get_parameters_for_import_test.go similarity index 73% rename from tencentcloud/data_source_tc_kms_get_parameters_for_import_test.go rename to tencentcloud/services/kms/data_source_tc_kms_get_parameters_for_import_test.go index 29c9461004..652a0d68df 100644 --- a/tencentcloud/data_source_tc_kms_get_parameters_for_import_test.go +++ b/tencentcloud/services/kms/data_source_tc_kms_get_parameters_for_import_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixKmsGetParametersForImportDataSource_basic(t *test t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsGetParametersForImportDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_kms_get_parameters_for_import.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_kms_get_parameters_for_import.example"), ), }, }, diff --git a/tencentcloud/data_source_tc_kms_keys.go b/tencentcloud/services/kms/data_source_tc_kms_keys.go similarity index 91% rename from tencentcloud/data_source_tc_kms_keys.go rename to tencentcloud/services/kms/data_source_tc_kms_keys.go index b329411489..d0edec852e 100644 --- a/tencentcloud/data_source_tc_kms_keys.go +++ b/tencentcloud/services/kms/data_source_tc_kms_keys.go @@ -1,16 +1,18 @@ -package tencentcloud +package kms import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudKmsKeys() *schema.Resource { +func DataSourceTencentCloudKmsKeys() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKmsKeysRead, Schema: map[string]*schema.Schema{ @@ -138,10 +140,10 @@ func dataSourceTencentCloudKmsKeys() *schema.Resource { } func dataSourceTencentCloudKmsKeysRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_kms_keys.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_kms_keys.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) param := make(map[string]interface{}) if v, ok := d.GetOk("role"); ok { @@ -168,13 +170,13 @@ func dataSourceTencentCloudKmsKeysRead(d *schema.ResourceData, meta interface{}) } kmsService := KmsService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } var keys []*kms.KeyMetadata - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := kmsService.DescribeKeysByFilter(ctx, param) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } keys = results return nil @@ -212,7 +214,7 @@ func dataSourceTencentCloudKmsKeysRead(d *schema.ResourceData, meta interface{}) return e } if output, ok := d.GetOk("result_output_file"); ok && output.(string) != "" { - return writeToFile(output.(string), keyList) + return tccommon.WriteToFile(output.(string), keyList) } return nil } diff --git a/tencentcloud/data_source_tc_kms_keys_test.go b/tencentcloud/services/kms/data_source_tc_kms_keys_test.go similarity index 86% rename from tencentcloud/data_source_tc_kms_keys_test.go rename to tencentcloud/services/kms/data_source_tc_kms_keys_test.go index ab0ec49aff..f5fb8a3e3c 100644 --- a/tencentcloud/data_source_tc_kms_keys_test.go +++ b/tencentcloud/services/kms/data_source_tc_kms_keys_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package kms_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -14,13 +16,13 @@ func TestAccTencentCloudKmsKeyDataSource(t *testing.T) { rName := fmt.Sprintf("tf-testacc-kms-key-%s", acctest.RandString(13)) resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceKmsKeyConfig(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(dataSourceName), + tcacctest.AccCheckTencentCloudDataSourceID(dataSourceName), resource.TestCheckResourceAttrSet(dataSourceName, "key_list.0.key_id"), resource.TestCheckResourceAttrSet(dataSourceName, "key_list.0.create_time"), resource.TestCheckResourceAttrSet(dataSourceName, "key_list.0.description"), diff --git a/tencentcloud/data_source_tc_kms_list_algorithms.go b/tencentcloud/services/kms/data_source_tc_kms_list_algorithms.go similarity index 85% rename from tencentcloud/data_source_tc_kms_list_algorithms.go rename to tencentcloud/services/kms/data_source_tc_kms_list_algorithms.go index ae50ce16df..1e687d2df3 100644 --- a/tencentcloud/data_source_tc_kms_list_algorithms.go +++ b/tencentcloud/services/kms/data_source_tc_kms_list_algorithms.go @@ -1,16 +1,18 @@ -package tencentcloud +package kms import ( "context" "strconv" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" ) -func dataSourceTencentCloudKmsListAlgorithms() *schema.Resource { +func DataSourceTencentCloudKmsListAlgorithms() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKmsListAlgorithmsRead, Schema: map[string]*schema.Schema{ @@ -81,20 +83,20 @@ func dataSourceTencentCloudKmsListAlgorithms() *schema.Resource { } func dataSourceTencentCloudKmsListAlgorithmsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_kms_list_algorithms.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_kms_list_algorithms.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} listAlgorithms *kms.ListAlgorithmsResponseParams ) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKmsListAlgorithmsByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } listAlgorithms = result @@ -162,7 +164,7 @@ func dataSourceTencentCloudKmsListAlgorithmsRead(d *schema.ResourceData, meta in d.SetId(strconv.FormatInt(time.Now().Unix(), 10)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_kms_list_algorithms_test.go b/tencentcloud/services/kms/data_source_tc_kms_list_algorithms_test.go similarity index 67% rename from tencentcloud/data_source_tc_kms_list_algorithms_test.go rename to tencentcloud/services/kms/data_source_tc_kms_list_algorithms_test.go index 3ac8aaf2fe..ce53ce337e 100644 --- a/tencentcloud/data_source_tc_kms_list_algorithms_test.go +++ b/tencentcloud/services/kms/data_source_tc_kms_list_algorithms_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudKmsListAlgorithmsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsListAlgorithmsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_kms_list_algorithms.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_kms_list_algorithms.example"), ), }, }, diff --git a/tencentcloud/data_source_tc_kms_list_keys.go b/tencentcloud/services/kms/data_source_tc_kms_list_keys.go similarity index 78% rename from tencentcloud/data_source_tc_kms_list_keys.go rename to tencentcloud/services/kms/data_source_tc_kms_list_keys.go index 261aff20c1..f056e8e5b4 100644 --- a/tencentcloud/data_source_tc_kms_list_keys.go +++ b/tencentcloud/services/kms/data_source_tc_kms_list_keys.go @@ -1,15 +1,17 @@ -package tencentcloud +package kms import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudKmsListKeys() *schema.Resource { +func DataSourceTencentCloudKmsListKeys() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKmsListKeysRead, Schema: map[string]*schema.Schema{ @@ -47,13 +49,13 @@ func dataSourceTencentCloudKmsListKeys() *schema.Resource { } func dataSourceTencentCloudKmsListKeysRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_kms_list_keys.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_kms_list_keys.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} listKeys []*kms.Key ) @@ -66,10 +68,10 @@ func dataSourceTencentCloudKmsListKeysRead(d *schema.ResourceData, meta interfac paramMap["HsmClusterId"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKmsListKeysByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } listKeys = result @@ -99,7 +101,7 @@ func dataSourceTencentCloudKmsListKeysRead(d *schema.ResourceData, meta interfac d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_kms_list_keys_test.go b/tencentcloud/services/kms/data_source_tc_kms_list_keys_test.go similarity index 70% rename from tencentcloud/data_source_tc_kms_list_keys_test.go rename to tencentcloud/services/kms/data_source_tc_kms_list_keys_test.go index 837fb012e8..12e5ecd43c 100644 --- a/tencentcloud/data_source_tc_kms_list_keys_test.go +++ b/tencentcloud/services/kms/data_source_tc_kms_list_keys_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudKmsListKeysDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsListKeysDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_kms_list_keys.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_kms_list_keys.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_kms_list_keys.example", "keys.0.key_id"), ), }, diff --git a/tencentcloud/data_source_tc_kms_public_key.go b/tencentcloud/services/kms/data_source_tc_kms_public_key.go similarity index 73% rename from tencentcloud/data_source_tc_kms_public_key.go rename to tencentcloud/services/kms/data_source_tc_kms_public_key.go index ad155fa3b0..42d6a051bc 100644 --- a/tencentcloud/data_source_tc_kms_public_key.go +++ b/tencentcloud/services/kms/data_source_tc_kms_public_key.go @@ -1,15 +1,17 @@ -package tencentcloud +package kms import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudKmsPublicKey() *schema.Resource { +func DataSourceTencentCloudKmsPublicKey() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKmsPublicKeyRead, Schema: map[string]*schema.Schema{ @@ -38,13 +40,13 @@ func dataSourceTencentCloudKmsPublicKey() *schema.Resource { } func dataSourceTencentCloudKmsPublicKeyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_kms_public_key.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_kms_public_key.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} publicKey *kms.GetPublicKeyResponseParams keyId string ) @@ -55,10 +57,10 @@ func dataSourceTencentCloudKmsPublicKeyRead(d *schema.ResourceData, meta interfa keyId = v.(string) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKmsPublicKeyByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } publicKey = result @@ -84,7 +86,7 @@ func dataSourceTencentCloudKmsPublicKeyRead(d *schema.ResourceData, meta interfa d.SetId(keyId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_kms_public_key_test.go b/tencentcloud/services/kms/data_source_tc_kms_public_key_test.go similarity index 78% rename from tencentcloud/data_source_tc_kms_public_key_test.go rename to tencentcloud/services/kms/data_source_tc_kms_public_key_test.go index 31dcca371e..82f480596d 100644 --- a/tencentcloud/data_source_tc_kms_public_key_test.go +++ b/tencentcloud/services/kms/data_source_tc_kms_public_key_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package kms_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -14,14 +16,14 @@ func TestAccTencentCloudKmsPublicKeyDataSource_basic(t *testing.T) { rName := fmt.Sprintf("tf-testacc-kms-key-%s", acctest.RandString(13)) resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccKmsPublicKeyDataSource, rName), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_kms_public_key.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_kms_public_key.example"), ), }, }, diff --git a/tencentcloud/data_source_tc_kms_white_box_decrypt_key.go b/tencentcloud/services/kms/data_source_tc_kms_white_box_decrypt_key.go similarity index 70% rename from tencentcloud/data_source_tc_kms_white_box_decrypt_key.go rename to tencentcloud/services/kms/data_source_tc_kms_white_box_decrypt_key.go index 5c94b4a78d..198f4afc35 100644 --- a/tencentcloud/data_source_tc_kms_white_box_decrypt_key.go +++ b/tencentcloud/services/kms/data_source_tc_kms_white_box_decrypt_key.go @@ -1,15 +1,17 @@ -package tencentcloud +package kms import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudKmsWhiteBoxDecryptKey() *schema.Resource { +func DataSourceTencentCloudKmsWhiteBoxDecryptKey() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKmsWhiteBoxDecryptKeyRead, Schema: map[string]*schema.Schema{ @@ -33,13 +35,13 @@ func dataSourceTencentCloudKmsWhiteBoxDecryptKey() *schema.Resource { } func dataSourceTencentCloudKmsWhiteBoxDecryptKeyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_kms_white_box_decrypt_key.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_kms_white_box_decrypt_key.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} whiteBoxDecryptKey *kms.DescribeWhiteBoxDecryptKeyResponseParams keyId string ) @@ -50,10 +52,10 @@ func dataSourceTencentCloudKmsWhiteBoxDecryptKeyRead(d *schema.ResourceData, met keyId = v.(string) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKmsWhiteBoxDecryptKeyByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } whiteBoxDecryptKey = result @@ -71,7 +73,7 @@ func dataSourceTencentCloudKmsWhiteBoxDecryptKeyRead(d *schema.ResourceData, met d.SetId(keyId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_kms_white_box_decrypt_key_test.go b/tencentcloud/services/kms/data_source_tc_kms_white_box_decrypt_key_test.go similarity index 72% rename from tencentcloud/data_source_tc_kms_white_box_decrypt_key_test.go rename to tencentcloud/services/kms/data_source_tc_kms_white_box_decrypt_key_test.go index 9b91832639..fe40170dac 100644 --- a/tencentcloud/data_source_tc_kms_white_box_decrypt_key_test.go +++ b/tencentcloud/services/kms/data_source_tc_kms_white_box_decrypt_key_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudKmsWhiteBoxDecryptKeyDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsWhiteBoxDecryptKeyDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_kms_white_box_decrypt_key.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_kms_white_box_decrypt_key.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_kms_white_box_decrypt_key.example", "key_id"), ), }, diff --git a/tencentcloud/data_source_tc_kms_white_box_device_fingerprints.go b/tencentcloud/services/kms/data_source_tc_kms_white_box_device_fingerprints.go similarity index 76% rename from tencentcloud/data_source_tc_kms_white_box_device_fingerprints.go rename to tencentcloud/services/kms/data_source_tc_kms_white_box_device_fingerprints.go index 0dceb28675..75cba3eb6b 100644 --- a/tencentcloud/data_source_tc_kms_white_box_device_fingerprints.go +++ b/tencentcloud/services/kms/data_source_tc_kms_white_box_device_fingerprints.go @@ -1,15 +1,17 @@ -package tencentcloud +package kms import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudKmsWhiteBoxDeviceFingerprints() *schema.Resource { +func DataSourceTencentCloudKmsWhiteBoxDeviceFingerprints() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKmsWhiteBoxDeviceFingerprintsRead, Schema: map[string]*schema.Schema{ @@ -47,13 +49,13 @@ func dataSourceTencentCloudKmsWhiteBoxDeviceFingerprints() *schema.Resource { } func dataSourceTencentCloudKmsWhiteBoxDeviceFingerprintsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_kms_white_box_device_fingerprints.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_kms_white_box_device_fingerprints.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} deviceFingerprints []*kms.DeviceFingerprint keyId string ) @@ -64,10 +66,10 @@ func dataSourceTencentCloudKmsWhiteBoxDeviceFingerprintsRead(d *schema.ResourceD keyId = v.(string) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKmsWhiteBoxDeviceFingerprintsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } deviceFingerprints = result @@ -100,7 +102,7 @@ func dataSourceTencentCloudKmsWhiteBoxDeviceFingerprintsRead(d *schema.ResourceD d.SetId(keyId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_kms_white_box_device_fingerprints_test.go b/tencentcloud/services/kms/data_source_tc_kms_white_box_device_fingerprints_test.go similarity index 73% rename from tencentcloud/data_source_tc_kms_white_box_device_fingerprints_test.go rename to tencentcloud/services/kms/data_source_tc_kms_white_box_device_fingerprints_test.go index ecfc4ff68f..6ada682c25 100644 --- a/tencentcloud/data_source_tc_kms_white_box_device_fingerprints_test.go +++ b/tencentcloud/services/kms/data_source_tc_kms_white_box_device_fingerprints_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudKmsWhiteBoxDeviceFingerprintsDataSource_basic(t *testing t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsWhiteBoxDeviceFingerprintsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_kms_white_box_device_fingerprints.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_kms_white_box_device_fingerprints.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_kms_white_box_device_fingerprints.example", "key_id"), ), }, diff --git a/tencentcloud/data_source_tc_kms_white_box_key_details.go b/tencentcloud/services/kms/data_source_tc_kms_white_box_key_details.go similarity index 88% rename from tencentcloud/data_source_tc_kms_white_box_key_details.go rename to tencentcloud/services/kms/data_source_tc_kms_white_box_key_details.go index d382a0ce71..620a5a0711 100644 --- a/tencentcloud/data_source_tc_kms_white_box_key_details.go +++ b/tencentcloud/services/kms/data_source_tc_kms_white_box_key_details.go @@ -1,15 +1,17 @@ -package tencentcloud +package kms import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudKmsWhiteBoxKeyDetails() *schema.Resource { +func DataSourceTencentCloudKmsWhiteBoxKeyDetails() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudKmsWhiteBoxKeyDetailsRead, Schema: map[string]*schema.Schema{ @@ -97,13 +99,13 @@ func dataSourceTencentCloudKmsWhiteBoxKeyDetails() *schema.Resource { } func dataSourceTencentCloudKmsWhiteBoxKeyDetailsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_kms_white_box_key_details.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_kms_white_box_key_details.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} whiteBoxKeyInfo []*kms.WhiteboxKeyInfo ) @@ -112,10 +114,10 @@ func dataSourceTencentCloudKmsWhiteBoxKeyDetailsRead(d *schema.ResourceData, met paramMap["KeyStatus"] = helper.IntInt64(v.(int)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeKmsWhiteBoxKeyDetailsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } whiteBoxKeyInfo = result @@ -191,7 +193,7 @@ func dataSourceTencentCloudKmsWhiteBoxKeyDetailsRead(d *schema.ResourceData, met d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_kms_white_box_key_details_test.go b/tencentcloud/services/kms/data_source_tc_kms_white_box_key_details_test.go similarity index 88% rename from tencentcloud/data_source_tc_kms_white_box_key_details_test.go rename to tencentcloud/services/kms/data_source_tc_kms_white_box_key_details_test.go index 67e8455f29..7fbb941e20 100644 --- a/tencentcloud/data_source_tc_kms_white_box_key_details_test.go +++ b/tencentcloud/services/kms/data_source_tc_kms_white_box_key_details_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixKmsWhiteBoxKeyDetailsDataSource_basic(t *testing. t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsWhiteBoxKeyDetailsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_kms_white_box_key_details.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_kms_white_box_key_details.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_kms_white_box_key_details.example", "key_infos.0.algorithm"), resource.TestCheckResourceAttrSet("data.tencentcloud_kms_white_box_key_details.example", "key_infos.0.create_time"), resource.TestCheckResourceAttrSet("data.tencentcloud_kms_white_box_key_details.example", "key_infos.0.decrypt_key"), diff --git a/tencentcloud/extension_kms.go b/tencentcloud/services/kms/extension_kms.go similarity index 98% rename from tencentcloud/extension_kms.go rename to tencentcloud/services/kms/extension_kms.go index 6b8fe526bd..0a9de3c9ac 100644 --- a/tencentcloud/extension_kms.go +++ b/tencentcloud/services/kms/extension_kms.go @@ -1,4 +1,4 @@ -package tencentcloud +package kms const ( KMS_ORIGIN_TENCENT_KMS = "TENCENT_KMS" diff --git a/tencentcloud/services/kms/extension_tags.go b/tencentcloud/services/kms/extension_tags.go new file mode 100644 index 0000000000..f17bf28926 --- /dev/null +++ b/tencentcloud/services/kms/extension_tags.go @@ -0,0 +1,3 @@ +package kms + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/resource_tc_kms_cloud_resource_attachment.go b/tencentcloud/services/kms/resource_tc_kms_cloud_resource_attachment.go similarity index 75% rename from tencentcloud/resource_tc_kms_cloud_resource_attachment.go rename to tencentcloud/services/kms/resource_tc_kms_cloud_resource_attachment.go index 62c388367b..49f6b529b1 100644 --- a/tencentcloud/resource_tc_kms_cloud_resource_attachment.go +++ b/tencentcloud/services/kms/resource_tc_kms_cloud_resource_attachment.go @@ -1,4 +1,4 @@ -package tencentcloud +package kms import ( "context" @@ -6,13 +6,15 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudKmsCloudResourceAttachment() *schema.Resource { +func ResourceTencentCloudKmsCloudResourceAttachment() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudKmsCloudResourceAttachmentCreate, Read: resourceTencentCloudKmsCloudResourceAttachmentRead, @@ -70,11 +72,11 @@ func resourceTencentCloudKmsCloudResourceAttachment() *schema.Resource { } func resourceTencentCloudKmsCloudResourceAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_cloud_resource_attachment.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_cloud_resource_attachment.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = kms.NewBindCloudResourceRequest() keyId string productId string @@ -96,10 +98,10 @@ func resourceTencentCloudKmsCloudResourceAttachmentCreate(d *schema.ResourceData resourceId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseKmsClient().BindCloudResource(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseKmsClient().BindCloudResource(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -112,21 +114,21 @@ func resourceTencentCloudKmsCloudResourceAttachmentCreate(d *schema.ResourceData return err } - d.SetId(strings.Join([]string{keyId, productId, resourceId}, FILED_SP)) + d.SetId(strings.Join([]string{keyId, productId, resourceId}, tccommon.FILED_SP)) return resourceTencentCloudKmsCloudResourceAttachmentRead(d, meta) } func resourceTencentCloudKmsCloudResourceAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_cloud_resource_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_cloud_resource_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -173,16 +175,16 @@ func resourceTencentCloudKmsCloudResourceAttachmentRead(d *schema.ResourceData, } func resourceTencentCloudKmsCloudResourceAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_cloud_resource_attachment.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_cloud_resource_attachment.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_kms_cloud_resource_attachment_test.go b/tencentcloud/services/kms/resource_tc_kms_cloud_resource_attachment_test.go similarity index 87% rename from tencentcloud/resource_tc_kms_cloud_resource_attachment_test.go rename to tencentcloud/services/kms/resource_tc_kms_cloud_resource_attachment_test.go index e185041302..d3280b81dc 100644 --- a/tencentcloud/resource_tc_kms_cloud_resource_attachment_test.go +++ b/tencentcloud/services/kms/resource_tc_kms_cloud_resource_attachment_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudKmsCloudResourceAttachmentResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsCloudResourceAttachment, diff --git a/tencentcloud/resource_tc_kms_external_key.go b/tencentcloud/services/kms/resource_tc_kms_external_key.go similarity index 73% rename from tencentcloud/resource_tc_kms_external_key.go rename to tencentcloud/services/kms/resource_tc_kms_external_key.go index f534a21c64..8445db92de 100644 --- a/tencentcloud/resource_tc_kms_external_key.go +++ b/tencentcloud/services/kms/resource_tc_kms_external_key.go @@ -1,17 +1,19 @@ -package tencentcloud +package kms import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudKmsExternalKey() *schema.Resource { +func ResourceTencentCloudKmsExternalKey() *schema.Resource { specialInfo := map[string]*schema.Schema{ "wrapping_algorithm": { Type: schema.TypeString, @@ -51,12 +53,12 @@ func resourceTencentCloudKmsExternalKey() *schema.Resource { } func resourceTencentCloudKmsExternalKeyCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_external_key.create")() + defer tccommon.LogElapsed("resource.tencentcloud_kms_external_key.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) kmsService := KmsService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } keyType := KMS_ORIGIN_TYPE[KMS_ORIGIN_EXTERNAL] @@ -69,10 +71,10 @@ func resourceTencentCloudKmsExternalKeyCreate(d *schema.ResourceData, meta inter var keyId string var outErr, inErr error - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { keyId, inErr = kmsService.CreateKey(ctx, keyType, alias, description, keyUsage) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -90,10 +92,10 @@ func resourceTencentCloudKmsExternalKeyCreate(d *schema.ResourceData, meta inter param["key_material_base64"] = v.(string) param["valid_to"] = d.Get("valid_to").(int) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.ImportKeyMaterial(ctx, param) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -103,10 +105,10 @@ func resourceTencentCloudKmsExternalKeyCreate(d *schema.ResourceData, meta inter } if isEnabled := d.Get("is_enabled").(bool); !isEnabled { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.DisableKey(ctx, d.Id()) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -117,10 +119,10 @@ func resourceTencentCloudKmsExternalKeyCreate(d *schema.ResourceData, meta inter } if isArchived := d.Get("is_archived").(bool); isArchived { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.ArchiveKey(ctx, d.Id()) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -132,13 +134,13 @@ func resourceTencentCloudKmsExternalKeyCreate(d *schema.ResourceData, meta inter } if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} keyMetaData, err := kmsService.DescribeKeyById(ctx, keyId) if err != nil { return err } - resourceName := BuildTagResourceName("kms", "key", tcClient.Region, *keyMetaData.ResourceId) + resourceName := tccommon.BuildTagResourceName("kms", "key", tcClient.Region, *keyMetaData.ResourceId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err } @@ -148,21 +150,21 @@ func resourceTencentCloudKmsExternalKeyCreate(d *schema.ResourceData, meta inter } func resourceTencentCloudKmsExternalKeyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_external_key.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_external_key.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) keyId := d.Id() kmsService := &KmsService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } var key *kms.KeyMetadata - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := kmsService.DescribeKeyById(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } key = result return nil @@ -183,7 +185,7 @@ func resourceTencentCloudKmsExternalKeyRead(d *schema.ResourceData, meta interfa _ = d.Set("key_state", key.KeyState) transformKeyState(d) - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "kms", "key", tcClient.Region, *key.ResourceId) if err != nil { @@ -194,22 +196,22 @@ func resourceTencentCloudKmsExternalKeyRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudKmsExternalKeyUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_external_key.update")() + defer tccommon.LogElapsed("resource.tencentcloud_kms_external_key.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) keyId := d.Id() kmsService := KmsService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } d.Partial(true) if d.HasChange("description") { description := d.Get("description").(string) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.UpdateKeyDescription(ctx, keyId, description) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -222,10 +224,10 @@ func resourceTencentCloudKmsExternalKeyUpdate(d *schema.ResourceData, meta inter if d.HasChange("alias") { alias := d.Get("alias").(string) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.UpdateKeyAlias(ctx, keyId, alias) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -245,10 +247,10 @@ func resourceTencentCloudKmsExternalKeyUpdate(d *schema.ResourceData, meta inter } var key *kms.KeyMetadata - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := kmsService.DescribeKeyById(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } key = result return nil @@ -278,7 +280,7 @@ func resourceTencentCloudKmsExternalKeyUpdate(d *schema.ResourceData, meta inter } if d.HasChange("tags") { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldValue, newValue := d.GetChange("tags") @@ -287,7 +289,7 @@ func resourceTencentCloudKmsExternalKeyUpdate(d *schema.ResourceData, meta inter if err != nil { return err } - resourceName := BuildTagResourceName("kms", "key", tcClient.Region, *keyMetaData.ResourceId) + resourceName := tccommon.BuildTagResourceName("kms", "key", tcClient.Region, *keyMetaData.ResourceId) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -300,22 +302,22 @@ func resourceTencentCloudKmsExternalKeyUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudKmsExternalKeyDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_external_key.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_kms_external_key.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) kmsService := KmsService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } keyId := d.Id() pendingDeleteWindowInDays := d.Get("pending_delete_window_in_days").(int) isEnabled := d.Get("is_enabled").(bool) if isEnabled { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.DisableKey(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -324,10 +326,10 @@ func resourceTencentCloudKmsExternalKeyDelete(d *schema.ResourceData, meta inter return err } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.DeleteKey(ctx, keyId, uint64(pendingDeleteWindowInDays)) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -336,10 +338,10 @@ func resourceTencentCloudKmsExternalKeyDelete(d *schema.ResourceData, meta inter return err } - return resource.Retry(readRetryTimeout, func() *resource.RetryError { + return resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { key, e := kmsService.DescribeKeyById(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *key.KeyState == KMS_KEY_STATE_PENDINGDELETE { return nil @@ -358,18 +360,18 @@ func updateKeyMaterial(ctx context.Context, kmsService KmsService, d *schema.Res var err error if d.HasChange("key_material_base64") && param["key_material_base64"] == "" { - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.DeleteImportKeyMaterial(ctx, d.Id()) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) } else { - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.ImportKeyMaterial(ctx, param) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) diff --git a/tencentcloud/resource_tc_kms_external_key_test.go b/tencentcloud/services/kms/resource_tc_kms_external_key_test.go similarity index 92% rename from tencentcloud/resource_tc_kms_external_key_test.go rename to tencentcloud/services/kms/resource_tc_kms_external_key_test.go index 8d3827ce7b..aae6275adf 100644 --- a/tencentcloud/resource_tc_kms_external_key_test.go +++ b/tencentcloud/services/kms/resource_tc_kms_external_key_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package kms_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -14,8 +16,8 @@ func TestAccKmsExternalKey_basic(t *testing.T) { resourceName := "tencentcloud_kms_external_key.test" resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckKmsKeyDestroy, Steps: []resource.TestStep{ { diff --git a/tencentcloud/resource_tc_kms_key.go b/tencentcloud/services/kms/resource_tc_kms_key.go similarity index 74% rename from tencentcloud/resource_tc_kms_key.go rename to tencentcloud/services/kms/resource_tc_kms_key.go index 85926766ce..aa33cf52e1 100644 --- a/tencentcloud/resource_tc_kms_key.go +++ b/tencentcloud/services/kms/resource_tc_kms_key.go @@ -1,10 +1,12 @@ -package tencentcloud +package kms import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -56,7 +58,7 @@ func TencentKmsBasicInfo() map[string]*schema.Schema { } } -func resourceTencentCloudKmsKey() *schema.Resource { +func ResourceTencentCloudKmsKey() *schema.Resource { specialInfo := map[string]*schema.Schema{ "key_usage": { Type: schema.TypeString, @@ -92,12 +94,12 @@ func resourceTencentCloudKmsKey() *schema.Resource { } func resourceTencentCloudKmsKeyCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_key.create")() + defer tccommon.LogElapsed("resource.tencentcloud_kms_key.create")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - kmsService = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + kmsService = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) keyType := KMS_ORIGIN_TYPE[KMS_ORIGIN_TENCENT_KMS] @@ -115,10 +117,10 @@ func resourceTencentCloudKmsKeyCreate(d *schema.ResourceData, meta interface{}) var keyId string var outErr, inErr error - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { keyId, inErr = kmsService.CreateKey(ctx, keyType, alias, description, keyUsage) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil @@ -132,10 +134,10 @@ func resourceTencentCloudKmsKeyCreate(d *schema.ResourceData, meta interface{}) d.SetId(keyId) if isEnabled := d.Get("is_enabled").(bool); !isEnabled { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.DisableKey(ctx, d.Id()) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil @@ -149,10 +151,10 @@ func resourceTencentCloudKmsKeyCreate(d *schema.ResourceData, meta interface{}) if keyUsage == KMS_KEY_USAGE_ENCRYPT_DECRYPT { if keyRotationEnabled := d.Get("key_rotation_enabled").(bool); keyRotationEnabled { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.EnableKeyRotation(ctx, d.Id()) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil @@ -166,10 +168,10 @@ func resourceTencentCloudKmsKeyCreate(d *schema.ResourceData, meta interface{}) } if isArchived := d.Get("is_archived").(bool); isArchived { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.ArchiveKey(ctx, d.Id()) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil @@ -182,14 +184,14 @@ func resourceTencentCloudKmsKeyCreate(d *schema.ResourceData, meta interface{}) } if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} keyMetaData, err := kmsService.DescribeKeyById(ctx, keyId) if err != nil { return err } - resourceName := BuildTagResourceName("kms", "key", tcClient.Region, *keyMetaData.ResourceId) + resourceName := tccommon.BuildTagResourceName("kms", "key", tcClient.Region, *keyMetaData.ResourceId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err } @@ -199,21 +201,21 @@ func resourceTencentCloudKmsKeyCreate(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudKmsKeyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_key.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_key.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - kmsService = &KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + kmsService = &KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} keyId = d.Id() key *kms.KeyMetadata ) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := kmsService.DescribeKeyById(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } key = result @@ -237,7 +239,7 @@ func resourceTencentCloudKmsKeyRead(d *schema.ResourceData, meta interface{}) er _ = d.Set("key_rotation_enabled", key.KeyRotationEnabled) transformKeyState(d) - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "kms", "key", tcClient.Region, *key.ResourceId) if err != nil { @@ -249,22 +251,22 @@ func resourceTencentCloudKmsKeyRead(d *schema.ResourceData, meta interface{}) er } func resourceTencentCloudKmsKeyUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_key.update")() + defer tccommon.LogElapsed("resource.tencentcloud_kms_key.update")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - kmsService = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + kmsService = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} keyId = d.Id() ) d.Partial(true) if d.HasChange("description") { description := d.Get("description").(string) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.UpdateKeyDescription(ctx, keyId, description) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil @@ -279,10 +281,10 @@ func resourceTencentCloudKmsKeyUpdate(d *schema.ResourceData, meta interface{}) if d.HasChange("alias") { alias := d.Get("alias").(string) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.UpdateKeyAlias(ctx, keyId, alias) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil @@ -327,7 +329,7 @@ func resourceTencentCloudKmsKeyUpdate(d *schema.ResourceData, meta interface{}) } if d.HasChange("tags") { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldValue, newValue := d.GetChange("tags") @@ -336,7 +338,7 @@ func resourceTencentCloudKmsKeyUpdate(d *schema.ResourceData, meta interface{}) if err != nil { return err } - resourceName := BuildTagResourceName("kms", "key", tcClient.Region, *keyMetaData.ResourceId) + resourceName := tccommon.BuildTagResourceName("kms", "key", tcClient.Region, *keyMetaData.ResourceId) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -348,23 +350,23 @@ func resourceTencentCloudKmsKeyUpdate(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudKmsKeyDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_key.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_kms_key.delete")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - kmsService = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + kmsService = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} keyId = d.Id() ) pendingDeleteWindowInDays := d.Get("pending_delete_window_in_days").(int) isEnabled := d.Get("is_enabled").(bool) if isEnabled { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.DisableKey(ctx, keyId) if e != nil { ee, ok := e.(*sdkErrors.TencentCloudSDKError) - if ok && IsContains(KMS_RETRYABLE_ERROR, ee.Code) { + if ok && tccommon.IsContains(KMS_RETRYABLE_ERROR, ee.Code) { return resource.RetryableError(fmt.Errorf("kms key disable error: %s, retrying", e.Error())) } @@ -380,11 +382,11 @@ func resourceTencentCloudKmsKeyDelete(d *schema.ResourceData, meta interface{}) } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.DeleteKey(ctx, keyId, uint64(pendingDeleteWindowInDays)) if e != nil { ee, ok := e.(*sdkErrors.TencentCloudSDKError) - if ok && IsContains(KMS_RETRYABLE_ERROR, ee.Code) { + if ok && tccommon.IsContains(KMS_RETRYABLE_ERROR, ee.Code) { return resource.RetryableError(fmt.Errorf("kms key delete error: %s, retrying", e.Error())) } @@ -399,10 +401,10 @@ func resourceTencentCloudKmsKeyDelete(d *schema.ResourceData, meta interface{}) return err } - return resource.Retry(readRetryTimeout, func() *resource.RetryError { + return resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { key, e := kmsService.DescribeKeyById(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *key.KeyState == KMS_KEY_STATE_PENDINGDELETE { @@ -416,18 +418,18 @@ func resourceTencentCloudKmsKeyDelete(d *schema.ResourceData, meta interface{}) func updateKeyRotationStatus(ctx context.Context, kmsService KmsService, keyId string, keyRotationEnabled bool) error { var err error if keyRotationEnabled { - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.EnableKeyRotation(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) } else { - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.DisableKeyRotation(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -438,19 +440,19 @@ func updateKeyRotationStatus(ctx context.Context, kmsService KmsService, keyId s func updateIsEnabled(ctx context.Context, kmsService KmsService, keyId string, isEnabled bool) error { var err error if isEnabled { - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.EnableKey(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) } else { - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.DisableKey(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -461,18 +463,18 @@ func updateIsEnabled(ctx context.Context, kmsService KmsService, keyId string, i func updateIsArchived(ctx context.Context, kmsService KmsService, keyId string, isArchived bool) error { var err error if isArchived { - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.ArchiveKey(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) } else { - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := kmsService.CancelKeyArchive(ctx, keyId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) diff --git a/tencentcloud/resource_tc_kms_key_test.go b/tencentcloud/services/kms/resource_tc_kms_key_test.go similarity index 77% rename from tencentcloud/resource_tc_kms_key_test.go rename to tencentcloud/services/kms/resource_tc_kms_key_test.go index fed4084205..f995a77038 100644 --- a/tencentcloud/resource_tc_kms_key_test.go +++ b/tencentcloud/services/kms/resource_tc_kms_key_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package kms_test import ( "context" @@ -6,9 +6,14 @@ import ( "log" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svckms "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/kms" ) func init() { @@ -19,18 +24,16 @@ func init() { } func testSweepKmsKeys(region string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - sharedClient, err := sharedClientForRegion(region) + sharedClient, err := tcacctest.SharedClientForRegion(region) if err != nil { return fmt.Errorf("getting tencentcloud client error: %s", err.Error()) } - client := sharedClient.(*TencentCloudClient) + client := sharedClient.(tccommon.ProviderMeta) - kmsService := KmsService{ - client: client.apiV3Conn, - } + kmsService := svckms.NewKmsService(client.GetAPIV3Conn()) param := make(map[string]interface{}) param["search_key_alias"] = "tf-testacc-kms-key-" @@ -41,11 +44,11 @@ func testSweepKmsKeys(region string) error { } for _, v := range keys { keyId := *v.KeyId - if *v.KeyState == KMS_KEY_STATE_PENDINGDELETE { + if *v.KeyState == svckms.KMS_KEY_STATE_PENDINGDELETE { // Skip keys which are already scheduled for deletion continue } - if *v.KeyState == KMS_KEY_STATE_ENABLED { + if *v.KeyState == svckms.KMS_KEY_STATE_ENABLED { if err := kmsService.DisableKey(ctx, keyId); err != nil { log.Printf("[ERROR] modify KMS key %s state error: %s", keyId, err.Error()) } @@ -63,8 +66,8 @@ func TestAccKmsKey_basic(t *testing.T) { resourceName := "tencentcloud_kms_key.test" resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckKmsKeyDestroy, Steps: []resource.TestStep{ { @@ -102,8 +105,8 @@ func TestAccKmsKey_asymmetricKey(t *testing.T) { resourceName := "tencentcloud_kms_key.test" resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckKmsKeyDestroy, Steps: []resource.TestStep{ { @@ -119,12 +122,10 @@ func TestAccKmsKey_asymmetricKey(t *testing.T) { } func testAccCheckKmsKeyDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - kmsService := KmsService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + kmsService := svckms.NewKmsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_kms_key" { continue @@ -134,7 +135,7 @@ func testAccCheckKmsKeyDestroy(s *terraform.State) error { if err != nil { return err } - if key != nil && *key.KeyState != KMS_KEY_STATE_PENDINGDELETE { + if key != nil && *key.KeyState != svckms.KMS_KEY_STATE_PENDINGDELETE { return fmt.Errorf("[CHECK][KMS key][Destroy] check: Kms key still exists: %s", rs.Primary.ID) } } @@ -143,8 +144,8 @@ func testAccCheckKmsKeyDestroy(s *terraform.State) error { func testAccCheckKmsKeyExists(name string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[name] if !ok { @@ -153,9 +154,7 @@ func testAccCheckKmsKeyExists(name string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("[CHECK][KMS key][Exists] check:KMS key id is not set") } - kmsService := KmsService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + kmsService := svckms.NewKmsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) keyId := rs.Primary.ID key, err := kmsService.DescribeKeyById(ctx, keyId) if err != nil { diff --git a/tencentcloud/resource_tc_kms_overwrite_white_box_device_fingerprints.go b/tencentcloud/services/kms/resource_tc_kms_overwrite_white_box_device_fingerprints.go similarity index 75% rename from tencentcloud/resource_tc_kms_overwrite_white_box_device_fingerprints.go rename to tencentcloud/services/kms/resource_tc_kms_overwrite_white_box_device_fingerprints.go index e8ba6cf6fa..da1af1dcb9 100644 --- a/tencentcloud/resource_tc_kms_overwrite_white_box_device_fingerprints.go +++ b/tencentcloud/services/kms/resource_tc_kms_overwrite_white_box_device_fingerprints.go @@ -1,15 +1,17 @@ -package tencentcloud +package kms import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprints() *schema.Resource { +func ResourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprints() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprintsCreate, Read: resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprintsRead, @@ -47,11 +49,11 @@ func resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprints() *schema.Resour } func resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprintsCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_overwrite_white_box_device_fingerprints.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_overwrite_white_box_device_fingerprints.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = kms.NewOverwriteWhiteBoxDeviceFingerprintsRequest() keyId string ) @@ -77,10 +79,10 @@ func resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprintsCreate(d *schema. } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseKmsClient().OverwriteWhiteBoxDeviceFingerprints(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseKmsClient().OverwriteWhiteBoxDeviceFingerprints(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -99,15 +101,15 @@ func resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprintsCreate(d *schema. } func resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprintsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_overwrite_white_box_device_fingerprints.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_overwrite_white_box_device_fingerprints.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudKmsOverwriteWhiteBoxDeviceFingerprintsDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_overwrite_white_box_device_fingerprints.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_overwrite_white_box_device_fingerprints.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_kms_overwrite_white_box_device_fingerprints_test.go b/tencentcloud/services/kms/resource_tc_kms_overwrite_white_box_device_fingerprints_test.go similarity index 84% rename from tencentcloud/resource_tc_kms_overwrite_white_box_device_fingerprints_test.go rename to tencentcloud/services/kms/resource_tc_kms_overwrite_white_box_device_fingerprints_test.go index c2cf260802..08dca4a9d5 100644 --- a/tencentcloud/resource_tc_kms_overwrite_white_box_device_fingerprints_test.go +++ b/tencentcloud/services/kms/resource_tc_kms_overwrite_white_box_device_fingerprints_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudKmsOverwriteWhiteBoxDeviceFingerprintsResource_basic(t * t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsOverwriteWhiteBoxDeviceFingerprints, diff --git a/tencentcloud/resource_tc_kms_white_box_key.go b/tencentcloud/services/kms/resource_tc_kms_white_box_key.go similarity index 70% rename from tencentcloud/resource_tc_kms_white_box_key.go rename to tencentcloud/services/kms/resource_tc_kms_white_box_key.go index e531bab857..17c9c2b120 100644 --- a/tencentcloud/resource_tc_kms_white_box_key.go +++ b/tencentcloud/services/kms/resource_tc_kms_white_box_key.go @@ -1,17 +1,19 @@ -package tencentcloud +package kms import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudKmsWhiteBoxKey() *schema.Resource { +func ResourceTencentCloudKmsWhiteBoxKey() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudKmsWhiteBoxKeyCreate, Read: resourceTencentCloudKmsWhiteBoxKeyRead, @@ -34,14 +36,14 @@ func resourceTencentCloudKmsWhiteBoxKey() *schema.Resource { "algorithm": { Required: true, Type: schema.TypeString, - ValidateFunc: validateAllowedStringValue(WHITE_BOX_KEY_ALGORITHM), + ValidateFunc: tccommon.ValidateAllowedStringValue(WHITE_BOX_KEY_ALGORITHM), Description: "All algorithm types for creating keys, supported values: AES_256, SM4.", }, "status": { Optional: true, Type: schema.TypeString, Default: WHITE_BOX_KEY_STATUS_ENABLED, - ValidateFunc: validateAllowedStringValue(WHITE_BOX_KEY_STATUS), + ValidateFunc: tccommon.ValidateAllowedStringValue(WHITE_BOX_KEY_STATUS), Description: "Whether to enable the key. Enabled or Disabled. Default is Enabled.", }, "tags": { @@ -54,12 +56,12 @@ func resourceTencentCloudKmsWhiteBoxKey() *schema.Resource { } func resourceTencentCloudKmsWhiteBoxKeyCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_white_box_key.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_white_box_key.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request = kms.NewCreateWhiteBoxKeyRequest() response = kms.NewCreateWhiteBoxKeyResponse() keyId string @@ -77,10 +79,10 @@ func resourceTencentCloudKmsWhiteBoxKeyCreate(d *schema.ResourceData, meta inter request.Algorithm = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseKmsClient().CreateWhiteBoxKey(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseKmsClient().CreateWhiteBoxKey(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -103,8 +105,8 @@ func resourceTencentCloudKmsWhiteBoxKeyCreate(d *schema.ResourceData, meta inter d.SetId(keyId) if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region resourceName := fmt.Sprintf("qcs::kms:%s:uin/:key/%s", region, d.Id()) if err = tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err @@ -117,10 +119,10 @@ func resourceTencentCloudKmsWhiteBoxKeyCreate(d *schema.ResourceData, meta inter disableWhiteBoxKeyRequest := kms.NewDisableWhiteBoxKeyRequest() disableWhiteBoxKeyRequest.KeyId = &keyId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseKmsClient().DisableWhiteBoxKey(disableWhiteBoxKeyRequest) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseKmsClient().DisableWhiteBoxKey(disableWhiteBoxKeyRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -139,13 +141,13 @@ func resourceTencentCloudKmsWhiteBoxKeyCreate(d *schema.ResourceData, meta inter } func resourceTencentCloudKmsWhiteBoxKeyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_white_box_key.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_white_box_key.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} keyId = d.Id() ) @@ -176,7 +178,7 @@ func resourceTencentCloudKmsWhiteBoxKeyRead(d *schema.ResourceData, meta interfa _ = d.Set("status", whiteBoxKey.Status) } - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "kms", "key", tcClient.Region, d.Id()) if err != nil { @@ -189,11 +191,11 @@ func resourceTencentCloudKmsWhiteBoxKeyRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudKmsWhiteBoxKeyUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_white_box_key.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_white_box_key.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) enableWhiteBoxKeyRequest = kms.NewEnableWhiteBoxKeyRequest() disableWhiteBoxKeyRequest = kms.NewDisableWhiteBoxKeyRequest() keyId = d.Id() @@ -212,10 +214,10 @@ func resourceTencentCloudKmsWhiteBoxKeyUpdate(d *schema.ResourceData, meta inter status := v.(string) if status == WHITE_BOX_KEY_STATUS_DISABLED { disableWhiteBoxKeyRequest.KeyId = &keyId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseKmsClient().DisableWhiteBoxKey(disableWhiteBoxKeyRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseKmsClient().DisableWhiteBoxKey(disableWhiteBoxKeyRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, disableWhiteBoxKeyRequest.GetAction(), disableWhiteBoxKeyRequest.ToJsonString(), result.ToJsonString()) } @@ -229,10 +231,10 @@ func resourceTencentCloudKmsWhiteBoxKeyUpdate(d *schema.ResourceData, meta inter } } else { enableWhiteBoxKeyRequest.KeyId = &keyId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseKmsClient().EnableWhiteBoxKey(enableWhiteBoxKeyRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseKmsClient().EnableWhiteBoxKey(enableWhiteBoxKeyRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, enableWhiteBoxKeyRequest.GetAction(), enableWhiteBoxKeyRequest.ToJsonString(), result.ToJsonString()) } @@ -249,12 +251,12 @@ func resourceTencentCloudKmsWhiteBoxKeyUpdate(d *schema.ResourceData, meta inter } if d.HasChange("tags") { - ctx := context.WithValue(context.TODO(), logIdKey, logId) - tcClient := meta.(*TencentCloudClient).apiV3Conn + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("kms", "key", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("kms", "key", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -264,13 +266,13 @@ func resourceTencentCloudKmsWhiteBoxKeyUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudKmsWhiteBoxKeyDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_kms_white_box_key.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_kms_white_box_key.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = KmsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = KmsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} keyId = d.Id() ) diff --git a/tencentcloud/resource_tc_kms_white_box_key_test.go b/tencentcloud/services/kms/resource_tc_kms_white_box_key_test.go similarity index 92% rename from tencentcloud/resource_tc_kms_white_box_key_test.go rename to tencentcloud/services/kms/resource_tc_kms_white_box_key_test.go index 375d20f16e..b01b34eb2a 100644 --- a/tencentcloud/resource_tc_kms_white_box_key_test.go +++ b/tencentcloud/services/kms/resource_tc_kms_white_box_key_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package kms_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixKmsWhiteBoxKeyResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccKmsWhiteBoxKey, diff --git a/tencentcloud/service_tencentcloud_kms.go b/tencentcloud/services/kms/service_tencentcloud_kms.go similarity index 95% rename from tencentcloud/service_tencentcloud_kms.go rename to tencentcloud/services/kms/service_tencentcloud_kms.go index 1bcee565c2..d50205bb16 100644 --- a/tencentcloud/service_tencentcloud_kms.go +++ b/tencentcloud/services/kms/service_tencentcloud_kms.go @@ -1,4 +1,4 @@ -package tencentcloud +package kms import ( "context" @@ -11,19 +11,26 @@ import ( "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/pkg/errors" kms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms/v20190118" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewKmsService(client *connectivity.TencentCloudClient) KmsService { + return KmsService{client: client} +} + type KmsService struct { client *connectivity.TencentCloudClient } func (me *KmsService) DescribeKeysByFilter(ctx context.Context, param map[string]interface{}) (keys []*kms.KeyMetadata, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewListKeyDetailRequest() for k, v := range param { @@ -85,7 +92,7 @@ func (me *KmsService) DescribeKeysByFilter(ctx context.Context, param map[string } func (me *KmsService) DescribeKeyById(ctx context.Context, keyId string) (key *kms.KeyMetadata, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewDescribeKeyRequest() request.KeyId = helper.String(keyId) ratelimit.Check(request.GetAction()) @@ -103,7 +110,7 @@ func (me *KmsService) DescribeKeyById(ctx context.Context, keyId string) (key *k } func (me *KmsService) CreateKey(ctx context.Context, keyType uint64, alias, description, keyUsage string) (keyId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewCreateKeyRequest() request.Type = helper.Uint64(keyType) request.Alias = helper.String(alias) @@ -128,7 +135,7 @@ func (me *KmsService) CreateKey(ctx context.Context, keyType uint64, alias, desc } func (me *KmsService) EnableKeyRotation(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewEnableKeyRotationRequest() request.KeyId = helper.String(keyId) ratelimit.Check(request.GetAction()) @@ -145,7 +152,7 @@ func (me *KmsService) EnableKeyRotation(ctx context.Context, keyId string) (errR } func (me *KmsService) DisableKeyRotation(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewDisableKeyRotationRequest() request.KeyId = helper.String(keyId) ratelimit.Check(request.GetAction()) @@ -162,7 +169,7 @@ func (me *KmsService) DisableKeyRotation(ctx context.Context, keyId string) (err } func (me *KmsService) EnableKey(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewEnableKeyRequest() request.KeyId = helper.String(keyId) ratelimit.Check(request.GetAction()) @@ -179,7 +186,7 @@ func (me *KmsService) EnableKey(ctx context.Context, keyId string) (errRet error } func (me *KmsService) DisableKey(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewDisableKeyRequest() request.KeyId = helper.String(keyId) ratelimit.Check(request.GetAction()) @@ -196,7 +203,7 @@ func (me *KmsService) DisableKey(ctx context.Context, keyId string) (errRet erro } func (me *KmsService) ArchiveKey(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewArchiveKeyRequest() request.KeyId = helper.String(keyId) ratelimit.Check(request.GetAction()) @@ -213,7 +220,7 @@ func (me *KmsService) ArchiveKey(ctx context.Context, keyId string) (errRet erro } func (me *KmsService) CancelKeyArchive(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewCancelKeyArchiveRequest() request.KeyId = helper.String(keyId) ratelimit.Check(request.GetAction()) @@ -229,7 +236,7 @@ func (me *KmsService) CancelKeyArchive(ctx context.Context, keyId string) (errRe return nil } func (me *KmsService) CancelKeyDeletion(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewCancelKeyDeletionRequest() request.KeyId = helper.String(keyId) ratelimit.Check(request.GetAction()) @@ -246,7 +253,7 @@ func (me *KmsService) CancelKeyDeletion(ctx context.Context, keyId string) (errR } func (me *KmsService) UpdateKeyDescription(ctx context.Context, keyId, description string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewUpdateKeyDescriptionRequest() request.KeyId = helper.String(keyId) request.Description = helper.String(description) @@ -264,7 +271,7 @@ func (me *KmsService) UpdateKeyDescription(ctx context.Context, keyId, descripti } func (me *KmsService) UpdateKeyAlias(ctx context.Context, keyId, alias string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewUpdateAliasRequest() request.KeyId = helper.String(keyId) request.Alias = helper.String(alias) @@ -282,7 +289,7 @@ func (me *KmsService) UpdateKeyAlias(ctx context.Context, keyId, alias string) ( } func (me *KmsService) DeleteKey(ctx context.Context, keyId string, pendingDeleteWindowInDays uint64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewScheduleKeyDeletionRequest() request.KeyId = helper.String(keyId) request.PendingWindowInDays = helper.Uint64(pendingDeleteWindowInDays) @@ -300,7 +307,7 @@ func (me *KmsService) DeleteKey(ctx context.Context, keyId string, pendingDelete } func (me *KmsService) ImportKeyMaterial(ctx context.Context, param map[string]interface{}) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) var keyId, wrappingAlgorithm, wrappingKeySpec, keyMaterialBase64 string var validTo uint64 @@ -389,7 +396,7 @@ func (me *KmsService) ImportKeyMaterial(ctx context.Context, param map[string]in } func (me *KmsService) DeleteImportKeyMaterial(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewDeleteImportedKeyMaterialRequest() request.KeyId = helper.String(keyId) ratelimit.Check(request.GetAction()) @@ -407,7 +414,7 @@ func (me *KmsService) DeleteImportKeyMaterial(ctx context.Context, keyId string) func (me *KmsService) DescribeKmsPublicKeyByFilter(ctx context.Context, param map[string]interface{}) (publicKey *kms.GetPublicKeyResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = kms.NewGetPublicKeyRequest() ) @@ -443,7 +450,7 @@ func (me *KmsService) DescribeKmsPublicKeyByFilter(ctx context.Context, param ma func (me *KmsService) DescribeKmsGetParametersForImportByFilter(ctx context.Context, param map[string]interface{}) (getParametersForImport *kms.GetParametersForImportResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = kms.NewGetParametersForImportRequest() ) @@ -487,7 +494,7 @@ func (me *KmsService) DescribeKmsGetParametersForImportByFilter(ctx context.Cont func (me *KmsService) DescribeKmsKeyListsByFilter(ctx context.Context, param map[string]interface{}) (KeyLists []*kms.KeyMetadata, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = kms.NewDescribeKeysRequest() ) @@ -524,7 +531,7 @@ func (me *KmsService) DescribeKmsKeyListsByFilter(ctx context.Context, param map func (me *KmsService) DescribeKmsWhiteBoxKeyDetailsByFilter(ctx context.Context, param map[string]interface{}) (whiteBoxKeyInfo []*kms.WhiteboxKeyInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = kms.NewDescribeWhiteBoxKeyDetailsRequest() ) @@ -574,7 +581,7 @@ func (me *KmsService) DescribeKmsWhiteBoxKeyDetailsByFilter(ctx context.Context, func (me *KmsService) DescribeKmsListKeysByFilter(ctx context.Context, param map[string]interface{}) (listKeys []*kms.Key, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = kms.NewListKeysRequest() ) @@ -627,7 +634,7 @@ func (me *KmsService) DescribeKmsListKeysByFilter(ctx context.Context, param map } func (me *KmsService) DescribeKmsWhiteBoxKeyById(ctx context.Context, keyId string) (whiteBoxKey *kms.WhiteboxKeyInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewDescribeWhiteBoxKeyRequest() request.KeyId = &keyId @@ -657,7 +664,7 @@ func (me *KmsService) DescribeKmsWhiteBoxKeyById(ctx context.Context, keyId stri } func (me *KmsService) DeleteKmsWhiteBoxKeyById(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewDeleteWhiteBoxKeyRequest() request.KeyId = &keyId @@ -682,7 +689,7 @@ func (me *KmsService) DeleteKmsWhiteBoxKeyById(ctx context.Context, keyId string } func (me *KmsService) DescribeKmsCloudResourceAttachmentById(ctx context.Context, keyId string) (keyMetadata *kms.KeyMetadata, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewDescribeKeyRequest() request.KeyId = &keyId @@ -712,7 +719,7 @@ func (me *KmsService) DescribeKmsCloudResourceAttachmentById(ctx context.Context } func (me *KmsService) DeleteKmsCloudResourceAttachmentById(ctx context.Context, keyId, productId, resourceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := kms.NewUnbindCloudResourceRequest() request.KeyId = &keyId @@ -740,7 +747,7 @@ func (me *KmsService) DeleteKmsCloudResourceAttachmentById(ctx context.Context, func (me *KmsService) DescribeKmsWhiteBoxDecryptKeyByFilter(ctx context.Context, param map[string]interface{}) (whiteBoxDecryptKey *kms.DescribeWhiteBoxDecryptKeyResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = kms.NewDescribeWhiteBoxDecryptKeyRequest() ) @@ -775,7 +782,7 @@ func (me *KmsService) DescribeKmsWhiteBoxDecryptKeyByFilter(ctx context.Context, func (me *KmsService) DescribeKmsWhiteBoxDeviceFingerprintsByFilter(ctx context.Context, param map[string]interface{}) (whiteBoxDeviceFingerprints []*kms.DeviceFingerprint, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = kms.NewDescribeWhiteBoxDeviceFingerprintsRequest() ) @@ -811,7 +818,7 @@ func (me *KmsService) DescribeKmsWhiteBoxDeviceFingerprintsByFilter(ctx context. func (me *KmsService) DescribeKmsListAlgorithmsByFilter(ctx context.Context) (listAlgorithms *kms.ListAlgorithmsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = kms.NewListAlgorithmsRequest() ) diff --git a/tencentcloud/services/kms/service_tencentcloud_tag.go b/tencentcloud/services/kms/service_tencentcloud_tag.go new file mode 100644 index 0000000000..590ab08987 --- /dev/null +++ b/tencentcloud/services/kms/service_tencentcloud_tag.go @@ -0,0 +1,414 @@ +package kms + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/data_source_tc_lighthouse_all_scene.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_all_scene.go similarity index 81% rename from tencentcloud/data_source_tc_lighthouse_all_scene.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_all_scene.go index b95ef9928b..bc39fe63d5 100644 --- a/tencentcloud/data_source_tc_lighthouse_all_scene.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_all_scene.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseAllScene() *schema.Resource { +func DataSourceTencentCloudLighthouseAllScene() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseAllSceneRead, Schema: map[string]*schema.Schema{ @@ -71,12 +74,12 @@ func dataSourceTencentCloudLighthouseAllScene() *schema.Resource { } func dataSourceTencentCloudLighthouseAllSceneRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_scene.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_scene.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("scene_ids"); ok { @@ -96,14 +99,14 @@ func dataSourceTencentCloudLighthouseAllSceneRead(d *schema.ResourceData, meta i paramMap["limit"] = v.(int) } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var sceneSet []*lighthouse.SceneInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseAllSceneByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } sceneSet = result return nil @@ -127,7 +130,7 @@ func dataSourceTencentCloudLighthouseAllSceneRead(d *schema.ResourceData, meta i _ = d.Set("scene_set", tmpList) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_lighthouse_all_scene_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_all_scene_test.go similarity index 59% rename from tencentcloud/data_source_tc_lighthouse_all_scene_test.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_all_scene_test.go index 254891511a..501ad43399 100644 --- a/tencentcloud/data_source_tc_lighthouse_all_scene_test.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_all_scene_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudLighthouseAllSceneDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseAllSceneDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_all_scene.scene")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_all_scene.scene")), }, }, }) diff --git a/tencentcloud/data_source_tc_lighthouse_bundle.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_bundle.go similarity index 93% rename from tencentcloud/data_source_tc_lighthouse_bundle.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_bundle.go index ab89059b75..4b012bda42 100644 --- a/tencentcloud/data_source_tc_lighthouse_bundle.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_bundle.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseBundle() *schema.Resource { +func DataSourceTencentCloudLighthouseBundle() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseBundleRead, Schema: map[string]*schema.Schema{ @@ -199,12 +202,12 @@ func dataSourceTencentCloudLighthouseBundle() *schema.Resource { } func dataSourceTencentCloudLighthouseBundleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_bundle.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_bundle.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("bundle_ids"); ok { @@ -251,14 +254,14 @@ func dataSourceTencentCloudLighthouseBundleRead(d *schema.ResourceData, meta int paramMap["filters"] = tmpSet } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var bundleSet []*lighthouse.Bundle - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseBundleByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } bundleSet = result return nil @@ -367,7 +370,7 @@ func dataSourceTencentCloudLighthouseBundleRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_lighthouse_bundle_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_bundle_test.go similarity index 57% rename from tencentcloud/data_source_tc_lighthouse_bundle_test.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_bundle_test.go index b67b7757ff..724fd9f0af 100644 --- a/tencentcloud/data_source_tc_lighthouse_bundle_test.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_bundle_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudLighthouseBundleDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseBundleDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_bundle.bundle")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_bundle.bundle")), }, }, }) diff --git a/tencentcloud/data_source_tc_lighthouse_disk_config.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_disk_config.go similarity index 85% rename from tencentcloud/data_source_tc_lighthouse_disk_config.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_disk_config.go index 66fbe7ff3b..6e7a2fbe0f 100644 --- a/tencentcloud/data_source_tc_lighthouse_disk_config.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_disk_config.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseDiskConfig() *schema.Resource { +func DataSourceTencentCloudLighthouseDiskConfig() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseDiskConfigRead, Schema: map[string]*schema.Schema{ @@ -86,12 +89,12 @@ func dataSourceTencentCloudLighthouseDiskConfig() *schema.Resource { } func dataSourceTencentCloudLighthouseDiskConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_disk_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_disk_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("filters"); ok { @@ -114,14 +117,14 @@ func dataSourceTencentCloudLighthouseDiskConfigRead(d *schema.ResourceData, meta paramMap["filters"] = tmpSet } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var diskConfigSet []*lighthouse.DiskConfig - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseDiskConfigByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } diskConfigSet = result return nil @@ -168,7 +171,7 @@ func dataSourceTencentCloudLighthouseDiskConfigRead(d *schema.ResourceData, meta d.SetId(helper.BuildToken()) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_lighthouse_disk_config_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_disk_config_test.go similarity index 61% rename from tencentcloud/data_source_tc_lighthouse_disk_config_test.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_disk_config_test.go index ad6c22467d..89ab502af2 100644 --- a/tencentcloud/data_source_tc_lighthouse_disk_config_test.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_disk_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudLighthouseDiskConfigDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseDiskConfigDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_disk_config.disk_config")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_disk_config.disk_config")), }, }, }) diff --git a/tencentcloud/data_source_tc_lighthouse_disks.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_disks.go similarity index 93% rename from tencentcloud/data_source_tc_lighthouse_disks.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_disks.go index 3128bfee9e..f20c97c47c 100644 --- a/tencentcloud/data_source_tc_lighthouse_disks.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_disks.go @@ -1,14 +1,17 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseInstanceDisks() *schema.Resource { +func DataSourceTencentCloudLighthouseInstanceDisks() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseInstanceDisksRead, Schema: map[string]*schema.Schema{ @@ -164,12 +167,12 @@ func dataSourceTencentCloudLighthouseInstanceDisks() *schema.Resource { } func dataSourceTencentCloudLighthouseInstanceDisksRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_instance_disks.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_instance_disks.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) diskIds := make([]string, 0) for _, diskId := range d.Get("disk_ids").(*schema.Set).List() { @@ -193,7 +196,7 @@ func dataSourceTencentCloudLighthouseInstanceDisksRead(d *schema.ResourceData, m filters = append(filters, &filter) } } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} disks, err := service.DescribeLighthouseDisk(ctx, diskIds, filters) if err != nil { return err @@ -290,7 +293,7 @@ func dataSourceTencentCloudLighthouseInstanceDisksRead(d *schema.ResourceData, m _ = d.Set("disk_list", diskList) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), diskList); e != nil { + if e := tccommon.WriteToFile(output.(string), diskList); e != nil { return e } } diff --git a/tencentcloud/services/lighthouse/data_source_tc_lighthouse_disks_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_disks_test.go new file mode 100644 index 0000000000..94edea578d --- /dev/null +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_disks_test.go @@ -0,0 +1,30 @@ +package lighthouse_test + +import ( + "testing" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" +) + +func TestAccTencentCloudLighthouseDisksDataSource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccLighthouseDisksDataSource, + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_disks.disks")), + }, + }, + }) +} + +const testAccLighthouseDisksDataSource = tcacctest.DefaultLighthoustVariables + ` + +data "tencentcloud_lighthouse_disks" "disks" { + disk_ids = [var.lighthouse_backup_disk_id] +} +` diff --git a/tencentcloud/data_source_tc_lighthouse_firewall_rules_template.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_firewall_rules_template.go similarity index 84% rename from tencentcloud/data_source_tc_lighthouse_firewall_rules_template.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_firewall_rules_template.go index 0c1ce7513b..c6150caf4d 100644 --- a/tencentcloud/data_source_tc_lighthouse_firewall_rules_template.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_firewall_rules_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package lighthouse import ( "context" "encoding/json" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseFirewallRulesTemplate() *schema.Resource { +func DataSourceTencentCloudLighthouseFirewallRulesTemplate() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseFirewallRulesTemplateRead, Schema: map[string]*schema.Schema{ @@ -64,21 +67,21 @@ func dataSourceTencentCloudLighthouseFirewallRulesTemplate() *schema.Resource { } func dataSourceTencentCloudLighthouseFirewallRulesTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_firewall_rules_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_firewall_rules_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var firewallRuleSet []*lighthouse.FirewallRuleInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseFirewallRulesTemplateByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } firewallRuleSet = result return nil @@ -131,7 +134,7 @@ func dataSourceTencentCloudLighthouseFirewallRulesTemplateRead(d *schema.Resourc d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_lighthouse_firewall_rules_template_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_firewall_rules_template_test.go similarity index 54% rename from tencentcloud/data_source_tc_lighthouse_firewall_rules_template_test.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_firewall_rules_template_test.go index 2f1ec9934e..a0c1eb0c77 100644 --- a/tencentcloud/data_source_tc_lighthouse_firewall_rules_template_test.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_firewall_rules_template_test.go @@ -1,20 +1,22 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseFirewallRulesTemplateDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseFirewallRulesTemplateDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_firewall_rules_template.firewall_rules_template")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_firewall_rules_template.firewall_rules_template")), }, }, }) diff --git a/tencentcloud/data_source_tc_lighthouse_instance_blueprint.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_blueprint.go similarity index 94% rename from tencentcloud/data_source_tc_lighthouse_instance_blueprint.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_blueprint.go index f8d1661998..1c07b4d551 100644 --- a/tencentcloud/data_source_tc_lighthouse_instance_blueprint.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_blueprint.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseInstanceBlueprint() *schema.Resource { +func DataSourceTencentCloudLighthouseInstanceBlueprint() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseInstanceBlueprintRead, Schema: map[string]*schema.Schema{ @@ -212,12 +215,12 @@ func dataSourceTencentCloudLighthouseInstanceBlueprint() *schema.Resource { } func dataSourceTencentCloudLighthouseInstanceBlueprintRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_instance_blueprint.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_instance_blueprint.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_ids"); ok { @@ -225,17 +228,17 @@ func dataSourceTencentCloudLighthouseInstanceBlueprintRead(d *schema.ResourceDat paramMap["InstanceIds"] = helper.InterfacesStringsPoint(instanceIdsSet) } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var blueprintInstanceSet []*lighthouse.BlueprintInstance instanceIds := make([]string, 0) for _, instanceId := range d.Get("instance_ids").(*schema.Set).List() { instanceIds = append(instanceIds, instanceId.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseInstanceBlueprintByFilter(ctx, instanceIds) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } blueprintInstanceSet = result return nil @@ -401,7 +404,7 @@ func dataSourceTencentCloudLighthouseInstanceBlueprintRead(d *schema.ResourceDat d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_blueprint_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_blueprint_test.go new file mode 100644 index 0000000000..e7e9772e41 --- /dev/null +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_blueprint_test.go @@ -0,0 +1,30 @@ +package lighthouse_test + +import ( + "testing" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" +) + +func TestAccTencentCloudLighthouseInstanceBlueprintDataSource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccLighthouseInstanceBlueprintDataSource, + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_instance_blueprint.instance_blueprint")), + }, + }, + }) +} + +const testAccLighthouseInstanceBlueprintDataSource = tcacctest.DefaultLighthoustVariables + ` + +data "tencentcloud_lighthouse_instance_blueprint" "instance_blueprint" { + instance_ids = [var.lighthouse_id] +} +` diff --git a/tencentcloud/data_source_tc_lighthouse_instance_disk_num.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_disk_num.go similarity index 80% rename from tencentcloud/data_source_tc_lighthouse_instance_disk_num.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_disk_num.go index 936b3e413c..51ed8e83e4 100644 --- a/tencentcloud/data_source_tc_lighthouse_instance_disk_num.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_disk_num.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseInstanceDiskNum() *schema.Resource { +func DataSourceTencentCloudLighthouseInstanceDiskNum() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseInstanceDiskNumRead, Schema: map[string]*schema.Schema{ @@ -57,25 +60,25 @@ func dataSourceTencentCloudLighthouseInstanceDiskNum() *schema.Resource { } func dataSourceTencentCloudLighthouseInstanceDiskNumRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_instance_disk_num.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_instance_disk_num.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceIds := make([]string, 0) for _, instanceId := range d.Get("instance_ids").(*schema.Set).List() { instanceIds = append(instanceIds, instanceId.(string)) } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var attachDetailSet []*lighthouse.AttachDetail - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseInstanceDiskNum(ctx, instanceIds) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } attachDetailSet = result return nil @@ -113,7 +116,7 @@ func dataSourceTencentCloudLighthouseInstanceDiskNumRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_disk_num_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_disk_num_test.go new file mode 100644 index 0000000000..cc2549312f --- /dev/null +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_disk_num_test.go @@ -0,0 +1,30 @@ +package lighthouse_test + +import ( + "testing" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" +) + +func TestAccTencentCloudLighthouseInstanceDiskNumDataSource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccLighthouseInstanceDiskNumDataSource, + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_instance_disk_num.instance_disk_num")), + }, + }, + }) +} + +const testAccLighthouseInstanceDiskNumDataSource = tcacctest.DefaultLighthoustVariables + ` + +data "tencentcloud_lighthouse_instance_disk_num" "instance_disk_num" { + instance_ids = [var.lighthouse_id] +} +` diff --git a/tencentcloud/data_source_tc_lighthouse_instance_traffic_package.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_traffic_package.go similarity index 91% rename from tencentcloud/data_source_tc_lighthouse_instance_traffic_package.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_traffic_package.go index d08a6c3818..239a682ab3 100644 --- a/tencentcloud/data_source_tc_lighthouse_instance_traffic_package.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_traffic_package.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseInstanceTrafficPackage() *schema.Resource { +func DataSourceTencentCloudLighthouseInstanceTrafficPackage() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseInstanceTrafficPackageRead, Schema: map[string]*schema.Schema{ @@ -117,12 +120,12 @@ func dataSourceTencentCloudLighthouseInstanceTrafficPackage() *schema.Resource { } func dataSourceTencentCloudLighthouseInstanceTrafficPackageRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_instance_traffic_package.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_instance_traffic_package.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_ids"); ok { @@ -142,14 +145,14 @@ func dataSourceTencentCloudLighthouseInstanceTrafficPackageRead(d *schema.Resour paramMap["limit"] = v.(int) } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var instanceTrafficPackageSet []*lighthouse.InstanceTrafficPackage - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseInstanceTrafficPackageByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } instanceTrafficPackageSet = result return nil @@ -226,7 +229,7 @@ func dataSourceTencentCloudLighthouseInstanceTrafficPackageRead(d *schema.Resour d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_lighthouse_instance_traffic_package_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_traffic_package_test.go similarity index 59% rename from tencentcloud/data_source_tc_lighthouse_instance_traffic_package_test.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_traffic_package_test.go index 6ac6c1bba0..e40cdb3086 100644 --- a/tencentcloud/data_source_tc_lighthouse_instance_traffic_package_test.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_traffic_package_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudLighthouseInstanceTrafficPackageDataSource_basic(t *test t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseInstanceTrafficPackageDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_instance_traffic_package.instance_traffic_package")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_instance_traffic_package.instance_traffic_package")), }, }, }) diff --git a/tencentcloud/data_source_tc_lighthouse_instance_vnc_url.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_vnc_url.go similarity index 73% rename from tencentcloud/data_source_tc_lighthouse_instance_vnc_url.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_vnc_url.go index 331937c595..b5d82b4fdb 100644 --- a/tencentcloud/data_source_tc_lighthouse_instance_vnc_url.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_vnc_url.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "fmt" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseInstanceVncUrl() *schema.Resource { +func DataSourceTencentCloudLighthouseInstanceVncUrl() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseInstanceVncUrlRead, Schema: map[string]*schema.Schema{ @@ -35,19 +38,19 @@ func dataSourceTencentCloudLighthouseInstanceVncUrl() *schema.Resource { } func dataSourceTencentCloudLighthouseInstanceVncUrlRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_instance_vnc_url.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_instance_vnc_url.read")() + defer tccommon.InconsistentCheck(d, meta)() instanceId := d.Get("instance_id").(string) request := lighthouse.NewDescribeInstanceVncUrlRequest() response := lighthouse.NewDescribeInstanceVncUrlResponse() request.InstanceId = helper.String(instanceId) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().DescribeInstanceVncUrl(request) + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().DescribeInstanceVncUrl(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } response = result return nil @@ -67,7 +70,7 @@ func dataSourceTencentCloudLighthouseInstanceVncUrlRead(d *schema.ResourceData, output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), map[string]interface{}{ + if e := tccommon.WriteToFile(output.(string), map[string]interface{}{ "instance_vnc_url": *response.Response.InstanceVncUrl, }); e != nil { return e diff --git a/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_vnc_url_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_vnc_url_test.go new file mode 100644 index 0000000000..ca2f186c48 --- /dev/null +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_instance_vnc_url_test.go @@ -0,0 +1,29 @@ +package lighthouse_test + +import ( + "testing" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" +) + +func TestAccTencentCloudLighthouseInstanceVncUrlDataSource_basic(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccLighthouseInstanceVncUrlDataSource, + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_instance_vnc_url.instance_vnc_url")), + }, + }, + }) +} + +const testAccLighthouseInstanceVncUrlDataSource = tcacctest.DefaultLighthoustVariables + ` + +data "tencentcloud_lighthouse_instance_vnc_url" "instance_vnc_url" { + instance_id = var.lighthouse_id +} +` diff --git a/tencentcloud/data_source_tc_lighthouse_modify_instance_bundle.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_modify_instance_bundle.go similarity index 95% rename from tencentcloud/data_source_tc_lighthouse_modify_instance_bundle.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_modify_instance_bundle.go index eb1cfaf80a..67ffb8728a 100644 --- a/tencentcloud/data_source_tc_lighthouse_modify_instance_bundle.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_modify_instance_bundle.go @@ -1,16 +1,19 @@ -package tencentcloud +package lighthouse import ( "context" "fmt" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseModifyInstanceBundle() *schema.Resource { +func DataSourceTencentCloudLighthouseModifyInstanceBundle() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseModifyInstanceBundleRead, Schema: map[string]*schema.Schema{ @@ -246,12 +249,12 @@ func dataSourceTencentCloudLighthouseModifyInstanceBundle() *schema.Resource { } func dataSourceTencentCloudLighthouseModifyInstanceBundleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_modify_instance_bundle.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_modify_instance_bundle.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -278,14 +281,14 @@ func dataSourceTencentCloudLighthouseModifyInstanceBundleRead(d *schema.Resource paramMap["filters"] = tmpSet } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var modifyBundleSet []*lighthouse.ModifyBundle - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseModifyInstanceBundleByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } modifyBundleSet = result return nil @@ -446,7 +449,7 @@ func dataSourceTencentCloudLighthouseModifyInstanceBundleRead(d *schema.Resource output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_lighthouse_modify_instance_bundle_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_modify_instance_bundle_test.go similarity index 51% rename from tencentcloud/data_source_tc_lighthouse_modify_instance_bundle_test.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_modify_instance_bundle_test.go index ef7e8d8a8b..b9d11fc9df 100644 --- a/tencentcloud/data_source_tc_lighthouse_modify_instance_bundle_test.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_modify_instance_bundle_test.go @@ -1,26 +1,28 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseModifyInstanceBundleDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseModifyInstanceBundleDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_modify_instance_bundle.modify_instance_bundle")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_modify_instance_bundle.modify_instance_bundle")), }, }, }) } -const testAccLighthouseModifyInstanceBundleDataSource = DefaultLighthoustVariables + ` +const testAccLighthouseModifyInstanceBundleDataSource = tcacctest.DefaultLighthoustVariables + ` data "tencentcloud_lighthouse_modify_instance_bundle" "modify_instance_bundle" { instance_id = var.lighthouse_id diff --git a/tencentcloud/data_source_tc_lighthouse_region.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_region.go similarity index 79% rename from tencentcloud/data_source_tc_lighthouse_region.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_region.go index 2a930c8dcf..5af3756ffb 100644 --- a/tencentcloud/data_source_tc_lighthouse_region.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_region.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseRegion() *schema.Resource { +func DataSourceTencentCloudLighthouseRegion() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseRegionRead, Schema: map[string]*schema.Schema{ @@ -53,22 +56,22 @@ func dataSourceTencentCloudLighthouseRegion() *schema.Resource { } func dataSourceTencentCloudLighthouseRegionRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_region.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_region.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var regionSet []*lighthouse.RegionInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseRegionByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } regionSet = result return nil @@ -110,7 +113,7 @@ func dataSourceTencentCloudLighthouseRegionRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_lighthouse_region_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_region_test.go similarity index 57% rename from tencentcloud/data_source_tc_lighthouse_region_test.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_region_test.go index 8775682b0b..50af0f3379 100644 --- a/tencentcloud/data_source_tc_lighthouse_region_test.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_region_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudLighthouseRegionDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseRegionDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_region.region")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_region.region")), }, }, }) diff --git a/tencentcloud/data_source_tc_lighthouse_reset_instance_blueprint.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_reset_instance_blueprint.go similarity index 94% rename from tencentcloud/data_source_tc_lighthouse_reset_instance_blueprint.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_reset_instance_blueprint.go index c217ed0358..079fd8ad17 100644 --- a/tencentcloud/data_source_tc_lighthouse_reset_instance_blueprint.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_reset_instance_blueprint.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseResetInstanceBlueprint() *schema.Resource { +func DataSourceTencentCloudLighthouseResetInstanceBlueprint() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseResetInstanceBlueprintRead, Schema: map[string]*schema.Schema{ @@ -193,12 +196,12 @@ func dataSourceTencentCloudLighthouseResetInstanceBlueprint() *schema.Resource { } func dataSourceTencentCloudLighthouseResetInstanceBlueprintRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_reset_instance_blueprint.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_reset_instance_blueprint.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -234,14 +237,14 @@ func dataSourceTencentCloudLighthouseResetInstanceBlueprintRead(d *schema.Resour paramMap["filters"] = tmpSet } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var resetInstanceBlueprintSet []*lighthouse.ResetInstanceBlueprint - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseResetInstanceBlueprintByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } resetInstanceBlueprintSet = result return nil @@ -335,7 +338,7 @@ func dataSourceTencentCloudLighthouseResetInstanceBlueprintRead(d *schema.Resour _ = d.Set("reset_instance_blueprint_set", tmpList) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/services/lighthouse/data_source_tc_lighthouse_reset_instance_blueprint_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_reset_instance_blueprint_test.go new file mode 100644 index 0000000000..3c5f7595ca --- /dev/null +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_reset_instance_blueprint_test.go @@ -0,0 +1,32 @@ +package lighthouse_test + +import ( + "testing" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" +) + +func TestAccTencentCloudLighthouseResetInstanceBlueprintDataSource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccLighthouseResetInstanceBlueprintDataSource, + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_reset_instance_blueprint.reset_instance_blueprint")), + }, + }, + }) +} + +const testAccLighthouseResetInstanceBlueprintDataSource = tcacctest.DefaultLighthoustVariables + ` + +data "tencentcloud_lighthouse_reset_instance_blueprint" "reset_instance_blueprint" { + instance_id = var.lighthouse_id + offset = 0 + limit = 20 +} +` diff --git a/tencentcloud/data_source_tc_lighthouse_scene.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_scene.go similarity index 81% rename from tencentcloud/data_source_tc_lighthouse_scene.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_scene.go index 6b69f923db..c1b29cdc20 100644 --- a/tencentcloud/data_source_tc_lighthouse_scene.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_scene.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseScene() *schema.Resource { +func DataSourceTencentCloudLighthouseScene() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseSceneRead, Schema: map[string]*schema.Schema{ @@ -71,12 +74,12 @@ func dataSourceTencentCloudLighthouseScene() *schema.Resource { } func dataSourceTencentCloudLighthouseSceneRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_scene.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_scene.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("scene_ids"); ok { @@ -96,14 +99,14 @@ func dataSourceTencentCloudLighthouseSceneRead(d *schema.ResourceData, meta inte paramMap["limit"] = v.(int) } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var sceneSet []*lighthouse.Scene - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseSceneByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } sceneSet = result return nil @@ -127,7 +130,7 @@ func dataSourceTencentCloudLighthouseSceneRead(d *schema.ResourceData, meta inte _ = d.Set("scene_set", tmpList) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_lighthouse_scene_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_scene_test.go similarity index 59% rename from tencentcloud/data_source_tc_lighthouse_scene_test.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_scene_test.go index c4df8c928f..a5eb3e031d 100644 --- a/tencentcloud/data_source_tc_lighthouse_scene_test.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_scene_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudLighthouseSceneDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseSceneDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_scene.scene")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_scene.scene")), }, }, }) diff --git a/tencentcloud/data_source_tc_lighthouse_zone.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_zone.go similarity index 81% rename from tencentcloud/data_source_tc_lighthouse_zone.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_zone.go index fd48b2966d..c92cc06be7 100644 --- a/tencentcloud/data_source_tc_lighthouse_zone.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_zone.go @@ -1,15 +1,18 @@ -package tencentcloud +package lighthouse import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudLighthouseZone() *schema.Resource { +func DataSourceTencentCloudLighthouseZone() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudLighthouseZoneRead, Schema: map[string]*schema.Schema{ @@ -65,12 +68,12 @@ func dataSourceTencentCloudLighthouseZone() *schema.Resource { } func dataSourceTencentCloudLighthouseZoneRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_lighthouse_zone.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_lighthouse_zone.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("order_field"); ok { @@ -81,14 +84,14 @@ func dataSourceTencentCloudLighthouseZoneRead(d *schema.ResourceData, meta inter paramMap["order"] = v.(string) } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var zoneInfoSet []*lighthouse.ZoneInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeLighthouseZoneByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } zoneInfoSet = result return nil @@ -111,7 +114,7 @@ func dataSourceTencentCloudLighthouseZoneRead(d *schema.ResourceData, meta inter _ = d.Set("zone_info_set", tmpList) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_lighthouse_zone_test.go b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_zone_test.go similarity index 59% rename from tencentcloud/data_source_tc_lighthouse_zone_test.go rename to tencentcloud/services/lighthouse/data_source_tc_lighthouse_zone_test.go index be477f1417..dfe7e5226b 100644 --- a/tencentcloud/data_source_tc_lighthouse_zone_test.go +++ b/tencentcloud/services/lighthouse/data_source_tc_lighthouse_zone_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudLighthouseZoneDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseZoneDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_zone.zone")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_lighthouse_zone.zone")), }, }, }) diff --git a/tencentcloud/resource_tc_lighthouse_apply_disk_backup.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_disk_backup.go similarity index 63% rename from tencentcloud/resource_tc_lighthouse_apply_disk_backup.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_disk_backup.go index 1ad2e6a56d..e6f110957c 100644 --- a/tencentcloud/resource_tc_lighthouse_apply_disk_backup.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_disk_backup.go @@ -1,16 +1,19 @@ -package tencentcloud +package lighthouse import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseApplyDiskBackup() *schema.Resource { +func ResourceTencentCloudLighthouseApplyDiskBackup() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseApplyDiskBackupCreate, Read: resourceTencentCloudLighthouseApplyDiskBackupRead, @@ -34,10 +37,10 @@ func resourceTencentCloudLighthouseApplyDiskBackup() *schema.Resource { } func resourceTencentCloudLighthouseApplyDiskBackupCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_apply_disk_backup.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_apply_disk_backup.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewApplyDiskBackupRequest() @@ -54,10 +57,10 @@ func resourceTencentCloudLighthouseApplyDiskBackupCreate(d *schema.ResourceData, request.DiskBackupId = helper.String(diskBackupId) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ApplyDiskBackup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ApplyDiskBackup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -68,11 +71,11 @@ func resourceTencentCloudLighthouseApplyDiskBackupCreate(d *schema.ResourceData, return err } - d.SetId(diskId + FILED_SP + diskBackupId) + d.SetId(diskId + tccommon.FILED_SP + diskBackupId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseApplyDiskBackupStateRefreshFunc(diskBackupId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseApplyDiskBackupStateRefreshFunc(diskBackupId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -82,15 +85,15 @@ func resourceTencentCloudLighthouseApplyDiskBackupCreate(d *schema.ResourceData, } func resourceTencentCloudLighthouseApplyDiskBackupRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_apply_disk_backup.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_apply_disk_backup.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudLighthouseApplyDiskBackupDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_apply_disk_backup.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_apply_disk_backup.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_lighthouse_apply_disk_backup_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_disk_backup_test.go similarity index 68% rename from tencentcloud/resource_tc_lighthouse_apply_disk_backup_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_disk_backup_test.go index 5222e1c828..d9c697036b 100644 --- a/tencentcloud/resource_tc_lighthouse_apply_disk_backup_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_disk_backup_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudLighthouseApplyDiskBackupResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseApplyDiskBackup, @@ -22,7 +24,7 @@ func TestAccTencentCloudLighthouseApplyDiskBackupResource_basic(t *testing.T) { }) } -const testAccLighthouseApplyDiskBackup = DefaultLighthoustVariables + ` +const testAccLighthouseApplyDiskBackup = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_apply_disk_backup" "apply_disk_backup" { disk_id = var.lighthouse_backup_disk_id diff --git a/tencentcloud/resource_tc_lighthouse_apply_instance_snapshot.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_instance_snapshot.go similarity index 63% rename from tencentcloud/resource_tc_lighthouse_apply_instance_snapshot.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_instance_snapshot.go index e64386a681..3cb9b60893 100644 --- a/tencentcloud/resource_tc_lighthouse_apply_instance_snapshot.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_instance_snapshot.go @@ -1,16 +1,19 @@ -package tencentcloud +package lighthouse import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseApplyInstanceSnapshot() *schema.Resource { +func ResourceTencentCloudLighthouseApplyInstanceSnapshot() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseApplyInstanceSnapshotCreate, Read: resourceTencentCloudLighthouseApplyInstanceSnapshotRead, @@ -35,10 +38,10 @@ func resourceTencentCloudLighthouseApplyInstanceSnapshot() *schema.Resource { } func resourceTencentCloudLighthouseApplyInstanceSnapshotCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_apply_instance_snapshot.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_apply_instance_snapshot.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewApplyInstanceSnapshotRequest() @@ -55,10 +58,10 @@ func resourceTencentCloudLighthouseApplyInstanceSnapshotCreate(d *schema.Resourc request.SnapshotId = helper.String(snapshotId) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ApplyInstanceSnapshot(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ApplyInstanceSnapshot(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -69,11 +72,11 @@ func resourceTencentCloudLighthouseApplyInstanceSnapshotCreate(d *schema.Resourc return err } - d.SetId(instanceId + FILED_SP + snapshotId) + d.SetId(instanceId + tccommon.FILED_SP + snapshotId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseApplySnapshotStateRefreshFunc(snapshotId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseApplySnapshotStateRefreshFunc(snapshotId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -83,15 +86,15 @@ func resourceTencentCloudLighthouseApplyInstanceSnapshotCreate(d *schema.Resourc } func resourceTencentCloudLighthouseApplyInstanceSnapshotRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_apply_instance_snapshot.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_apply_instance_snapshot.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudLighthouseApplyInstanceSnapshotDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_apply_instance_snapshot.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_apply_instance_snapshot.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_lighthouse_apply_instance_snapshot_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_instance_snapshot_test.go similarity index 68% rename from tencentcloud/resource_tc_lighthouse_apply_instance_snapshot_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_instance_snapshot_test.go index b928f4d41f..6d97edaa06 100644 --- a/tencentcloud/resource_tc_lighthouse_apply_instance_snapshot_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_apply_instance_snapshot_test.go @@ -1,17 +1,19 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseApplyInstanceSnapshotResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseApplyInstanceSnapshot, @@ -21,7 +23,7 @@ func TestAccTencentCloudLighthouseApplyInstanceSnapshotResource_basic(t *testing }) } -const testAccLighthouseApplyInstanceSnapshot = DefaultLighthoustVariables + ` +const testAccLighthouseApplyInstanceSnapshot = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_apply_instance_snapshot" "apply_instance_snapshot" { instance_id = var.lighthouse_id snapshot_id = var.lighthouse_snapshot_id diff --git a/tencentcloud/resource_tc_lighthouse_blueprint.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_blueprint.go similarity index 68% rename from tencentcloud/resource_tc_lighthouse_blueprint.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_blueprint.go index 15de61bde0..2cec872f9b 100644 --- a/tencentcloud/resource_tc_lighthouse_blueprint.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_blueprint.go @@ -1,17 +1,20 @@ -package tencentcloud +package lighthouse import ( "context" "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseBlueprint() *schema.Resource { +func ResourceTencentCloudLighthouseBlueprint() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseBlueprintCreate, Read: resourceTencentCloudLighthouseBlueprintRead, @@ -43,10 +46,10 @@ func resourceTencentCloudLighthouseBlueprint() *schema.Resource { } func resourceTencentCloudLighthouseBlueprintCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_blueprint.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_blueprint.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewCreateBlueprintRequest() @@ -65,10 +68,10 @@ func resourceTencentCloudLighthouseBlueprintCreate(d *schema.ResourceData, meta request.InstanceId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().CreateBlueprint(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().CreateBlueprint(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -83,9 +86,9 @@ func resourceTencentCloudLighthouseBlueprintCreate(d *schema.ResourceData, meta blueprintId = *response.Response.BlueprintId d.SetId(blueprintId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"NORMAL"}, 10*readRetryTimeout, time.Second, service.LighthouseBlueprintStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"NORMAL"}, 10*tccommon.ReadRetryTimeout, time.Second, service.LighthouseBlueprintStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -95,14 +98,14 @@ func resourceTencentCloudLighthouseBlueprintCreate(d *schema.ResourceData, meta } func resourceTencentCloudLighthouseBlueprintRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_blueprint.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_blueprint.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} blueprintId := d.Id() @@ -129,10 +132,10 @@ func resourceTencentCloudLighthouseBlueprintRead(d *schema.ResourceData, meta in } func resourceTencentCloudLighthouseBlueprintUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_blueprint.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_blueprint.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := lighthouse.NewModifyBlueprintAttributeRequest() @@ -152,10 +155,10 @@ func resourceTencentCloudLighthouseBlueprintUpdate(d *schema.ResourceData, meta } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifyBlueprintAttribute(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifyBlueprintAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -170,13 +173,13 @@ func resourceTencentCloudLighthouseBlueprintUpdate(d *schema.ResourceData, meta } func resourceTencentCloudLighthouseBlueprintDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_blueprint.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_blueprint.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} blueprintId := d.Id() if err := service.DeleteLighthouseBlueprintById(ctx, blueprintId); err != nil { diff --git a/tencentcloud/resource_tc_lighthouse_blueprint_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_blueprint_test.go similarity index 73% rename from tencentcloud/resource_tc_lighthouse_blueprint_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_blueprint_test.go index 433c02949a..410e3ea91d 100644 --- a/tencentcloud/resource_tc_lighthouse_blueprint_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_blueprint_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package lighthouse_test import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseBlueprintResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseBlueprint, @@ -27,7 +29,7 @@ func TestAccTencentCloudLighthouseBlueprintResource_basic(t *testing.T) { }) } -const testAccLighthouseBlueprint = DefaultLighthoustVariables + ` +const testAccLighthouseBlueprint = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_blueprint" "blueprint" { blueprint_name = "blueprint_name_test" diff --git a/tencentcloud/resource_tc_lighthouse_disk.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk.go similarity index 80% rename from tencentcloud/resource_tc_lighthouse_disk.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_disk.go index 14f23da117..59619d0f40 100644 --- a/tencentcloud/resource_tc_lighthouse_disk.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk.go @@ -1,4 +1,4 @@ -package tencentcloud +package lighthouse import ( "context" @@ -6,13 +6,16 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseDisk() *schema.Resource { +func ResourceTencentCloudLighthouseDisk() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseDiskCreate, Read: resourceTencentCloudLighthouseDiskRead, @@ -121,10 +124,10 @@ func resourceTencentCloudLighthouseDisk() *schema.Resource { } func resourceTencentCloudLighthouseDiskCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewCreateDisksRequest() @@ -186,10 +189,10 @@ func resourceTencentCloudLighthouseDiskCreate(d *schema.ResourceData, meta inter request.AutoMountConfiguration = &autoMountConfiguration } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().CreateDisks(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().CreateDisks(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -211,9 +214,9 @@ func resourceTencentCloudLighthouseDiskCreate(d *schema.ResourceData, meta inter d.SetId(helper.IdFormat(diskIds...)) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"UNATTACHED", "ATTACHED"}, 20*readRetryTimeout, time.Second, service.LighthouseDiskStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"UNATTACHED", "ATTACHED"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseDiskStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -223,14 +226,14 @@ func resourceTencentCloudLighthouseDiskCreate(d *schema.ResourceData, meta inter } func resourceTencentCloudLighthouseDiskRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} diskIds := helper.IdParse(d.Id()) diskId := diskIds[0] @@ -268,10 +271,10 @@ func resourceTencentCloudLighthouseDiskRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudLighthouseDiskUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) diskId := d.Id() request := lighthouse.NewModifyDisksAttributeRequest() @@ -285,10 +288,10 @@ func resourceTencentCloudLighthouseDiskUpdate(d *schema.ResourceData, meta inter } } if changeAttribute { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifyDisksAttribute(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifyDisksAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -310,10 +313,10 @@ func resourceTencentCloudLighthouseDiskUpdate(d *schema.ResourceData, meta inter } } if changeRenewFlag { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifyDisksRenewFlag(renewFlagRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifyDisksRenewFlag(renewFlagRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -329,20 +332,20 @@ func resourceTencentCloudLighthouseDiskUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudLighthouseDiskDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} diskId := d.Id() if err := service.IsolateLighthouseDiskById(ctx, diskId); err != nil { return err } - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseDiskIsolateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseDiskIsolateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e diff --git a/tencentcloud/resource_tc_lighthouse_disk_attachment.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_attachment.go similarity index 62% rename from tencentcloud/resource_tc_lighthouse_disk_attachment.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_attachment.go index a797805b63..e90de81788 100644 --- a/tencentcloud/resource_tc_lighthouse_disk_attachment.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_attachment.go @@ -1,17 +1,20 @@ -package tencentcloud +package lighthouse import ( "context" "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseDiskAttachment() *schema.Resource { +func ResourceTencentCloudLighthouseDiskAttachment() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseDiskAttachmentCreate, Read: resourceTencentCloudLighthouseDiskAttachmentRead, @@ -38,10 +41,10 @@ func resourceTencentCloudLighthouseDiskAttachment() *schema.Resource { } func resourceTencentCloudLighthouseDiskAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk_attachment.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk_attachment.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewAttachDisksRequest() @@ -58,10 +61,10 @@ func resourceTencentCloudLighthouseDiskAttachmentCreate(d *schema.ResourceData, request.InstanceId = helper.String(instanceId) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().AttachDisks(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().AttachDisks(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -74,9 +77,9 @@ func resourceTencentCloudLighthouseDiskAttachmentCreate(d *schema.ResourceData, d.SetId(diskId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"ATTACHED"}, 20*readRetryTimeout, time.Second, service.LighthouseDiskStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"ATTACHED"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseDiskStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -86,14 +89,14 @@ func resourceTencentCloudLighthouseDiskAttachmentCreate(d *schema.ResourceData, } func resourceTencentCloudLighthouseDiskAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} diskAttachment, err := service.DescribeLighthouseDiskById(ctx, d.Id()) if err != nil { @@ -118,19 +121,19 @@ func resourceTencentCloudLighthouseDiskAttachmentRead(d *schema.ResourceData, me } func resourceTencentCloudLighthouseDiskAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk_attachment.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk_attachment.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if err := service.DeleteLighthouseDiskAttachmentById(ctx, d.Id()); err != nil { return err } - conf := BuildStateChangeConf([]string{}, []string{"UNATTACHED"}, 20*readRetryTimeout, time.Second, service.LighthouseDiskStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"UNATTACHED"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseDiskStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e diff --git a/tencentcloud/resource_tc_lighthouse_disk_attachment_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_attachment_test.go similarity index 71% rename from tencentcloud/resource_tc_lighthouse_disk_attachment_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_attachment_test.go index a3badf98b8..9ac8dc0f89 100644 --- a/tencentcloud/resource_tc_lighthouse_disk_attachment_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_attachment_test.go @@ -1,17 +1,19 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseDiskAttachmentResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseDiskAttachment, @@ -26,7 +28,7 @@ func TestAccTencentCloudLighthouseDiskAttachmentResource_basic(t *testing.T) { }) } -const testAccLighthouseDiskAttachment = DefaultLighthoustVariables + ` +const testAccLighthouseDiskAttachment = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_disk_attachment" "disk_attachment" { disk_id = var.lighthouse_disk_id instance_id = var.lighthouse_id diff --git a/tencentcloud/resource_tc_lighthouse_disk_backup.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_backup.go similarity index 66% rename from tencentcloud/resource_tc_lighthouse_disk_backup.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_backup.go index 97ae32c63a..276a263de0 100644 --- a/tencentcloud/resource_tc_lighthouse_disk_backup.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_backup.go @@ -1,17 +1,20 @@ -package tencentcloud +package lighthouse import ( "context" "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseDiskBackup() *schema.Resource { +func ResourceTencentCloudLighthouseDiskBackup() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseDiskBackupCreate, Read: resourceTencentCloudLighthouseDiskBackupRead, @@ -38,10 +41,10 @@ func resourceTencentCloudLighthouseDiskBackup() *schema.Resource { } func resourceTencentCloudLighthouseDiskBackupCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk_backup.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk_backup.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewCreateDiskBackupRequest() @@ -56,10 +59,10 @@ func resourceTencentCloudLighthouseDiskBackupCreate(d *schema.ResourceData, meta request.DiskBackupName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().CreateDiskBackup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().CreateDiskBackup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -74,9 +77,9 @@ func resourceTencentCloudLighthouseDiskBackupCreate(d *schema.ResourceData, meta diskBackupId = *response.Response.DiskBackupId d.SetId(diskBackupId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"NORMAL"}, 20*readRetryTimeout, time.Second, service.LighthouseDiskBackupStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"NORMAL"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseDiskBackupStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -86,14 +89,14 @@ func resourceTencentCloudLighthouseDiskBackupCreate(d *schema.ResourceData, meta } func resourceTencentCloudLighthouseDiskBackupRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk_backup.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk_backup.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} diskBackupId := d.Id() @@ -120,10 +123,10 @@ func resourceTencentCloudLighthouseDiskBackupRead(d *schema.ResourceData, meta i } func resourceTencentCloudLighthouseDiskBackupUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk_backup.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk_backup.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := lighthouse.NewModifyDiskBackupsAttributeRequest() @@ -137,10 +140,10 @@ func resourceTencentCloudLighthouseDiskBackupUpdate(d *schema.ResourceData, meta } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifyDiskBackupsAttribute(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifyDiskBackupsAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -155,13 +158,13 @@ func resourceTencentCloudLighthouseDiskBackupUpdate(d *schema.ResourceData, meta } func resourceTencentCloudLighthouseDiskBackupDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_disk_backup.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_disk_backup.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} diskBackupId := d.Id() if err := service.DeleteLighthouseDiskBackupById(ctx, diskBackupId); err != nil { diff --git a/tencentcloud/resource_tc_lighthouse_disk_backup_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_backup_test.go similarity index 75% rename from tencentcloud/resource_tc_lighthouse_disk_backup_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_backup_test.go index b6d533524d..4b1b54e633 100644 --- a/tencentcloud/resource_tc_lighthouse_disk_backup_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_backup_test.go @@ -1,15 +1,17 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseDiskBackupResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseDiskBackup, @@ -33,14 +35,14 @@ func TestAccTencentCloudLighthouseDiskBackupResource_basic(t *testing.T) { }) } -const testAccLighthouseDiskBackup = DefaultLighthoustVariables + ` +const testAccLighthouseDiskBackup = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_disk_backup" "disk_backup" { disk_id = var.lighthouse_disk_id disk_backup_name = "disk-backup" } ` -const testAccLighthouseDiskBackupUpdate = DefaultLighthoustVariables + ` +const testAccLighthouseDiskBackupUpdate = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_disk_backup" "disk_backup" { disk_id = var.lighthouse_disk_id disk_backup_name = "disk-backup-update" diff --git a/tencentcloud/resource_tc_lighthouse_disk_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_test.go similarity index 81% rename from tencentcloud/resource_tc_lighthouse_disk_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_test.go index 0a2e63afbe..9da07c0181 100644 --- a/tencentcloud/resource_tc_lighthouse_disk_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_disk_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseDiskResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseDisk, diff --git a/tencentcloud/resource_tc_lighthouse_firewall_rule.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_rule.go similarity index 80% rename from tencentcloud/resource_tc_lighthouse_firewall_rule.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_rule.go index ad6381a798..bdee18ec72 100644 --- a/tencentcloud/resource_tc_lighthouse_firewall_rule.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_rule.go @@ -1,16 +1,19 @@ -package tencentcloud +package lighthouse import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseFirewallRule() *schema.Resource { +func ResourceTencentCloudLighthouseFirewallRule() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseFirewallRuleCreate, Read: resourceTencentCloudLighthouseFirewallRuleRead, @@ -66,10 +69,10 @@ func resourceTencentCloudLighthouseFirewallRule() *schema.Resource { } func resourceTencentCloudLighthouseFirewallRuleCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_firewall_rule.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_firewall_rule.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewCreateFirewallRulesRequest() @@ -103,10 +106,10 @@ func resourceTencentCloudLighthouseFirewallRuleCreate(d *schema.ResourceData, me } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().CreateFirewallRules(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().CreateFirewallRules(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -123,12 +126,12 @@ func resourceTencentCloudLighthouseFirewallRuleCreate(d *schema.ResourceData, me } func resourceTencentCloudLighthouseFirewallRuleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_firewall_rule.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_firewall_rule.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} firewallRules, err := service.DescribeLighthouseFirewallRuleById(ctx, d.Id()) if err != nil { @@ -176,10 +179,10 @@ func resourceTencentCloudLighthouseFirewallRuleRead(d *schema.ResourceData, meta } func resourceTencentCloudLighthouseFirewallRuleUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_firewall_rule.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_firewall_rule.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := lighthouse.NewModifyFirewallRulesRequest() hasChanged := false @@ -211,10 +214,10 @@ func resourceTencentCloudLighthouseFirewallRuleUpdate(d *schema.ResourceData, me } if hasChanged { request.InstanceId = helper.String(d.Id()) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifyFirewallRules(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifyFirewallRules(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -230,13 +233,13 @@ func resourceTencentCloudLighthouseFirewallRuleUpdate(d *schema.ResourceData, me } func resourceTencentCloudLighthouseFirewallRuleDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_firewall_rule.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_firewall_rule.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} firewallRuleInfos, err := service.DescribeLighthouseFirewallRuleById(ctx, d.Id()) if err != nil { @@ -283,10 +286,10 @@ func resourceTencentCloudLighthouseFirewallRuleDelete(d *schema.ResourceData, me request.InstanceId = helper.String(d.Id()) request.FirewallRules = firewallRuleList - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().DeleteFirewallRules(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().DeleteFirewallRules(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } diff --git a/tencentcloud/resource_tc_lighthouse_firewall_rule_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_rule_test.go similarity index 84% rename from tencentcloud/resource_tc_lighthouse_firewall_rule_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_rule_test.go index c4f36a6368..a972b7504e 100644 --- a/tencentcloud/resource_tc_lighthouse_firewall_rule_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_rule_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseFirewallRuleResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseFirewallRule, @@ -37,7 +39,7 @@ func TestAccTencentCloudLighthouseFirewallRuleResource_basic(t *testing.T) { }) } -const testAccLighthouseFirewallRule = DefaultLighthoustVariables + ` +const testAccLighthouseFirewallRule = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_firewall_rule" "firewall_rule" { instance_id = var.lighthouse_id @@ -58,7 +60,7 @@ resource "tencentcloud_lighthouse_firewall_rule" "firewall_rule" { } ` -const testAccLighthouseFirewallRuleUpdate = DefaultLighthoustVariables + ` +const testAccLighthouseFirewallRuleUpdate = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_firewall_rule" "firewall_rule" { instance_id = var.lighthouse_id diff --git a/tencentcloud/resource_tc_lighthouse_firewall_template.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_template.go similarity index 79% rename from tencentcloud/resource_tc_lighthouse_firewall_template.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_template.go index 23a999bedb..82539004f4 100644 --- a/tencentcloud/resource_tc_lighthouse_firewall_template.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_template.go @@ -1,17 +1,20 @@ -package tencentcloud +package lighthouse import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseFirewallTemplate() *schema.Resource { +func ResourceTencentCloudLighthouseFirewallTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseFirewallTemplateCreate, Read: resourceTencentCloudLighthouseFirewallTemplateRead, @@ -66,10 +69,10 @@ func resourceTencentCloudLighthouseFirewallTemplate() *schema.Resource { } func resourceTencentCloudLighthouseFirewallTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_firewall_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_firewall_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewCreateFirewallTemplateRequest() @@ -103,10 +106,10 @@ func resourceTencentCloudLighthouseFirewallTemplateCreate(d *schema.ResourceData } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().CreateFirewallTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().CreateFirewallTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -125,14 +128,14 @@ func resourceTencentCloudLighthouseFirewallTemplateCreate(d *schema.ResourceData } func resourceTencentCloudLighthouseFirewallTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_firewall_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_firewall_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} firewallTemplateId := d.Id() @@ -187,10 +190,10 @@ func resourceTencentCloudLighthouseFirewallTemplateRead(d *schema.ResourceData, } func resourceTencentCloudLighthouseFirewallTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_firewall_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_firewall_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := lighthouse.NewModifyFirewallTemplateRequest() @@ -212,10 +215,10 @@ func resourceTencentCloudLighthouseFirewallTemplateUpdate(d *schema.ResourceData } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifyFirewallTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifyFirewallTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -230,13 +233,13 @@ func resourceTencentCloudLighthouseFirewallTemplateUpdate(d *schema.ResourceData } func resourceTencentCloudLighthouseFirewallTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_firewall_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_firewall_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} firewallTemplateId := d.Id() if err := service.DeleteFirewallTemplateById(ctx, firewallTemplateId); err != nil { diff --git a/tencentcloud/resource_tc_lighthouse_firewall_template_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_template_test.go similarity index 81% rename from tencentcloud/resource_tc_lighthouse_firewall_template_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_template_test.go index 4bef8f68c2..e8ae14d4c9 100644 --- a/tencentcloud/resource_tc_lighthouse_firewall_template_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_firewall_template_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseFirewallTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseFirewallTemplate, diff --git a/tencentcloud/resource_tc_lighthouse_instance.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_instance.go similarity index 81% rename from tencentcloud/resource_tc_lighthouse_instance.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_instance.go index 31e2561b89..800ff26e6c 100644 --- a/tencentcloud/resource_tc_lighthouse_instance.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_instance.go @@ -1,4 +1,4 @@ -package tencentcloud +package lighthouse import ( "context" @@ -6,14 +6,17 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseInstance() *schema.Resource { +func ResourceTencentCloudLighthouseInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseInstanceCreate, Read: resourceTencentCloudLighthouseInstanceRead, @@ -93,7 +96,7 @@ func resourceTencentCloudLighthouseInstance() *schema.Resource { Type: schema.TypeString, Optional: true, Computed: true, - ValidateFunc: validateAllowedStringValue([]string{"YES", "NO"}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{"YES", "NO"}), Deprecated: "It has been deprecated from version v1.81.8. Use `tencentcloud_lighthouse_key_pair_attachment` manage key pair.", Description: "Whether to allow login using the default key pair. `YES`: allow login; `NO`: disable login. Default: `YES`.", }, @@ -205,10 +208,10 @@ func resourceTencentCloudLighthouseInstance() *schema.Resource { } func resourceTencentCloudLighthouseInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewCreateInstancesRequest() @@ -325,7 +328,7 @@ func resourceTencentCloudLighthouseInstanceCreate(d *schema.ResourceData, meta i request.FirewallTemplateId = helper.String(v.(string)) } - result, err := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().CreateInstances(request) + result, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().CreateInstances(request) if err != nil { log.Printf("[CRITAL]%s create lighthouse instance failed, reason:%+v", logId, err) @@ -334,13 +337,13 @@ func resourceTencentCloudLighthouseInstanceCreate(d *schema.ResourceData, meta i instanceId = *result.Response.InstanceIdSet[0] - ctx := context.WithValue(context.TODO(), logIdKey, logId) - lighthouseService := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + lighthouseService := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err = resource.Retry(5*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(5*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, errRet := lighthouseService.DescribeLighthouseInstanceById(ctx, instanceId) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } if instance != nil && (*instance.InstanceState == "RUNNING") { return nil @@ -360,12 +363,12 @@ func resourceTencentCloudLighthouseInstanceCreate(d *schema.ResourceData, meta i } func resourceTencentCloudLighthouseInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - lighthouseService := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + lighthouseService := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} id := d.Id() @@ -404,10 +407,10 @@ func resourceTencentCloudLighthouseInstanceRead(d *schema.ResourceData, meta int } func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_instance.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_instance.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewModifyInstancesAttributeRequest() @@ -429,10 +432,10 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i if v, ok := d.GetOk("instance_name"); ok { request.InstanceName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifyInstancesAttribute(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifyInstancesAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -444,12 +447,12 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i return err } - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} - err = resource.Retry(5*readRetryTimeout, func() *resource.RetryError { + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + err = resource.Retry(5*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, errRet := service.DescribeLighthouseInstanceById(ctx, id) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } if instance.LatestOperationState == nil { return resource.RetryableError(fmt.Errorf("waiting for instance operation update")) @@ -475,10 +478,10 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i request.BundleId = helper.String(new.(string)) autoVoucher := d.Get("is_update_bundle_id_auto_voucher").(bool) request.AutoVoucher = &autoVoucher - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifyInstancesBundle(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifyInstancesBundle(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -489,9 +492,9 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i return err } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(id, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(id, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -504,10 +507,10 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i request.InstanceId = helper.String(id) request.BlueprintId = helper.String(new.(string)) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ResetInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ResetInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -518,9 +521,9 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i return err } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(id, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(id, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -538,10 +541,10 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i request := lighthouse.NewModifyInstancesRenewFlagRequest() request.InstanceIds = helper.StringsStringsPoint([]string{id}) request.RenewFlag = helper.String(new.(string)) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifyInstancesRenewFlag(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifyInstancesRenewFlag(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -551,9 +554,9 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i log.Printf("[CRITAL]%s operate lighthouse modifyInstanceRenewFlag failed, reason:%+v", logId, err) return err } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(id, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(id, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -593,10 +596,10 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i request := lighthouse.NewResetInstancesPasswordRequest() request.InstanceIds = helper.StringsStringsPoint([]string{id}) request.Password = helper.String(newPassword) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ResetInstancesPassword(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ResetInstancesPassword(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -606,9 +609,9 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i log.Printf("[CRITAL]%s operate lighthouse resetInstancesPassword failed, reason:%+v", logId, err) return err } - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(id, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(id, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -627,18 +630,18 @@ func resourceTencentCloudLighthouseInstanceUpdate(d *schema.ResourceData, meta i } func resourceTencentCloudLighthouseInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} id := d.Id() isolateDataDisk := d.Get("isolate_data_disk").(bool) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { if err := service.IsolateLighthouseInstanceById(ctx, id, isolateDataDisk); err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -646,10 +649,10 @@ func resourceTencentCloudLighthouseInstanceDelete(d *schema.ResourceData, meta i return err } - err = resource.Retry(5*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(5*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, errRet := service.DescribeLighthouseInstanceById(ctx, id) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } if instance.LatestOperationState == nil { return resource.RetryableError(fmt.Errorf("waiting for instance operation update")) diff --git a/tencentcloud/resource_tc_lighthouse_instance_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_instance_test.go similarity index 84% rename from tencentcloud/resource_tc_lighthouse_instance_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_instance_test.go index 6020dd1d34..4184e608d1 100644 --- a/tencentcloud/resource_tc_lighthouse_instance_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_instance_test.go @@ -1,12 +1,17 @@ -package tencentcloud +package lighthouse_test import ( "context" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + + svclighthouse "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/lighthouse" ) func init() { @@ -14,17 +19,17 @@ func init() { resource.AddTestSweepers("tencentcloud_lighthouse_instance", &resource.Sweeper{ Name: "tencentcloud_lighthouse_instance", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) request := lighthouse.NewDescribeInstancesRequest() - response, err := cli.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().DescribeInstances(request) + response, err := cli.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().DescribeInstances(request) if err != nil { return err } instances := response.Response.InstanceSet - service := LightHouseService{client: cli.(*TencentCloudClient).apiV3Conn} + service := svclighthouse.NewLightHouseService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) for _, instance := range instances { name := *instance.InstanceName @@ -32,7 +37,7 @@ func init() { if err != nil { continue } - if isResourcePersist(name, &created) { + if tcacctest.IsResourcePersist(name, &created) { continue } if innerErr := service.DeleteLighthouseInstanceById(ctx, *instance.InstanceId); innerErr != nil { @@ -48,8 +53,8 @@ func TestAccTencentCloudLighthouseInstanceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseInstance, diff --git a/tencentcloud/resource_tc_lighthouse_key_pair.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair.go similarity index 73% rename from tencentcloud/resource_tc_lighthouse_key_pair.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair.go index 9ca2a33b79..d519dad4a7 100644 --- a/tencentcloud/resource_tc_lighthouse_key_pair.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair.go @@ -1,17 +1,20 @@ -package tencentcloud +package lighthouse import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseKeyPair() *schema.Resource { +func ResourceTencentCloudLighthouseKeyPair() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseKeyPairCreate, Read: resourceTencentCloudLighthouseKeyPairRead, @@ -48,14 +51,14 @@ func resourceTencentCloudLighthouseKeyPair() *schema.Resource { } func createKeyPair(ctx context.Context, d *schema.ResourceData, meta interface{}) (keyId string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewCreateKeyPairRequest() response := lighthouse.NewCreateKeyPairResponse() request.KeyName = helper.String(d.Get("key_name").(string)) - innerErr := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().CreateKeyPair(request) + innerErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().CreateKeyPair(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -76,15 +79,15 @@ func createKeyPair(ctx context.Context, d *schema.ResourceData, meta interface{} } func createKeyPairByImportPublicKey(ctx context.Context, d *schema.ResourceData, meta interface{}) (keyId string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewImportKeyPairRequest() response := lighthouse.NewImportKeyPairResponse() request.KeyName = helper.String(d.Get("key_name").(string)) request.PublicKey = helper.String(d.Get("public_key").(string)) - innerErr := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ImportKeyPair(request) + innerErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ImportKeyPair(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -106,15 +109,15 @@ func createKeyPairByImportPublicKey(ctx context.Context, d *schema.ResourceData, } func resourceTencentCloudLighthouseKeyPairCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_key_pair.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_key_pair.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( keyId string err error ) - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) if _, ok := d.GetOk("public_key"); ok { keyId, err = createKeyPairByImportPublicKey(ctx, d, meta) @@ -130,14 +133,14 @@ func resourceTencentCloudLighthouseKeyPairCreate(d *schema.ResourceData, meta in } func resourceTencentCloudLighthouseKeyPairRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_key_pair.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_key_pair.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} keyId := d.Id() @@ -161,13 +164,13 @@ func resourceTencentCloudLighthouseKeyPairRead(d *schema.ResourceData, meta inte } func resourceTencentCloudLighthouseKeyPairDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_key_pair.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_key_pair.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} keyId := d.Id() if err := service.DeleteLighthouseKeyPairById(ctx, keyId); err != nil { diff --git a/tencentcloud/resource_tc_lighthouse_key_pair_attachment.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair_attachment.go similarity index 61% rename from tencentcloud/resource_tc_lighthouse_key_pair_attachment.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair_attachment.go index 3d41adc819..9b64e52b5e 100644 --- a/tencentcloud/resource_tc_lighthouse_key_pair_attachment.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair_attachment.go @@ -1,4 +1,4 @@ -package tencentcloud +package lighthouse import ( "context" @@ -7,12 +7,14 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" ) -func resourceTencentCloudLighthouseKeyPairAttachment() *schema.Resource { +func ResourceTencentCloudLighthouseKeyPairAttachment() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseKeyPairAttachmentCreate, Read: resourceTencentCloudLighthouseKeyPairAttachmentRead, @@ -39,10 +41,10 @@ func resourceTencentCloudLighthouseKeyPairAttachment() *schema.Resource { } func resourceTencentCloudLighthouseKeyPairAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_key_pair_attachment.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_key_pair_attachment.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewAssociateInstancesKeyPairsRequest() @@ -54,10 +56,10 @@ func resourceTencentCloudLighthouseKeyPairAttachmentCreate(d *schema.ResourceDat request.KeyIds = []*string{&keyId} request.InstanceIds = []*string{&instanceId} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().AssociateInstancesKeyPairs(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().AssociateInstancesKeyPairs(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -68,11 +70,11 @@ func resourceTencentCloudLighthouseKeyPairAttachmentCreate(d *schema.ResourceDat return err } - d.SetId(keyId + FILED_SP + instanceId) + d.SetId(keyId + tccommon.FILED_SP + instanceId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -82,16 +84,16 @@ func resourceTencentCloudLighthouseKeyPairAttachmentCreate(d *schema.ResourceDat } func resourceTencentCloudLighthouseKeyPairAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_key_pair_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_key_pair_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -126,14 +128,14 @@ func resourceTencentCloudLighthouseKeyPairAttachmentRead(d *schema.ResourceData, } func resourceTencentCloudLighthouseKeyPairAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_key_pair_attachment.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_key_pair_attachment.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -144,7 +146,7 @@ func resourceTencentCloudLighthouseKeyPairAttachmentDelete(d *schema.ResourceDat return err } - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(instanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e diff --git a/tencentcloud/resource_tc_lighthouse_key_pair_attachment_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair_attachment_test.go similarity index 69% rename from tencentcloud/resource_tc_lighthouse_key_pair_attachment_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair_attachment_test.go index 591e7e70ee..e6e778cd88 100644 --- a/tencentcloud/resource_tc_lighthouse_key_pair_attachment_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair_attachment_test.go @@ -1,15 +1,17 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseKeyPairAttachmentResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseKeyPairAttachment, @@ -24,7 +26,7 @@ func TestAccTencentCloudLighthouseKeyPairAttachmentResource_basic(t *testing.T) }) } -const testAccLighthouseKeyPairAttachment = DefaultLighthoustVariables + ` +const testAccLighthouseKeyPairAttachment = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_key_pair_attachment" "key_pair_attachment" { key_id = "lhkp-d8zf3jmv" diff --git a/tencentcloud/resource_tc_lighthouse_key_pair_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair_test.go similarity index 85% rename from tencentcloud/resource_tc_lighthouse_key_pair_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair_test.go index c7a0713e2e..6b5218dfb0 100644 --- a/tencentcloud/resource_tc_lighthouse_key_pair_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_key_pair_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudLighthouseKeyPairResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseKeyPair, @@ -31,9 +33,9 @@ func TestAccTencentCloudLighthouseKeyPairResource_createByImportPublicKey(t *tes t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseKeyPairCreateByImportPublicKey, diff --git a/tencentcloud/resource_tc_lighthouse_reboot_instance.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_reboot_instance.go similarity index 59% rename from tencentcloud/resource_tc_lighthouse_reboot_instance.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_reboot_instance.go index 8e55f47ff3..6f64e70f67 100644 --- a/tencentcloud/resource_tc_lighthouse_reboot_instance.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_reboot_instance.go @@ -1,15 +1,17 @@ -package tencentcloud +package lighthouse import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" ) -func resourceTencentCloudLighthouseRebootInstance() *schema.Resource { +func ResourceTencentCloudLighthouseRebootInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseRebootInstanceCreate, Read: resourceTencentCloudLighthouseRebootInstanceRead, @@ -26,10 +28,10 @@ func resourceTencentCloudLighthouseRebootInstance() *schema.Resource { } func resourceTencentCloudLighthouseRebootInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_reboot_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_reboot_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewRebootInstancesRequest() @@ -37,10 +39,10 @@ func resourceTencentCloudLighthouseRebootInstanceCreate(d *schema.ResourceData, instanceId := d.Get("instance_id").(string) request.InstanceIds = []*string{&instanceId} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().RebootInstances(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().RebootInstances(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -53,9 +55,9 @@ func resourceTencentCloudLighthouseRebootInstanceCreate(d *schema.ResourceData, d.SetId(instanceId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -65,15 +67,15 @@ func resourceTencentCloudLighthouseRebootInstanceCreate(d *schema.ResourceData, } func resourceTencentCloudLighthouseRebootInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_reboot_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_reboot_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudLighthouseRebootInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_reboot_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_reboot_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_lighthouse_reboot_instance_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_reboot_instance_test.go similarity index 63% rename from tencentcloud/resource_tc_lighthouse_reboot_instance_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_reboot_instance_test.go index 9b9f55b946..6e86aae8bd 100644 --- a/tencentcloud/resource_tc_lighthouse_reboot_instance_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_reboot_instance_test.go @@ -1,15 +1,17 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseRebootInstanceResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseRebootInstance, @@ -19,7 +21,7 @@ func TestAccTencentCloudLighthouseRebootInstanceResource_basic(t *testing.T) { }) } -const testAccLighthouseRebootInstance = DefaultLighthoustVariables + ` +const testAccLighthouseRebootInstance = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_reboot_instance" "reboot_instance" { instance_id = var.lighthouse_id diff --git a/tencentcloud/resource_tc_lighthouse_renew_disk.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_disk.go similarity index 79% rename from tencentcloud/resource_tc_lighthouse_renew_disk.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_disk.go index 7ac50a6183..d2a5ca9071 100644 --- a/tencentcloud/resource_tc_lighthouse_renew_disk.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_disk.go @@ -1,16 +1,19 @@ -package tencentcloud +package lighthouse import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseRenewDisk() *schema.Resource { +func ResourceTencentCloudLighthouseRenewDisk() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseRenewDiskCreate, Read: resourceTencentCloudLighthouseRenewDiskRead, @@ -66,10 +69,10 @@ func resourceTencentCloudLighthouseRenewDisk() *schema.Resource { } func resourceTencentCloudLighthouseRenewDiskCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_renew_disk.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_renew_disk.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewRenewDisksRequest() @@ -101,10 +104,10 @@ func resourceTencentCloudLighthouseRenewDiskCreate(d *schema.ResourceData, meta request.AutoVoucher = helper.Bool(v.(bool)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().RenewDisks(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().RenewDisks(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -117,9 +120,9 @@ func resourceTencentCloudLighthouseRenewDiskCreate(d *schema.ResourceData, meta d.SetId(diskId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseDiskLatestOperationRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseDiskLatestOperationRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -129,15 +132,15 @@ func resourceTencentCloudLighthouseRenewDiskCreate(d *schema.ResourceData, meta } func resourceTencentCloudLighthouseRenewDiskRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_renew_disk.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_renew_disk.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudLighthouseRenewDiskDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_renew_disk.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_renew_disk.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_lighthouse_renew_disk_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_disk_test.go similarity index 79% rename from tencentcloud/resource_tc_lighthouse_renew_disk_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_disk_test.go index f60faa1199..39e7a47753 100644 --- a/tencentcloud/resource_tc_lighthouse_renew_disk_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_disk_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseRenewDiskResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseRenewDisk, diff --git a/tencentcloud/resource_tc_lighthouse_renew_instance.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_instance.go similarity index 80% rename from tencentcloud/resource_tc_lighthouse_renew_instance.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_instance.go index 3b4eb400a9..a63470cb58 100644 --- a/tencentcloud/resource_tc_lighthouse_renew_instance.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_instance.go @@ -1,16 +1,19 @@ -package tencentcloud +package lighthouse import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseRenewInstance() *schema.Resource { +func ResourceTencentCloudLighthouseRenewInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseRenewInstanceCreate, Read: resourceTencentCloudLighthouseRenewInstanceRead, @@ -72,10 +75,10 @@ func resourceTencentCloudLighthouseRenewInstance() *schema.Resource { } func resourceTencentCloudLighthouseRenewInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_renew_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_renew_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewRenewInstancesRequest() @@ -105,10 +108,10 @@ func resourceTencentCloudLighthouseRenewInstanceCreate(d *schema.ResourceData, m request.AutoVoucher = helper.Bool(v.(bool)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().RenewInstances(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().RenewInstances(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -121,9 +124,9 @@ func resourceTencentCloudLighthouseRenewInstanceCreate(d *schema.ResourceData, m d.SetId(instanceId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -133,15 +136,15 @@ func resourceTencentCloudLighthouseRenewInstanceCreate(d *schema.ResourceData, m } func resourceTencentCloudLighthouseRenewInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_renew_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_renew_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudLighthouseRenewInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_renew_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_renew_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_lighthouse_renew_instance_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_instance_test.go similarity index 76% rename from tencentcloud/resource_tc_lighthouse_renew_instance_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_instance_test.go index a35401af0c..09e3628f53 100644 --- a/tencentcloud/resource_tc_lighthouse_renew_instance_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_renew_instance_test.go @@ -1,15 +1,17 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseRenewInstanceResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseRenewInstance, diff --git a/tencentcloud/resource_tc_lighthouse_snapshot.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_snapshot.go similarity index 64% rename from tencentcloud/resource_tc_lighthouse_snapshot.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_snapshot.go index 550ed85a23..7d66596274 100644 --- a/tencentcloud/resource_tc_lighthouse_snapshot.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_snapshot.go @@ -1,17 +1,20 @@ -package tencentcloud +package lighthouse import ( "context" "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudLighthouseSnapshot() *schema.Resource { +func ResourceTencentCloudLighthouseSnapshot() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseSnapshotCreate, Read: resourceTencentCloudLighthouseSnapshotRead, @@ -36,10 +39,10 @@ func resourceTencentCloudLighthouseSnapshot() *schema.Resource { } func resourceTencentCloudLighthouseSnapshotCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_snapshot.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_snapshot.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = lighthouse.NewCreateInstanceSnapshotRequest() @@ -52,10 +55,10 @@ func resourceTencentCloudLighthouseSnapshotCreate(d *schema.ResourceData, meta i request.SnapshotName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().CreateInstanceSnapshot(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().CreateInstanceSnapshot(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -70,9 +73,9 @@ func resourceTencentCloudLighthouseSnapshotCreate(d *schema.ResourceData, meta i snapshotId = *response.Response.SnapshotId d.SetId(snapshotId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"NORMAL"}, 20*readRetryTimeout, time.Second, service.LighthouseSnapshotStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"NORMAL"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseSnapshotStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -82,14 +85,14 @@ func resourceTencentCloudLighthouseSnapshotCreate(d *schema.ResourceData, meta i } func resourceTencentCloudLighthouseSnapshotRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_snapshot.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_snapshot.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} snapshotId := d.Id() @@ -112,10 +115,10 @@ func resourceTencentCloudLighthouseSnapshotRead(d *schema.ResourceData, meta int } func resourceTencentCloudLighthouseSnapshotUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_snapshot.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_snapshot.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := lighthouse.NewModifySnapshotAttributeRequest() @@ -129,10 +132,10 @@ func resourceTencentCloudLighthouseSnapshotUpdate(d *schema.ResourceData, meta i } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ModifySnapshotAttribute(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().ModifySnapshotAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -147,13 +150,13 @@ func resourceTencentCloudLighthouseSnapshotUpdate(d *schema.ResourceData, meta i } func resourceTencentCloudLighthouseSnapshotDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_snapshot.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_snapshot.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} snapshotId := d.Id() if err := service.DeleteLighthouseSnapshotById(ctx, snapshotId); err != nil { diff --git a/tencentcloud/resource_tc_lighthouse_snapshot_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_snapshot_test.go similarity index 75% rename from tencentcloud/resource_tc_lighthouse_snapshot_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_snapshot_test.go index 96e83bbcee..fd8070d690 100644 --- a/tencentcloud/resource_tc_lighthouse_snapshot_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_snapshot_test.go @@ -1,17 +1,19 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseSnapshotResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseSnapshot, @@ -31,14 +33,14 @@ func TestAccTencentCloudLighthouseSnapshotResource_basic(t *testing.T) { }) } -const testAccLighthouseSnapshot = DefaultLighthoustVariables + ` +const testAccLighthouseSnapshot = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_snapshot" "snapshot" { instance_id = var.lighthouse_id snapshot_name = "snapshot_test" } ` -const testAccLighthouseSnapshot_update = DefaultLighthoustVariables + ` +const testAccLighthouseSnapshot_update = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_snapshot" "snapshot" { instance_id = var.lighthouse_id snapshot_name = "snapshot_test_update" diff --git a/tencentcloud/resource_tc_lighthouse_start_instance.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_start_instance.go similarity index 59% rename from tencentcloud/resource_tc_lighthouse_start_instance.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_start_instance.go index 86067bf7d6..12591c99a3 100644 --- a/tencentcloud/resource_tc_lighthouse_start_instance.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_start_instance.go @@ -1,15 +1,17 @@ -package tencentcloud +package lighthouse import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" ) -func resourceTencentCloudLighthouseStartInstance() *schema.Resource { +func ResourceTencentCloudLighthouseStartInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseStartInstanceCreate, Read: resourceTencentCloudLighthouseStartInstanceRead, @@ -26,18 +28,18 @@ func resourceTencentCloudLighthouseStartInstance() *schema.Resource { } func resourceTencentCloudLighthouseStartInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_start_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_start_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := lighthouse.NewStartInstancesRequest() instanceId := d.Get("instance_id").(string) request.InstanceIds = []*string{&instanceId} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().StartInstances(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().StartInstances(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -50,9 +52,9 @@ func resourceTencentCloudLighthouseStartInstanceCreate(d *schema.ResourceData, m d.SetId(instanceId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -62,15 +64,15 @@ func resourceTencentCloudLighthouseStartInstanceCreate(d *schema.ResourceData, m } func resourceTencentCloudLighthouseStartInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_start_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_start_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudLighthouseStartInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_start_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_start_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_lighthouse_start_instance_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_start_instance_test.go similarity index 65% rename from tencentcloud/resource_tc_lighthouse_start_instance_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_start_instance_test.go index 0f3ef1b547..f14354ddd1 100644 --- a/tencentcloud/resource_tc_lighthouse_start_instance_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_start_instance_test.go @@ -1,15 +1,17 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseStartInstanceResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseStopInstance, @@ -22,7 +24,7 @@ func TestAccTencentCloudLighthouseStartInstanceResource_basic(t *testing.T) { }) } -const testAccLighthouseStartInstance = DefaultLighthoustVariables + ` +const testAccLighthouseStartInstance = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_start_instance" "start_instance" { instance_id = var.lighthouse_id diff --git a/tencentcloud/resource_tc_lighthouse_stop_instance.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_stop_instance.go similarity index 59% rename from tencentcloud/resource_tc_lighthouse_stop_instance.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_stop_instance.go index 1eeb1c4472..22be88d744 100644 --- a/tencentcloud/resource_tc_lighthouse_stop_instance.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_stop_instance.go @@ -1,15 +1,17 @@ -package tencentcloud +package lighthouse import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" ) -func resourceTencentCloudLighthouseStopInstance() *schema.Resource { +func ResourceTencentCloudLighthouseStopInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudLighthouseStopInstanceCreate, Read: resourceTencentCloudLighthouseStopInstanceRead, @@ -26,18 +28,18 @@ func resourceTencentCloudLighthouseStopInstance() *schema.Resource { } func resourceTencentCloudLighthouseStopInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_stop_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_stop_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := lighthouse.NewStopInstancesRequest() instanceId := d.Get("instance_id").(string) request.InstanceIds = []*string{&instanceId} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().StopInstances(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseLighthouseClient().StopInstances(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -50,9 +52,9 @@ func resourceTencentCloudLighthouseStopInstanceCreate(d *schema.ResourceData, me d.SetId(instanceId) - service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn} + service := LightHouseService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*tccommon.ReadRetryTimeout, time.Second, service.LighthouseInstanceStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -62,15 +64,15 @@ func resourceTencentCloudLighthouseStopInstanceCreate(d *schema.ResourceData, me } func resourceTencentCloudLighthouseStopInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_stop_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_stop_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudLighthouseStopInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_lighthouse_stop_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_lighthouse_stop_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_lighthouse_stop_instance_test.go b/tencentcloud/services/lighthouse/resource_tc_lighthouse_stop_instance_test.go similarity index 65% rename from tencentcloud/resource_tc_lighthouse_stop_instance_test.go rename to tencentcloud/services/lighthouse/resource_tc_lighthouse_stop_instance_test.go index 8440c7d9eb..4a0247d15c 100644 --- a/tencentcloud/resource_tc_lighthouse_stop_instance_test.go +++ b/tencentcloud/services/lighthouse/resource_tc_lighthouse_stop_instance_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package lighthouse_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudLighthouseStopInstanceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccLighthouseStopInstance, @@ -23,7 +25,7 @@ func TestAccTencentCloudLighthouseStopInstanceResource_basic(t *testing.T) { }) } -const testAccLighthouseStopInstance = DefaultLighthoustVariables + ` +const testAccLighthouseStopInstance = tcacctest.DefaultLighthoustVariables + ` resource "tencentcloud_lighthouse_stop_instance" "stop_instance" { instance_id = var.lighthouse_id } diff --git a/tencentcloud/service_tencentcloud_lighthouse.go b/tencentcloud/services/lighthouse/service_tencentcloud_lighthouse.go similarity index 95% rename from tencentcloud/service_tencentcloud_lighthouse.go rename to tencentcloud/services/lighthouse/service_tencentcloud_lighthouse.go index 837c2dba41..340be3c5d5 100644 --- a/tencentcloud/service_tencentcloud_lighthouse.go +++ b/tencentcloud/services/lighthouse/service_tencentcloud_lighthouse.go @@ -1,17 +1,24 @@ -package tencentcloud +package lighthouse import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewLightHouseService(client *connectivity.TencentCloudClient) LightHouseService { + return LightHouseService{client: client} +} + type LightHouseService struct { client *connectivity.TencentCloudClient } @@ -20,7 +27,7 @@ type LightHouseService struct { func (me *LightHouseService) DescribeLighthouseInstanceById(ctx context.Context, instanceId string) (instance *lighthouse.Instance, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeInstancesRequest() ) @@ -71,7 +78,7 @@ func (me *LightHouseService) DescribeLighthouseInstanceById(ctx context.Context, } func (me *LightHouseService) DeleteLighthouseInstanceById(ctx context.Context, id string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewTerminateInstancesRequest() request.InstanceIds = append(request.InstanceIds, &id) @@ -96,7 +103,7 @@ func (me *LightHouseService) DeleteLighthouseInstanceById(ctx context.Context, i } func (me *LightHouseService) IsolateLighthouseInstanceById(ctx context.Context, id string, isolateDataDisk bool) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewIsolateInstancesRequest() request.InstanceIds = append(request.InstanceIds, &id) @@ -123,7 +130,7 @@ func (me *LightHouseService) IsolateLighthouseInstanceById(ctx context.Context, func (me *LightHouseService) LighthouseBlueprintStateRefreshFunc(blueprintId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseBlueprintById(ctx, blueprintId) @@ -136,7 +143,7 @@ func (me *LightHouseService) LighthouseBlueprintStateRefreshFunc(blueprintId str } func (me *LightHouseService) DeleteLighthouseBlueprintById(ctx context.Context, blueprintId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDeleteBlueprintsRequest() request.BlueprintIds = []*string{&blueprintId} @@ -160,7 +167,7 @@ func (me *LightHouseService) DeleteLighthouseBlueprintById(ctx context.Context, } func (me *LightHouseService) DescribeLighthouseBlueprintById(ctx context.Context, blueprintId string) (blueprint *lighthouse.Blueprint, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeBlueprintsRequest() request.BlueprintIds = []*string{&blueprintId} @@ -189,7 +196,7 @@ func (me *LightHouseService) DescribeLighthouseBlueprintById(ctx context.Context } func (me *LightHouseService) DescribeLighthouseFirewallRuleById(ctx context.Context, instance_id string) (firewallRules []*lighthouse.FirewallRuleInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeFirewallRulesRequest() @@ -227,7 +234,7 @@ func (me *LightHouseService) DescribeLighthouseFirewallRuleById(ctx context.Cont func (me *LightHouseService) DescribeLighthouseFirewallRulesTemplateByFilter(ctx context.Context) (firewallRulesTemplate []*lighthouse.FirewallRuleInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeFirewallRulesTemplateRequest() ) @@ -253,7 +260,7 @@ func (me *LightHouseService) DescribeLighthouseFirewallRulesTemplateByFilter(ctx } func (me *LightHouseService) DescribeLighthouseDiskBackupById(ctx context.Context, diskBackupId string) (diskBackup *lighthouse.DiskBackup, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeDiskBackupsRequest() request.DiskBackupIds = []*string{&diskBackupId} @@ -282,7 +289,7 @@ func (me *LightHouseService) DescribeLighthouseDiskBackupById(ctx context.Contex } func (me *LightHouseService) DeleteLighthouseDiskBackupById(ctx context.Context, diskBackupId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDeleteDiskBackupsRequest() request.DiskBackupIds = []*string{&diskBackupId} @@ -307,7 +314,7 @@ func (me *LightHouseService) DeleteLighthouseDiskBackupById(ctx context.Context, func (me *LightHouseService) LighthouseDiskBackupStateRefreshFunc(diskBackupId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseDiskBackupById(ctx, diskBackupId) @@ -321,7 +328,7 @@ func (me *LightHouseService) LighthouseDiskBackupStateRefreshFunc(diskBackupId s func (me *LightHouseService) LighthouseApplyDiskBackupStateRefreshFunc(diskBackupId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseDiskBackupById(ctx, diskBackupId) @@ -334,7 +341,7 @@ func (me *LightHouseService) LighthouseApplyDiskBackupStateRefreshFunc(diskBacku } func (me *LightHouseService) DescribeLighthouseDiskById(ctx context.Context, diskId string) (diskAttachment *lighthouse.Disk, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeDisksRequest() request.DiskIds = []*string{&diskId} @@ -363,7 +370,7 @@ func (me *LightHouseService) DescribeLighthouseDiskById(ctx context.Context, dis } func (me *LightHouseService) DescribeLighthouseDisk(ctx context.Context, diskIds []string, filters []*lighthouse.Filter) (disks []*lighthouse.Disk, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeDisksRequest() if len(diskIds) > 0 { @@ -403,7 +410,7 @@ func (me *LightHouseService) DescribeLighthouseDisk(ctx context.Context, diskIds func (me *LightHouseService) LighthouseDiskStateRefreshFunc(diskId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseDiskById(ctx, diskId) @@ -417,7 +424,7 @@ func (me *LightHouseService) LighthouseDiskStateRefreshFunc(diskId string, failS func (me *LightHouseService) LighthouseDiskLatestOperationRefreshFunc(diskId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseDiskById(ctx, diskId) @@ -430,7 +437,7 @@ func (me *LightHouseService) LighthouseDiskLatestOperationRefreshFunc(diskId str func (me *LightHouseService) LighthouseDiskIsolateRefreshFunc(diskId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseDiskById(ctx, diskId) @@ -447,7 +454,7 @@ func (me *LightHouseService) LighthouseDiskIsolateRefreshFunc(diskId string, fai func (me *LightHouseService) LighthouseDiskTerminateRefreshFunc(diskId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseDiskById(ctx, diskId) @@ -462,7 +469,7 @@ func (me *LightHouseService) LighthouseDiskTerminateRefreshFunc(diskId string, f } func (me *LightHouseService) DeleteLighthouseDiskAttachmentById(ctx context.Context, diskId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDetachDisksRequest() request.DiskIds = []*string{&diskId} @@ -486,7 +493,7 @@ func (me *LightHouseService) DeleteLighthouseDiskAttachmentById(ctx context.Cont } func (me *LightHouseService) DescribeLighthouseKeyPairById(ctx context.Context, keyId string) (keyPair *lighthouse.KeyPair, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeKeyPairsRequest() request.KeyIds = []*string{&keyId} @@ -515,7 +522,7 @@ func (me *LightHouseService) DescribeLighthouseKeyPairById(ctx context.Context, } func (me *LightHouseService) DeleteLighthouseKeyPairById(ctx context.Context, keyId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDeleteKeyPairsRequest() request.KeyIds = []*string{&keyId} @@ -539,7 +546,7 @@ func (me *LightHouseService) DeleteLighthouseKeyPairById(ctx context.Context, ke } func (me *LightHouseService) DescribeLighthouseSnapshotById(ctx context.Context, snapshotId string) (snapshot *lighthouse.Snapshot, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeSnapshotsRequest() request.SnapshotIds = []*string{&snapshotId} @@ -568,7 +575,7 @@ func (me *LightHouseService) DescribeLighthouseSnapshotById(ctx context.Context, } func (me *LightHouseService) DeleteLighthouseSnapshotById(ctx context.Context, snapshotId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDeleteSnapshotsRequest() request.SnapshotIds = []*string{&snapshotId} @@ -593,7 +600,7 @@ func (me *LightHouseService) DeleteLighthouseSnapshotById(ctx context.Context, s func (me *LightHouseService) LighthouseSnapshotStateRefreshFunc(snapshotId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseSnapshotById(ctx, snapshotId) @@ -607,7 +614,7 @@ func (me *LightHouseService) LighthouseSnapshotStateRefreshFunc(snapshotId strin func (me *LightHouseService) LighthouseApplySnapshotStateRefreshFunc(snapshotId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseSnapshotById(ctx, snapshotId) @@ -621,7 +628,7 @@ func (me *LightHouseService) LighthouseApplySnapshotStateRefreshFunc(snapshotId func (me *LightHouseService) DescribeLighthouseBundleByFilter(ctx context.Context, param map[string]interface{}) (bundle []*lighthouse.Bundle, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeBundlesRequest() ) @@ -674,7 +681,7 @@ func (me *LightHouseService) DescribeLighthouseBundleByFilter(ctx context.Contex func (me *LightHouseService) DescribeLighthouseZoneByFilter(ctx context.Context, param map[string]interface{}) (zone []*lighthouse.ZoneInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeZonesRequest() ) @@ -713,7 +720,7 @@ func (me *LightHouseService) DescribeLighthouseZoneByFilter(ctx context.Context, func (me *LightHouseService) DescribeLighthouseSceneByFilter(ctx context.Context, param map[string]interface{}) (scene []*lighthouse.Scene, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeScenesRequest() ) @@ -767,7 +774,7 @@ func (me *LightHouseService) DescribeLighthouseSceneByFilter(ctx context.Context func (me *LightHouseService) DescribeLighthouseAllSceneByFilter(ctx context.Context, param map[string]interface{}) (scene []*lighthouse.SceneInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeAllScenesRequest() ) @@ -821,7 +828,7 @@ func (me *LightHouseService) DescribeLighthouseAllSceneByFilter(ctx context.Cont func (me *LightHouseService) DescribeLighthouseResetInstanceBlueprintByFilter(ctx context.Context, param map[string]interface{}) (resetInstanceBlueprint []*lighthouse.ResetInstanceBlueprint, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeResetInstanceBlueprintsRequest() ) @@ -872,7 +879,7 @@ func (me *LightHouseService) DescribeLighthouseResetInstanceBlueprintByFilter(ct func (me *LightHouseService) DescribeLighthouseRegionByFilter(ctx context.Context, param map[string]interface{}) (region []*lighthouse.RegionInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeRegionsRequest() ) @@ -901,7 +908,7 @@ func (me *LightHouseService) DescribeLighthouseRegionByFilter(ctx context.Contex func (me *LightHouseService) DescribeLighthouseInstanceVncUrlByFilter(ctx context.Context, instanceId string) (instanceVncUrl string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeInstanceVncUrlRequest() ) @@ -932,7 +939,7 @@ func (me *LightHouseService) DescribeLighthouseInstanceVncUrlByFilter(ctx contex func (me *LightHouseService) DescribeLighthouseInstanceTrafficPackageByFilter(ctx context.Context, param map[string]interface{}) (instanceTrafficPackage []*lighthouse.InstanceTrafficPackage, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeInstancesTrafficPackagesRequest() ) @@ -990,7 +997,7 @@ func (me *LightHouseService) DescribeLighthouseInstanceTrafficPackageByFilter(ct func (me *LightHouseService) DescribeLighthouseInstanceDiskNum(ctx context.Context, instanceIds []string) (instanceDiskNum []*lighthouse.AttachDetail, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeInstancesDiskNumRequest() ) @@ -1022,7 +1029,7 @@ func (me *LightHouseService) DescribeLighthouseInstanceDiskNum(ctx context.Conte func (me *LightHouseService) DescribeLighthouseInstanceBlueprintByFilter(ctx context.Context, instanceIds []string) (instanceBlueprint []*lighthouse.BlueprintInstance, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeBlueprintInstancesRequest() ) @@ -1054,7 +1061,7 @@ func (me *LightHouseService) DescribeLighthouseInstanceBlueprintByFilter(ctx con func (me *LightHouseService) DescribeLighthouseDiskConfigByFilter(ctx context.Context, param map[string]interface{}) (diskConfig []*lighthouse.DiskConfig, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeDiskConfigsRequest() ) @@ -1090,7 +1097,7 @@ func (me *LightHouseService) DescribeLighthouseDiskConfigByFilter(ctx context.Co func (me *LightHouseService) LighthouseInstanceStateRefreshFunc(instanceId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, err := me.DescribeLighthouseInstanceById(ctx, instanceId) @@ -1103,7 +1110,7 @@ func (me *LightHouseService) LighthouseInstanceStateRefreshFunc(instanceId strin } func (me *LightHouseService) DescribeLighthouseKeyPairAttachmentById(ctx context.Context, keyId string) (keyPairAttachment *lighthouse.KeyPair, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeKeyPairsRequest() request.KeyIds = []*string{&keyId} @@ -1132,7 +1139,7 @@ func (me *LightHouseService) DescribeLighthouseKeyPairAttachmentById(ctx context } func (me *LightHouseService) DeleteLighthouseKeyPairAttachmentById(ctx context.Context, keyId string, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDisassociateInstancesKeyPairsRequest() request.KeyIds = []*string{&keyId} @@ -1157,7 +1164,7 @@ func (me *LightHouseService) DeleteLighthouseKeyPairAttachmentById(ctx context.C } func (me *LightHouseService) IsolateLighthouseDiskById(ctx context.Context, diskId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewIsolateDisksRequest() request.DiskIds = []*string{&diskId} @@ -1181,7 +1188,7 @@ func (me *LightHouseService) IsolateLighthouseDiskById(ctx context.Context, disk } func (me *LightHouseService) TerminateLighthouseDiskById(ctx context.Context, diskId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewTerminateDisksRequest() request.DiskIds = []*string{&diskId} @@ -1206,7 +1213,7 @@ func (me *LightHouseService) TerminateLighthouseDiskById(ctx context.Context, di func (me *LightHouseService) DescribeLighthouseModifyInstanceBundleByFilter(ctx context.Context, param map[string]interface{}) (modifyInstanceBundle []*lighthouse.ModifyBundle, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = lighthouse.NewDescribeModifyInstanceBundlesRequest() ) @@ -1256,7 +1263,7 @@ func (me *LightHouseService) DescribeLighthouseModifyInstanceBundleByFilter(ctx } func (me *LightHouseService) ModifyFirewallRuleDescription(ctx context.Context, instanceId string, firewallRule lighthouse.FirewallRule) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewModifyFirewallRuleDescriptionRequest() request.InstanceId = &instanceId @@ -1281,7 +1288,7 @@ func (me *LightHouseService) ModifyFirewallRuleDescription(ctx context.Context, } func (me *LightHouseService) DescribeFirewallTemplateById(ctx context.Context, templateId string) (firewallTemplate *lighthouse.FirewallTemplate, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeFirewallTemplatesRequest() request.TemplateIds = []*string{&templateId} @@ -1310,7 +1317,7 @@ func (me *LightHouseService) DescribeFirewallTemplateById(ctx context.Context, t } func (me *LightHouseService) DeleteFirewallTemplateById(ctx context.Context, templateId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDeleteFirewallTemplateRequest() request.TemplateId = &templateId @@ -1334,7 +1341,7 @@ func (me *LightHouseService) DeleteFirewallTemplateById(ctx context.Context, tem } func (me *LightHouseService) DescribeFirewallTemplateRulesById(ctx context.Context, templateId string) (firewallTemplateRules []*lighthouse.FirewallTemplateRuleInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := lighthouse.NewDescribeFirewallTemplateRulesRequest() request.TemplateId = &templateId diff --git a/tencentcloud/data_source_tc_mariadb_accounts.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_accounts.go similarity index 87% rename from tencentcloud/data_source_tc_mariadb_accounts.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_accounts.go index dce12b858f..074a7ba2c8 100644 --- a/tencentcloud/data_source_tc_mariadb_accounts.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_accounts.go @@ -1,16 +1,19 @@ -package tencentcloud +package mariadb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbAccounts() *schema.Resource { +func DataSourceTencentCloudMariadbAccounts() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbAccountsRead, Schema: map[string]*schema.Schema{ @@ -80,11 +83,11 @@ func dataSourceTencentCloudMariadbAccounts() *schema.Resource { } func dataSourceTencentCloudMariadbAccountsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_accounts.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_accounts.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string paramMap := make(map[string]interface{}) @@ -93,13 +96,13 @@ func dataSourceTencentCloudMariadbAccountsRead(d *schema.ResourceData, meta inte paramMap["instance_id"] = helper.String(v.(string)) } - mariadbService := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + mariadbService := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var users []*mariadb.DBAccount - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := mariadbService.DescribeMariadbAccountsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } users = results return nil @@ -150,7 +153,7 @@ func dataSourceTencentCloudMariadbAccountsRead(d *schema.ResourceData, meta inte output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), userList); e != nil { + if e := tccommon.WriteToFile(output.(string), userList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_accounts_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_accounts_test.go similarity index 67% rename from tencentcloud/data_source_tc_mariadb_accounts_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_accounts_test.go index f79fc17ee8..4fde914075 100644 --- a/tencentcloud/data_source_tc_mariadb_accounts_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_accounts_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudMariadbAccountsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceMariadbAccounts, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_accounts.accounts"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_accounts.accounts"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_database_objects.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_database_objects.go similarity index 85% rename from tencentcloud/data_source_tc_mariadb_database_objects.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_database_objects.go index acc18ae219..0d708be91e 100644 --- a/tencentcloud/data_source_tc_mariadb_database_objects.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_database_objects.go @@ -1,14 +1,16 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" ) -func dataSourceTencentCloudMariadbDatabaseObjects() *schema.Resource { +func DataSourceTencentCloudMariadbDatabaseObjects() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbDatabaseObjectsRead, Schema: map[string]*schema.Schema{ @@ -94,13 +96,13 @@ func dataSourceTencentCloudMariadbDatabaseObjects() *schema.Resource { } func dataSourceTencentCloudMariadbDatabaseObjectsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_database_objects.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_database_objects.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := "" dbName := "" @@ -113,10 +115,10 @@ func dataSourceTencentCloudMariadbDatabaseObjectsRead(d *schema.ResourceData, me } var databaseObjects *mariadb.DescribeDatabaseObjectsResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbDatabaseObjectsByFilter(ctx, instanceId, dbName) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } databaseObjects = result return nil @@ -187,10 +189,10 @@ func dataSourceTencentCloudMariadbDatabaseObjectsRead(d *schema.ResourceData, me _ = d.Set("funcs", tmpList) } - d.SetId(instanceId + FILED_SP + dbName) + d.SetId(instanceId + tccommon.FILED_SP + dbName) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_database_objects_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_database_objects_test.go similarity index 82% rename from tencentcloud/data_source_tc_mariadb_database_objects_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_database_objects_test.go index 83ff0c7b98..33028d0fb6 100644 --- a/tencentcloud/data_source_tc_mariadb_database_objects_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_database_objects_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbDatabaseObjectsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbDatabaseObjectsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_database_objects.database_objects"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_database_objects.database_objects"), resource.TestCheckResourceAttrSet("data.tencentcloud_mariadb_database_objects.database_objects", "tables.#"), // resource.TestCheckResourceAttrSet("data.tencentcloud_mariadb_database_objects.database_objects", "procs.#"), // resource.TestCheckResourceAttrSet("data.tencentcloud_mariadb_database_objects.database_objects", "views.#"), diff --git a/tencentcloud/data_source_tc_mariadb_database_table.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_database_table.go similarity index 77% rename from tencentcloud/data_source_tc_mariadb_database_table.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_database_table.go index c0352e9577..d8cfb2efa7 100644 --- a/tencentcloud/data_source_tc_mariadb_database_table.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_database_table.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbDatabaseTable() *schema.Resource { +func DataSourceTencentCloudMariadbDatabaseTable() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbDatabaseTableRead, Schema: map[string]*schema.Schema{ @@ -61,12 +64,12 @@ func dataSourceTencentCloudMariadbDatabaseTable() *schema.Resource { } func dataSourceTencentCloudMariadbDatabaseTableRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_database_table.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_database_table.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId string dbName string table string @@ -88,12 +91,12 @@ func dataSourceTencentCloudMariadbDatabaseTableRead(d *schema.ResourceData, meta paramMap["Table"] = helper.String(v.(string)) } - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var cols []*mariadb.TableColumn - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbDatabaseTableByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } cols = result return nil @@ -121,10 +124,10 @@ func dataSourceTencentCloudMariadbDatabaseTableRead(d *schema.ResourceData, meta _ = d.Set("cols", tmpList) } - d.SetId(instanceId + FILED_SP + dbName + FILED_SP + table) + d.SetId(instanceId + tccommon.FILED_SP + dbName + tccommon.FILED_SP + table) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_database_table_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_database_table_test.go similarity index 81% rename from tencentcloud/data_source_tc_mariadb_database_table_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_database_table_test.go index 2a1c0c4dc8..1868cbc668 100644 --- a/tencentcloud/data_source_tc_mariadb_database_table_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_database_table_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbDatabaseTableDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbDatabaseTableDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_database_table.database_table"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_database_table.database_table"), resource.TestCheckResourceAttrSet("data.tencentcloud_mariadb_database_table.database_table", "cols.#"), ), }, diff --git a/tencentcloud/data_source_tc_mariadb_databases.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_databases.go similarity index 72% rename from tencentcloud/data_source_tc_mariadb_databases.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_databases.go index e9c300a3c8..07ecf9d0df 100644 --- a/tencentcloud/data_source_tc_mariadb_databases.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_databases.go @@ -1,14 +1,16 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" ) -func dataSourceTencentCloudMariadbDatabases() *schema.Resource { +func DataSourceTencentCloudMariadbDatabases() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbDatabasesRead, Schema: map[string]*schema.Schema{ @@ -43,26 +45,26 @@ func dataSourceTencentCloudMariadbDatabases() *schema.Resource { } func dataSourceTencentCloudMariadbDatabasesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_databases.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_databases.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := "" if v, ok := d.GetOk("instance_id"); ok { instanceId = v.(string) } - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var databases []*mariadb.Database - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbDatabasesByFilter(ctx, instanceId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } databases = result return nil @@ -89,7 +91,7 @@ func dataSourceTencentCloudMariadbDatabasesRead(d *schema.ResourceData, meta int d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_databases_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_databases_test.go similarity index 73% rename from tencentcloud/data_source_tc_mariadb_databases_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_databases_test.go index 0991b2bf55..fec1d46504 100644 --- a/tencentcloud/data_source_tc_mariadb_databases_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_databases_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbDatabasesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbDatabasesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_databases.databases"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_databases.databases"), resource.TestCheckResourceAttrSet("data.tencentcloud_mariadb_databases.databases", "databases.#"), ), }, diff --git a/tencentcloud/data_source_tc_mariadb_db_instances.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_db_instances.go similarity index 90% rename from tencentcloud/data_source_tc_mariadb_db_instances.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_db_instances.go index 927a3a8c07..6697031159 100644 --- a/tencentcloud/data_source_tc_mariadb_db_instances.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_db_instances.go @@ -1,17 +1,20 @@ -package tencentcloud +package mariadb import ( "context" "log" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbDbInstances() *schema.Resource { +func DataSourceTencentCloudMariadbDbInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbDbInstancesRead, Schema: map[string]*schema.Schema{ @@ -140,11 +143,11 @@ func dataSourceTencentCloudMariadbDbInstances() *schema.Resource { } func dataSourceTencentCloudMariadbDbInstancesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_db_instances.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_db_instances.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) ids := make([]string, 0) paramMap := make(map[string]interface{}) @@ -180,11 +183,11 @@ func dataSourceTencentCloudMariadbDbInstancesRead(d *schema.ResourceData, meta i } var instances []*mariadb.DBInstance - mariadbService := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + mariadbService := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := mariadbService.DescribeMariadbDbInstancesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } instances = results return nil @@ -258,7 +261,7 @@ func dataSourceTencentCloudMariadbDbInstancesRead(d *schema.ResourceData, meta i output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), instanceList); e != nil { + if e := tccommon.WriteToFile(output.(string), instanceList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_db_instances_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_db_instances_test.go similarity index 64% rename from tencentcloud/data_source_tc_mariadb_db_instances_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_db_instances_test.go index 807ca6f835..d6faae65b2 100644 --- a/tencentcloud/data_source_tc_mariadb_db_instances_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_db_instances_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudMariadbDbInstancesDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceMariadbDbInstances, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_db_instances.db_instances"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_db_instances.db_instances"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_dcn_detail.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_dcn_detail.go similarity index 93% rename from tencentcloud/data_source_tc_mariadb_dcn_detail.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_dcn_detail.go index 5a4147ab69..78187997cc 100644 --- a/tencentcloud/data_source_tc_mariadb_dcn_detail.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_dcn_detail.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbDcnDetail() *schema.Resource { +func DataSourceTencentCloudMariadbDcnDetail() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbDcnDetailRead, Schema: map[string]*schema.Schema{ @@ -180,13 +183,13 @@ func dataSourceTencentCloudMariadbDcnDetail() *schema.Resource { } func dataSourceTencentCloudMariadbDcnDetailRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_dcn_detail.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_dcn_detail.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} dcnDetails []*mariadb.DcnDetailItem ) @@ -195,10 +198,10 @@ func dataSourceTencentCloudMariadbDcnDetailRead(d *schema.ResourceData, meta int paramMap["InstanceId"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbDcnDetailByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } dcnDetails = result @@ -338,7 +341,7 @@ func dataSourceTencentCloudMariadbDcnDetailRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_dcn_detail_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_dcn_detail_test.go similarity index 68% rename from tencentcloud/data_source_tc_mariadb_dcn_detail_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_dcn_detail_test.go index 76a4b8cf6b..2b6b49cc3c 100644 --- a/tencentcloud/data_source_tc_mariadb_dcn_detail_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_dcn_detail_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbDcnDetailDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbDcnDetailDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_dcn_detail.dcn_detail"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_dcn_detail.dcn_detail"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_file_download_url.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_file_download_url.go similarity index 72% rename from tencentcloud/data_source_tc_mariadb_file_download_url.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_file_download_url.go index 9e815383a8..5e0df263f7 100644 --- a/tencentcloud/data_source_tc_mariadb_file_download_url.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_file_download_url.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbFileDownloadUrl() *schema.Resource { +func DataSourceTencentCloudMariadbFileDownloadUrl() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbFileDownloadUrlRead, Schema: map[string]*schema.Schema{ @@ -38,13 +41,13 @@ func dataSourceTencentCloudMariadbFileDownloadUrl() *schema.Resource { } func dataSourceTencentCloudMariadbFileDownloadUrlRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_file_download_url.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_file_download_url.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} responseParams *mariadb.DescribeFileDownloadUrlResponseParams instanceId string ) @@ -59,10 +62,10 @@ func dataSourceTencentCloudMariadbFileDownloadUrlRead(d *schema.ResourceData, me paramMap["FilePath"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbFileDownloadUrlByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } responseParams = result @@ -81,7 +84,7 @@ func dataSourceTencentCloudMariadbFileDownloadUrlRead(d *schema.ResourceData, me output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_file_download_url_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_file_download_url_test.go similarity index 70% rename from tencentcloud/data_source_tc_mariadb_file_download_url_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_file_download_url_test.go index fcce751fab..11bebfc490 100644 --- a/tencentcloud/data_source_tc_mariadb_file_download_url_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_file_download_url_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixMariadbFileDownloadUrlDataSource_basic(t *testing t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbFileDownloadUrlDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_file_download_url.file_download_url"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_file_download_url.file_download_url"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_flow.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_flow.go similarity index 70% rename from tencentcloud/data_source_tc_mariadb_flow.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_flow.go index 75e3a167b0..e026be7d1d 100644 --- a/tencentcloud/data_source_tc_mariadb_flow.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_flow.go @@ -1,16 +1,19 @@ -package tencentcloud +package mariadb import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbFlow() *schema.Resource { +func DataSourceTencentCloudMariadbFlow() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbFlowRead, Schema: map[string]*schema.Schema{ @@ -34,13 +37,13 @@ func dataSourceTencentCloudMariadbFlow() *schema.Resource { } func dataSourceTencentCloudMariadbFlowRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_flow.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_flow.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} status *mariadb.DescribeFlowResponseParams flowId int ) @@ -51,10 +54,10 @@ func dataSourceTencentCloudMariadbFlowRead(d *schema.ResourceData, meta interfac flowId = v.(int) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbFlowByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } status = result @@ -73,7 +76,7 @@ func dataSourceTencentCloudMariadbFlowRead(d *schema.ResourceData, meta interfac output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_flow_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_flow_test.go similarity index 63% rename from tencentcloud/data_source_tc_mariadb_flow_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_flow_test.go index fafb2a6b48..97e009ec7f 100644 --- a/tencentcloud/data_source_tc_mariadb_flow_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_flow_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudNeedFixMariadbFlowDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbFlowDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_flow.flow")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_flow.flow")), }, }, }) diff --git a/tencentcloud/data_source_tc_mariadb_instance_node_info.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_node_info.go similarity index 75% rename from tencentcloud/data_source_tc_mariadb_instance_node_info.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_instance_node_info.go index 6176308261..15b6121788 100644 --- a/tencentcloud/data_source_tc_mariadb_instance_node_info.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_node_info.go @@ -1,15 +1,4 @@ -/* -Use this data source to query detailed information of mariadb instance_node_info - -Example Usage - -```hcl -data "tencentcloud_mariadb_instance_node_info" "instance_node_info" { - instance_id = "tdsql-9vqvls95" -} -``` -*/ -package tencentcloud +package mariadb import ( "context" @@ -17,10 +6,12 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbInstanceNodeInfo() *schema.Resource { +func DataSourceTencentCloudMariadbInstanceNodeInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbInstanceNodeInfoRead, Schema: map[string]*schema.Schema{ @@ -58,13 +49,13 @@ func dataSourceTencentCloudMariadbInstanceNodeInfo() *schema.Resource { } func dataSourceTencentCloudMariadbInstanceNodeInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_instance_node_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_instance_node_info.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} nodesInfo []*mariadb.NodeInfo instanceId string ) @@ -75,10 +66,10 @@ func dataSourceTencentCloudMariadbInstanceNodeInfoRead(d *schema.ResourceData, m instanceId = v.(string) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbInstanceNodeInfoByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } nodesInfo = result @@ -112,7 +103,7 @@ func dataSourceTencentCloudMariadbInstanceNodeInfoRead(d *schema.ResourceData, m d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_node_info.md b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_node_info.md new file mode 100644 index 0000000000..03235999b0 --- /dev/null +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_node_info.md @@ -0,0 +1,9 @@ +Use this data source to query detailed information of mariadb instance_node_info + +Example Usage + +```hcl +data "tencentcloud_mariadb_instance_node_info" "instance_node_info" { + instance_id = "tdsql-9vqvls95" +} +``` diff --git a/tencentcloud/data_source_tc_mariadb_instance_node_info_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_node_info_test.go similarity index 68% rename from tencentcloud/data_source_tc_mariadb_instance_node_info_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_instance_node_info_test.go index 819a4e7e14..a8731b3be5 100644 --- a/tencentcloud/data_source_tc_mariadb_instance_node_info_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_node_info_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package mariadb_test import ( "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" ) // go test -i; go test -test.run TestAccTencentCloudMariadbInstanceNodeInfoDataSource_basic -v @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbInstanceNodeInfoDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbInstanceNodeInfoDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_instance_node_info.instance_node_info"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_instance_node_info.instance_node_info"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_instance_specs.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_specs.go similarity index 86% rename from tencentcloud/data_source_tc_mariadb_instance_specs.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_instance_specs.go index 3506e72733..95de3fc2e3 100644 --- a/tencentcloud/data_source_tc_mariadb_instance_specs.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_specs.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbInstanceSpecs() *schema.Resource { +func DataSourceTencentCloudMariadbInstanceSpecs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbInstanceSpecsRead, Schema: map[string]*schema.Schema{ @@ -91,20 +94,20 @@ func dataSourceTencentCloudMariadbInstanceSpecs() *schema.Resource { } func dataSourceTencentCloudMariadbInstanceSpecsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_instance_specs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_instance_specs.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} specs []*mariadb.InstanceSpec ) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbInstanceSpecsByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } specs = result @@ -181,7 +184,7 @@ func dataSourceTencentCloudMariadbInstanceSpecsRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_instance_specs_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_specs_test.go similarity index 67% rename from tencentcloud/data_source_tc_mariadb_instance_specs_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_instance_specs_test.go index 20961abadd..ab57909ec2 100644 --- a/tencentcloud/data_source_tc_mariadb_instance_specs_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_instance_specs_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbInstanceSpecsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbInstanceSpecsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_instance_specs.instance_specs"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_instance_specs.instance_specs"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_log_files.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_log_files.go similarity index 84% rename from tencentcloud/data_source_tc_mariadb_log_files.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_log_files.go index 1249eaa92d..9c59f3f6ab 100644 --- a/tencentcloud/data_source_tc_mariadb_log_files.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_log_files.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbLogFiles() *schema.Resource { +func DataSourceTencentCloudMariadbLogFiles() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbLogFilesRead, Schema: map[string]*schema.Schema{ @@ -72,13 +75,13 @@ func dataSourceTencentCloudMariadbLogFiles() *schema.Resource { } func dataSourceTencentCloudMariadbLogFilesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_log_files.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_log_files.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} logFiles *mariadb.DescribeDBLogFilesResponseParams instanceId string ) @@ -93,10 +96,10 @@ func dataSourceTencentCloudMariadbLogFilesRead(d *schema.ResourceData, meta inte paramMap["Type"] = helper.IntUint64(v.(int)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbLogFilesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } logFiles = result @@ -145,7 +148,7 @@ func dataSourceTencentCloudMariadbLogFilesRead(d *schema.ResourceData, meta inte d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_log_files_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_log_files_test.go similarity index 68% rename from tencentcloud/data_source_tc_mariadb_log_files_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_log_files_test.go index dc311b1301..e6916cfd1a 100644 --- a/tencentcloud/data_source_tc_mariadb_log_files_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_log_files_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbLogFilesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbLogFilesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_log_files.log_files"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_log_files.log_files"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_orders.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_orders.go similarity index 82% rename from tencentcloud/data_source_tc_mariadb_orders.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_orders.go index 7abbf53e66..5cd5101959 100644 --- a/tencentcloud/data_source_tc_mariadb_orders.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_orders.go @@ -1,14 +1,16 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" ) -func dataSourceTencentCloudMariadbOrders() *schema.Resource { +func DataSourceTencentCloudMariadbOrders() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbOrdersRead, Schema: map[string]*schema.Schema{ @@ -69,13 +71,13 @@ func dataSourceTencentCloudMariadbOrders() *schema.Resource { } func dataSourceTencentCloudMariadbOrdersRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_orders.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_orders.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} deals []*mariadb.Deal dealName string ) @@ -84,10 +86,10 @@ func dataSourceTencentCloudMariadbOrdersRead(d *schema.ResourceData, meta interf dealName = v.(string) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbOrdersByFilter(ctx, dealName) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } deals = result @@ -137,7 +139,7 @@ func dataSourceTencentCloudMariadbOrdersRead(d *schema.ResourceData, meta interf d.SetId(dealName) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_orders_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_orders_test.go similarity index 68% rename from tencentcloud/data_source_tc_mariadb_orders_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_orders_test.go index 179e4ddb61..9a871cb958 100644 --- a/tencentcloud/data_source_tc_mariadb_orders_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_orders_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbOrdersDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbOrdersDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_orders.orders"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_orders.orders"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_price.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_price.go similarity index 85% rename from tencentcloud/data_source_tc_mariadb_price.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_price.go index e6ebadcc20..6b55486642 100644 --- a/tencentcloud/data_source_tc_mariadb_price.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_price.go @@ -1,16 +1,19 @@ -package tencentcloud +package mariadb import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbPrice() *schema.Resource { +func DataSourceTencentCloudMariadbPrice() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbPriceRead, Schema: map[string]*schema.Schema{ @@ -37,7 +40,7 @@ func dataSourceTencentCloudMariadbPrice() *schema.Resource { "buy_count": { Required: true, Type: schema.TypeInt, - ValidateFunc: validateIntegerMin(1), + ValidateFunc: tccommon.ValidateIntegerMin(1), Description: "The quantity you want to purchase is queried by default for the price of purchasing 1 instance.", }, "period": { @@ -75,13 +78,13 @@ func dataSourceTencentCloudMariadbPrice() *schema.Resource { } func dataSourceTencentCloudMariadbPriceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_price.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_price.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} price *mariadb.DescribePriceResponseParams ) @@ -118,10 +121,10 @@ func dataSourceTencentCloudMariadbPriceRead(d *schema.ResourceData, meta interfa paramMap["AmountUnit"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbPriceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } price = result @@ -146,7 +149,7 @@ func dataSourceTencentCloudMariadbPriceRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_price_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_price_test.go similarity index 71% rename from tencentcloud/data_source_tc_mariadb_price_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_price_test.go index bbbeb839f6..bb9614750d 100644 --- a/tencentcloud/data_source_tc_mariadb_price_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_price_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbPriceDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbPriceDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_price.price"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_price.price"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_project_security_groups.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_project_security_groups.go similarity index 90% rename from tencentcloud/data_source_tc_mariadb_project_security_groups.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_project_security_groups.go index 2c335cd28c..b769fdbb29 100644 --- a/tencentcloud/data_source_tc_mariadb_project_security_groups.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_project_security_groups.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbProjectSecurityGroups() *schema.Resource { +func DataSourceTencentCloudMariadbProjectSecurityGroups() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbProjectSecurityGroupsRead, Schema: map[string]*schema.Schema{ @@ -125,13 +128,13 @@ func dataSourceTencentCloudMariadbProjectSecurityGroups() *schema.Resource { } func dataSourceTencentCloudMariadbProjectSecurityGroupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_project_security_groups.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_project_security_groups.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} groups []*mariadb.SecurityGroup Product string ) @@ -146,10 +149,10 @@ func dataSourceTencentCloudMariadbProjectSecurityGroupsRead(d *schema.ResourceDa paramMap["ProjectId"] = helper.IntInt64(v.(int)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbProjectSecurityGroupsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } groups = result @@ -248,7 +251,7 @@ func dataSourceTencentCloudMariadbProjectSecurityGroupsRead(d *schema.ResourceDa d.SetId(Product) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_project_security_groups_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_project_security_groups_test.go similarity index 69% rename from tencentcloud/data_source_tc_mariadb_project_security_groups_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_project_security_groups_test.go index dbda9393b7..db04107e78 100644 --- a/tencentcloud/data_source_tc_mariadb_project_security_groups_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_project_security_groups_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbProjectSecurityGroupsDataSource_basic(t *testing. t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbProjectSecurityGroupsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_project_security_groups.project_security_groups"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_project_security_groups.project_security_groups"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_renewal_price.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_renewal_price.go similarity index 79% rename from tencentcloud/data_source_tc_mariadb_renewal_price.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_renewal_price.go index f6559c8aea..f58e31fb42 100644 --- a/tencentcloud/data_source_tc_mariadb_renewal_price.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_renewal_price.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbRenewalPrice() *schema.Resource { +func DataSourceTencentCloudMariadbRenewalPrice() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbRenewalPriceRead, Schema: map[string]*schema.Schema{ @@ -48,13 +51,13 @@ func dataSourceTencentCloudMariadbRenewalPrice() *schema.Resource { } func dataSourceTencentCloudMariadbRenewalPriceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_renewal_price.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_renewal_price.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} price *mariadb.DescribeRenewalPriceResponseParams instanceId string ) @@ -73,10 +76,10 @@ func dataSourceTencentCloudMariadbRenewalPriceRead(d *schema.ResourceData, meta paramMap["AmountUnit"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbRenewalPriceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } price = result @@ -98,7 +101,7 @@ func dataSourceTencentCloudMariadbRenewalPriceRead(d *schema.ResourceData, meta d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_renewal_price_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_renewal_price_test.go similarity index 69% rename from tencentcloud/data_source_tc_mariadb_renewal_price_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_renewal_price_test.go index 3005835aba..298a5e0a5c 100644 --- a/tencentcloud/data_source_tc_mariadb_renewal_price_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_renewal_price_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbRenewalPriceDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbRenewalPriceDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_renewal_price.renewal_price"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_renewal_price.renewal_price"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_sale_info.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_sale_info.go similarity index 91% rename from tencentcloud/data_source_tc_mariadb_sale_info.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_sale_info.go index 03a0e31aab..ae0069148e 100644 --- a/tencentcloud/data_source_tc_mariadb_sale_info.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_sale_info.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbSaleInfo() *schema.Resource { +func DataSourceTencentCloudMariadbSaleInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbSaleInfoRead, Schema: map[string]*schema.Schema{ @@ -143,20 +146,20 @@ func dataSourceTencentCloudMariadbSaleInfo() *schema.Resource { } func dataSourceTencentCloudMariadbSaleInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_sale_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_sale_info.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} regionList []*mariadb.RegionInfo ) - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbSaleInfoByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } regionList = result @@ -285,7 +288,7 @@ func dataSourceTencentCloudMariadbSaleInfoRead(d *schema.ResourceData, meta inte d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_sale_info_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_sale_info_test.go similarity index 67% rename from tencentcloud/data_source_tc_mariadb_sale_info_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_sale_info_test.go index 6a40f81238..cdf8b02170 100644 --- a/tencentcloud/data_source_tc_mariadb_sale_info_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_sale_info_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbSaleInfoDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbSaleInfoDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_sale_info.sale_info"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_sale_info.sale_info"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_security_groups.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_security_groups.go similarity index 89% rename from tencentcloud/data_source_tc_mariadb_security_groups.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_security_groups.go index 0a0baee64d..2eacd6a1b2 100644 --- a/tencentcloud/data_source_tc_mariadb_security_groups.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_security_groups.go @@ -1,16 +1,19 @@ -package tencentcloud +package mariadb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbSecurityGroups() *schema.Resource { +func DataSourceTencentCloudMariadbSecurityGroups() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbSecurityGroupsRead, Schema: map[string]*schema.Schema{ @@ -129,11 +132,11 @@ func dataSourceTencentCloudMariadbSecurityGroups() *schema.Resource { } func dataSourceTencentCloudMariadbSecurityGroupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_security_groups.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_security_groups.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var instanceId string var product string @@ -148,13 +151,13 @@ func dataSourceTencentCloudMariadbSecurityGroupsRead(d *schema.ResourceData, met paramMap["product"] = helper.String(v.(string)) } - mariadbService := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + mariadbService := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var groups []*mariadb.SecurityGroup - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := mariadbService.DescribeMariadbSecurityGroupsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } groups = results return nil @@ -235,11 +238,11 @@ func dataSourceTencentCloudMariadbSecurityGroupsRead(d *schema.ResourceData, met } } - d.SetId(instanceId + FILED_SP + product) + d.SetId(instanceId + tccommon.FILED_SP + product) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), groupList); e != nil { + if e := tccommon.WriteToFile(output.(string), groupList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_security_groups_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_security_groups_test.go similarity index 71% rename from tencentcloud/data_source_tc_mariadb_security_groups_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_security_groups_test.go index 8c8682658d..f3ac88a6be 100644 --- a/tencentcloud/data_source_tc_mariadb_security_groups_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_security_groups_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudMariadbSecurityGroupsDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceMariadbSecurityGroups, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_security_groups.security_groups"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_security_groups.security_groups"), resource.TestCheckResourceAttrSet("data.tencentcloud_mariadb_security_groups.security_groups", "list.#"), ), }, diff --git a/tencentcloud/data_source_tc_mariadb_slow_logs.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_slow_logs.go similarity index 92% rename from tencentcloud/data_source_tc_mariadb_slow_logs.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_slow_logs.go index 0d8d397c00..43022d8426 100644 --- a/tencentcloud/data_source_tc_mariadb_slow_logs.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_slow_logs.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbSlowLogs() *schema.Resource { +func DataSourceTencentCloudMariadbSlowLogs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbSlowLogsRead, Schema: map[string]*schema.Schema{ @@ -177,13 +180,13 @@ func dataSourceTencentCloudMariadbSlowLogs() *schema.Resource { } func dataSourceTencentCloudMariadbSlowLogsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_slow_logs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_slow_logs.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} data *mariadb.DescribeDBSlowLogsResponseParams instanceId string ) @@ -218,10 +221,10 @@ func dataSourceTencentCloudMariadbSlowLogsRead(d *schema.ResourceData, meta inte paramMap["Slave"] = helper.IntInt64(v.(int)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbSlowLogsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } data = result @@ -335,7 +338,7 @@ func dataSourceTencentCloudMariadbSlowLogsRead(d *schema.ResourceData, meta inte d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_slow_logs_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_slow_logs_test.go similarity index 72% rename from tencentcloud/data_source_tc_mariadb_slow_logs_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_slow_logs_test.go index 15c25c6251..cbd27c5392 100644 --- a/tencentcloud/data_source_tc_mariadb_slow_logs_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_slow_logs_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMariadbSlowLogsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbSlowLogsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_slow_logs.slow_logs"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_slow_logs.slow_logs"), ), }, }, diff --git a/tencentcloud/data_source_tc_mariadb_upgrade_price.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_upgrade_price.go similarity index 83% rename from tencentcloud/data_source_tc_mariadb_upgrade_price.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_upgrade_price.go index 799678ff7c..0348440d22 100644 --- a/tencentcloud/data_source_tc_mariadb_upgrade_price.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_upgrade_price.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMariadbUpgradePrice() *schema.Resource { +func DataSourceTencentCloudMariadbUpgradePrice() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMariadbUpgradePriceRead, Schema: map[string]*schema.Schema{ @@ -63,13 +66,13 @@ func dataSourceTencentCloudMariadbUpgradePrice() *schema.Resource { } func dataSourceTencentCloudMariadbUpgradePriceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mariadb_upgrade_price.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mariadb_upgrade_price.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} price *mariadb.DescribeUpgradePriceResponseParams instanceId string ) @@ -96,10 +99,10 @@ func dataSourceTencentCloudMariadbUpgradePriceRead(d *schema.ResourceData, meta paramMap["AmountUnit"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMariadbUpgradePriceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } price = result @@ -125,7 +128,7 @@ func dataSourceTencentCloudMariadbUpgradePriceRead(d *schema.ResourceData, meta d.SetId(instanceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mariadb_upgrade_price_test.go b/tencentcloud/services/mariadb/data_source_tc_mariadb_upgrade_price_test.go similarity index 70% rename from tencentcloud/data_source_tc_mariadb_upgrade_price_test.go rename to tencentcloud/services/mariadb/data_source_tc_mariadb_upgrade_price_test.go index 31321d3d6c..b5c6dd67fb 100644 --- a/tencentcloud/data_source_tc_mariadb_upgrade_price_test.go +++ b/tencentcloud/services/mariadb/data_source_tc_mariadb_upgrade_price_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixMariadbUpgradePriceDataSource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbUpgradePriceDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_upgrade_price.upgrade_price"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mariadb_upgrade_price.upgrade_price"), ), }, }, diff --git a/tencentcloud/extension_mariadb.go b/tencentcloud/services/mariadb/extension_mariadb.go similarity index 94% rename from tencentcloud/extension_mariadb.go rename to tencentcloud/services/mariadb/extension_mariadb.go index b3ebb805e7..79bc915891 100644 --- a/tencentcloud/extension_mariadb.go +++ b/tencentcloud/services/mariadb/extension_mariadb.go @@ -1,4 +1,4 @@ -package tencentcloud +package mariadb const ( MARIADB_TASK_SUCCESS = 0 diff --git a/tencentcloud/services/mariadb/extension_tags.go b/tencentcloud/services/mariadb/extension_tags.go new file mode 100644 index 0000000000..a329907830 --- /dev/null +++ b/tencentcloud/services/mariadb/extension_tags.go @@ -0,0 +1,3 @@ +package mariadb + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/resource_tc_mariadb_account.go b/tencentcloud/services/mariadb/resource_tc_mariadb_account.go similarity index 74% rename from tencentcloud/resource_tc_mariadb_account.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_account.go index 5a92870c20..3fa11febe5 100644 --- a/tencentcloud/resource_tc_mariadb_account.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_account.go @@ -1,4 +1,4 @@ -package tencentcloud +package mariadb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbAccount() *schema.Resource { +func ResourceTencentCloudMariadbAccount() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudMariadbAccountRead, Create: resourceTencentCloudMariadbAccountCreate, @@ -63,10 +66,10 @@ func resourceTencentCloudMariadbAccount() *schema.Resource { } func resourceTencentCloudMariadbAccountCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_account.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_account.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mariadb.NewCreateAccountRequest() @@ -102,10 +105,10 @@ func resourceTencentCloudMariadbAccountCreate(d *schema.ResourceData, meta inter request.Description = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().CreateAccount(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().CreateAccount(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -118,20 +121,20 @@ func resourceTencentCloudMariadbAccountCreate(d *schema.ResourceData, meta inter return err } - d.SetId(instanceId + FILED_SP + userName + FILED_SP + host) + d.SetId(instanceId + tccommon.FILED_SP + userName + tccommon.FILED_SP + host) return resourceTencentCloudMariadbAccountRead(d, meta) } func resourceTencentCloudMariadbAccountRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_account.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_account.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -170,14 +173,14 @@ func resourceTencentCloudMariadbAccountRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudMariadbAccountUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_account.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_account.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mariadb.NewModifyAccountDescriptionRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -210,10 +213,10 @@ func resourceTencentCloudMariadbAccountUpdate(d *schema.ResourceData, meta inter request.Description = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyAccountDescription(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyAccountDescription(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -244,10 +247,10 @@ func resourceTencentCloudMariadbAccountUpdate(d *schema.ResourceData, meta inter PwdRequest.InstanceId = &instanceId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ResetAccountPassword(PwdRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ResetAccountPassword(PwdRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -266,15 +269,15 @@ func resourceTencentCloudMariadbAccountUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudMariadbAccountDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_account.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_account.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_mariadb_account_privileges.go b/tencentcloud/services/mariadb/resource_tc_mariadb_account_privileges.go similarity index 90% rename from tencentcloud/resource_tc_mariadb_account_privileges.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_account_privileges.go index 33fa4ed5be..3609e1c6f5 100644 --- a/tencentcloud/resource_tc_mariadb_account_privileges.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_account_privileges.go @@ -1,4 +1,4 @@ -package tencentcloud +package mariadb import ( "context" @@ -6,14 +6,17 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbAccountPrivileges() *schema.Resource { +func ResourceTencentCloudMariadbAccountPrivileges() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbAccountPrivilegesCreate, Read: resourceTencentCloudMariadbAccountPrivilegesRead, @@ -211,8 +214,8 @@ func resourceTencentCloudMariadbAccountPrivileges() *schema.Resource { } func resourceTencentCloudMariadbAccountPrivilegesCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_account_privileges.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_account_privileges.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( instanceId string @@ -236,22 +239,22 @@ func resourceTencentCloudMariadbAccountPrivilegesCreate(d *schema.ResourceData, } } - d.SetId(strings.Join([]string{instanceId, User, Host}, FILED_SP)) + d.SetId(strings.Join([]string{instanceId, User, Host}, tccommon.FILED_SP)) return resourceTencentCloudMariadbAccountPrivilegesUpdate(d, meta) } func resourceTencentCloudMariadbAccountPrivilegesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_account_privileges.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_account_privileges.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -295,18 +298,18 @@ func resourceTencentCloudMariadbAccountPrivilegesRead(d *schema.ResourceData, me } func resourceTencentCloudMariadbAccountPrivilegesUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_account_privileges.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_account_privileges.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = mariadb.NewModifyAccountPrivilegesRequest() flowId int64 ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -447,10 +450,10 @@ func resourceTencentCloudMariadbAccountPrivilegesUpdate(d *schema.ResourceData, } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyAccountPrivileges(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyAccountPrivileges(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -464,10 +467,10 @@ func resourceTencentCloudMariadbAccountPrivilegesUpdate(d *schema.ResourceData, return err } - err = resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := service.DescribeFlowById(ctx, flowId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *result.Status == MARIADB_TASK_SUCCESS { @@ -491,8 +494,8 @@ func resourceTencentCloudMariadbAccountPrivilegesUpdate(d *schema.ResourceData, } func resourceTencentCloudMariadbAccountPrivilegesDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_account_privileges.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_account_privileges.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_account_privileges_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_account_privileges_test.go similarity index 85% rename from tencentcloud/resource_tc_mariadb_account_privileges_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_account_privileges_test.go index b23d6598c2..f7942830d7 100644 --- a/tencentcloud/resource_tc_mariadb_account_privileges_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_account_privileges_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudMariadbAccountPrivilegesResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbAccountPrivileges, diff --git a/tencentcloud/resource_tc_mariadb_account_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_account_test.go similarity index 79% rename from tencentcloud/resource_tc_mariadb_account_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_account_test.go index 54c0d51841..644ce83d19 100644 --- a/tencentcloud/resource_tc_mariadb_account_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_account_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package mariadb_test import ( "context" @@ -6,8 +6,13 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcmariadb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mariadb" ) // go test -i; go test -test.run TestAccTencentCloudMariadbAccount_basic -v @@ -15,8 +20,8 @@ func TestAccTencentCloudMariadbAccount_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckMariadbHourDbAccountDestroy, Steps: []resource.TestStep{ { @@ -50,9 +55,9 @@ func TestAccTencentCloudMariadbAccount_basic(t *testing.T) { } func testAccCheckMariadbHourDbAccountDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := MariadbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcmariadb.NewMariadbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_mariadb_account" { continue @@ -60,7 +65,7 @@ func testAccCheckMariadbHourDbAccountDestroy(s *terraform.State) error { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -82,8 +87,8 @@ func testAccCheckMariadbHourDbAccountDestroy(s *terraform.State) error { func testAccCheckMariadbHourDbAccountExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { @@ -92,7 +97,7 @@ func testAccCheckMariadbHourDbAccountExists(r string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("resource id is not set") } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -100,7 +105,7 @@ func testAccCheckMariadbHourDbAccountExists(r string) resource.TestCheckFunc { userName := idSplit[1] host := idSplit[2] - service := MariadbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcmariadb.NewMariadbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) account, err := service.DescribeMariadbAccount(ctx, instanceId, userName, host) if err != nil { return err diff --git a/tencentcloud/resource_tc_mariadb_backup_time.go b/tencentcloud/services/mariadb/resource_tc_mariadb_backup_time.go similarity index 73% rename from tencentcloud/resource_tc_mariadb_backup_time.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_backup_time.go index 0437935da9..de4ec10ec7 100644 --- a/tencentcloud/resource_tc_mariadb_backup_time.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_backup_time.go @@ -1,17 +1,20 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbBackupTime() *schema.Resource { +func ResourceTencentCloudMariadbBackupTime() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbBackupTimeCreate, Read: resourceTencentCloudMariadbBackupTimeRead, @@ -41,8 +44,8 @@ func resourceTencentCloudMariadbBackupTime() *schema.Resource { } func resourceTencentCloudMariadbBackupTimeCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_backup_time.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_backup_time.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string @@ -56,13 +59,13 @@ func resourceTencentCloudMariadbBackupTimeCreate(d *schema.ResourceData, meta in } func resourceTencentCloudMariadbBackupTimeRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_backup_time.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_backup_time.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId = d.Id() ) @@ -93,11 +96,11 @@ func resourceTencentCloudMariadbBackupTimeRead(d *schema.ResourceData, meta inte } func resourceTencentCloudMariadbBackupTimeUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_backup_time.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_backup_time.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = mariadb.NewModifyBackupTimeRequest() instanceId = d.Id() ) @@ -111,10 +114,10 @@ func resourceTencentCloudMariadbBackupTimeUpdate(d *schema.ResourceData, meta in request.EndBackupTime = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyBackupTime(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyBackupTime(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -135,8 +138,8 @@ func resourceTencentCloudMariadbBackupTimeUpdate(d *schema.ResourceData, meta in } func resourceTencentCloudMariadbBackupTimeDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_backup_time.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_backup_time.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_backup_time_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_backup_time_test.go similarity index 82% rename from tencentcloud/resource_tc_mariadb_backup_time_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_backup_time_test.go index ee4b8e84bc..4024da80d7 100644 --- a/tencentcloud/resource_tc_mariadb_backup_time_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_backup_time_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudMariadbBackupTimeResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbBackupTime, diff --git a/tencentcloud/resource_tc_mariadb_cancel_dcn_job.go b/tencentcloud/services/mariadb/resource_tc_mariadb_cancel_dcn_job.go similarity index 68% rename from tencentcloud/resource_tc_mariadb_cancel_dcn_job.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_cancel_dcn_job.go index 533628e7fb..67cf64f546 100644 --- a/tencentcloud/resource_tc_mariadb_cancel_dcn_job.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_cancel_dcn_job.go @@ -1,17 +1,20 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbCancelDcnJob() *schema.Resource { +func ResourceTencentCloudMariadbCancelDcnJob() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbCancelDcnJobCreate, Read: resourceTencentCloudMariadbCancelDcnJobRead, @@ -29,13 +32,13 @@ func resourceTencentCloudMariadbCancelDcnJob() *schema.Resource { } func resourceTencentCloudMariadbCancelDcnJobCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_cancel_dcn_job.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_cancel_dcn_job.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = mariadb.NewCancelDcnJobRequest() instanceId string flowId int64 @@ -45,10 +48,10 @@ func resourceTencentCloudMariadbCancelDcnJobCreate(d *schema.ResourceData, meta request.InstanceId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().CancelDcnJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().CancelDcnJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -62,10 +65,10 @@ func resourceTencentCloudMariadbCancelDcnJobCreate(d *schema.ResourceData, meta return err } - err = resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := service.DescribeFlowById(ctx, flowId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *result.Status == MARIADB_TASK_SUCCESS { @@ -91,15 +94,15 @@ func resourceTencentCloudMariadbCancelDcnJobCreate(d *schema.ResourceData, meta } func resourceTencentCloudMariadbCancelDcnJobRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_cancel_dcn_job.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_cancel_dcn_job.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMariadbCancelDcnJobDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_cancel_dcn_job.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_cancel_dcn_job.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_cancel_dcn_job_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_cancel_dcn_job_test.go similarity index 77% rename from tencentcloud/resource_tc_mariadb_cancel_dcn_job_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_cancel_dcn_job_test.go index e666c3e13d..2dc85ca306 100644 --- a/tencentcloud/resource_tc_mariadb_cancel_dcn_job_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_cancel_dcn_job_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixMariadbCancelDcnJobResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbCancelDcnJob, diff --git a/tencentcloud/resource_tc_mariadb_dedicatedcluster_db_instance.go b/tencentcloud/services/mariadb/resource_tc_mariadb_dedicatedcluster_db_instance.go similarity index 77% rename from tencentcloud/resource_tc_mariadb_dedicatedcluster_db_instance.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_dedicatedcluster_db_instance.go index 1e8fa1991a..816498ceb8 100644 --- a/tencentcloud/resource_tc_mariadb_dedicatedcluster_db_instance.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_dedicatedcluster_db_instance.go @@ -1,18 +1,21 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbDedicatedclusterDbInstance() *schema.Resource { +func ResourceTencentCloudMariadbDedicatedclusterDbInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbDedicatedclusterDbInstanceCreate, Read: resourceTencentCloudMariadbDedicatedclusterDbInstanceRead, @@ -95,12 +98,12 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstance() *schema.Resource { } func resourceTencentCloudMariadbDedicatedclusterDbInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_dedicatedcluster_db_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_dedicatedcluster_db_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request = mariadb.NewCreateDedicatedClusterDBInstanceRequest() response *mariadb.CreateDedicatedClusterDBInstanceResponse instanceId string @@ -142,10 +145,10 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceCreate(d *schema.Resou request.InstanceName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().CreateDedicatedClusterDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().CreateDedicatedClusterDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -162,7 +165,7 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceCreate(d *schema.Resou instanceId = *response.Response.InstanceIds[0] d.SetId(instanceId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} initParams := []*mariadb.DBParamValue{ { Param: helper.String("character_set_server"), @@ -191,8 +194,8 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceCreate(d *schema.Resou } if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region resourceName := fmt.Sprintf("qcs::mariadb:%s:uin/:mariadb-dedicatedcluster-instance/%s", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err @@ -203,13 +206,13 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceCreate(d *schema.Resou } func resourceTencentCloudMariadbDedicatedclusterDbInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_dedicatedcluster_db_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_dedicatedcluster_db_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId = d.Id() ) @@ -266,7 +269,7 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceRead(d *schema.Resourc _ = d.Set("instance_name", dbInstance.InstanceName) } - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "mariadb", "mariadb-dedicatedcluster-instance", tcClient.Region, d.Id()) if err != nil { @@ -278,13 +281,13 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceRead(d *schema.Resourc } func resourceTencentCloudMariadbDedicatedclusterDbInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_dedicatedcluster_db_instance.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_dedicatedcluster_db_instance.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = mariadb.NewModifyDBInstanceNameRequest() instanceId = d.Id() ) @@ -338,10 +341,10 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceUpdate(d *schema.Resou request.InstanceName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyDBInstanceName(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyDBInstanceName(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -356,11 +359,11 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceUpdate(d *schema.Resou } if d.HasChange("tags") { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("mariadb", "mariadb-dedicatedcluster-instance", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("mariadb", "mariadb-dedicatedcluster-instance", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -373,10 +376,10 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceUpdate(d *schema.Resou MPRequest.InstanceIds = common.StringPtrs([]string{instanceId}) MPRequest.ProjectId = &projectId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyDBInstancesProject(MPRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyDBInstancesProject(MPRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -406,10 +409,10 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceUpdate(d *schema.Resou VipRequest.SubnetId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyInstanceNetwork(VipRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyInstanceNetwork(VipRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -425,10 +428,10 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceUpdate(d *schema.Resou // wait if VipFlowId != NONE_FLOW_TASK { - err = resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := service.DescribeFlowById(ctx, VipFlowId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *result.Status == MARIADB_TASK_SUCCESS { @@ -455,22 +458,22 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceUpdate(d *schema.Resou } func resourceTencentCloudMariadbDedicatedclusterDbInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_dedicatedcluster_db_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_dedicatedcluster_db_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() paramMap := make(map[string]interface{}) paramMap["instance_ids"] = []*string{&instanceId} - err := resource.Retry(3*readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError { dbInstances, errRet := service.DescribeMariadbDbInstancesByFilter(ctx, paramMap) if errRet != nil { - return retryError(errRet, InternalError) + return tccommon.RetryError(errRet, tccommon.InternalError) } if dbInstances == nil || len(dbInstances) < 1 { return nil @@ -479,8 +482,8 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceDelete(d *schema.Resou if *dbInstances[0].Status == 2 { isolateRequest := mariadb.NewIsolateDedicatedDBInstanceRequest() isolateRequest.InstanceId = &instanceId - errIsolate := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - if _, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().IsolateDedicatedDBInstance(isolateRequest); e != nil { + errIsolate := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + if _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().IsolateDedicatedDBInstance(isolateRequest); e != nil { return resource.NonRetryableError(fmt.Errorf("delete db instance failed, err: %v", e)) } return nil @@ -492,7 +495,7 @@ func resourceTencentCloudMariadbDedicatedclusterDbInstanceDelete(d *schema.Resou } if *dbInstances[0].Status < 0 { - ee := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + ee := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { if e := service.DeleteMariadbDbInstance(ctx, instanceId); e != nil { return resource.NonRetryableError(fmt.Errorf("delete db instance failed, err: %v", e)) } diff --git a/tencentcloud/resource_tc_mariadb_dedicatedcluster_db_instance_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_dedicatedcluster_db_instance_test.go similarity index 85% rename from tencentcloud/resource_tc_mariadb_dedicatedcluster_db_instance_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_dedicatedcluster_db_instance_test.go index 3c35db2b1b..c45e0441ee 100644 --- a/tencentcloud/resource_tc_mariadb_dedicatedcluster_db_instance_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_dedicatedcluster_db_instance_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ func TestAccTencentCloudNeedFixMariadbDedicatedclusterDbInstance_basic(t *testin t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbDedicatedclusterDbInstance, diff --git a/tencentcloud/resource_tc_mariadb_encrypt_attributes.go b/tencentcloud/services/mariadb/resource_tc_mariadb_encrypt_attributes.go similarity index 70% rename from tencentcloud/resource_tc_mariadb_encrypt_attributes.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_encrypt_attributes.go index 4f1c71c21c..8f1059ae5f 100644 --- a/tencentcloud/resource_tc_mariadb_encrypt_attributes.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_encrypt_attributes.go @@ -1,16 +1,4 @@ -/* -Provides a resource to create a mariadb encrypt_attributes - -Example Usage - -```hcl -resource "tencentcloud_mariadb_encrypt_attributes" "encrypt_attributes" { - instance_id = "tdsql-ow728lmc" - encrypt_enabled = 1 -} -``` -*/ -package tencentcloud +package mariadb import ( "context" @@ -20,10 +8,12 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbEncryptAttributes() *schema.Resource { +func ResourceTencentCloudMariadbEncryptAttributes() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbEncryptAttributesCreate, Read: resourceTencentCloudMariadbEncryptAttributesRead, @@ -49,8 +39,8 @@ func resourceTencentCloudMariadbEncryptAttributes() *schema.Resource { } func resourceTencentCloudMariadbEncryptAttributesCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_encrypt_attributes.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_encrypt_attributes.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string if v, ok := d.GetOk("instance_id"); ok { @@ -63,13 +53,13 @@ func resourceTencentCloudMariadbEncryptAttributesCreate(d *schema.ResourceData, } func resourceTencentCloudMariadbEncryptAttributesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_encrypt_attributes.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_encrypt_attributes.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -94,10 +84,10 @@ func resourceTencentCloudMariadbEncryptAttributesRead(d *schema.ResourceData, me } func resourceTencentCloudMariadbEncryptAttributesUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_encrypt_attributes.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_encrypt_attributes.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mariadb.NewModifyDBEncryptAttributesRequest() @@ -109,10 +99,10 @@ func resourceTencentCloudMariadbEncryptAttributesUpdate(d *schema.ResourceData, request.EncryptEnabled = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyDBEncryptAttributes(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyDBEncryptAttributes(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -127,8 +117,8 @@ func resourceTencentCloudMariadbEncryptAttributesUpdate(d *schema.ResourceData, } func resourceTencentCloudMariadbEncryptAttributesDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_encrypt_attributes.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_encrypt_attributes.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/services/mariadb/resource_tc_mariadb_encrypt_attributes.md b/tencentcloud/services/mariadb/resource_tc_mariadb_encrypt_attributes.md new file mode 100644 index 0000000000..a57d96302c --- /dev/null +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_encrypt_attributes.md @@ -0,0 +1,10 @@ +Provides a resource to create a mariadb encrypt_attributes + +Example Usage + +```hcl +resource "tencentcloud_mariadb_encrypt_attributes" "encrypt_attributes" { + instance_id = "tdsql-ow728lmc" + encrypt_enabled = 1 +} +``` diff --git a/tencentcloud/resource_tc_mariadb_encrypt_attributes_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_encrypt_attributes_test.go similarity index 83% rename from tencentcloud/resource_tc_mariadb_encrypt_attributes_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_encrypt_attributes_test.go index 27a8d28f04..b60e4308e1 100644 --- a/tencentcloud/resource_tc_mariadb_encrypt_attributes_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_encrypt_attributes_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package mariadb_test import ( "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" ) // go test -i; go test -test.run TestAccTencentCloudMariadbEncryptAttributesResource_basic -v @@ -11,9 +13,9 @@ func TestAccTencentCloudMariadbEncryptAttributesResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbEncryptAttributes, diff --git a/tencentcloud/resource_tc_mariadb_flush_binlog.go b/tencentcloud/services/mariadb/resource_tc_mariadb_flush_binlog.go similarity index 66% rename from tencentcloud/resource_tc_mariadb_flush_binlog.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_flush_binlog.go index 696cbe35eb..0592421e4d 100644 --- a/tencentcloud/resource_tc_mariadb_flush_binlog.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_flush_binlog.go @@ -1,15 +1,18 @@ -package tencentcloud +package mariadb import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbFlushBinlog() *schema.Resource { +func ResourceTencentCloudMariadbFlushBinlog() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbFlushBinlogCreate, Read: resourceTencentCloudMariadbFlushBinlogRead, @@ -27,11 +30,11 @@ func resourceTencentCloudMariadbFlushBinlog() *schema.Resource { } func resourceTencentCloudMariadbFlushBinlogCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_flush_binlog.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_flush_binlog.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = mariadb.NewFlushBinlogRequest() instanceId string ) @@ -41,10 +44,10 @@ func resourceTencentCloudMariadbFlushBinlogCreate(d *schema.ResourceData, meta i instanceId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().FlushBinlog(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().FlushBinlog(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -63,15 +66,15 @@ func resourceTencentCloudMariadbFlushBinlogCreate(d *schema.ResourceData, meta i } func resourceTencentCloudMariadbFlushBinlogRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_flush_binlog.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_flush_binlog.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMariadbFlushBinlogDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_flush_binlog.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_flush_binlog.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_flush_binlog_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_flush_binlog_test.go similarity index 79% rename from tencentcloud/resource_tc_mariadb_flush_binlog_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_flush_binlog_test.go index aa9c07ad2e..cdc7af1dfa 100644 --- a/tencentcloud/resource_tc_mariadb_flush_binlog_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_flush_binlog_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudMariadbFlushBinlogResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbFlushBinlog, diff --git a/tencentcloud/resource_tc_mariadb_hour_db_instance.go b/tencentcloud/services/mariadb/resource_tc_mariadb_hour_db_instance.go similarity index 78% rename from tencentcloud/resource_tc_mariadb_hour_db_instance.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_hour_db_instance.go index e9efe4fed7..382293ae78 100644 --- a/tencentcloud/resource_tc_mariadb_hour_db_instance.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_hour_db_instance.go @@ -1,18 +1,21 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbHourDbInstance() *schema.Resource { +func ResourceTencentCloudMariadbHourDbInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbHourDbInstanceCreate, Read: resourceTencentCloudMariadbHourDbInstanceRead, @@ -96,13 +99,13 @@ func resourceTencentCloudMariadbHourDbInstance() *schema.Resource { } func resourceTencentCloudMariadbHourDbInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_hour_db_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_hour_db_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = mariadb.NewCreateHourDBInstanceRequest() response *mariadb.CreateHourDBInstanceResponse instanceId string @@ -148,10 +151,10 @@ func resourceTencentCloudMariadbHourDbInstanceCreate(d *schema.ResourceData, met request.InstanceName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().CreateHourDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().CreateHourDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -199,8 +202,8 @@ func resourceTencentCloudMariadbHourDbInstanceCreate(d *schema.ResourceData, met // set Tags if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region resourceName := fmt.Sprintf("qcs::mariadb:%s:uin/:mariadb-hour-instance/%s", region, instanceId) if err = tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err @@ -211,13 +214,13 @@ func resourceTencentCloudMariadbHourDbInstanceCreate(d *schema.ResourceData, met } func resourceTencentCloudMariadbHourDbInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_hour_db_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_hour_db_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId = d.Id() ) @@ -276,7 +279,7 @@ func resourceTencentCloudMariadbHourDbInstanceRead(d *schema.ResourceData, meta _ = d.Set("instance_name", hourDbInstance.InstanceName) } - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "mariadb", "mariadb-hour-instance", tcClient.Region, instanceId) if err != nil { @@ -288,13 +291,13 @@ func resourceTencentCloudMariadbHourDbInstanceRead(d *schema.ResourceData, meta } func resourceTencentCloudMariadbHourDbInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_hour_db_instance.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_hour_db_instance.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = mariadb.NewModifyDBInstanceNameRequest() instanceId = d.Id() ) @@ -334,10 +337,10 @@ func resourceTencentCloudMariadbHourDbInstanceUpdate(d *schema.ResourceData, met request.InstanceName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyDBInstanceName(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyDBInstanceName(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -352,11 +355,11 @@ func resourceTencentCloudMariadbHourDbInstanceUpdate(d *schema.ResourceData, met } if d.HasChange("tags") { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("mariadb", "mariadb-hour-instance", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("mariadb", "mariadb-hour-instance", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -369,10 +372,10 @@ func resourceTencentCloudMariadbHourDbInstanceUpdate(d *schema.ResourceData, met MPRequest.InstanceIds = common.StringPtrs([]string{instanceId}) MPRequest.ProjectId = &projectId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyDBInstancesProject(MPRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyDBInstancesProject(MPRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -402,10 +405,10 @@ func resourceTencentCloudMariadbHourDbInstanceUpdate(d *schema.ResourceData, met VipRequest.SubnetId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyInstanceNetwork(VipRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyInstanceNetwork(VipRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -421,10 +424,10 @@ func resourceTencentCloudMariadbHourDbInstanceUpdate(d *schema.ResourceData, met // wait if VipFlowId != NONE_FLOW_TASK { - err = resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := service.DescribeFlowById(ctx, VipFlowId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *result.Status == MARIADB_TASK_SUCCESS { @@ -451,13 +454,13 @@ func resourceTencentCloudMariadbHourDbInstanceUpdate(d *schema.ResourceData, met } func resourceTencentCloudMariadbHourDbInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_hour_db_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_hour_db_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() diff --git a/tencentcloud/resource_tc_mariadb_hour_db_instance_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_hour_db_instance_test.go similarity index 73% rename from tencentcloud/resource_tc_mariadb_hour_db_instance_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_hour_db_instance_test.go index 9a681502b5..c0d82d6be0 100644 --- a/tencentcloud/resource_tc_mariadb_hour_db_instance_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_hour_db_instance_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package mariadb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcmariadb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mariadb" + "context" "fmt" "testing" @@ -15,8 +19,8 @@ func TestAccTencentCloudMariadbHourDbInstance_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckMariadbHourDbInstanceDestroy, Steps: []resource.TestStep{ { @@ -28,8 +32,8 @@ func TestAccTencentCloudMariadbHourDbInstance_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_mariadb_hour_db_instance.basic", "memory", "2"), resource.TestCheckResourceAttr("tencentcloud_mariadb_hour_db_instance.basic", "node_count", "2"), resource.TestCheckResourceAttr("tencentcloud_mariadb_hour_db_instance.basic", "storage", "10"), - resource.TestCheckResourceAttr("tencentcloud_mariadb_hour_db_instance.basic", "subnet_id", defaultMariadbSubnetId), - resource.TestCheckResourceAttr("tencentcloud_mariadb_hour_db_instance.basic", "vpc_id", defaultMariadbVpcId), + resource.TestCheckResourceAttr("tencentcloud_mariadb_hour_db_instance.basic", "subnet_id", tcacctest.DefaultMariadbSubnetId), + resource.TestCheckResourceAttr("tencentcloud_mariadb_hour_db_instance.basic", "vpc_id", tcacctest.DefaultMariadbVpcId), resource.TestCheckResourceAttrSet("tencentcloud_mariadb_hour_db_instance.basic", "zones.#"), ), }, @@ -43,9 +47,9 @@ func TestAccTencentCloudMariadbHourDbInstance_basic(t *testing.T) { } func testAccCheckMariadbHourDbInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := MariadbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcmariadb.NewMariadbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_mariadb_hour_db_instance" { continue @@ -68,8 +72,8 @@ func testAccCheckMariadbHourDbInstanceDestroy(s *terraform.State) error { func testAccCheckMariadbHourDbInstanceExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { @@ -79,7 +83,7 @@ func testAccCheckMariadbHourDbInstanceExists(r string) resource.TestCheckFunc { return fmt.Errorf("resource id is not set") } - service := MariadbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcmariadb.NewMariadbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) instance, err := service.DescribeMariadbDbInstance(ctx, rs.Primary.ID) if err != nil { return err @@ -95,11 +99,11 @@ func testAccCheckMariadbHourDbInstanceExists(r string) resource.TestCheckFunc { const testAccMariadbHourDbInstanceVar = ` variable "subnet_id" { - default = "` + defaultMariadbSubnetId + `" + default = "` + tcacctest.DefaultMariadbSubnetId + `" } variable "vpc_id" { - default = "` + defaultMariadbVpcId + `" + default = "` + tcacctest.DefaultMariadbVpcId + `" } ` diff --git a/tencentcloud/resource_tc_mariadb_instance.go b/tencentcloud/services/mariadb/resource_tc_mariadb_instance.go similarity index 89% rename from tencentcloud/resource_tc_mariadb_instance.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_instance.go index 32f80d74d0..11ec10ed65 100644 --- a/tencentcloud/resource_tc_mariadb_instance.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_instance.go @@ -1,18 +1,21 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbInstance() *schema.Resource { +func ResourceTencentCloudMariadbInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbInstanceCreate, Read: resourceTencentCloudMariadbInstanceRead, @@ -359,11 +362,11 @@ func resourceTencentCloudMariadbInstance() *schema.Resource { } func resourceTencentCloudMariadbInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = mariadb.NewCreateDBInstanceRequest() @@ -475,10 +478,10 @@ func resourceTencentCloudMariadbInstanceCreate(d *schema.ResourceData, meta inte request.DcnInstanceId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().CreateDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().CreateDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -495,8 +498,8 @@ func resourceTencentCloudMariadbInstanceCreate(d *schema.ResourceData, meta inte instanceId = *response.Response.InstanceIds[0] d.SetId(instanceId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} - err = resource.Retry(7*readRetryTimeout, func() *resource.RetryError { + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + err = resource.Retry(7*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, e := service.DescribeMariadbInstanceById(ctx, instanceId) if e != nil { return resource.NonRetryableError(e) @@ -521,8 +524,8 @@ func resourceTencentCloudMariadbInstanceCreate(d *schema.ResourceData, meta inte } if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region resourceName := fmt.Sprintf("qcs::mariadb:%s:uin/:instance/%s", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err @@ -533,13 +536,13 @@ func resourceTencentCloudMariadbInstanceCreate(d *schema.ResourceData, meta inte } func resourceTencentCloudMariadbInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId = d.Id() ) @@ -736,7 +739,7 @@ func resourceTencentCloudMariadbInstanceRead(d *schema.ResourceData, meta interf } } - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := TagService{client: client} region := client.Region tags, err := tagService.DescribeResourceTags(ctx, "mariadb", "instance", region, instanceId) @@ -763,13 +766,13 @@ func resourceTencentCloudMariadbInstanceRead(d *schema.ResourceData, meta interf } func resourceTencentCloudMariadbInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_instance.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_instance.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = mariadb.NewModifyDBInstanceNameRequest() instanceId = d.Id() ) @@ -789,10 +792,10 @@ func resourceTencentCloudMariadbInstanceUpdate(d *schema.ResourceData, meta inte request.InstanceName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyDBInstanceName(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyDBInstanceName(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -806,11 +809,11 @@ func resourceTencentCloudMariadbInstanceUpdate(d *schema.ResourceData, meta inte } if d.HasChange("tags") { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("mariadb", "instance", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("mariadb", "instance", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -823,10 +826,10 @@ func resourceTencentCloudMariadbInstanceUpdate(d *schema.ResourceData, meta inte MPRequest.InstanceIds = common.StringPtrs([]string{instanceId}) MPRequest.ProjectId = &projectId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyDBInstancesProject(MPRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyDBInstancesProject(MPRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -856,10 +859,10 @@ func resourceTencentCloudMariadbInstanceUpdate(d *schema.ResourceData, meta inte VipRequest.SubnetId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyInstanceNetwork(VipRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyInstanceNetwork(VipRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -875,10 +878,10 @@ func resourceTencentCloudMariadbInstanceUpdate(d *schema.ResourceData, meta inte // wait if VipFlowId != NONE_FLOW_TASK { - err = resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := service.DescribeFlowById(ctx, VipFlowId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *result.Status == MARIADB_TASK_SUCCESS { @@ -905,20 +908,20 @@ func resourceTencentCloudMariadbInstanceUpdate(d *schema.ResourceData, meta inte } func resourceTencentCloudMariadbInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() if err := service.IsolateDBInstanceById(ctx, instanceId); err != nil { return err } - err := resource.Retry(2*readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, e := service.DescribeMariadbInstanceById(ctx, instanceId) if e != nil { return resource.NonRetryableError(e) @@ -945,7 +948,7 @@ func resourceTencentCloudMariadbInstanceDelete(d *schema.ResourceData, meta inte return err } - err = resource.Retry(2*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, e := service.DescribeMariadbInstanceById(ctx, instanceId) if e != nil { return resource.NonRetryableError(e) diff --git a/tencentcloud/resource_tc_mariadb_instance_config.go b/tencentcloud/services/mariadb/resource_tc_mariadb_instance_config.go similarity index 72% rename from tencentcloud/resource_tc_mariadb_instance_config.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_instance_config.go index 728f770932..1aae6ad406 100644 --- a/tencentcloud/resource_tc_mariadb_instance_config.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_instance_config.go @@ -1,16 +1,18 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" ) -func resourceTencentCloudMariadbInstanceConfig() *schema.Resource { +func ResourceTencentCloudMariadbInstanceConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbInstanceConfigCreate, Read: resourceTencentCloudMariadbInstanceConfigRead, @@ -30,14 +32,14 @@ func resourceTencentCloudMariadbInstanceConfig() *schema.Resource { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateAllowedIntValue([]int{0, 1}), + ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}), Description: "RS proximity mode, 0- no strategy, 1- access to the nearest available zone.", }, "extranet_access": { Type: schema.TypeInt, Optional: true, Computed: true, - ValidateFunc: validateAllowedIntValue([]int{0, 1}), + ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}), Description: "External network status, 0-closed; 1- Opening; Default not enabled.", }, }, @@ -45,8 +47,8 @@ func resourceTencentCloudMariadbInstanceConfig() *schema.Resource { } func resourceTencentCloudMariadbInstanceConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_instance_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_instance_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string @@ -60,13 +62,13 @@ func resourceTencentCloudMariadbInstanceConfigCreate(d *schema.ResourceData, met } func resourceTencentCloudMariadbInstanceConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_instance_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_instance_config.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId = d.Id() ) @@ -97,13 +99,13 @@ func resourceTencentCloudMariadbInstanceConfigRead(d *schema.ResourceData, meta } func resourceTencentCloudMariadbInstanceConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_instance_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_instance_config.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = mariadb.NewModifyAccountPrivilegesRequest() instanceId = d.Id() ) @@ -128,10 +130,10 @@ func resourceTencentCloudMariadbInstanceConfigUpdate(d *schema.ResourceData, met rsAccessStrategyRequest.InstanceId = &instanceId rsAccessStrategyRequest.RsAccessStrategy = &rsAccessStrategy - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyRealServerAccessStrategy(rsAccessStrategyRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyRealServerAccessStrategy(rsAccessStrategyRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -153,10 +155,10 @@ func resourceTencentCloudMariadbInstanceConfigUpdate(d *schema.ResourceData, met if extranetAccess == ExtranetAccess_ENABLE { extranetAccessRequest := mariadb.NewOpenDBExtranetAccessRequest() extranetAccessRequest.InstanceId = &instanceId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().OpenDBExtranetAccess(extranetAccessRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().OpenDBExtranetAccess(extranetAccessRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -173,10 +175,10 @@ func resourceTencentCloudMariadbInstanceConfigUpdate(d *schema.ResourceData, met } else { extranetAccessRequest := mariadb.NewCloseDBExtranetAccessRequest() extranetAccessRequest.InstanceId = &instanceId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().CloseDBExtranetAccess(extranetAccessRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().CloseDBExtranetAccess(extranetAccessRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -192,10 +194,10 @@ func resourceTencentCloudMariadbInstanceConfigUpdate(d *schema.ResourceData, met // wait if extranetAccessFlowId != NONE_FLOW_TASK { - err := resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := service.DescribeFlowById(ctx, extranetAccessFlowId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *result.Status == MARIADB_TASK_SUCCESS { @@ -222,8 +224,8 @@ func resourceTencentCloudMariadbInstanceConfigUpdate(d *schema.ResourceData, met } func resourceTencentCloudMariadbInstanceConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_instance_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_instance_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_instance_config_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_instance_config_test.go similarity index 82% rename from tencentcloud/resource_tc_mariadb_instance_config_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_instance_config_test.go index 471cd08dea..1a2ff52316 100644 --- a/tencentcloud/resource_tc_mariadb_instance_config_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_instance_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ import ( func TestAccTencentCloudMariadbInstanceConfigResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbInstanceConfig, diff --git a/tencentcloud/resource_tc_mariadb_instance_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_instance_test.go similarity index 78% rename from tencentcloud/resource_tc_mariadb_instance_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_instance_test.go index 9e9e1f7307..ceeeacfeef 100644 --- a/tencentcloud/resource_tc_mariadb_instance_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_instance_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package mariadb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcmariadb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mariadb" + "context" "fmt" "testing" @@ -14,8 +18,8 @@ func TestAccTencentCloudMariadbInstanceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckMariadbInstanceDestroy, Steps: []resource.TestStep{ { @@ -44,9 +48,9 @@ func TestAccTencentCloudMariadbInstanceResource_basic(t *testing.T) { } func testAccCheckMariadbInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := MariadbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcmariadb.NewMariadbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_mariadb_instance" { continue @@ -69,8 +73,8 @@ func testAccCheckMariadbInstanceDestroy(s *terraform.State) error { func testAccCheckMariadbInstanceExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { @@ -80,7 +84,7 @@ func testAccCheckMariadbInstanceExists(r string) resource.TestCheckFunc { return fmt.Errorf("resource id is not set") } - service := MariadbService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcmariadb.NewMariadbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) instance, err := service.DescribeMariadbDbInstance(ctx, rs.Primary.ID) if err != nil { return err @@ -96,11 +100,11 @@ func testAccCheckMariadbInstanceExists(r string) resource.TestCheckFunc { const testAccMariadbInstanceVar = ` variable "subnet_id" { - default = "` + defaultMariadbInstanceSubnetId + `" + default = "` + tcacctest.DefaultMariadbInstanceSubnetId + `" } variable "vpc_id" { - default = "` + defaultMariadbInstanceVpcId + `" + default = "` + tcacctest.DefaultMariadbInstanceVpcId + `" } ` diff --git a/tencentcloud/resource_tc_mariadb_log_file_retention_period.go b/tencentcloud/services/mariadb/resource_tc_mariadb_log_file_retention_period.go similarity index 70% rename from tencentcloud/resource_tc_mariadb_log_file_retention_period.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_log_file_retention_period.go index e79626107b..c4d0aefe2c 100644 --- a/tencentcloud/resource_tc_mariadb_log_file_retention_period.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_log_file_retention_period.go @@ -1,17 +1,20 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbLogFileRetentionPeriod() *schema.Resource { +func ResourceTencentCloudMariadbLogFileRetentionPeriod() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudMariadbLogFileRetentionPeriodRead, Create: resourceTencentCloudMariadbLogFileRetentionPeriodCreate, @@ -37,8 +40,8 @@ func resourceTencentCloudMariadbLogFileRetentionPeriod() *schema.Resource { } func resourceTencentCloudMariadbLogFileRetentionPeriodCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_log_file_retention_period.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_log_file_retention_period.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string if v, ok := d.GetOk("instance_id"); ok { @@ -50,13 +53,13 @@ func resourceTencentCloudMariadbLogFileRetentionPeriodCreate(d *schema.ResourceD } func resourceTencentCloudMariadbLogFileRetentionPeriodRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_log_file_retention_period.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_log_file_retention_period.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -83,10 +86,10 @@ func resourceTencentCloudMariadbLogFileRetentionPeriodRead(d *schema.ResourceDat } func resourceTencentCloudMariadbLogFileRetentionPeriodUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_log_file_retention_period.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_log_file_retention_period.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mariadb.NewModifyLogFileRetentionPeriodRequest() @@ -98,10 +101,10 @@ func resourceTencentCloudMariadbLogFileRetentionPeriodUpdate(d *schema.ResourceD request.Days = helper.Uint64(uint64(v.(int))) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyLogFileRetentionPeriod(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyLogFileRetentionPeriod(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -118,8 +121,8 @@ func resourceTencentCloudMariadbLogFileRetentionPeriodUpdate(d *schema.ResourceD } func resourceTencentCloudMariadbLogFileRetentionPeriodDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_log_file_retention_period.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_log_file_retention_period.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_log_file_retention_period_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_log_file_retention_period_test.go similarity index 84% rename from tencentcloud/resource_tc_mariadb_log_file_retention_period_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_log_file_retention_period_test.go index fbe59d3134..3a510e3aea 100644 --- a/tencentcloud/resource_tc_mariadb_log_file_retention_period_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_log_file_retention_period_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ func TestAccTencentCloudMariadbLogFileRetentionPeriod_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbLogFileRetentionPeriod, diff --git a/tencentcloud/resource_tc_mariadb_operate_hour_db_instance.go b/tencentcloud/services/mariadb/resource_tc_mariadb_operate_hour_db_instance.go similarity index 74% rename from tencentcloud/resource_tc_mariadb_operate_hour_db_instance.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_operate_hour_db_instance.go index 30aaf4429d..602b829f26 100644 --- a/tencentcloud/resource_tc_mariadb_operate_hour_db_instance.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_operate_hour_db_instance.go @@ -1,17 +1,19 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" ) -func resourceTencentCloudMariadbOperateHourDbInstance() *schema.Resource { +func ResourceTencentCloudMariadbOperateHourDbInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbActivateHourDbInstanceCreate, Read: resourceTencentCloudMariadbActivateHourDbInstanceRead, @@ -34,8 +36,8 @@ func resourceTencentCloudMariadbOperateHourDbInstance() *schema.Resource { } func resourceTencentCloudMariadbActivateHourDbInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_activate_hour_db_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_activate_hour_db_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string @@ -49,13 +51,13 @@ func resourceTencentCloudMariadbActivateHourDbInstanceCreate(d *schema.ResourceD } func resourceTencentCloudMariadbActivateHourDbInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_activate_hour_db_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_activate_hour_db_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId = d.Id() operate string ) @@ -64,10 +66,10 @@ func resourceTencentCloudMariadbActivateHourDbInstanceRead(d *schema.ResourceDat operate = v.(string) } - err := resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := service.DescribeDBInstanceDetailById(ctx, instanceId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if operate == "activate" { @@ -105,11 +107,11 @@ func resourceTencentCloudMariadbActivateHourDbInstanceRead(d *schema.ResourceDat } func resourceTencentCloudMariadbActivateHourDbInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_activate_hour_db_instance.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_activate_hour_db_instance.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) instanceId = d.Id() ) @@ -119,10 +121,10 @@ func resourceTencentCloudMariadbActivateHourDbInstanceUpdate(d *schema.ResourceD request := mariadb.NewActivateHourDBInstanceRequest() response := mariadb.NewActivateHourDBInstanceResponse() request.InstanceIds = common.StringPtrs([]string{instanceId}) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ActivateHourDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ActivateHourDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -144,10 +146,10 @@ func resourceTencentCloudMariadbActivateHourDbInstanceUpdate(d *schema.ResourceD request := mariadb.NewIsolateHourDBInstanceRequest() response := mariadb.NewIsolateHourDBInstanceResponse() request.InstanceIds = common.StringPtrs([]string{instanceId}) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().IsolateHourDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().IsolateHourDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -174,8 +176,8 @@ func resourceTencentCloudMariadbActivateHourDbInstanceUpdate(d *schema.ResourceD } func resourceTencentCloudMariadbActivateHourDbInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_activate_hour_db_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_activate_hour_db_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_operate_hour_db_instance_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_operate_hour_db_instance_test.go similarity index 81% rename from tencentcloud/resource_tc_mariadb_operate_hour_db_instance_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_operate_hour_db_instance_test.go index 22fb457665..29fd544898 100644 --- a/tencentcloud/resource_tc_mariadb_operate_hour_db_instance_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_operate_hour_db_instance_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudMariadbOperateHourDbInstanceResource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbActivateHourDbInstance, diff --git a/tencentcloud/resource_tc_mariadb_parameters.go b/tencentcloud/services/mariadb/resource_tc_mariadb_parameters.go similarity index 75% rename from tencentcloud/resource_tc_mariadb_parameters.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_parameters.go index 035e4c9953..a3efe3f5f4 100644 --- a/tencentcloud/resource_tc_mariadb_parameters.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_parameters.go @@ -1,17 +1,20 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbParameters() *schema.Resource { +func ResourceTencentCloudMariadbParameters() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudMariadbParametersRead, Create: resourceTencentCloudMariadbParametersCreate, @@ -51,8 +54,8 @@ func resourceTencentCloudMariadbParameters() *schema.Resource { } func resourceTencentCloudMariadbParametersCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_parameters.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_parameters.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string if v, ok := d.GetOk("instance_id"); ok { @@ -64,13 +67,13 @@ func resourceTencentCloudMariadbParametersCreate(d *schema.ResourceData, meta in } func resourceTencentCloudMariadbParametersRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_parameters.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_parameters.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -109,10 +112,10 @@ func resourceTencentCloudMariadbParametersRead(d *schema.ResourceData, meta inte } func resourceTencentCloudMariadbParametersUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_parameters.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_parameters.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mariadb.NewModifyDBParametersRequest() @@ -135,10 +138,10 @@ func resourceTencentCloudMariadbParametersUpdate(d *schema.ResourceData, meta in } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyDBParameters(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyDBParameters(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -155,8 +158,8 @@ func resourceTencentCloudMariadbParametersUpdate(d *schema.ResourceData, meta in } func resourceTencentCloudMariadbParametersDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_parameters.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_parameters.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_parameters_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_parameters_test.go similarity index 96% rename from tencentcloud/resource_tc_mariadb_parameters_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_parameters_test.go index 785cd988b1..9de22a55df 100644 --- a/tencentcloud/resource_tc_mariadb_parameters_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_parameters_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ func TestAccTencentCloudMariadbParameters_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbParameters, diff --git a/tencentcloud/resource_tc_mariadb_renew_instance.go b/tencentcloud/services/mariadb/resource_tc_mariadb_renew_instance.go similarity index 73% rename from tencentcloud/resource_tc_mariadb_renew_instance.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_renew_instance.go index 6305da06ef..2be2d37c65 100644 --- a/tencentcloud/resource_tc_mariadb_renew_instance.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_renew_instance.go @@ -1,17 +1,20 @@ -package tencentcloud +package mariadb import ( "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbRenewInstance() *schema.Resource { +func ResourceTencentCloudMariadbRenewInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbRenewInstanceCreate, Read: resourceTencentCloudMariadbRenewInstanceRead, @@ -36,11 +39,11 @@ func resourceTencentCloudMariadbRenewInstance() *schema.Resource { } func resourceTencentCloudMariadbRenewInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_renew_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_renew_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = mariadb.NewRenewDBInstanceRequest() instanceId string dealName string @@ -55,10 +58,10 @@ func resourceTencentCloudMariadbRenewInstanceCreate(d *schema.ResourceData, meta request.Period = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().RenewDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().RenewDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -75,8 +78,8 @@ func resourceTencentCloudMariadbRenewInstanceCreate(d *schema.ResourceData, meta // check order OrderRequest := mariadb.NewDescribeOrdersRequest() OrderRequest.DealNames = common.StringPtrs([]string{dealName}) - err = resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { - resp, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().DescribeOrders(OrderRequest) + err = resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { + resp, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().DescribeOrders(OrderRequest) if e != nil { return resource.RetryableError(err) } @@ -108,15 +111,15 @@ func resourceTencentCloudMariadbRenewInstanceCreate(d *schema.ResourceData, meta } func resourceTencentCloudMariadbRenewInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_renew_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_renew_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMariadbRenewInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_renew_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_renew_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_renew_instance_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_renew_instance_test.go similarity index 78% rename from tencentcloud/resource_tc_mariadb_renew_instance_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_renew_instance_test.go index 7dec5da5bf..14233ed157 100644 --- a/tencentcloud/resource_tc_mariadb_renew_instance_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_renew_instance_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,10 +13,10 @@ func TestAccTencentCloudMariadbRenewInstanceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, CheckDestroy: testAccCheckMariadbInstanceDestroy, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbRenewInstance, diff --git a/tencentcloud/resource_tc_mariadb_restart_instance.go b/tencentcloud/services/mariadb/resource_tc_mariadb_restart_instance.go similarity index 71% rename from tencentcloud/resource_tc_mariadb_restart_instance.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_restart_instance.go index a4cd6810c3..b66ab4eb91 100644 --- a/tencentcloud/resource_tc_mariadb_restart_instance.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_restart_instance.go @@ -1,18 +1,21 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbRestartInstance() *schema.Resource { +func ResourceTencentCloudMariadbRestartInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbRestartInstanceCreate, Read: resourceTencentCloudMariadbRestartInstanceRead, @@ -36,13 +39,13 @@ func resourceTencentCloudMariadbRestartInstance() *schema.Resource { } func resourceTencentCloudMariadbRestartInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_restart_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_restart_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = mariadb.NewRestartDBInstancesRequest() instanceId string flowId int64 @@ -57,10 +60,10 @@ func resourceTencentCloudMariadbRestartInstanceCreate(d *schema.ResourceData, me request.RestartTime = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().RestartDBInstances(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().RestartDBInstances(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -75,10 +78,10 @@ func resourceTencentCloudMariadbRestartInstanceCreate(d *schema.ResourceData, me } // wait - err = resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := service.DescribeFlowById(ctx, flowId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *result.Status == MARIADB_TASK_SUCCESS { @@ -104,15 +107,15 @@ func resourceTencentCloudMariadbRestartInstanceCreate(d *schema.ResourceData, me } func resourceTencentCloudMariadbRestartInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_restart_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_restart_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMariadbRestartInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_restart_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_restart_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_restart_instance_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_restart_instance_test.go similarity index 79% rename from tencentcloud/resource_tc_mariadb_restart_instance_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_restart_instance_test.go index 21b4eef790..385153da07 100644 --- a/tencentcloud/resource_tc_mariadb_restart_instance_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_restart_instance_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ import ( func TestAccTencentCloudMariadbRestartInstanceResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbRestartInstance, diff --git a/tencentcloud/resource_tc_mariadb_security_groups.go b/tencentcloud/services/mariadb/resource_tc_mariadb_security_groups.go similarity index 69% rename from tencentcloud/resource_tc_mariadb_security_groups.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_security_groups.go index 3de43acd72..37de6d4ec7 100644 --- a/tencentcloud/resource_tc_mariadb_security_groups.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_security_groups.go @@ -1,4 +1,4 @@ -package tencentcloud +package mariadb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbSecurityGroups() *schema.Resource { +func ResourceTencentCloudMariadbSecurityGroups() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudMariadbSecurityGroupsRead, Create: resourceTencentCloudMariadbSecurityGroupsCreate, @@ -44,10 +47,10 @@ func resourceTencentCloudMariadbSecurityGroups() *schema.Resource { } func resourceTencentCloudMariadbSecurityGroupsCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_security_groups.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_security_groups.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mariadb.NewAssociateSecurityGroupsRequest() @@ -71,10 +74,10 @@ func resourceTencentCloudMariadbSecurityGroupsCreate(d *schema.ResourceData, met request.Product = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().AssociateSecurityGroups(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().AssociateSecurityGroups(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -87,20 +90,20 @@ func resourceTencentCloudMariadbSecurityGroupsCreate(d *schema.ResourceData, met return err } - d.SetId(instanceId + FILED_SP + securityGroupId + FILED_SP + product) + d.SetId(instanceId + tccommon.FILED_SP + securityGroupId + tccommon.FILED_SP + product) return resourceTencentCloudMariadbSecurityGroupsRead(d, meta) } func resourceTencentCloudMariadbSecurityGroupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_security_groups.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_security_groups.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -127,14 +130,14 @@ func resourceTencentCloudMariadbSecurityGroupsRead(d *schema.ResourceData, meta } func resourceTencentCloudMariadbSecurityGroupsUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_security_groups.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_security_groups.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mariadb.NewModifyDBInstanceSecurityGroupsRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -158,10 +161,10 @@ func resourceTencentCloudMariadbSecurityGroupsUpdate(d *schema.ResourceData, met return fmt.Errorf("`product` do not support change now.") } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().ModifyDBInstanceSecurityGroups(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().ModifyDBInstanceSecurityGroups(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -178,15 +181,15 @@ func resourceTencentCloudMariadbSecurityGroupsUpdate(d *schema.ResourceData, met } func resourceTencentCloudMariadbSecurityGroupsDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_security_groups.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_security_groups.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_mariadb_security_groups_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_security_groups_test.go similarity index 80% rename from tencentcloud/resource_tc_mariadb_security_groups_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_security_groups_test.go index 1fd4d9b520..93aeeb8b95 100644 --- a/tencentcloud/resource_tc_mariadb_security_groups_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_security_groups_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ func TestAccTencentCloudMariadbSecurityGroups_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbSecurityGroups, @@ -31,7 +33,7 @@ func TestAccTencentCloudMariadbSecurityGroups_basic(t *testing.T) { const testAccMariadbSecurityGroupsVar = ` variable "security_group_id" { - default = "` + defaultMariadbSecurityGroupId + `" + default = "` + tcacctest.DefaultMariadbSecurityGroupId + `" } ` diff --git a/tencentcloud/resource_tc_mariadb_switch_ha.go b/tencentcloud/services/mariadb/resource_tc_mariadb_switch_ha.go similarity index 71% rename from tencentcloud/resource_tc_mariadb_switch_ha.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_switch_ha.go index fdb505d9fe..5c5bb545d6 100644 --- a/tencentcloud/resource_tc_mariadb_switch_ha.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_switch_ha.go @@ -1,17 +1,20 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMariadbSwitchHA() *schema.Resource { +func ResourceTencentCloudMariadbSwitchHA() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMariadbSwitchHACreate, Read: resourceTencentCloudMariadbSwitchHARead, @@ -35,13 +38,13 @@ func resourceTencentCloudMariadbSwitchHA() *schema.Resource { } func resourceTencentCloudMariadbSwitchHACreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_switch_ha.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_switch_ha.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = MariadbService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = MariadbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = mariadb.NewSwitchDBInstanceHARequest() instanceId string flowId int64 @@ -56,10 +59,10 @@ func resourceTencentCloudMariadbSwitchHACreate(d *schema.ResourceData, meta inte request.Zone = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMariadbClient().SwitchDBInstanceHA(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMariadbClient().SwitchDBInstanceHA(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -74,10 +77,10 @@ func resourceTencentCloudMariadbSwitchHACreate(d *schema.ResourceData, meta inte } // wait - err = resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := service.DescribeFlowById(ctx, flowId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } if *result.Status == MARIADB_TASK_SUCCESS { @@ -103,15 +106,15 @@ func resourceTencentCloudMariadbSwitchHACreate(d *schema.ResourceData, meta inte } func resourceTencentCloudMariadbSwitchHARead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_switch_ha.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_switch_ha.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMariadbSwitchHADelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mariadb_switch_ha.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mariadb_switch_ha.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mariadb_switch_ha_test.go b/tencentcloud/services/mariadb/resource_tc_mariadb_switch_ha_test.go similarity index 77% rename from tencentcloud/resource_tc_mariadb_switch_ha_test.go rename to tencentcloud/services/mariadb/resource_tc_mariadb_switch_ha_test.go index 606bcb639b..f8432defff 100644 --- a/tencentcloud/resource_tc_mariadb_switch_ha_test.go +++ b/tencentcloud/services/mariadb/resource_tc_mariadb_switch_ha_test.go @@ -1,17 +1,19 @@ -package tencentcloud +package mariadb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudNeedFixMariadbSwitchHAResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMariadbSwitchHA, diff --git a/tencentcloud/service_tencentcloud_mariadb.go b/tencentcloud/services/mariadb/service_tencentcloud_mariadb.go similarity index 95% rename from tencentcloud/service_tencentcloud_mariadb.go rename to tencentcloud/services/mariadb/service_tencentcloud_mariadb.go index d7a70a83da..ecc346ae25 100644 --- a/tencentcloud/service_tencentcloud_mariadb.go +++ b/tencentcloud/services/mariadb/service_tencentcloud_mariadb.go @@ -1,26 +1,34 @@ -package tencentcloud +package mariadb import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" mariadb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewMariadbService(client *connectivity.TencentCloudClient) MariadbService { + return MariadbService{client: client} +} + type MariadbService struct { client *connectivity.TencentCloudClient } func (me *MariadbService) InitDbInstance(ctx context.Context, instanceId string, params []*mariadb.DBParamValue) (initRet bool, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBInstancesRequest() ) @@ -31,10 +39,10 @@ func (me *MariadbService) InitDbInstance(ctx context.Context, instanceId string, } }() - err := resource.Retry(8*readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(8*tccommon.ReadRetryTimeout, func() *resource.RetryError { dbInstance, errResp := me.DescribeMariadbDbInstance(ctx, instanceId) if errResp != nil { - return retryError(errResp, InternalError) + return tccommon.RetryError(errResp, tccommon.InternalError) } if *dbInstance.Status < 0 { return resource.NonRetryableError(fmt.Errorf("db instance init status is %v, operate failed", *dbInstance.Status)) @@ -46,10 +54,10 @@ func (me *MariadbService) InitDbInstance(ctx context.Context, instanceId string, iniRequest := mariadb.NewInitDBInstancesRequest() iniRequest.InstanceIds = []*string{&instanceId} iniRequest.Params = params - initErr := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + initErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { result, e := me.client.UseMariadbClient().InitDBInstances(iniRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -71,7 +79,7 @@ func (me *MariadbService) InitDbInstance(ctx context.Context, instanceId string, func (me *MariadbService) DescribeMariadbDbInstancesByFilter(ctx context.Context, param map[string]interface{}) (dbInstances []*mariadb.DBInstance, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBInstancesRequest() ) @@ -145,7 +153,7 @@ func (me *MariadbService) DescribeMariadbDbInstancesByFilter(ctx context.Context func (me *MariadbService) DescribeMariadbDcnDetailByFilter(ctx context.Context, param map[string]interface{}) (dcnDetail []*mariadb.DcnDetailItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDcnDetailRequest() ) @@ -182,7 +190,7 @@ func (me *MariadbService) DescribeMariadbDcnDetailByFilter(ctx context.Context, func (me *MariadbService) DescribeMariadbFileDownloadUrlByFilter(ctx context.Context, param map[string]interface{}) (fileDownloadUrl *mariadb.DescribeFileDownloadUrlResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeFileDownloadUrlRequest() ) @@ -222,7 +230,7 @@ func (me *MariadbService) DescribeMariadbFileDownloadUrlByFilter(ctx context.Con func (me *MariadbService) DescribeMariadbFlowByFilter(ctx context.Context, param map[string]interface{}) (flow *mariadb.DescribeFlowResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeFlowRequest() ) @@ -259,7 +267,7 @@ func (me *MariadbService) DescribeMariadbFlowByFilter(ctx context.Context, param func (me *MariadbService) DescribeMariadbInstanceNodeInfoByFilter(ctx context.Context, param map[string]interface{}) (instanceNodeInfo []*mariadb.NodeInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeInstanceNodeInfoRequest() ) @@ -310,7 +318,7 @@ func (me *MariadbService) DescribeMariadbInstanceNodeInfoByFilter(ctx context.Co func (me *MariadbService) DescribeMariadbInstanceSpecsByFilter(ctx context.Context) (instanceSpecs []*mariadb.InstanceSpec, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBInstanceSpecsRequest() ) @@ -341,7 +349,7 @@ func (me *MariadbService) DescribeMariadbInstanceSpecsByFilter(ctx context.Conte func (me *MariadbService) DescribeMariadbOrdersByFilter(ctx context.Context, dealName string) (orders []*mariadb.Deal, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeOrdersRequest() ) @@ -373,7 +381,7 @@ func (me *MariadbService) DescribeMariadbOrdersByFilter(ctx context.Context, dea func (me *MariadbService) DescribeMariadbPriceByFilter(ctx context.Context, param map[string]interface{}) (price *mariadb.DescribePriceResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribePriceRequest() ) @@ -431,7 +439,7 @@ func (me *MariadbService) DescribeMariadbPriceByFilter(ctx context.Context, para func (me *MariadbService) DescribeMariadbProjectSecurityGroupsByFilter(ctx context.Context, param map[string]interface{}) (projectSecurityGroups []*mariadb.SecurityGroup, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeProjectSecurityGroupsRequest() ) @@ -471,7 +479,7 @@ func (me *MariadbService) DescribeMariadbProjectSecurityGroupsByFilter(ctx conte func (me *MariadbService) DescribeMariadbRenewalPriceByFilter(ctx context.Context, param map[string]interface{}) (renewalPrice *mariadb.DescribeRenewalPriceResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeRenewalPriceRequest() ) @@ -514,7 +522,7 @@ func (me *MariadbService) DescribeMariadbRenewalPriceByFilter(ctx context.Contex func (me *MariadbService) DescribeMariadbSaleInfoByFilter(ctx context.Context) (saleInfo []*mariadb.RegionInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeSaleInfoRequest() ) @@ -545,7 +553,7 @@ func (me *MariadbService) DescribeMariadbSaleInfoByFilter(ctx context.Context) ( func (me *MariadbService) DescribeMariadbSlowLogsByFilter(ctx context.Context, param map[string]interface{}) (slowLogs *mariadb.DescribeDBSlowLogsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBSlowLogsRequest() ) @@ -616,7 +624,7 @@ func (me *MariadbService) DescribeMariadbSlowLogsByFilter(ctx context.Context, p func (me *MariadbService) DescribeMariadbUpgradePriceByFilter(ctx context.Context, param map[string]interface{}) (upgradePrice *mariadb.DescribeUpgradePriceResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeUpgradePriceRequest() ) @@ -665,7 +673,7 @@ func (me *MariadbService) DescribeMariadbUpgradePriceByFilter(ctx context.Contex func (me *MariadbService) DescribeMariadbLogFilesByFilter(ctx context.Context, param map[string]interface{}) (logFiles *mariadb.DescribeDBLogFilesResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBLogFilesRequest() ) @@ -705,7 +713,7 @@ func (me *MariadbService) DescribeMariadbLogFilesByFilter(ctx context.Context, p func (me *MariadbService) DescribeMariadbDbInstance(ctx context.Context, instanceId string) (dbInstance *mariadb.DBInstance, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBInstancesRequest() ) @@ -735,7 +743,7 @@ func (me *MariadbService) DescribeMariadbDbInstance(ctx context.Context, instanc func (me *MariadbService) DescribeMariadbDbInstanceDetail(ctx context.Context, instanceId string) (dbInstanceDetail *mariadb.DescribeDBInstanceDetailResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBInstanceDetailRequest() ) @@ -768,7 +776,7 @@ func (me *MariadbService) DescribeMariadbDbInstanceDetail(ctx context.Context, i } func (me *MariadbService) DeleteMariadbDbInstanceById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewDestroyDBInstanceRequest() @@ -794,7 +802,7 @@ func (me *MariadbService) DeleteMariadbDbInstanceById(ctx context.Context, insta } func (me *MariadbService) DeleteMariadbHourDbInstanceById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewDestroyHourDBInstanceRequest() @@ -820,7 +828,7 @@ func (me *MariadbService) DeleteMariadbHourDbInstanceById(ctx context.Context, i } func (me *MariadbService) DeleteMariadbDbInstance(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewTerminateDedicatedDBInstanceRequest() @@ -847,7 +855,7 @@ func (me *MariadbService) DeleteMariadbDbInstance(ctx context.Context, instanceI func (me *MariadbService) DescribeMariadbAccount(ctx context.Context, instanceId, userName, host string) (account *mariadb.DBAccount, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeAccountsRequest() ) @@ -882,7 +890,7 @@ func (me *MariadbService) DescribeMariadbAccount(ctx context.Context, instanceId } func (me *MariadbService) DeleteMariadbAccountById(ctx context.Context, instanceId, userName, host string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewDeleteAccountRequest() @@ -911,7 +919,7 @@ func (me *MariadbService) DeleteMariadbAccountById(ctx context.Context, instance func (me *MariadbService) DescribeMariadbParameters(ctx context.Context, instanceId string) (parameters *mariadb.DescribeDBParametersResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBParametersRequest() ) @@ -938,7 +946,7 @@ func (me *MariadbService) DescribeMariadbParameters(ctx context.Context, instanc func (me *MariadbService) DescribeMariadbLogFileRetentionPeriod(ctx context.Context, instanceId string) (logFileRetentionPeriod *mariadb.DescribeLogFileRetentionPeriodResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeLogFileRetentionPeriodRequest() ) @@ -965,7 +973,7 @@ func (me *MariadbService) DescribeMariadbLogFileRetentionPeriod(ctx context.Cont func (me *MariadbService) DescribeMariadbSecurityGroup(ctx context.Context, instanceId, securityGroupId, product string) (securityGroup *mariadb.SecurityGroup, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBSecurityGroupsRequest() ) @@ -1000,7 +1008,7 @@ func (me *MariadbService) DescribeMariadbSecurityGroup(ctx context.Context, inst } func (me *MariadbService) DeleteMariadbSecurityGroupsById(ctx context.Context, instanceId, securityGroupId, product string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewDisassociateSecurityGroupsRequest() @@ -1029,7 +1037,7 @@ func (me *MariadbService) DeleteMariadbSecurityGroupsById(ctx context.Context, i func (me *MariadbService) DescribeMariadbAccountsByFilter(ctx context.Context, param map[string]interface{}) (accounts []*mariadb.DBAccount, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeAccountsRequest() ) @@ -1066,7 +1074,7 @@ func (me *MariadbService) DescribeMariadbAccountsByFilter(ctx context.Context, p func (me *MariadbService) DescribeMariadbSecurityGroupsByFilter(ctx context.Context, param map[string]interface{}) (securityGroups []*mariadb.SecurityGroup, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBSecurityGroupsRequest() ) @@ -1105,7 +1113,7 @@ func (me *MariadbService) DescribeMariadbSecurityGroupsByFilter(ctx context.Cont } func (me *MariadbService) DescribeMariadbInstanceById(ctx context.Context, instanceId string) (instance *mariadb.DBInstance, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewDescribeDBInstancesRequest() request.InstanceIds = []*string{&instanceId} @@ -1134,7 +1142,7 @@ func (me *MariadbService) DescribeMariadbInstanceById(ctx context.Context, insta } func (me *MariadbService) IsolateDBInstanceById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewIsolateDBInstanceRequest() request.InstanceIds = []*string{&instanceId} @@ -1158,7 +1166,7 @@ func (me *MariadbService) IsolateDBInstanceById(ctx context.Context, instanceId } func (me *MariadbService) DeleteMariadbInstanceById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewDestroyDBInstanceRequest() request.InstanceId = &instanceId @@ -1183,7 +1191,7 @@ func (me *MariadbService) DeleteMariadbInstanceById(ctx context.Context, instanc func (me *MariadbService) DescribeMariadbDatabaseObjectsByFilter(ctx context.Context, instanceId, dbName string) (databaseObjects *mariadb.DescribeDatabaseObjectsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDatabaseObjectsRequest() ) @@ -1213,7 +1221,7 @@ func (me *MariadbService) DescribeMariadbDatabaseObjectsByFilter(ctx context.Con func (me *MariadbService) DescribeMariadbDatabasesByFilter(ctx context.Context, instanceId string) (databases []*mariadb.Database, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDatabasesRequest() ) @@ -1243,7 +1251,7 @@ func (me *MariadbService) DescribeMariadbDatabasesByFilter(ctx context.Context, func (me *MariadbService) DescribeMariadbDatabaseTableByFilter(ctx context.Context, param map[string]interface{}) (cols []*mariadb.TableColumn, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDatabaseTableRequest() ) @@ -1282,7 +1290,7 @@ func (me *MariadbService) DescribeMariadbDatabaseTableByFilter(ctx context.Conte func (me *MariadbService) DescribeDBEncryptAttributes(ctx context.Context, instanceId string) (encryptAttributes *mariadb.DescribeDBEncryptAttributesResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeDBEncryptAttributesRequest() ) @@ -1311,7 +1319,7 @@ func (me *MariadbService) DescribeDBEncryptAttributes(ctx context.Context, insta func (me *MariadbService) DescribeFlowById(ctx context.Context, flowId int64) (flowParams *mariadb.DescribeFlowResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mariadb.NewDescribeFlowRequest() ) @@ -1340,7 +1348,7 @@ func (me *MariadbService) DescribeFlowById(ctx context.Context, flowId int64) (f } func (me *MariadbService) DescribeMariadbAccountPrivilegesById(ctx context.Context, instanceId string, user string, host string) (accountPrivileges *mariadb.DescribeAccountPrivilegesResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewDescribeAccountPrivilegesRequest() request.InstanceId = &instanceId @@ -1368,7 +1376,7 @@ func (me *MariadbService) DescribeMariadbAccountPrivilegesById(ctx context.Conte } func (me *MariadbService) DescribeMariadbBackupTimeById(ctx context.Context, instanceId string) (backupTime *mariadb.DBBackupTimeConfig, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewDescribeBackupTimeRequest() request.InstanceIds = common.StringPtrs([]string{instanceId}) @@ -1397,7 +1405,7 @@ func (me *MariadbService) DescribeMariadbBackupTimeById(ctx context.Context, ins } func (me *MariadbService) DescribeDBInstanceDetailById(ctx context.Context, instanceId string) (dbDetail *mariadb.DescribeDBInstanceDetailResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mariadb.NewDescribeDBInstanceDetailRequest() request.InstanceId = &instanceId diff --git a/tencentcloud/services/mariadb/service_tencentcloud_tag.go b/tencentcloud/services/mariadb/service_tencentcloud_tag.go new file mode 100644 index 0000000000..4864952b1d --- /dev/null +++ b/tencentcloud/services/mariadb/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package mariadb + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/resource_tc_mdl_stream_live_input.go b/tencentcloud/services/mdl/resource_tc_mdl_stream_live_input.go similarity index 87% rename from tencentcloud/resource_tc_mdl_stream_live_input.go rename to tencentcloud/services/mdl/resource_tc_mdl_stream_live_input.go index 2bdd367a7f..cecff84d83 100644 --- a/tencentcloud/resource_tc_mdl_stream_live_input.go +++ b/tencentcloud/services/mdl/resource_tc_mdl_stream_live_input.go @@ -1,16 +1,19 @@ -package tencentcloud +package mdl import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mdl "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/mdl/v20200326" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMdlStreamLiveInput() *schema.Resource { +func ResourceTencentCloudMdlStreamLiveInput() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMdlStreamLiveInputCreate, Read: resourceTencentCloudMdlStreamLiveInputRead, @@ -102,10 +105,10 @@ func resourceTencentCloudMdlStreamLiveInput() *schema.Resource { } func resourceTencentCloudMdlStreamLiveInputCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mdl_stream_live_input.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mdl_stream_live_input.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mdl.NewCreateStreamLiveInputRequest() @@ -163,10 +166,10 @@ func resourceTencentCloudMdlStreamLiveInputCreate(d *schema.ResourceData, meta i } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMdlClient().CreateStreamLiveInput(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMdlClient().CreateStreamLiveInput(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -185,14 +188,14 @@ func resourceTencentCloudMdlStreamLiveInputCreate(d *schema.ResourceData, meta i } func resourceTencentCloudMdlStreamLiveInputRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mdl_stream_live_input.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mdl_stream_live_input.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MdlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MdlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} id := d.Id() @@ -271,10 +274,10 @@ func resourceTencentCloudMdlStreamLiveInputRead(d *schema.ResourceData, meta int } func resourceTencentCloudMdlStreamLiveInputUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mdl_streamlive_input.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mdl_streamlive_input.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mdl.NewModifyStreamLiveInputRequest() @@ -341,10 +344,10 @@ func resourceTencentCloudMdlStreamLiveInputUpdate(d *schema.ResourceData, meta i } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMdlClient().ModifyStreamLiveInput(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMdlClient().ModifyStreamLiveInput(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -360,13 +363,13 @@ func resourceTencentCloudMdlStreamLiveInputUpdate(d *schema.ResourceData, meta i } func resourceTencentCloudMdlStreamLiveInputDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mdl_stream_live_input.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mdl_stream_live_input.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MdlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MdlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} id := d.Id() if err := service.DeleteMdlStreamLiveInputById(ctx, id); err != nil { diff --git a/tencentcloud/resource_tc_mdl_stream_live_input_test.go b/tencentcloud/services/mdl/resource_tc_mdl_stream_live_input_test.go similarity index 75% rename from tencentcloud/resource_tc_mdl_stream_live_input_test.go rename to tencentcloud/services/mdl/resource_tc_mdl_stream_live_input_test.go index f09cbf6ebd..aff9905254 100644 --- a/tencentcloud/resource_tc_mdl_stream_live_input_test.go +++ b/tencentcloud/services/mdl/resource_tc_mdl_stream_live_input_test.go @@ -1,32 +1,34 @@ -package tencentcloud +package mdl_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudMdlStreamLiveInputResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_INTERNATIONAL) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_INTERNATIONAL) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMdlStreamLiveInput, - PreConfig: func() { testAccStepSetRegion(t, "ap-mumbai") }, + PreConfig: func() { tcacctest.AccStepSetRegion(t, "ap-mumbai") }, Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_mdl_stream_live_input.stream_live_input", "id")), }, { Config: testAccMdlStreamLiveInputUpdate, - PreConfig: func() { testAccStepSetRegion(t, "ap-mumbai") }, + PreConfig: func() { tcacctest.AccStepSetRegion(t, "ap-mumbai") }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_mdl_stream_live_input.stream_live_input", "id"), resource.TestCheckResourceAttr("tencentcloud_mdl_stream_live_input.stream_live_input", "name", "terraform_for_test"), ), }, { - PreConfig: func() { testAccStepSetRegion(t, "ap-mumbai") }, + PreConfig: func() { tcacctest.AccStepSetRegion(t, "ap-mumbai") }, ResourceName: "tencentcloud_mdl_stream_live_input.stream_live_input", ImportState: true, ImportStateVerify: true, diff --git a/tencentcloud/service_tencentcloud_mdl.go b/tencentcloud/services/mdl/service_tencentcloud_mdl.go similarity index 91% rename from tencentcloud/service_tencentcloud_mdl.go rename to tencentcloud/services/mdl/service_tencentcloud_mdl.go index c856e89a05..137f9d4216 100644 --- a/tencentcloud/service_tencentcloud_mdl.go +++ b/tencentcloud/services/mdl/service_tencentcloud_mdl.go @@ -1,10 +1,13 @@ -package tencentcloud +package mdl import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + mdl "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/mdl/v20200326" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) @@ -14,7 +17,7 @@ type MdlService struct { } func (me *MdlService) DescribeMdlStreamLiveInputById(ctx context.Context, id string) (streamliveInput *mdl.InputInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mdl.NewDescribeStreamLiveInputRequest() request.Id = &id @@ -42,7 +45,7 @@ func (me *MdlService) DescribeMdlStreamLiveInputById(ctx context.Context, id str } func (me *MdlService) DeleteMdlStreamLiveInputById(ctx context.Context, id string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mdl.NewDeleteStreamLiveInputRequest() request.Id = &id diff --git a/tencentcloud/data_source_tc_mongodb_instance_backups.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_backups.go similarity index 86% rename from tencentcloud/data_source_tc_mongodb_instance_backups.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_backups.go index f48e999a6f..5caec4d12b 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_backups.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_backups.go @@ -1,15 +1,18 @@ -package tencentcloud +package mongodb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMongodbInstanceBackups() *schema.Resource { +func DataSourceTencentCloudMongodbInstanceBackups() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMongodbInstanceBackupsRead, Schema: map[string]*schema.Schema{ @@ -90,12 +93,12 @@ func dataSourceTencentCloudMongodbInstanceBackups() *schema.Resource { } func dataSourceTencentCloudMongodbInstanceBackupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mongodb_instance_backups.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mongodb_instance_backups.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -106,14 +109,14 @@ func dataSourceTencentCloudMongodbInstanceBackupsRead(d *schema.ResourceData, me paramMap["backup_method"] = helper.IntInt64(v.(int)) } - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var backupList []*mongodb.BackupInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMongodbInstanceBackupsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } backupList = result return nil @@ -175,7 +178,7 @@ func dataSourceTencentCloudMongodbInstanceBackupsRead(d *schema.ResourceData, me d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mongodb_instance_backups_test.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_backups_test.go similarity index 54% rename from tencentcloud/data_source_tc_mongodb_instance_backups_test.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_backups_test.go index eb29c18d05..5502eb6b84 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_backups_test.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_backups_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mongodb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudMongodbInstanceBackupsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbInstanceBackupsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_backups.instance_backups")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_backups.instance_backups")), }, }, }) diff --git a/tencentcloud/data_source_tc_mongodb_instance_connections.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_connections.go similarity index 79% rename from tencentcloud/data_source_tc_mongodb_instance_connections.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_connections.go index c215a34853..534e71a3b3 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_connections.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_connections.go @@ -1,15 +1,18 @@ -package tencentcloud +package mongodb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMongodbInstanceConnections() *schema.Resource { +func DataSourceTencentCloudMongodbInstanceConnections() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMongodbInstanceConnectionsRead, Schema: map[string]*schema.Schema{ @@ -54,26 +57,26 @@ func dataSourceTencentCloudMongodbInstanceConnections() *schema.Resource { } func dataSourceTencentCloudMongodbInstanceConnectionsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mongodb_instance_connections.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mongodb_instance_connections.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { paramMap["instance_id"] = helper.String(v.(string)) } - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var clients []*mongodb.ClientConnection - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMongodbInstanceConnectionsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } clients = result return nil @@ -111,7 +114,7 @@ func dataSourceTencentCloudMongodbInstanceConnectionsRead(d *schema.ResourceData d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mongodb_instance_connections_test.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_connections_test.go similarity index 54% rename from tencentcloud/data_source_tc_mongodb_instance_connections_test.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_connections_test.go index 37118ccb33..8e2b669332 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_connections_test.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_connections_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mongodb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudMongodbInstanceConnectionsDataSource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbInstanceConnectionsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_connections.instance_connections")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_connections.instance_connections")), }, }, }) diff --git a/tencentcloud/data_source_tc_mongodb_instance_current_op.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_current_op.go similarity index 89% rename from tencentcloud/data_source_tc_mongodb_instance_current_op.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_current_op.go index 3394245b09..aab4efd619 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_current_op.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_current_op.go @@ -1,15 +1,18 @@ -package tencentcloud +package mongodb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMongodbInstanceCurrentOp() *schema.Resource { +func DataSourceTencentCloudMongodbInstanceCurrentOp() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMongodbInstanceCurrentOpRead, Schema: map[string]*schema.Schema{ @@ -126,12 +129,12 @@ func dataSourceTencentCloudMongodbInstanceCurrentOp() *schema.Resource { } func dataSourceTencentCloudMongodbInstanceCurrentOpRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mongodb_instance_current_op.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mongodb_instance_current_op.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -166,14 +169,14 @@ func dataSourceTencentCloudMongodbInstanceCurrentOpRead(d *schema.ResourceData, paramMap["order_by_type"] = helper.String(v.(string)) } - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var currentOps []*mongodb.CurrentOp - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMongodbInstanceCurrentOpByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } currentOps = result return nil @@ -235,7 +238,7 @@ func dataSourceTencentCloudMongodbInstanceCurrentOpRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mongodb_instance_current_op_test.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_current_op_test.go similarity index 56% rename from tencentcloud/data_source_tc_mongodb_instance_current_op_test.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_current_op_test.go index e810e3de70..7b5a872a96 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_current_op_test.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_current_op_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mongodb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudMongodbInstanceCurrentOpDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbInstanceCurrentOpDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_current_op.instance_current_op")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_current_op.instance_current_op")), }, }, }) diff --git a/tencentcloud/data_source_tc_mongodb_instance_params.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_params.go similarity index 94% rename from tencentcloud/data_source_tc_mongodb_instance_params.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_params.go index 97cb9704b1..c1f09a05be 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_params.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_params.go @@ -1,15 +1,18 @@ -package tencentcloud +package mongodb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMongodbInstanceParams() *schema.Resource { +func DataSourceTencentCloudMongodbInstanceParams() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMongodbInstanceParamsRead, Schema: map[string]*schema.Schema{ @@ -252,26 +255,26 @@ func dataSourceTencentCloudMongodbInstanceParams() *schema.Resource { } func dataSourceTencentCloudMongodbInstanceParamsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mongodb_instance_params.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mongodb_instance_params.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { paramMap["instance_id"] = helper.String(v.(string)) } - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var instanceParam *mongodb.DescribeInstanceParamsResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMongodbInstanceParams(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } instanceParam = result return nil @@ -471,7 +474,7 @@ func dataSourceTencentCloudMongodbInstanceParamsRead(d *schema.ResourceData, met d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), paramList); e != nil { + if e := tccommon.WriteToFile(output.(string), paramList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mongodb_instance_params_test.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_params_test.go similarity index 53% rename from tencentcloud/data_source_tc_mongodb_instance_params_test.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_params_test.go index 0dbb777374..8d9e1b80da 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_params_test.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_params_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mongodb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudMongodbInstanceParamsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbInstanceParamsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_params.instance_params")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_params.instance_params")), }, }, }) diff --git a/tencentcloud/data_source_tc_mongodb_instance_slow_log.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_slow_log.go similarity index 82% rename from tencentcloud/data_source_tc_mongodb_instance_slow_log.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_slow_log.go index 6645dc340e..973dfa7fcc 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_slow_log.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_slow_log.go @@ -1,14 +1,17 @@ -package tencentcloud +package mongodb import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMongodbInstanceSlowLog() *schema.Resource { +func DataSourceTencentCloudMongodbInstanceSlowLog() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMongodbInstanceSlowLogRead, Schema: map[string]*schema.Schema{ @@ -61,12 +64,12 @@ func dataSourceTencentCloudMongodbInstanceSlowLog() *schema.Resource { } func dataSourceTencentCloudMongodbInstanceSlowLogRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mongodb_instance_slow_log.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mongodb_instance_slow_log.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { @@ -89,14 +92,14 @@ func dataSourceTencentCloudMongodbInstanceSlowLogRead(d *schema.ResourceData, me paramMap["format"] = helper.String(v.(string)) } - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var slowLogs []*string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMongodbInstanceSlowLogByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } slowLogs = result return nil @@ -117,7 +120,7 @@ func dataSourceTencentCloudMongodbInstanceSlowLogRead(d *schema.ResourceData, me d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), slowLogs); e != nil { + if e := tccommon.WriteToFile(output.(string), slowLogs); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mongodb_instance_slow_log_test.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_slow_log_test.go similarity index 58% rename from tencentcloud/data_source_tc_mongodb_instance_slow_log_test.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instance_slow_log_test.go index 0f2cbde773..9aa535facf 100644 --- a/tencentcloud/data_source_tc_mongodb_instance_slow_log_test.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instance_slow_log_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mongodb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudMongodbInstanceSlowLogDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbInstanceSlowLogDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_slow_log.instance_slow_log")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mongodb_instance_slow_log.instance_slow_log")), }, }, }) diff --git a/tencentcloud/data_source_tc_mongodb_instances.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instances.go similarity index 92% rename from tencentcloud/data_source_tc_mongodb_instances.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instances.go index 68d89c2f79..1c1aeee9c7 100644 --- a/tencentcloud/data_source_tc_mongodb_instances.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instances.go @@ -1,4 +1,4 @@ -package tencentcloud +package mongodb import ( "context" @@ -7,11 +7,14 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMongodbInstances() *schema.Resource { +func DataSourceTencentCloudMongodbInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMongodbInstancesRead, @@ -29,7 +32,7 @@ func dataSourceTencentCloudMongodbInstances() *schema.Resource { "cluster_type": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(MONGODB_CLUSTER_TYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(MONGODB_CLUSTER_TYPE), Description: "Type of Mongodb cluster, and available values include replica set cluster(expressed with `REPLSET`), sharding cluster(expressed with `SHARD`).", }, "tags": { @@ -159,10 +162,10 @@ func dataSourceTencentCloudMongodbInstances() *schema.Resource { } func dataSourceTencentCloudMongodbInstancesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mongodb_instances.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_mongodb_instances.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := "" clusterType := -1 @@ -184,7 +187,7 @@ func dataSourceTencentCloudMongodbInstancesRead(d *schema.ResourceData, meta int tags := helper.GetTags(d, "tags") - mongodbService := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + mongodbService := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} mongodbs, err := mongodbService.DescribeInstancesByFilter(ctx, instanceId, clusterType) if err != nil { return err @@ -195,7 +198,7 @@ func dataSourceTencentCloudMongodbInstancesRead(d *schema.ResourceData, meta int instancesLoop: for _, mongo := range mongodbs { - if nilFields := CheckNil(mongo, map[string]string{ + if nilFields := tccommon.CheckNil(mongo, map[string]string{ "InstanceId": "instance id", "InstanceName": "instance name", "ProjectId": "project id", @@ -288,7 +291,7 @@ instancesLoop: output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if err := writeToFile(output.(string), instanceList); err != nil { + if err := tccommon.WriteToFile(output.(string), instanceList); err != nil { return err } } diff --git a/tencentcloud/data_source_tc_mongodb_instances_test.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_instances_test.go similarity index 67% rename from tencentcloud/data_source_tc_mongodb_instances_test.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_instances_test.go index 18185747ba..5185fd5b13 100644 --- a/tencentcloud/data_source_tc_mongodb_instances_test.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_instances_test.go @@ -1,20 +1,22 @@ -package tencentcloud +package mongodb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudMongodbInstancesDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckMongodbInstanceDestroy, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbInstancesDataSource, Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_instances.mongodb_instances", "instance_list.#"), diff --git a/tencentcloud/data_source_tc_mongodb_zone_config.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_zone_config.go similarity index 87% rename from tencentcloud/data_source_tc_mongodb_zone_config.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_zone_config.go index 073c6a8c40..520ee3d511 100644 --- a/tencentcloud/data_source_tc_mongodb_zone_config.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_zone_config.go @@ -1,13 +1,15 @@ -package tencentcloud +package mongodb import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func dataSourceTencentCloudMongodbZoneConfig() *schema.Resource { +func DataSourceTencentCloudMongodbZoneConfig() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMongodbZoneConfigRead, @@ -91,17 +93,17 @@ func dataSourceTencentCloudMongodbZoneConfig() *schema.Resource { } func dataSourceTencentCloudMongodbZoneConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mongodb_zone_config.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_mongodb_zone_config.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) zone := "" if v, ok := d.GetOk("available_zone"); ok { zone = v.(string) } mongodbService := MongodbService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } infos, err := mongodbService.DescribeSpecInfo(ctx, zone) if err != nil { @@ -134,7 +136,7 @@ func dataSourceTencentCloudMongodbZoneConfigRead(d *schema.ResourceData, meta in id := zone if id == "" { - id = meta.(*TencentCloudClient).apiV3Conn.Region + id = meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region } d.SetId(id) if err = d.Set("list", configList); err != nil { @@ -144,7 +146,7 @@ func dataSourceTencentCloudMongodbZoneConfigRead(d *schema.ResourceData, meta in output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if err := writeToFile(output.(string), configList); err != nil { + if err := tccommon.WriteToFile(output.(string), configList); err != nil { return err } } diff --git a/tencentcloud/data_source_tc_mongodb_zone_config_test.go b/tencentcloud/services/mongodb/data_source_tc_mongodb_zone_config_test.go similarity index 77% rename from tencentcloud/data_source_tc_mongodb_zone_config_test.go rename to tencentcloud/services/mongodb/data_source_tc_mongodb_zone_config_test.go index 432ff4fd2d..6752912ac6 100644 --- a/tencentcloud/data_source_tc_mongodb_zone_config_test.go +++ b/tencentcloud/services/mongodb/data_source_tc_mongodb_zone_config_test.go @@ -1,23 +1,25 @@ -package tencentcloud +package mongodb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudMongodbZoneConfigDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbZoneConfigDataSource, Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_zone_config.zone_config", "list.#"), - resource.TestCheckResourceAttr("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.available_zone", defaultAZone), + resource.TestCheckResourceAttr("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.available_zone", tcacctest.DefaultAZone), resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.cluster_type"), resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.machine_type"), resource.TestCheckResourceAttrSet("data.tencentcloud_mongodb_zone_config.zone_config", "list.0.cpu"), @@ -32,7 +34,7 @@ func TestAccTencentCloudMongodbZoneConfigDataSource(t *testing.T) { }) } -const testAccMongodbZoneConfigDataSource = defaultAzVariable + ` +const testAccMongodbZoneConfigDataSource = tcacctest.DefaultAzVariable + ` data "tencentcloud_mongodb_zone_config" "zone_config" { available_zone = var.default_az } diff --git a/tencentcloud/extension_mongodb.go b/tencentcloud/services/mongodb/extension_mongodb.go similarity index 93% rename from tencentcloud/extension_mongodb.go rename to tencentcloud/services/mongodb/extension_mongodb.go index 1c442c627f..84c99ced5f 100644 --- a/tencentcloud/extension_mongodb.go +++ b/tencentcloud/services/mongodb/extension_mongodb.go @@ -1,7 +1,9 @@ -package tencentcloud +package mongodb import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) @@ -70,19 +72,19 @@ func TencentMongodbBasicInfo() map[string]*schema.Schema { "instance_name": { Type: schema.TypeString, Required: true, - ValidateFunc: validateStringLengthInRange(2, 35), + ValidateFunc: tccommon.ValidateStringLengthInRange(2, 35), Description: "Name of the Mongodb instance.", }, "memory": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerMin(2), + ValidateFunc: tccommon.ValidateIntegerMin(2), Description: "Memory size. The minimum value is 2, and unit is GB. Memory and volume must be upgraded or degraded simultaneously.", }, "volume": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerMin(25), + ValidateFunc: tccommon.ValidateIntegerMin(25), Description: "Disk size. The minimum value is 25, and unit is GB. Memory and volume must be upgraded or degraded simultaneously.", }, "engine_version": { @@ -179,13 +181,13 @@ func TencentMongodbBasicInfo() map[string]*schema.Schema { Optional: true, ForceNew: true, Default: MONGODB_CHARGE_TYPE_POSTPAID, - ValidateFunc: validateAllowedStringValue([]string{MONGODB_CHARGE_TYPE_POSTPAID, MONGODB_CHARGE_TYPE_PREPAID}), + ValidateFunc: tccommon.ValidateAllowedStringValue([]string{MONGODB_CHARGE_TYPE_POSTPAID, MONGODB_CHARGE_TYPE_PREPAID}), Description: "The charge type of instance. Valid values are `PREPAID` and `POSTPAID_BY_HOUR`. Default value is `POSTPAID_BY_HOUR`. Note: TencentCloud International only supports `POSTPAID_BY_HOUR`. Caution that update operation on this field will delete old instances and create new one with new charge type.", }, "prepaid_period": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateAllowedIntValue(MONGODB_PREPAID_PERIOD), + ValidateFunc: tccommon.ValidateAllowedIntValue(MONGODB_PREPAID_PERIOD), Description: "The tenancy (time unit is month) of the prepaid instance. Valid values are 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36. NOTE: it only works when charge_type is set to `PREPAID`.", }, "auto_renew_flag": { diff --git a/tencentcloud/services/mongodb/extension_postgresql.go b/tencentcloud/services/mongodb/extension_postgresql.go new file mode 100644 index 0000000000..379ab35e9e --- /dev/null +++ b/tencentcloud/services/mongodb/extension_postgresql.go @@ -0,0 +1,57 @@ +package mongodb + +const ( + POSTGRESQL_PAYTYPE_PREPAID = "prepaid" + POSTGRESQL_PAYTYPE_POSTPAID = "postpaid" +) + +const ( + COMMON_PAYTYPE_PREPAID = "PREPAID" + COMMON_PAYTYPE_POSTPAID = "POSTPAID_BY_HOUR" +) + +var POSTGRESQL_PAYTYPE = []string{COMMON_PAYTYPE_POSTPAID} + +const ( + POSTGRESQL_DB_VERSION_9_3_5 = "9.3.5" + POSTGRESQL_DB_VERSION_9_5_4 = "9.5.4" + POSTGRESQL_DB_VERSION_10_4 = "10.4" +) + +const ( + POSTGRESQL_KERNEL_UPGRADE_IMMEDIATELY = 0 + POSTGRESQL_KERNEL_UPGRADE_SPECIFIED_TIME = 1 + POSTGRESQL_KERNEL_UPGRADE_MAINTAIN_WINDOW = 2 +) + +var POSTSQL_DB_VERSION = []string{POSTGRESQL_DB_VERSION_9_3_5, POSTGRESQL_DB_VERSION_9_5_4, POSTGRESQL_DB_VERSION_10_4} + +const ( + POSTGRESQL_DB_CHARSET_UTF8 = "UTF8" + POSTGRESQL_DB_CHARSET_LATIN1 = "LATIN1" +) + +var POSTGRESQL_DB_CHARSET = []string{POSTGRESQL_DB_CHARSET_UTF8, POSTGRESQL_DB_CHARSET_LATIN1} + +const ( + POSTGRESQL_STAUTS_RUNNING = "running" + POSTGRESQL_STAUTS_ISOLATED = "isolated" +) + +var POSTGRESQL_RETRYABLE_STATUS = []string{ + "initing", + "expanding", + "switching", + // deployment changing not exposed at response struct but actually exists + "deployment changing", +} + +const ( + SYNC_MODE_SEMI = "Semi-sync" + SYNC_MODE_ASYNC = "Async" +) + +var SYNC_MODE = []string{ + SYNC_MODE_SEMI, + SYNC_MODE_ASYNC, +} diff --git a/tencentcloud/services/mongodb/extension_tags.go b/tencentcloud/services/mongodb/extension_tags.go new file mode 100644 index 0000000000..05b69a8e6d --- /dev/null +++ b/tencentcloud/services/mongodb/extension_tags.go @@ -0,0 +1,3 @@ +package mongodb + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/resource_tc_mongodb_instance.go b/tencentcloud/services/mongodb/resource_tc_mongodb_instance.go similarity index 90% rename from tencentcloud/resource_tc_mongodb_instance.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_instance.go index c48bfd9b64..828940b4df 100644 --- a/tencentcloud/resource_tc_mongodb_instance.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_instance.go @@ -1,4 +1,4 @@ -package tencentcloud +package mongodb import ( "context" @@ -7,9 +7,12 @@ import ( "reflect" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) @@ -17,7 +20,7 @@ import ( //internal version: replace import begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. //internal version: replace import end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. -func resourceTencentCloudMongodbInstance() *schema.Resource { +func ResourceTencentCloudMongodbInstance() *schema.Resource { mongodbInstanceInfo := map[string]*schema.Schema{ "standby_instance_list": { Type: schema.TypeList, @@ -176,7 +179,7 @@ func mongodbAllInstanceReqSet(requestInter interface{}, d *schema.ResourceData) } func mongodbCreateInstanceByUse(ctx context.Context, d *schema.ResourceData, meta interface{}) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewCreateDBInstanceHourRequest() if err := mongodbAllInstanceReqSet(request, d); err != nil { @@ -185,12 +188,12 @@ func mongodbCreateInstanceByUse(ctx context.Context, d *schema.ResourceData, met var response *mongodb.CreateDBInstanceHourResponse var err error - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) - response, err = meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().CreateDBInstanceHour(request) + response, err = meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().CreateDBInstanceHour(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), err.Error()) - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -207,7 +210,7 @@ func mongodbCreateInstanceByUse(ctx context.Context, d *schema.ResourceData, met } func mongodbCreateInstanceByMonth(ctx context.Context, d *schema.ResourceData, meta interface{}) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewCreateDBInstanceRequest() if err := mongodbAllInstanceReqSet(request, d); err != nil { @@ -216,14 +219,14 @@ func mongodbCreateInstanceByMonth(ctx context.Context, d *schema.ResourceData, m var response *mongodb.CreateDBInstanceResponse var err error - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) - response, err = meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().CreateDBInstance(request) + response, err = meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().CreateDBInstance(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), err.Error()) //internal version: replace bpass begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. //internal version: replace bpass end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -240,12 +243,12 @@ func mongodbCreateInstanceByMonth(ctx context.Context, d *schema.ResourceData, m } func resourceTencentCloudMongodbInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance.create")() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() mongodbService := MongodbService{client: client} tagService := TagService{client: client} region := client.Region @@ -295,7 +298,7 @@ func resourceTencentCloudMongodbInstanceCreate(d *schema.ResourceData, meta inte //internal version: replace begin begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. //internal version: replace begin end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - resourceName := BuildTagResourceName("mongodb", "instance", region, instanceId) + resourceName := tccommon.BuildTagResourceName("mongodb", "instance", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err } @@ -306,12 +309,12 @@ func resourceTencentCloudMongodbInstanceCreate(d *schema.ResourceData, meta inte } func resourceTencentCloudMongodbInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - client := meta.(*TencentCloudClient).apiV3Conn + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() instanceId := d.Id() @@ -326,7 +329,7 @@ func resourceTencentCloudMongodbInstanceRead(d *schema.ResourceData, meta interf return nil } - if nilFields := CheckNil(instance, map[string]string{ + if nilFields := tccommon.CheckNil(instance, map[string]string{ "InstanceName": "instance name", "ProjectId": "project id", "Zone": "available zone", @@ -428,14 +431,14 @@ func resourceTencentCloudMongodbInstanceRead(d *schema.ResourceData, meta interf } func resourceTencentCloudMongodbInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance.update")() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() mongodbService := MongodbService{client: client} tagService := TagService{client: client} region := client.Region @@ -459,7 +462,7 @@ func resourceTencentCloudMongodbInstanceUpdate(d *schema.ResourceData, meta inte } // it will take time to wait for memory and volume change even describe request succeeded even the status returned in describe response is running - errUpdate := resource.Retry(20*readRetryTimeout, func() *resource.RetryError { + errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError { infos, has, e := mongodbService.DescribeInstanceById(ctx, instanceId) if e != nil { return resource.NonRetryableError(e) @@ -512,7 +515,7 @@ func resourceTencentCloudMongodbInstanceUpdate(d *schema.ResourceData, meta inte oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("mongodb", "instance", region, instanceId) + resourceName := tccommon.BuildTagResourceName("mongodb", "instance", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -561,14 +564,14 @@ func resourceTencentCloudMongodbInstanceUpdate(d *schema.ResourceData, meta inte } func resourceTencentCloudMongodbInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() mongodbService := MongodbService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } instanceDetail, has, err := mongodbService.DescribeInstanceById(ctx, instanceId) diff --git a/tencentcloud/resource_tc_mongodb_instance_account.go b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_account.go similarity index 76% rename from tencentcloud/resource_tc_mongodb_instance_account.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_instance_account.go index 50647cb283..f642fc904c 100644 --- a/tencentcloud/resource_tc_mongodb_instance_account.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_account.go @@ -1,4 +1,4 @@ -package tencentcloud +package mongodb import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMongodbInstanceAccount() *schema.Resource { +func ResourceTencentCloudMongodbInstanceAccount() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMongodbInstanceAccountCreate, Read: resourceTencentCloudMongodbInstanceAccountRead, @@ -76,10 +79,10 @@ func resourceTencentCloudMongodbInstanceAccount() *schema.Resource { } func resourceTencentCloudMongodbInstanceAccountCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance_account.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_account.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mongodb.NewCreateAccountUserRequest() @@ -123,10 +126,10 @@ func resourceTencentCloudMongodbInstanceAccountCreate(d *schema.ResourceData, me } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().CreateAccountUser(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().CreateAccountUser(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -138,13 +141,13 @@ func resourceTencentCloudMongodbInstanceAccountCreate(d *schema.ResourceData, me return err } - d.SetId(instanceId + FILED_SP + userName) + d.SetId(instanceId + tccommon.FILED_SP + userName) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if response != nil && response.Response != nil { - if err = service.DescribeAsyncRequestInfo(ctx, helper.UInt64ToStr(*response.Response.FlowId), 3*readRetryTimeout); err != nil { + if err = service.DescribeAsyncRequestInfo(ctx, helper.UInt64ToStr(*response.Response.FlowId), 3*tccommon.ReadRetryTimeout); err != nil { return err } } @@ -153,16 +156,16 @@ func resourceTencentCloudMongodbInstanceAccountCreate(d *schema.ResourceData, me } func resourceTencentCloudMongodbInstanceAccountRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance_account.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_account.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -214,14 +217,14 @@ func resourceTencentCloudMongodbInstanceAccountRead(d *schema.ResourceData, meta } func resourceTencentCloudMongodbInstanceAccountUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance_account.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_account.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mongodb.NewSetAccountUserPrivilegeRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -255,10 +258,10 @@ func resourceTencentCloudMongodbInstanceAccountUpdate(d *schema.ResourceData, me } var response *mongodb.SetAccountUserPrivilegeResponse - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().SetAccountUserPrivilege(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().SetAccountUserPrivilege(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -270,19 +273,19 @@ func resourceTencentCloudMongodbInstanceAccountUpdate(d *schema.ResourceData, me return err } - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} if response != nil && response.Response != nil { - if err = service.DescribeAsyncRequestInfo(ctx, helper.UInt64ToStr(*response.Response.FlowId), 3*readRetryTimeout); err != nil { + if err = service.DescribeAsyncRequestInfo(ctx, helper.UInt64ToStr(*response.Response.FlowId), 3*tccommon.ReadRetryTimeout); err != nil { return err } } } if d.HasChange("password") { - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} password := d.Get("password").(string) err := service.ResetInstancePassword(ctx, instanceId, userName, password) if err != nil { @@ -295,14 +298,14 @@ func resourceTencentCloudMongodbInstanceAccountUpdate(d *schema.ResourceData, me } func resourceTencentCloudMongodbInstanceAccountDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance_account.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_account.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_mongodb_instance_account_test.go b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_account_test.go similarity index 81% rename from tencentcloud/resource_tc_mongodb_instance_account_test.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_instance_account_test.go index 1899b77ec4..b2db4f5846 100644 --- a/tencentcloud/resource_tc_mongodb_instance_account_test.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_account_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mongodb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixMongodbInstanceAccountResource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMongodbInstanceAccount, diff --git a/tencentcloud/resource_tc_mongodb_instance_backup.go b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup.go similarity index 73% rename from tencentcloud/resource_tc_mongodb_instance_backup.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup.go index 8e868e25b0..e4ab8d3e45 100644 --- a/tencentcloud/resource_tc_mongodb_instance_backup.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup.go @@ -1,17 +1,20 @@ -package tencentcloud +package mongodb import ( "context" "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMongodbInstanceBackup() *schema.Resource { +func ResourceTencentCloudMongodbInstanceBackup() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMongodbInstanceBackupCreate, Read: resourceTencentCloudMongodbInstanceBackupRead, @@ -45,10 +48,10 @@ func resourceTencentCloudMongodbInstanceBackup() *schema.Resource { } func resourceTencentCloudMongodbInstanceBackupCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mongodb_instance_backup.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mongodb_instance_backup.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mongodb.NewCreateBackupDBInstanceRequest() @@ -67,10 +70,10 @@ func resourceTencentCloudMongodbInstanceBackupCreate(d *schema.ResourceData, met request.BackupRemark = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().CreateBackupDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().CreateBackupDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -85,9 +88,9 @@ func resourceTencentCloudMongodbInstanceBackupCreate(d *schema.ResourceData, met taskId = *response.Response.AsyncRequestId d.SetId(taskId) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} timeout := d.Timeout(schema.TimeoutCreate) if response != nil && response.Response != nil { @@ -100,15 +103,15 @@ func resourceTencentCloudMongodbInstanceBackupCreate(d *schema.ResourceData, met } func resourceTencentCloudMongodbInstanceBackupRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance_backup.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMongodbInstanceBackupDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance_backup.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mongodb_instance_backup_download_task.go b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_download_task.go similarity index 75% rename from tencentcloud/resource_tc_mongodb_instance_backup_download_task.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_download_task.go index 310c8729c8..e1908cf292 100644 --- a/tencentcloud/resource_tc_mongodb_instance_backup_download_task.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_download_task.go @@ -1,27 +1,4 @@ -/* -Provides a resource to create a mongodb instance_backup_download_task - -Example Usage - -```hcl -resource "tencentcloud_mongodb_instance_backup_download_task" "instance_backup_download_task" { - instance_id = "cmgo-b43i3wkj" - backup_name = "cmgo-b43i3wkj_2023-05-09 14:54" - backup_sets { - replica_set_id = "cmgo-b43i3wkj_0" - } -} -``` - -Import - -mongodb instance_backup_download_task can be imported using the id, e.g. - -``` -terraform import tencentcloud_mongodb_instance_backup_download_task.instance_backup_download_task instanceId#backupName -``` -*/ -package tencentcloud +package mongodb import ( "context" @@ -32,10 +9,12 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMongodbInstanceBackupDownloadTask() *schema.Resource { +func ResourceTencentCloudMongodbInstanceBackupDownloadTask() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMongodbInstanceBackupDownloadTaskCreate, Read: resourceTencentCloudMongodbInstanceBackupDownloadTaskRead, @@ -78,10 +57,10 @@ func resourceTencentCloudMongodbInstanceBackupDownloadTask() *schema.Resource { } func resourceTencentCloudMongodbInstanceBackupDownloadTaskCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance_backup_download_task.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup_download_task.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mongodb.NewCreateBackupDownloadTaskRequest() @@ -109,10 +88,10 @@ func resourceTencentCloudMongodbInstanceBackupDownloadTaskCreate(d *schema.Resou } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().CreateBackupDownloadTask(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().CreateBackupDownloadTask(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -123,22 +102,22 @@ func resourceTencentCloudMongodbInstanceBackupDownloadTaskCreate(d *schema.Resou return err } - d.SetId(instanceId + FILED_SP + backupName) + d.SetId(instanceId + tccommon.FILED_SP + backupName) return resourceTencentCloudMongodbInstanceBackupDownloadTaskRead(d, meta) } func resourceTencentCloudMongodbInstanceBackupDownloadTaskRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance_backup_download_task.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup_download_task.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -175,8 +154,8 @@ func resourceTencentCloudMongodbInstanceBackupDownloadTaskRead(d *schema.Resourc } func resourceTencentCloudMongodbInstanceBackupDownloadTaskDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_instance_backup_download_task.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_instance_backup_download_task.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_download_task.md b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_download_task.md new file mode 100644 index 0000000000..4b35668cea --- /dev/null +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_download_task.md @@ -0,0 +1,21 @@ +Provides a resource to create a mongodb instance_backup_download_task + +Example Usage + +```hcl +resource "tencentcloud_mongodb_instance_backup_download_task" "instance_backup_download_task" { + instance_id = "cmgo-b43i3wkj" + backup_name = "cmgo-b43i3wkj_2023-05-09 14:54" + backup_sets { + replica_set_id = "cmgo-b43i3wkj_0" + } +} +``` + +Import + +mongodb instance_backup_download_task can be imported using the id, e.g. + +``` +terraform import tencentcloud_mongodb_instance_backup_download_task.instance_backup_download_task instanceId#backupName +``` diff --git a/tencentcloud/resource_tc_mongodb_instance_backup_download_task_test.go b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_download_task_test.go similarity index 78% rename from tencentcloud/resource_tc_mongodb_instance_backup_download_task_test.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_download_task_test.go index a91e3a9444..a7a31764d8 100644 --- a/tencentcloud/resource_tc_mongodb_instance_backup_download_task_test.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_download_task_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package mongodb_test import ( "testing" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" ) func TestAccTencentCloudMongodbInstanceBackupDownloadTaskResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbInstanceBackupDownloadTask, Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance_backup_download_task.instance_backup_download_task", "id")), }, diff --git a/tencentcloud/resource_tc_mongodb_instance_backup_test.go b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_test.go similarity index 78% rename from tencentcloud/resource_tc_mongodb_instance_backup_test.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_test.go index e8ad038ade..f966df1bd7 100644 --- a/tencentcloud/resource_tc_mongodb_instance_backup_test.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_backup_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mongodb_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNNeedFixMongodbInstanceBackupResource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMongodbInstanceBackup, diff --git a/tencentcloud/resource_tc_mongodb_instance_test.go b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_test.go similarity index 81% rename from tencentcloud/resource_tc_mongodb_instance_test.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_instance_test.go index 1a05d90378..81646e76e8 100644 --- a/tencentcloud/resource_tc_mongodb_instance_test.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_instance_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package mongodb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcmongodb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mongodb" + "context" "fmt" "log" @@ -17,11 +21,11 @@ func init() { resource.AddTestSweepers("tencentcloud_mongodb_instance", &resource.Sweeper{ Name: "tencentcloud_mongodb_instance", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - client := cli.(*TencentCloudClient).apiV3Conn - service := MongodbService{client} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + client := cli.(tccommon.ProviderMeta).GetAPIV3Conn() + service := svcmongodb.NewMongodbService(client) instances, err := service.DescribeInstancesByFilter(ctx, "", -1) if err != nil { @@ -35,7 +39,7 @@ func init() { id := *ins.InstanceId name := *ins.InstanceName - if strings.HasPrefix(name, keepResource) || strings.HasPrefix(name, defaultResource) { + if strings.HasPrefix(name, tcacctest.KeepResource) || strings.HasPrefix(name, tcacctest.DefaultResource) { continue } @@ -43,7 +47,7 @@ func init() { if err != nil { created = time.Time{} } - if isResourcePersist(name, &created) { + if tcacctest.IsResourcePersist(name, &created) { continue } log.Printf("%s (%s) will Isolated", id, name) @@ -70,12 +74,12 @@ func init() { func TestAccTencentCloudMongodbInstanceResourcePostPaid(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckMongodbInstanceDestroy, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccMongodbInstance, Check: resource.ComposeTestCheckFunc( testAccCheckMongodbInstanceExists("tencentcloud_mongodb_instance.mongodb"), @@ -91,7 +95,7 @@ func TestAccTencentCloudMongodbInstanceResourcePostPaid(t *testing.T) { resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "vport"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb", "create_time"), resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "tags.test", "test"), - resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "charge_type", MONGODB_CHARGE_TYPE_POSTPAID), + resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "charge_type", svcmongodb.MONGODB_CHARGE_TYPE_POSTPAID), resource.TestCheckNoResourceAttr("tencentcloud_mongodb_instance.mongodb", "prepaid_period"), ), }, @@ -106,7 +110,7 @@ func TestAccTencentCloudMongodbInstanceResourcePostPaid(t *testing.T) { log.Printf("[WARN] MongoDB Update Need DealID query available, skip checking.") return true, nil }, - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccMongodbInstance_update, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb", "instance_name", "tf-mongodb-update"), @@ -123,12 +127,12 @@ func TestAccTencentCloudMongodbInstanceResourcePostPaid(t *testing.T) { func TestAccTencentCloudMongodbInstanceResource_multiZone(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckMongodbInstanceDestroy, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccMongodbInstance_multiZone, Check: resource.ComposeTestCheckFunc( testAccCheckMongodbInstanceExists("tencentcloud_mongodb_instance.mongodb_mutil_zone"), @@ -144,11 +148,11 @@ func TestAccTencentCloudMongodbInstanceResource_multiZone(t *testing.T) { func TestAccTencentCloudMongodbInstanceResourcePrepaid(t *testing.T) { // Avoid to set Parallel to make sure EnvVar secure resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccMongodbInstancePrepaid, Check: resource.ComposeTestCheckFunc( testAccCheckMongodbInstanceExists("tencentcloud_mongodb_instance.mongodb_prepaid"), @@ -164,13 +168,13 @@ func TestAccTencentCloudMongodbInstanceResourcePrepaid(t *testing.T) { resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb_prepaid", "vport"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_instance.mongodb_prepaid", "create_time"), resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "tags.test", "test-prepaid"), - resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "charge_type", MONGODB_CHARGE_TYPE_PREPAID), + resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "charge_type", svcmongodb.MONGODB_CHARGE_TYPE_PREPAID), resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "prepaid_period", "1"), resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "auto_renew_flag", "1"), ), }, { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccMongodbInstancePrepaid_update, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("tencentcloud_mongodb_instance.mongodb_prepaid", "instance_name", "tf-mongodb-test-prepaid-update"), @@ -189,12 +193,10 @@ func TestAccTencentCloudMongodbInstanceResourcePrepaid(t *testing.T) { } func testAccCheckMongodbInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - mongodbService := MongodbService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + mongodbService := svcmongodb.NewMongodbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_mongodb_instance" { continue @@ -214,8 +216,8 @@ func testAccCheckMongodbInstanceDestroy(s *terraform.State) error { func testAccCheckMongodbInstanceExists(n string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[n] if !ok { @@ -224,9 +226,7 @@ func testAccCheckMongodbInstanceExists(n string) resource.TestCheckFunc { if rs.Primary.ID == "" { return fmt.Errorf("mongodb instance id is not set") } - mongodbService := MongodbService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + mongodbService := svcmongodb.NewMongodbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := mongodbService.DescribeInstanceById(ctx, rs.Primary.ID) if err != nil { return err @@ -238,7 +238,7 @@ func testAccCheckMongodbInstanceExists(n string) resource.TestCheckFunc { } } -const testAccMongodbInstance = DefaultMongoDBSpec + ` +const testAccMongodbInstance = tcacctest.DefaultMongoDBSpec + ` resource "tencentcloud_mongodb_instance" "mongodb" { instance_name = "tf-mongodb-test" memory = local.memory @@ -258,7 +258,7 @@ resource "tencentcloud_mongodb_instance" "mongodb" { } ` -const testAccMongodbInstance_update = DefaultMongoDBSpec + ` +const testAccMongodbInstance_update = tcacctest.DefaultMongoDBSpec + ` resource "tencentcloud_mongodb_instance" "mongodb" { instance_name = "tf-mongodb-update" memory = local.memory * 2 @@ -278,7 +278,7 @@ resource "tencentcloud_mongodb_instance" "mongodb" { } ` -const testAccMongodbInstancePrepaid = DefaultMongoDBSpec + ` +const testAccMongodbInstancePrepaid = tcacctest.DefaultMongoDBSpec + ` resource "tencentcloud_mongodb_instance" "mongodb_prepaid" { instance_name = "tf-mongodb-test-prepaid" memory = local.memory @@ -301,7 +301,7 @@ resource "tencentcloud_mongodb_instance" "mongodb_prepaid" { } ` -const testAccMongodbInstancePrepaid_update = DefaultMongoDBSpec + ` +const testAccMongodbInstancePrepaid_update = tcacctest.DefaultMongoDBSpec + ` resource "tencentcloud_mongodb_instance" "mongodb_prepaid" { instance_name = "tf-mongodb-test-prepaid-update" memory = local.memory @@ -324,7 +324,7 @@ resource "tencentcloud_mongodb_instance" "mongodb_prepaid" { } ` -const testAccMongodbInstance_multiZone = DefaultMongoDBSpec + ` +const testAccMongodbInstance_multiZone = tcacctest.DefaultMongoDBSpec + ` resource "tencentcloud_mongodb_instance" "mongodb_mutil_zone" { instance_name = "mongodb-mutil-zone-test" memory = local.memory diff --git a/tencentcloud/resource_tc_mongodb_sharding_instance.go b/tencentcloud/services/mongodb/resource_tc_mongodb_sharding_instance.go similarity index 87% rename from tencentcloud/resource_tc_mongodb_sharding_instance.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_sharding_instance.go index a87b4148b8..c795043517 100644 --- a/tencentcloud/resource_tc_mongodb_sharding_instance.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_sharding_instance.go @@ -1,4 +1,4 @@ -package tencentcloud +package mongodb import ( "context" @@ -8,27 +8,30 @@ import ( "reflect" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func resourceTencentCloudMongodbShardingInstance() *schema.Resource { +func ResourceTencentCloudMongodbShardingInstance() *schema.Resource { mongodbShardingInstanceInfo := map[string]*schema.Schema{ "shard_quantity": { Type: schema.TypeInt, Required: true, ForceNew: true, - ValidateFunc: validateIntegerInRange(2, 20), + ValidateFunc: tccommon.ValidateIntegerInRange(2, 20), Description: "Number of sharding.", }, "nodes_per_shard": { Type: schema.TypeInt, Required: true, ForceNew: true, - ValidateFunc: validateIntegerInRange(3, 5), + ValidateFunc: tccommon.ValidateIntegerInRange(3, 5), Description: "Number of nodes per shard, at least 3(one master and two slaves).", }, "availability_zone_list": { @@ -165,7 +168,7 @@ func mongodbAllShardingInstanceReqSet(requestInter interface{}, d *schema.Resour } func mongodbCreateShardingInstanceByUse(ctx context.Context, d *schema.ResourceData, meta interface{}) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewCreateDBInstanceHourRequest() if err := mongodbAllShardingInstanceReqSet(request, d); err != nil { @@ -174,12 +177,12 @@ func mongodbCreateShardingInstanceByUse(ctx context.Context, d *schema.ResourceD var response *mongodb.CreateDBInstanceHourResponse var err error - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) - response, err = meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().CreateDBInstanceHour(request) + response, err = meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().CreateDBInstanceHour(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), err.Error()) - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -196,7 +199,7 @@ func mongodbCreateShardingInstanceByUse(ctx context.Context, d *schema.ResourceD } func mongodbCreateShardingInstanceByMonth(ctx context.Context, d *schema.ResourceData, meta interface{}) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewCreateDBInstanceRequest() if err := mongodbAllShardingInstanceReqSet(request, d); err != nil { @@ -205,12 +208,12 @@ func mongodbCreateShardingInstanceByMonth(ctx context.Context, d *schema.Resourc var response *mongodb.CreateDBInstanceResponse var err error - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) - response, err = meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().CreateDBInstance(request) + response, err = meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().CreateDBInstance(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), err.Error()) - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -227,12 +230,12 @@ func mongodbCreateShardingInstanceByMonth(ctx context.Context, d *schema.Resourc } func resourceMongodbShardingInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_sharding_instance.create")() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_sharding_instance.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() mongodbService := MongodbService{client: client} tagService := TagService{client: client} region := client.Region @@ -279,7 +282,7 @@ func resourceMongodbShardingInstanceCreate(d *schema.ResourceData, meta interfac } if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - resourceName := BuildTagResourceName("mongodb", "instance", region, instanceId) + resourceName := tccommon.BuildTagResourceName("mongodb", "instance", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err } @@ -289,15 +292,15 @@ func resourceMongodbShardingInstanceCreate(d *schema.ResourceData, meta interfac } func resourceMongodbShardingInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_sharding_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_sharding_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() - mongodbService := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + mongodbService := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instance, has, err := mongodbService.DescribeInstanceById(ctx, instanceId) if err != nil { return err @@ -307,7 +310,7 @@ func resourceMongodbShardingInstanceRead(d *schema.ResourceData, meta interface{ return nil } - if nilFields := CheckNil(instance, map[string]string{ + if nilFields := tccommon.CheckNil(instance, map[string]string{ "InstanceName": "instance name", "ProjectId": "project id", "ClusterType": "cluster type", @@ -411,14 +414,14 @@ func resourceMongodbShardingInstanceRead(d *schema.ResourceData, meta interface{ } func resourceMongodbShardingInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_sharding_instance.update")() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_sharding_instance.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() mongodbService := MongodbService{client: client} tagService := TagService{client: client} region := client.Region @@ -439,7 +442,7 @@ func resourceMongodbShardingInstanceUpdate(d *schema.ResourceData, meta interfac } // it will take time to wait for memory and volume change even describe request succeeded even the status returned in describe response is running - errUpdate := resource.Retry(20*readRetryTimeout, func() *resource.RetryError { + errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError { infos, has, e := mongodbService.DescribeInstanceById(ctx, instanceId) if e != nil { return resource.NonRetryableError(e) @@ -492,7 +495,7 @@ func resourceMongodbShardingInstanceUpdate(d *schema.ResourceData, meta interfac oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("mongodb", "instance", region, instanceId) + resourceName := tccommon.BuildTagResourceName("mongodb", "instance", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -519,14 +522,14 @@ func resourceMongodbShardingInstanceUpdate(d *schema.ResourceData, meta interfac } func resourceMongodbShardingInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_sharding_instance.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_sharding_instance.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() mongodbService := MongodbService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } instanceDetail, has, err := mongodbService.DescribeInstanceById(ctx, instanceId) diff --git a/tencentcloud/resource_tc_mongodb_sharding_instance_test.go b/tencentcloud/services/mongodb/resource_tc_mongodb_sharding_instance_test.go similarity index 85% rename from tencentcloud/resource_tc_mongodb_sharding_instance_test.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_sharding_instance_test.go index 11b36ed443..7893eef659 100644 --- a/tencentcloud/resource_tc_mongodb_sharding_instance_test.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_sharding_instance_test.go @@ -1,23 +1,28 @@ -package tencentcloud +package mongodb_test import ( "context" "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcmongodb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mongodb" ) func TestAccTencentCloudMongodbShardingInstanceResource_postpaid(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckMongodbShardingInstanceDestroy, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbShardingInstance, Check: resource.ComposeTestCheckFunc( testAccCheckMongodbInstanceExists("tencentcloud_mongodb_sharding_instance.mongodb"), @@ -35,7 +40,7 @@ func TestAccTencentCloudMongodbShardingInstanceResource_postpaid(t *testing.T) { resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "vport"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "create_time"), resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "tags.test", "test"), - resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "charge_type", MONGODB_CHARGE_TYPE_POSTPAID), + resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "charge_type", svcmongodb.MONGODB_CHARGE_TYPE_POSTPAID), resource.TestCheckNoResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb", "prepaid_period"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "security_groups.#"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb", "hidden_zone"), @@ -43,7 +48,7 @@ func TestAccTencentCloudMongodbShardingInstanceResource_postpaid(t *testing.T) { ), }, { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbShardingInstanceUpdate, Check: resource.ComposeTestCheckFunc( testAccCheckMongodbInstanceExists("tencentcloud_mongodb_sharding_instance.mongodb"), @@ -65,12 +70,12 @@ func TestAccTencentCloudMongodbShardingInstanceResource_postpaid(t *testing.T) { func TestAccTencentCloudMongodbShardingInstanceResource_prepaid(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckMongodbShardingInstanceDestroy, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccMongodbShardingInstancePrepaid, Check: resource.ComposeTestCheckFunc( testAccCheckMongodbInstanceExists("tencentcloud_mongodb_sharding_instance.mongodb_prepaid"), @@ -84,7 +89,7 @@ func TestAccTencentCloudMongodbShardingInstanceResource_prepaid(t *testing.T) { resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "vport"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "create_time"), resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "tags.test", "test-prepaid"), - resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "charge_type", MONGODB_CHARGE_TYPE_PREPAID), + resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "charge_type", svcmongodb.MONGODB_CHARGE_TYPE_PREPAID), resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "prepaid_period", "1"), resource.TestCheckResourceAttr("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "auto_renew_flag", "0"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_sharding_instance.mongodb_prepaid", "hidden_zone"), @@ -92,7 +97,7 @@ func TestAccTencentCloudMongodbShardingInstanceResource_prepaid(t *testing.T) { ), }, { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccMongodbShardingInstancePrepaid_update, Check: resource.ComposeTestCheckFunc( testAccCheckMongodbInstanceExists("tencentcloud_mongodb_sharding_instance.mongodb_prepaid"), @@ -106,12 +111,10 @@ func TestAccTencentCloudMongodbShardingInstanceResource_prepaid(t *testing.T) { } func testAccCheckMongodbShardingInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - mongodbService := MongodbService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + mongodbService := svcmongodb.NewMongodbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_mongodb_sharding_instance" { continue @@ -129,7 +132,7 @@ func testAccCheckMongodbShardingInstanceDestroy(s *terraform.State) error { return nil } -const testAccMongodbShardingInstance = DefaultMongoDBSpec + ` +const testAccMongodbShardingInstance = tcacctest.DefaultMongoDBSpec + ` resource "tencentcloud_mongodb_sharding_instance" "mongodb" { instance_name = "tf-mongodb-sharding" shard_quantity = 2 @@ -156,7 +159,7 @@ resource "tencentcloud_mongodb_sharding_instance" "mongodb" { } ` -const testAccMongodbShardingInstanceUpdate = DefaultMongoDBSpec + ` +const testAccMongodbShardingInstanceUpdate = tcacctest.DefaultMongoDBSpec + ` resource "tencentcloud_mongodb_sharding_instance" "mongodb" { instance_name = "tf-mongodb-sharding-update" shard_quantity = 2 @@ -184,7 +187,7 @@ resource "tencentcloud_mongodb_sharding_instance" "mongodb" { } ` -const testAccMongodbShardingInstancePrepaid = DefaultMongoDBSpec + ` +const testAccMongodbShardingInstancePrepaid = tcacctest.DefaultMongoDBSpec + ` resource "tencentcloud_mongodb_sharding_instance" "mongodb_prepaid" { instance_name = "tf-mongodb-sharding-prepaid" shard_quantity = 2 @@ -214,7 +217,7 @@ resource "tencentcloud_mongodb_sharding_instance" "mongodb_prepaid" { } ` -const testAccMongodbShardingInstancePrepaid_update = DefaultMongoDBSpec + ` +const testAccMongodbShardingInstancePrepaid_update = tcacctest.DefaultMongoDBSpec + ` resource "tencentcloud_mongodb_sharding_instance" "mongodb_prepaid" { instance_name = "tf-mongodb-sharding-prepaid-update" shard_quantity = 2 diff --git a/tencentcloud/resource_tc_mongodb_standby_instance.go b/tencentcloud/services/mongodb/resource_tc_mongodb_standby_instance.go similarity index 87% rename from tencentcloud/resource_tc_mongodb_standby_instance.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_standby_instance.go index 34986e80fe..948f09d09c 100644 --- a/tencentcloud/resource_tc_mongodb_standby_instance.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_standby_instance.go @@ -1,4 +1,4 @@ -package tencentcloud +package mongodb import ( "context" @@ -8,14 +8,17 @@ import ( "reflect" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func resourceTencentCloudMongodbStandbyInstance() *schema.Resource { +func ResourceTencentCloudMongodbStandbyInstance() *schema.Resource { mongodbStandbyInstanceInfo := map[string]*schema.Schema{ "father_instance_region": { Type: schema.TypeString, @@ -135,7 +138,7 @@ func mongodbAllStandbyInstanceReqSet(requestInter interface{}, d *schema.Resourc } func mongodbCreateStandbyInstanceByUse(ctx context.Context, d *schema.ResourceData, meta interface{}, masterInfo map[string]string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewCreateDBInstanceHourRequest() if err := mongodbAllStandbyInstanceReqSet(request, d, masterInfo); err != nil { @@ -144,12 +147,12 @@ func mongodbCreateStandbyInstanceByUse(ctx context.Context, d *schema.ResourceDa var response *mongodb.CreateDBInstanceHourResponse var err error - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) - response, err = meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().CreateDBInstanceHour(request) + response, err = meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().CreateDBInstanceHour(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), err.Error()) - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -166,7 +169,7 @@ func mongodbCreateStandbyInstanceByUse(ctx context.Context, d *schema.ResourceDa } func mongodbCreateStandbyInstanceByMonth(ctx context.Context, d *schema.ResourceData, meta interface{}, masterInfo map[string]string) error { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewCreateDBInstanceRequest() if err := mongodbAllStandbyInstanceReqSet(request, d, masterInfo); err != nil { @@ -175,12 +178,12 @@ func mongodbCreateStandbyInstanceByMonth(ctx context.Context, d *schema.Resource var response *mongodb.CreateDBInstanceResponse var err error - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) - response, err = meta.(*TencentCloudClient).apiV3Conn.UseMongodbClient().CreateDBInstance(request) + response, err = meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMongodbClient().CreateDBInstance(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), err.Error()) - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -197,12 +200,12 @@ func mongodbCreateStandbyInstanceByMonth(ctx context.Context, d *schema.Resource } func resourceTencentCloudMongodbStandbyInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_standby_instance.create")() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_standby_instance.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() client1 := *client mongodbService := MongodbService{client: client} mongodbService1 := MongodbService{client: &client1} @@ -279,7 +282,7 @@ func resourceTencentCloudMongodbStandbyInstanceCreate(d *schema.ResourceData, me } if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - resourceName := BuildTagResourceName("mongodb", "instance", region, instanceId) + resourceName := tccommon.BuildTagResourceName("mongodb", "instance", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err } @@ -289,15 +292,15 @@ func resourceTencentCloudMongodbStandbyInstanceCreate(d *schema.ResourceData, me } func resourceTencentCloudMongodbStandbyInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_standby_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_standby_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() - mongodbService := MongodbService{client: meta.(*TencentCloudClient).apiV3Conn} + mongodbService := MongodbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instance, has, err := mongodbService.DescribeInstanceById(ctx, instanceId) if err != nil { return err @@ -307,7 +310,7 @@ func resourceTencentCloudMongodbStandbyInstanceRead(d *schema.ResourceData, meta return nil } - if nilFields := CheckNil(instance, map[string]string{ + if nilFields := tccommon.CheckNil(instance, map[string]string{ "InstanceName": "instance name", "ProjectId": "project id", "Zone": "available zone", @@ -381,14 +384,14 @@ func resourceTencentCloudMongodbStandbyInstanceRead(d *schema.ResourceData, meta } func resourceTencentCloudMongodbStandbyInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_standby_instance.update")() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_standby_instance.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() mongodbService := MongodbService{client: client} tagService := TagService{client: client} region := client.Region @@ -404,7 +407,7 @@ func resourceTencentCloudMongodbStandbyInstanceUpdate(d *schema.ResourceData, me } // it will take time to wait for memory and volume change even describe request succeeded even the status returned in describe response is running - errUpdate := resource.Retry(20*readRetryTimeout, func() *resource.RetryError { + errUpdate := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError { infos, has, e := mongodbService.DescribeInstanceById(ctx, instanceId) if e != nil { return resource.NonRetryableError(e) @@ -448,7 +451,7 @@ func resourceTencentCloudMongodbStandbyInstanceUpdate(d *schema.ResourceData, me oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("mongodb", "instance", region, instanceId) + resourceName := tccommon.BuildTagResourceName("mongodb", "instance", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -475,14 +478,14 @@ func resourceTencentCloudMongodbStandbyInstanceUpdate(d *schema.ResourceData, me } func resourceTencentCloudMongodbStandbyInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mongodb_standby_instance.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_mongodb_standby_instance.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() mongodbService := MongodbService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } instanceDetail, has, err := mongodbService.DescribeInstanceById(ctx, instanceId) diff --git a/tencentcloud/resource_tc_mongodb_standby_instance_test.go b/tencentcloud/services/mongodb/resource_tc_mongodb_standby_instance_test.go similarity index 86% rename from tencentcloud/resource_tc_mongodb_standby_instance_test.go rename to tencentcloud/services/mongodb/resource_tc_mongodb_standby_instance_test.go index 25107b5caa..51f7f49813 100644 --- a/tencentcloud/resource_tc_mongodb_standby_instance_test.go +++ b/tencentcloud/services/mongodb/resource_tc_mongodb_standby_instance_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package mongodb_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcmongodb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mongodb" + "context" "fmt" "testing" @@ -12,12 +16,12 @@ import ( func TestAccTencentCloudNeedFixMongodbStandbyInstanceResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckMongodbStandbyInstanceDestroy, Steps: []resource.TestStep{ { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbStandbyInstance, Check: resource.ComposeTestCheckFunc( testAccCheckMongodbInstanceExists("tencentcloud_mongodb_standby_instance.mongodb"), @@ -25,7 +29,7 @@ func TestAccTencentCloudNeedFixMongodbStandbyInstanceResource(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "memory", "4"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "volume", "100"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "engine_version", "MONGO_36_WT"), - resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "machine_type", MONGODB_MACHINE_TYPE_HIO10G), + resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "machine_type", svcmongodb.MONGODB_MACHINE_TYPE_HIO10G), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "available_zone", "ap-guangzhou-3"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "project_id", "0"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_standby_instance.mongodb", "status"), @@ -33,14 +37,14 @@ func TestAccTencentCloudNeedFixMongodbStandbyInstanceResource(t *testing.T) { resource.TestCheckResourceAttrSet("tencentcloud_mongodb_standby_instance.mongodb", "vport"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_standby_instance.mongodb", "create_time"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "tags.test", "test"), - resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "charge_type", MONGODB_CHARGE_TYPE_POSTPAID), + resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "charge_type", svcmongodb.MONGODB_CHARGE_TYPE_POSTPAID), resource.TestCheckNoResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "prepaid_period"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_standby_instance.mongodb", "father_instance_id"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "father_instance_region", "ap-guangzhou"), ), }, { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccMongodbStandbyInstance_update, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb", "instance_name", "tf-mongodb-standby-test-update"), @@ -57,7 +61,7 @@ func TestAccTencentCloudNeedFixMongodbStandbyInstanceResource(t *testing.T) { ImportStateVerifyIgnore: []string{"security_groups", "auto_renew_flag", "password"}, }, { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccMongodbStandbyInstancePrepaid, Check: resource.ComposeTestCheckFunc( testAccCheckMongodbInstanceExists("tencentcloud_mongodb_standby_instance.mongodb_prepaid"), @@ -65,7 +69,7 @@ func TestAccTencentCloudNeedFixMongodbStandbyInstanceResource(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "memory", "8"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "volume", "200"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "engine_version", "MONGO_40_WT"), - resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "machine_type", MONGODB_MACHINE_TYPE_HIO10G), + resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "machine_type", svcmongodb.MONGODB_MACHINE_TYPE_HIO10G), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "available_zone", "ap-guangzhou-4"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "project_id", "0"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "status"), @@ -73,7 +77,7 @@ func TestAccTencentCloudNeedFixMongodbStandbyInstanceResource(t *testing.T) { resource.TestCheckResourceAttrSet("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "vport"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "create_time"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "tags.test", "test-prepaid"), - resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "charge_type", MONGODB_CHARGE_TYPE_PREPAID), + resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "charge_type", svcmongodb.MONGODB_CHARGE_TYPE_PREPAID), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "prepaid_period", "1"), resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "auto_renew_flag", "1"), resource.TestCheckResourceAttrSet("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "father_instance_id"), @@ -81,7 +85,7 @@ func TestAccTencentCloudNeedFixMongodbStandbyInstanceResource(t *testing.T) { ), }, { - PreConfig: func() { testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) }, + PreConfig: func() { tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccMongodbStandbyInstancePrepaid_update, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("tencentcloud_mongodb_standby_instance.mongodb_prepaid", "instance_name", "tf-mongodb-standby-prepaid-update"), @@ -96,12 +100,10 @@ func TestAccTencentCloudNeedFixMongodbStandbyInstanceResource(t *testing.T) { } func testAccCheckMongodbStandbyInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - mongodbService := MongodbService{ - client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn, - } + mongodbService := svcmongodb.NewMongodbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_mongodb_standby_instance" { continue diff --git a/tencentcloud/service_tencentcloud_mongodb.go b/tencentcloud/services/mongodb/service_tencentcloud_mongodb.go similarity index 93% rename from tencentcloud/service_tencentcloud_mongodb.go rename to tencentcloud/services/mongodb/service_tencentcloud_mongodb.go index 7d7199ef60..3b70564b9e 100644 --- a/tencentcloud/service_tencentcloud_mongodb.go +++ b/tencentcloud/services/mongodb/service_tencentcloud_mongodb.go @@ -1,4 +1,4 @@ -package tencentcloud +package mongodb import ( "context" @@ -6,24 +6,31 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" mongodb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb/v20190725" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewMongodbService(client *connectivity.TencentCloudClient) MongodbService { + return MongodbService{client: client} +} + type MongodbService struct { client *connectivity.TencentCloudClient } func (me *MongodbService) DescribeInstanceById(ctx context.Context, instanceId string) (instance *mongodb.InstanceDetail, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewDescribeDBInstancesRequest() request.InstanceIds = []*string{&instanceId} var response *mongodb.DescribeDBInstancesResponse - err := resource.Retry(20*readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) result, e := me.client.UseMongodbClient().DescribeDBInstances(request) if e != nil { @@ -60,7 +67,7 @@ func (me *MongodbService) DescribeInstanceById(ctx context.Context, instanceId s } func (me *MongodbService) ModifyInstanceName(ctx context.Context, instanceId, instanceName string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewRenameInstanceRequest() request.InstanceId = &instanceId request.NewName = &instanceName @@ -77,13 +84,13 @@ func (me *MongodbService) ModifyInstanceName(ctx context.Context, instanceId, in } func (me *MongodbService) ResetInstancePassword(ctx context.Context, instanceId, accountName, password string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewResetDBInstancePasswordRequest() request.InstanceId = &instanceId request.UserName = &accountName request.Password = &password var response *mongodb.ResetDBInstancePasswordResponse - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) result, e := me.client.UseMongodbClient().ResetDBInstancePassword(request) if e != nil { @@ -98,7 +105,7 @@ func (me *MongodbService) ResetInstancePassword(ctx context.Context, instanceId, } if response != nil && response.Response != nil { - if err = me.DescribeAsyncRequestInfo(ctx, *response.Response.AsyncRequestId, 3*readRetryTimeout); err != nil { + if err = me.DescribeAsyncRequestInfo(ctx, *response.Response.AsyncRequestId, 3*tccommon.ReadRetryTimeout); err != nil { return err } } @@ -109,14 +116,14 @@ func (me *MongodbService) ResetInstancePassword(ctx context.Context, instanceId, } func (me *MongodbService) UpgradeInstance(ctx context.Context, instanceId string, memory int, volume int) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewModifyDBInstanceSpecRequest() request.InstanceId = &instanceId request.Memory = helper.IntUint64(memory) request.Volume = helper.IntUint64(volume) var response *mongodb.ModifyDBInstanceSpecResponse tradeError := false - err := resource.Retry(6*writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(6*tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) result, e := me.client.UseMongodbClient().ModifyDBInstanceSpec(request) if e != nil { @@ -147,7 +154,7 @@ func (me *MongodbService) UpgradeInstance(ctx context.Context, instanceId string } func (me *MongodbService) ModifyProjectId(ctx context.Context, instanceId string, projectId int) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewAssignProjectRequest() request.InstanceIds = []*string{&instanceId} request.ProjectId = helper.IntUint64(projectId) @@ -164,7 +171,7 @@ func (me *MongodbService) ModifyProjectId(ctx context.Context, instanceId string } func (me *MongodbService) DescribeSpecInfo(ctx context.Context, zone string) (infos []*mongodb.SpecificationInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewDescribeSpecInfoRequest() if zone != "" { request.Zone = &zone @@ -185,7 +192,7 @@ func (me *MongodbService) DescribeSpecInfo(ctx context.Context, zone string) (in } func (me *MongodbService) ModifySecurityGroups(ctx context.Context, instanceId string, securityGroups []*string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewModifyDBInstanceSecurityGroupRequest() request.InstanceId = &instanceId request.SecurityGroupIds = securityGroups @@ -202,7 +209,7 @@ func (me *MongodbService) ModifySecurityGroups(ctx context.Context, instanceId s } func (me *MongodbService) ModifyNetworkAddress(ctx context.Context, instanceId string, vpcId string, subnetId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewModifyDBInstanceNetworkAddressRequest() request.InstanceId = &instanceId request.NewUniqVpcId = &vpcId @@ -223,7 +230,7 @@ func (me *MongodbService) ModifyNetworkAddress(ctx context.Context, instanceId s func (me *MongodbService) DescribeInstancesByFilter(ctx context.Context, instanceId string, clusterType int) (mongodbs []*mongodb.InstanceDetail, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewDescribeDBInstancesRequest() defer func() { if errRet != nil { @@ -270,7 +277,7 @@ func (me *MongodbService) DescribeInstancesByFilter(ctx context.Context, instanc } func (me *MongodbService) IsolateInstance(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewIsolateDBInstanceRequest() request.InstanceId = &instanceId defer func() { @@ -279,12 +286,12 @@ func (me *MongodbService) IsolateInstance(ctx context.Context, instanceId string } }() var response *mongodb.IsolateDBInstanceResponse - err := resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) result, e := me.client.UseMongodbClient().IsolateDBInstance(request) if e != nil { log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), e.Error()) - return retryError(e) + return tccommon.RetryError(e) } response = result return nil @@ -299,7 +306,7 @@ func (me *MongodbService) IsolateInstance(ctx context.Context, instanceId string } func (me *MongodbService) TerminateDBInstances(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewTerminateDBInstancesRequest() request.InstanceId = &instanceId defer func() { @@ -308,7 +315,7 @@ func (me *MongodbService) TerminateDBInstances(ctx context.Context, instanceId s } }() var response *mongodb.TerminateDBInstancesResponse - err := resource.Retry(10*writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(10*tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) result, e := me.client.UseMongodbClient().TerminateDBInstances(request) if e != nil { @@ -328,7 +335,7 @@ func (me *MongodbService) TerminateDBInstances(ctx context.Context, instanceId s } func (me *MongodbService) ModifyAutoRenewFlag(ctx context.Context, instanceId string, period int, renewFlag int) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewRenewDBInstancesRequest() request.InstanceIds = []*string{&instanceId} request.InstanceChargePrepaid = &mongodb.InstanceChargePrepaid{} @@ -339,12 +346,12 @@ func (me *MongodbService) ModifyAutoRenewFlag(ctx context.Context, instanceId st log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) } }() - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) _, e := me.client.UseMongodbClient().RenewDBInstances(request) if e != nil { log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), e.Error()) - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -356,7 +363,7 @@ func (me *MongodbService) ModifyAutoRenewFlag(ctx context.Context, instanceId st } func (me *MongodbService) DescribeAsyncRequestInfo(ctx context.Context, asyncId string, timeout time.Duration) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewDescribeAsyncRequestInfoRequest() request.AsyncRequestId = &asyncId err := resource.Retry(timeout, func() *resource.RetryError { @@ -382,7 +389,7 @@ func (me *MongodbService) DescribeAsyncRequestInfo(ctx context.Context, asyncId } func (me *MongodbService) OfflineIsolatedDBInstance(ctx context.Context, instanceId string, timeOutTolerant bool) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewOfflineIsolatedDBInstanceRequest() request.InstanceId = &instanceId defer func() { @@ -392,7 +399,7 @@ func (me *MongodbService) OfflineIsolatedDBInstance(ctx context.Context, instanc }() var response *mongodb.OfflineIsolatedDBInstanceResponse var err error - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err = me.client.UseMongodbClient().OfflineIsolatedDBInstance(request) if err != nil { @@ -411,7 +418,7 @@ func (me *MongodbService) OfflineIsolatedDBInstance(ctx context.Context, instanc checkRequest := mongodb.NewDescribeDBInstancesRequest() checkRequest.InstanceIds = []*string{&instanceId} - err = resource.Retry(20*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(checkRequest.GetAction()) result, e := me.client.UseMongodbClient().DescribeDBInstances(checkRequest) if e != nil { @@ -433,7 +440,7 @@ func (me *MongodbService) OfflineIsolatedDBInstance(ctx context.Context, instanc } func (me *MongodbService) DescribeSecurityGroup(ctx context.Context, instanceId string) (groups []*mongodb.SecurityGroup, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewDescribeSecurityGroupRequest() request.InstanceId = helper.String(instanceId) ratelimit.Check(request.GetAction()) @@ -452,7 +459,7 @@ func (me *MongodbService) DescribeSecurityGroup(ctx context.Context, instanceId } func (me *MongodbService) DescribeDBInstanceNodeProperty(ctx context.Context, instanceId string) (replicateSets []*mongodb.ReplicateSetInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewDescribeDBInstanceNodePropertyRequest() request.InstanceId = helper.String(instanceId) ratelimit.Check(request.GetAction()) @@ -471,7 +478,7 @@ func (me *MongodbService) DescribeDBInstanceNodeProperty(ctx context.Context, in } func (me *MongodbService) DescribeMongodbInstanceAccountById(ctx context.Context, instanceId string, userName string) (instanceAccount *mongodb.UserInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewDescribeAccountUsersRequest() request.InstanceId = &instanceId @@ -505,7 +512,7 @@ func (me *MongodbService) DescribeMongodbInstanceAccountById(ctx context.Context } func (me *MongodbService) DeleteMongodbInstanceAccountById(ctx context.Context, instanceId string, userName string, mongoUserPassword string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewDeleteAccountUserRequest() request.InstanceId = &instanceId @@ -526,7 +533,7 @@ func (me *MongodbService) DeleteMongodbInstanceAccountById(ctx context.Context, return } if response != nil && response.Response != nil { - if err = me.DescribeAsyncRequestInfo(ctx, helper.Int64ToStr(*response.Response.FlowId), 3*readRetryTimeout); err != nil { + if err = me.DescribeAsyncRequestInfo(ctx, helper.Int64ToStr(*response.Response.FlowId), 3*tccommon.ReadRetryTimeout); err != nil { errRet = err return } @@ -536,7 +543,7 @@ func (me *MongodbService) DeleteMongodbInstanceAccountById(ctx context.Context, } func (me *MongodbService) DescribeMongodbInstanceBackupDownloadTaskById(ctx context.Context, instanceId string, backupName string) (instanceBackupDownloadTask []*mongodb.BackupDownloadTask, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mongodb.NewDescribeBackupDownloadTaskRequest() request.InstanceId = &instanceId @@ -567,7 +574,7 @@ func (me *MongodbService) DescribeMongodbInstanceBackupDownloadTaskById(ctx cont func (me *MongodbService) DescribeMongodbInstanceBackupsByFilter(ctx context.Context, param map[string]interface{}) (instanceBackups []*mongodb.BackupInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mongodb.NewDescribeDBBackupsRequest() ) @@ -618,7 +625,7 @@ func (me *MongodbService) DescribeMongodbInstanceBackupsByFilter(ctx context.Con func (me *MongodbService) DescribeMongodbInstanceConnectionsByFilter(ctx context.Context, param map[string]interface{}) (instanceConnections []*mongodb.ClientConnection, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mongodb.NewDescribeClientConnectionsRequest() ) @@ -666,7 +673,7 @@ func (me *MongodbService) DescribeMongodbInstanceConnectionsByFilter(ctx context func (me *MongodbService) DescribeMongodbInstanceCurrentOpByFilter(ctx context.Context, param map[string]interface{}) (instanceCurrentOp []*mongodb.CurrentOp, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mongodb.NewDescribeCurrentOpRequest() ) @@ -735,7 +742,7 @@ func (me *MongodbService) DescribeMongodbInstanceCurrentOpByFilter(ctx context.C func (me *MongodbService) DescribeMongodbInstanceParams(ctx context.Context, param map[string]interface{}) (instanceParams *mongodb.DescribeInstanceParamsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mongodb.NewDescribeInstanceParamsRequest() ) @@ -767,7 +774,7 @@ func (me *MongodbService) DescribeMongodbInstanceParams(ctx context.Context, par func (me *MongodbService) DescribeMongodbInstanceSlowLogByFilter(ctx context.Context, param map[string]interface{}) (instanceSlowLog []*string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mongodb.NewDescribeSlowLogsRequest() ) diff --git a/tencentcloud/services/mongodb/service_tencentcloud_tag.go b/tencentcloud/services/mongodb/service_tencentcloud_tag.go new file mode 100644 index 0000000000..a4055b18c3 --- /dev/null +++ b/tencentcloud/services/mongodb/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package mongodb + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/data_source_tc_monitor_alarm_all_namespaces.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_all_namespaces.go similarity index 95% rename from tencentcloud/data_source_tc_monitor_alarm_all_namespaces.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_all_namespaces.go index caec3f2a0f..6071e19de5 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_all_namespaces.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_all_namespaces.go @@ -1,15 +1,18 @@ -package tencentcloud +package monitor import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMonitorAlarmAllNamespaces() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmAllNamespaces() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMonitorAlarmAllNamespacesRead, Schema: map[string]*schema.Schema{ @@ -267,12 +270,12 @@ func dataSourceTencentCloudMonitorAlarmAllNamespaces() *schema.Resource { } func dataSourceTencentCloudMonitorAlarmAllNamespacesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_all_namespaces.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_all_namespaces.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("scene_type"); ok { @@ -293,15 +296,15 @@ func dataSourceTencentCloudMonitorAlarmAllNamespacesRead(d *schema.ResourceData, paramMap["Ids"] = helper.InterfacesStringsPoint(idsSet) } - service := MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var qceNamespacesNew []*monitor.CommonNamespace var customNamespacesNew []*monitor.CommonNamespace var commonNamespaces []*monitor.CommonNamespaceNew - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { qce, custom, common, e := service.DescribeMonitorAlarmAllNamespacesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } qceNamespacesNew = qce customNamespacesNew = custom @@ -502,7 +505,7 @@ func dataSourceTencentCloudMonitorAlarmAllNamespacesRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_monitor_alarm_all_namespaces_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_all_namespaces_test.go similarity index 87% rename from tencentcloud/data_source_tc_monitor_alarm_all_namespaces_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_all_namespaces_test.go index 69de75a770..3333e830dd 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_all_namespaces_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_all_namespaces_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMonitorAlarmAllNamespacesDataSource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmAllNamespacesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_all_namespaces.alarm_all_namespaces"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_all_namespaces.alarm_all_namespaces"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_all_namespaces.alarm_all_namespaces", "common_namespaces.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_all_namespaces.alarm_all_namespaces", "qce_namespaces_new.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_all_namespaces.alarm_all_namespaces", "qce_namespaces_new.0.config"), diff --git a/tencentcloud/data_source_tc_monitor_alarm_basic_alarms.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_alarms.go similarity index 94% rename from tencentcloud/data_source_tc_monitor_alarm_basic_alarms.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_alarms.go index eabf84f247..dbc09737f3 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_basic_alarms.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_alarms.go @@ -1,16 +1,19 @@ -package tencentcloud +package monitor import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMonitorAlarmBasicAlarms() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmBasicAlarms() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMonitorAlarmBasicAlarmsRead, Schema: map[string]*schema.Schema{ @@ -242,12 +245,12 @@ func dataSourceTencentCloudMonitorAlarmBasicAlarms() *schema.Resource { } func dataSourceTencentCloudMonitorAlarmBasicAlarmsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_basic_alarms.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_basic_alarms.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("module"); ok { @@ -295,14 +298,14 @@ func dataSourceTencentCloudMonitorAlarmBasicAlarmsRead(d *schema.ResourceData, m paramMap["MetricNames"] = helper.InterfacesStringsPoint(metricNamesSet) } - service := MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var alarms []*monitor.DescribeBasicAlarmListAlarms var warning *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, w, e := service.DescribeMonitorAlarmBasicAlarmsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } alarms = result warning = w @@ -436,7 +439,7 @@ func dataSourceTencentCloudMonitorAlarmBasicAlarmsRead(d *schema.ResourceData, m d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_monitor_alarm_basic_alarms_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_alarms_test.go similarity index 92% rename from tencentcloud/data_source_tc_monitor_alarm_basic_alarms_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_alarms_test.go index b223607cdc..226098d4e6 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_basic_alarms_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_alarms_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package monitor_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudMonitorAlamBasicAlarmsDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccMonitorAlarmBasciAlarmsDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_basic_alarms.alarms"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_basic_alarms.alarms"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_basic_alarms.alarms", "alarms.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_basic_alarms.alarms", "alarms.0.alarm_status"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_basic_alarms.alarms", "alarms.0.alarm_type"), diff --git a/tencentcloud/data_source_tc_monitor_alarm_basic_metric.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_metric.go similarity index 91% rename from tencentcloud/data_source_tc_monitor_alarm_basic_metric.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_metric.go index 00e872a6da..9e32ef9063 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_basic_metric.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_metric.go @@ -1,15 +1,18 @@ -package tencentcloud +package monitor import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMonitorAlarmBasicMetric() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmBasicMetric() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMonitorAlarmBasicMetricRead, Schema: map[string]*schema.Schema{ @@ -150,12 +153,12 @@ func dataSourceTencentCloudMonitorAlarmBasicMetric() *schema.Resource { } func dataSourceTencentCloudMonitorAlarmBasicMetricRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_metric.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_metric.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("namespace"); ok { @@ -171,14 +174,14 @@ func dataSourceTencentCloudMonitorAlarmBasicMetricRead(d *schema.ResourceData, m paramMap["Dimensions"] = helper.InterfacesStringsPoint(dimensionsSet) } - service := MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var metricSet []*monitor.MetricSet - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMonitorAlarmBasicMetricByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } metricSet = result return nil @@ -280,7 +283,7 @@ func dataSourceTencentCloudMonitorAlarmBasicMetricRead(d *schema.ResourceData, m d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_monitor_alarm_basic_metric_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_metric_test.go similarity index 89% rename from tencentcloud/data_source_tc_monitor_alarm_basic_metric_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_metric_test.go index a7f41ac5cf..9fdd22a3c9 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_basic_metric_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_basic_metric_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMonitorAlarmBasicMetricDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmBasicMetricDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_basic_metric.alarm_metric"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_basic_metric.alarm_metric"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_basic_metric.alarm_metric", "metric_set.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_basic_metric.alarm_metric", "metric_set.0.dimensions.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_basic_metric.alarm_metric", "metric_set.0.dimensions.0.dimensions.#"), diff --git a/tencentcloud/data_source_tc_monitor_alarm_conditions_template.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_conditions_template.go similarity index 96% rename from tencentcloud/data_source_tc_monitor_alarm_conditions_template.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_conditions_template.go index 6ab3b70657..175fca1e8b 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_conditions_template.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_conditions_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package monitor import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMonitorAlarmConditionsTemplate() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmConditionsTemplate() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMonitorAlarmConditionsTemplateRead, Schema: map[string]*schema.Schema{ @@ -394,12 +397,12 @@ func dataSourceTencentCloudMonitorAlarmConditionsTemplate() *schema.Resource { } func dataSourceTencentCloudMonitorAlarmConditionsTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_conditions_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_conditions_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("module"); ok { @@ -426,14 +429,14 @@ func dataSourceTencentCloudMonitorAlarmConditionsTemplateRead(d *schema.Resource paramMap["PolicyCountOrder"] = helper.String(v.(string)) } - service := MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var templateGroupList []*monitor.TemplateGroup - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMonitorAlarmConditionsTemplateByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } templateGroupList = result return nil @@ -719,7 +722,7 @@ func dataSourceTencentCloudMonitorAlarmConditionsTemplateRead(d *schema.Resource d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_monitor_alarm_conditions_template_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_conditions_template_test.go similarity index 92% rename from tencentcloud/data_source_tc_monitor_alarm_conditions_template_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_conditions_template_test.go index 8ebad77d3e..7f44fa7ff7 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_conditions_template_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_conditions_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMonitorAlarmConditionsTemplateDataSource_basic(t *testin t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmConditionsTemplateDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_conditions_template.alarm_conditions_template"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_conditions_template.alarm_conditions_template"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_conditions_template.alarm_conditions_template", "template_group_list.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_conditions_template.alarm_conditions_template", "template_group_list.0.conditions.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_conditions_template.alarm_conditions_template", "template_group_list.0.conditions.0.alarm_notify_period"), diff --git a/tencentcloud/data_source_tc_monitor_alarm_history.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_history.go similarity index 96% rename from tencentcloud/data_source_tc_monitor_alarm_history.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_history.go index a952127b98..593a7f2b21 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_history.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_history.go @@ -1,15 +1,18 @@ -package tencentcloud +package monitor import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMonitorAlarmHistory() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmHistory() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMonitorAlarmHistoryRead, Schema: map[string]*schema.Schema{ @@ -353,12 +356,12 @@ func dataSourceTencentCloudMonitorAlarmHistory() *schema.Resource { } func dataSourceTencentCloudMonitorAlarmHistoryRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_history.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_history.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("module"); ok { @@ -453,14 +456,14 @@ func dataSourceTencentCloudMonitorAlarmHistoryRead(d *schema.ResourceData, meta paramMap["AlarmLevels"] = helper.InterfacesStringsPoint(alarmLevelsSet) } - service := MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var histories []*monitor.AlarmHistory - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMonitorAlarmHistoryByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } histories = result return nil @@ -628,7 +631,7 @@ func dataSourceTencentCloudMonitorAlarmHistoryRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_monitor_alarm_history_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_history_test.go similarity index 93% rename from tencentcloud/data_source_tc_monitor_alarm_history_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_history_test.go index f3fd8a10a9..d9dc56d483 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_history_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_history_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMonitorAlarmHistoryDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmHistoryDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_history.alarm_history"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_history.alarm_history"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_history.alarm_history", "histories.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_history.alarm_history", "histories.0.alarm_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_history.alarm_history", "histories.0.alarm_object"), diff --git a/tencentcloud/data_source_tc_monitor_alarm_metric.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_metric.go similarity index 91% rename from tencentcloud/data_source_tc_monitor_alarm_metric.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_metric.go index 280550d43e..faacb43994 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_metric.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_metric.go @@ -1,15 +1,18 @@ -package tencentcloud +package monitor import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMonitorAlarmMetric() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmMetric() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMonitorAlarmMetricRead, Schema: map[string]*schema.Schema{ @@ -164,12 +167,12 @@ func dataSourceTencentCloudMonitorAlarmMetric() *schema.Resource { } func dataSourceTencentCloudMonitorAlarmMetricRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_metric.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_metric.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("module"); ok { @@ -184,14 +187,14 @@ func dataSourceTencentCloudMonitorAlarmMetricRead(d *schema.ResourceData, meta i paramMap["Namespace"] = helper.String(v.(string)) } - service := MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var metrics []*monitor.Metric - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMonitorAlarmMetricByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } metrics = result return nil @@ -298,7 +301,7 @@ func dataSourceTencentCloudMonitorAlarmMetricRead(d *schema.ResourceData, meta i d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_monitor_alarm_metric_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_metric_test.go similarity index 89% rename from tencentcloud/data_source_tc_monitor_alarm_metric_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_metric_test.go index 7df1e82c6b..9a4b8da2b5 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_metric_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_metric_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMonitorAlarmMetricDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmMetricDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_metric.alarm_metric"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_metric.alarm_metric"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_metric.alarm_metric", "metrics.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_metric.alarm_metric", "metrics.0.description"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_metric.alarm_metric", "metrics.0.dimensions.#"), diff --git a/tencentcloud/data_source_tc_monitor_alarm_monitor_type.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_monitor_type.go similarity index 80% rename from tencentcloud/data_source_tc_monitor_alarm_monitor_type.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_monitor_type.go index b5765eeb6f..24a704f4a4 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_monitor_type.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_monitor_type.go @@ -1,15 +1,18 @@ -package tencentcloud +package monitor import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMonitorAlarmMonitorType() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmMonitorType() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMonitorAlarmMonitorTypeRead, Schema: map[string]*schema.Schema{ @@ -57,20 +60,20 @@ func dataSourceTencentCloudMonitorAlarmMonitorType() *schema.Resource { } func dataSourceTencentCloudMonitorAlarmMonitorTypeRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_monitor_type.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_monitor_type.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) - service := MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var monitor *monitor.DescribeMonitorTypesResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMonitorAlarmMonitorTypeByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } monitor = result return nil @@ -115,7 +118,7 @@ func dataSourceTencentCloudMonitorAlarmMonitorTypeRead(d *schema.ResourceData, m d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_monitor_alarm_monitor_type_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_monitor_type_test.go similarity index 79% rename from tencentcloud/data_source_tc_monitor_alarm_monitor_type_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_monitor_type_test.go index 3140438dbf..e48755b717 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_monitor_type_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_monitor_type_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMonitorAlarmMonitorTypeDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmMonitorTypeDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_monitor_type.alarm_monitor_type"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_monitor_type.alarm_monitor_type"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_monitor_type.alarm_monitor_type", "monitor_type_infos.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_monitor_type.alarm_monitor_type", "monitor_type_infos.0.id"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_monitor_type.alarm_monitor_type", "monitor_type_infos.0.name"), diff --git a/tencentcloud/data_source_tc_monitor_alarm_notice_callbacks.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_notice_callbacks.go similarity index 82% rename from tencentcloud/data_source_tc_monitor_alarm_notice_callbacks.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_notice_callbacks.go index c5e994573d..ff9e64a344 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_notice_callbacks.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_notice_callbacks.go @@ -1,15 +1,18 @@ -package tencentcloud +package monitor import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMonitorAlarmNoticeCallbacks() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmNoticeCallbacks() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMonitorAlarmNoticeCallbacksRead, Schema: map[string]*schema.Schema{ @@ -71,19 +74,19 @@ func dataSourceTencentCloudMonitorAlarmNoticeCallbacks() *schema.Resource { } func dataSourceTencentCloudMonitorAlarmNoticeCallbacksRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_notice_callbacks.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_notice_callbacks.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var urlNotices []*monitor.URLNotice - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMonitorAlarmNoticeCallbacksByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } urlNotices = result return nil @@ -133,7 +136,7 @@ func dataSourceTencentCloudMonitorAlarmNoticeCallbacksRead(d *schema.ResourceDat d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_monitor_alarm_notice_callbacks_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_notice_callbacks_test.go similarity index 74% rename from tencentcloud/data_source_tc_monitor_alarm_notice_callbacks_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_notice_callbacks_test.go index a940fbcab2..8f585984c6 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_notice_callbacks_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_notice_callbacks_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMonitorAlarmNoticeCallbacksDataSource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmNoticeCallbacksDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_notice_callbacks.alarm_notice_callbacks"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_notice_callbacks.alarm_notice_callbacks"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_notice_callbacks.alarm_notice_callbacks", "url_notices.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_notice_callbacks.alarm_notice_callbacks", "url_notices.0.url"), ), diff --git a/tencentcloud/data_source_tc_monitor_alarm_notices.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_notices.go similarity index 96% rename from tencentcloud/data_source_tc_monitor_alarm_notices.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_notices.go index 33a62b2316..a58851023b 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_notices.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_notices.go @@ -1,16 +1,19 @@ -package tencentcloud +package monitor import ( "context" "crypto/md5" "fmt" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentMonitorAlarmNotices() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmNotices() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentMonitorAlarmNoticesRead, Schema: map[string]*schema.Schema{ @@ -258,17 +261,17 @@ func dataSourceTencentMonitorAlarmNotices() *schema.Resource { } func dataSourceTencentMonitorAlarmNoticesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_notices.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_notices.read")() var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} err error alarmNotices []interface{} alarmNotice []*monitor.AlarmNotice ) - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) alarmNoticeMap := make(map[string]interface{}) alarmNoticeMap["order"] = helper.String(d.Get("order").(string)) @@ -379,7 +382,7 @@ func dataSourceTencentMonitorAlarmNoticesRead(d *schema.ResourceData, meta inter return err } if output, ok := d.GetOk("result_output_file"); ok { - return writeToFile(output.(string), alarmNotices) + return tccommon.WriteToFile(output.(string), alarmNotices) } return nil } diff --git a/tencentcloud/data_source_tc_monitor_alarm_notices_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_notices_test.go similarity index 85% rename from tencentcloud/data_source_tc_monitor_alarm_notices_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_notices_test.go index 13e4cf56b0..35911be8c1 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_notices_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_notices_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ import ( func TestAccAlarmNoticesDatasourceBasic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceAlarmNotices(), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_notices.notices"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_notices.notices"), resource.TestCheckResourceAttr("data.tencentcloud_monitor_alarm_notices.notices", "alarm_notice.#", "1"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_notices.notices", "alarm_notice.0.amp_consumer_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_notices.notices", "alarm_notice.0.is_preset"), diff --git a/tencentcloud/data_source_tc_monitor_alarm_policy.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_policy.go similarity index 99% rename from tencentcloud/data_source_tc_monitor_alarm_policy.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_policy.go index d97f35ecae..912ed84f1e 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_policy.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_policy.go @@ -1,15 +1,18 @@ -package tencentcloud +package monitor import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMonitorAlarmPolicy() *schema.Resource { +func DataSourceTencentCloudMonitorAlarmPolicy() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMonitorAlarmPolicyRead, Schema: map[string]*schema.Schema{ @@ -1268,12 +1271,12 @@ func dataSourceTencentCloudMonitorAlarmPolicy() *schema.Resource { } func dataSourceTencentCloudMonitorAlarmPolicyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_alarm_policy.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_alarm_policy.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("module"); ok { @@ -1414,13 +1417,13 @@ func dataSourceTencentCloudMonitorAlarmPolicyRead(d *schema.ResourceData, meta i paramMap["ReceiverOnCallFormIDs"] = helper.InterfacesStringsPoint(receiverOnCallFormIDsSet) } - service := MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var policies []*monitor.AlarmPolicy - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMonitorAlarmPolicyByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } policies = result return nil @@ -2292,7 +2295,7 @@ func dataSourceTencentCloudMonitorAlarmPolicyRead(d *schema.ResourceData, meta i d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_monitor_alarm_policy_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_policy_test.go similarity index 96% rename from tencentcloud/data_source_tc_monitor_alarm_policy_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_alarm_policy_test.go index 66fded19a6..5bebf807fb 100644 --- a/tencentcloud/data_source_tc_monitor_alarm_policy_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_alarm_policy_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMonitorAlarmPolicyDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmPolicyDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_policy.alarm_policy"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_alarm_policy.alarm_policy"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_policy.alarm_policy", "policies.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_policy.alarm_policy", "policies.0.can_set_default"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_alarm_policy.alarm_policy", "policies.0.condition.#"), diff --git a/tencentcloud/data_source_tc_monitor_binding_objects.go b/tencentcloud/services/monitor/data_source_tc_monitor_binding_objects.go similarity index 82% rename from tencentcloud/data_source_tc_monitor_binding_objects.go rename to tencentcloud/services/monitor/data_source_tc_monitor_binding_objects.go index ab5504f04e..35ee0724cb 100644 --- a/tencentcloud/data_source_tc_monitor_binding_objects.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_binding_objects.go @@ -1,14 +1,16 @@ -package tencentcloud +package monitor import ( "context" "fmt" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" ) -func dataSourceTencentMonitorBindingObjects() *schema.Resource { +func DataSourceTencentCloudMonitorBindingObjects() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentMonitorBindingObjectRead, @@ -58,13 +60,13 @@ func dataSourceTencentMonitorBindingObjects() *schema.Resource { } func dataSourceTencentMonitorBindingObjectRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_binding_objects.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_binding_objects.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} objects []*monitor.DescribeBindingPolicyObjectListInstance err error @@ -92,7 +94,7 @@ func dataSourceTencentMonitorBindingObjectRead(d *schema.ResourceData, meta inte } d.SetId(fmt.Sprintf("%d", id)) if output, ok := d.GetOk("result_output_file"); ok { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil } diff --git a/tencentcloud/data_source_tc_monitor_binding_objects_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_binding_objects_test.go similarity index 65% rename from tencentcloud/data_source_tc_monitor_binding_objects_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_binding_objects_test.go index be444525a7..0cd6d784fe 100644 --- a/tencentcloud/data_source_tc_monitor_binding_objects_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_binding_objects_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccBindingObjects(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceBindingObjects(), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_binding_objects.objects"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_binding_objects.objects"), ), }, }, diff --git a/tencentcloud/data_source_tc_monitor_data.go b/tencentcloud/services/monitor/data_source_tc_monitor_data.go similarity index 89% rename from tencentcloud/data_source_tc_monitor_data.go rename to tencentcloud/services/monitor/data_source_tc_monitor_data.go index 4c9b491099..e89331fd2f 100644 --- a/tencentcloud/data_source_tc_monitor_data.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_data.go @@ -1,17 +1,20 @@ -package tencentcloud +package monitor import ( "crypto/md5" "fmt" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func dataSourceTencentMonitorData() *schema.Resource { +func DataSourceTencentCloudMonitorData() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentMonitorDataRead, Schema: map[string]*schema.Schema{ @@ -90,10 +93,10 @@ func dataSourceTencentMonitorData() *schema.Resource { } func dataSourceTencentMonitorDataRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_data.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_data.read")() var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewGetMonitorDataRequest() response *monitor.GetMonitorDataResponse err error @@ -116,10 +119,10 @@ func dataSourceTencentMonitorDataRead(d *schema.ResourceData, meta interface{}) }) } - if err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if response, err = monitorService.client.UseMonitorClient().GetMonitorData(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -149,7 +152,7 @@ func dataSourceTencentMonitorDataRead(d *schema.ResourceData, meta interface{}) id := fmt.Sprintf("%x", md.Sum(nil)) d.SetId(id) if output, ok := d.GetOk("result_output_file"); ok { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil } diff --git a/tencentcloud/data_source_tc_monitor_data_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_data_test.go similarity index 78% rename from tencentcloud/data_source_tc_monitor_data_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_data_test.go index 115f3fb955..56128498e0 100644 --- a/tencentcloud/data_source_tc_monitor_data_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_data_test.go @@ -1,23 +1,25 @@ -package tencentcloud +package monitor_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccMonitorData(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceMonitorData(), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_data.cvm_monitor_data"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_data.cvm_monitor_data"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_data.cvm_monitor_data", "list.#"), ), diff --git a/tencentcloud/data_source_tc_monitor_policy_conditions.go b/tencentcloud/services/monitor/data_source_tc_monitor_policy_conditions.go similarity index 95% rename from tencentcloud/data_source_tc_monitor_policy_conditions.go rename to tencentcloud/services/monitor/data_source_tc_monitor_policy_conditions.go index 138fa7edc6..ee24c7b5d2 100644 --- a/tencentcloud/data_source_tc_monitor_policy_conditions.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_policy_conditions.go @@ -1,16 +1,19 @@ -package tencentcloud +package monitor import ( "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func dataSourceTencentMonitorPolicyConditions() *schema.Resource { +func DataSourceTencentCloudMonitorPolicyConditions() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentMonitorPolicyConditionRead, Schema: map[string]*schema.Schema{ @@ -232,10 +235,10 @@ func dataSourceTencentMonitorPolicyConditions() *schema.Resource { } func dataSourceTencentMonitorPolicyConditionRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_policy_conditions.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_policy_conditions.read")() var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewDescribePolicyConditionListRequest() response *monitor.DescribePolicyConditionListResponse err error @@ -245,10 +248,10 @@ func dataSourceTencentMonitorPolicyConditionRead(d *schema.ResourceData, meta in request.Module = helper.String("monitor") - if err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if response, err = monitorService.client.UseMonitorClient().DescribePolicyConditionList(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -345,7 +348,7 @@ func dataSourceTencentMonitorPolicyConditionRead(d *schema.ResourceData, meta in return err } if output, ok := d.GetOk("result_output_file"); ok { - return writeToFile(output.(string), policyViewList) + return tccommon.WriteToFile(output.(string), policyViewList) } return nil } diff --git a/tencentcloud/data_source_tc_monitor_policy_conditions_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_policy_conditions_test.go similarity index 67% rename from tencentcloud/data_source_tc_monitor_policy_conditions_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_policy_conditions_test.go index 6afec58484..d642aa4b37 100644 --- a/tencentcloud/data_source_tc_monitor_policy_conditions_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_policy_conditions_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccMonitorPolicyConditions(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceMonitorPolicyConditions(), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_policy_conditions.monitor_policy_conditions"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_policy_conditions.monitor_policy_conditions"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_policy_conditions.monitor_policy_conditions", "list.#"), ), diff --git a/tencentcloud/data_source_tc_monitor_policy_groups.go b/tencentcloud/services/monitor/data_source_tc_monitor_policy_groups.go similarity index 96% rename from tencentcloud/data_source_tc_monitor_policy_groups.go rename to tencentcloud/services/monitor/data_source_tc_monitor_policy_groups.go index 8339a108fd..500b53a7ff 100644 --- a/tencentcloud/data_source_tc_monitor_policy_groups.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_policy_groups.go @@ -1,17 +1,20 @@ -package tencentcloud +package monitor import ( "crypto/md5" "fmt" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func dataSourceTencentMonitorPolicyGroups() *schema.Resource { +func DataSourceTencentCloudMonitorPolicyGroups() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentMonitorPolicyGroupsRead, Schema: map[string]*schema.Schema{ @@ -293,10 +296,10 @@ func dataSourceTencentMonitorPolicyGroups() *schema.Resource { } } func dataSourceTencentMonitorPolicyGroupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_policy_groups.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_policy_groups.read")() var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewDescribePolicyGroupListRequest() response *monitor.DescribePolicyGroupListResponse err error @@ -327,10 +330,10 @@ func dataSourceTencentMonitorPolicyGroupsRead(d *schema.ResourceData, meta inter if finish { break } - if err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if response, err = monitorService.client.UseMonitorClient().DescribePolicyGroupList(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } groupList = append(groupList, response.Response.GroupList...) if len(response.Response.GroupList) < int(limit) { @@ -466,7 +469,7 @@ func dataSourceTencentMonitorPolicyGroupsRead(d *schema.ResourceData, meta inter d.SetId(id) if output, ok := d.GetOk("result_output_file"); ok { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil } diff --git a/tencentcloud/data_source_tc_monitor_policy_groups_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_policy_groups_test.go similarity index 65% rename from tencentcloud/data_source_tc_monitor_policy_groups_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_policy_groups_test.go index da53d4af40..a3b0b33da2 100644 --- a/tencentcloud/data_source_tc_monitor_policy_groups_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_policy_groups_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccMonitorPolicyGroups(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceMonitorPolicyGroups(), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_policy_groups.name"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_policy_groups.name"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_policy_groups.name", "list.#"), ), diff --git a/tencentcloud/data_source_tc_monitor_product_event.go b/tencentcloud/services/monitor/data_source_tc_monitor_product_event.go similarity index 96% rename from tencentcloud/data_source_tc_monitor_product_event.go rename to tencentcloud/services/monitor/data_source_tc_monitor_product_event.go index 81cbf8e5fc..9205d561af 100644 --- a/tencentcloud/data_source_tc_monitor_product_event.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_product_event.go @@ -1,4 +1,4 @@ -package tencentcloud +package monitor import ( "crypto/md5" @@ -6,14 +6,17 @@ import ( "strconv" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func dataSourceTencentMonitorProductEvent() *schema.Resource { +func DataSourceTencentCloudMonitorProductEvent() *schema.Resource { defaultStartTime := time.Now().Unix() - 3600 @@ -271,10 +274,10 @@ func dataSourceTencentMonitorProductEvent() *schema.Resource { } func dataSourceTencentMonitorProductEventRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_product_event.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_product_event.read")() var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewDescribeProductEventListRequest() response *monitor.DescribeProductEventListResponse events []*monitor.DescribeProductEventListEvents @@ -385,10 +388,10 @@ func dataSourceTencentMonitorProductEventRead(d *schema.ResourceData, meta inter break } - if err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if response, err = monitorService.client.UseMonitorClient().DescribeProductEventList(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } events = append(events, response.Response.Events...) if len(response.Response.Events) < int(limit) { @@ -471,7 +474,7 @@ func dataSourceTencentMonitorProductEventRead(d *schema.ResourceData, meta inter d.SetId(id) if output, ok := d.GetOk("result_output_file"); ok { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil } diff --git a/tencentcloud/data_source_tc_monitor_product_event_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_product_event_test.go similarity index 65% rename from tencentcloud/data_source_tc_monitor_product_event_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_product_event_test.go index 8e26ef3f08..dc4a06506c 100644 --- a/tencentcloud/data_source_tc_monitor_product_event_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_product_event_test.go @@ -1,23 +1,25 @@ -package tencentcloud +package monitor_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccMonitorProductEvent(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceMonitorProductEvent(), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_product_event.cvm_event_data"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_product_event.cvm_event_data"), ), }, }, diff --git a/tencentcloud/data_source_tc_monitor_product_namespace.go b/tencentcloud/services/monitor/data_source_tc_monitor_product_namespace.go similarity index 85% rename from tencentcloud/data_source_tc_monitor_product_namespace.go rename to tencentcloud/services/monitor/data_source_tc_monitor_product_namespace.go index 35a3fb3b98..981162b68c 100644 --- a/tencentcloud/data_source_tc_monitor_product_namespace.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_product_namespace.go @@ -1,17 +1,20 @@ -package tencentcloud +package monitor import ( "fmt" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func dataSourceTencentMonitorProductNamespace() *schema.Resource { +func DataSourceTencentCloudMonitorProductNamespace() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentMonitorProductNamespaceRead, Schema: map[string]*schema.Schema{ @@ -55,10 +58,10 @@ func dataSourceTencentMonitorProductNamespace() *schema.Resource { } func dataSourceTencentMonitorProductNamespaceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_monitor_product_namespace.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_monitor_product_namespace.read")() var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewDescribeProductListRequest() response *monitor.DescribeProductListResponse products []*monitor.ProductSimple @@ -79,10 +82,10 @@ func dataSourceTencentMonitorProductNamespaceRead(d *schema.ResourceData, meta i break } - if err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if response, err = monitorService.client.UseMonitorClient().DescribeProductList(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } products = append(products, response.Response.ProductList...) if len(response.Response.ProductList) < int(limit) { @@ -121,7 +124,7 @@ func dataSourceTencentMonitorProductNamespaceRead(d *schema.ResourceData, meta i } d.SetId(fmt.Sprintf("product_namespace_%s", filterName)) if output, ok := d.GetOk("result_output_file"); ok { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil } diff --git a/tencentcloud/data_source_tc_monitor_product_namespace_test.go b/tencentcloud/services/monitor/data_source_tc_monitor_product_namespace_test.go similarity index 66% rename from tencentcloud/data_source_tc_monitor_product_namespace_test.go rename to tencentcloud/services/monitor/data_source_tc_monitor_product_namespace_test.go index 31498e8ac0..edcafcf419 100644 --- a/tencentcloud/data_source_tc_monitor_product_namespace_test.go +++ b/tencentcloud/services/monitor/data_source_tc_monitor_product_namespace_test.go @@ -1,21 +1,23 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccMonitorProductNamesapce(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceMonitorProductNamespace(), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_product_namespace.instances"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_monitor_product_namespace.instances"), resource.TestCheckResourceAttrSet("data.tencentcloud_monitor_product_namespace.instances", "list.#"), ), diff --git a/tencentcloud/services/monitor/extension_monitor.go b/tencentcloud/services/monitor/extension_monitor.go new file mode 100644 index 0000000000..d41e00ec77 --- /dev/null +++ b/tencentcloud/services/monitor/extension_monitor.go @@ -0,0 +1,86 @@ +package monitor + +const monitorEventTypeStatusChange = "status_change" +const monitorEventTypeAbnormal = "abnormal" + +var monitorEventTypes = []string{ + monitorEventTypeStatusChange, + monitorEventTypeAbnormal, +} + +const monitorEventStatusRecover = "recover" +const monitorEventStatusAlarm = "alarm" +const monitorEventStatusNothing = "-" + +var monitorEventStatus = []string{ + monitorEventStatusRecover, + monitorEventStatusAlarm, + monitorEventStatusNothing, +} + +// notify_way +const monitorNotifyWaySMS = "SMS" +const monitorNotifyWaySITE = "SITE" +const monitorNotifyWayEMAIL = "EMAIL" +const monitorNotifyWayCALL = "CALL" +const monitorNotifyWayWECHAT = "WECHAT" + +var monitorNotifyWays = []string{ + monitorNotifyWaySMS, + monitorNotifyWaySITE, + monitorNotifyWayEMAIL, + monitorNotifyWayCALL, + monitorNotifyWayWECHAT, +} + +// receiver_type +const monitorReceiverTypeUser = "user" +const monitorReceiverTypeGroup = "group" + +var monitorReceiverTypes = []string{ + monitorReceiverTypeUser, + monitorReceiverTypeGroup, +} + +// receive_language +const monitorReceiveLanguageCN = "zh-CN" +const monitorReceiveLanguageUS = "en-US" + +var monitorReceiveLanguages = []string{ + monitorReceiveLanguageCN, + monitorReceiveLanguageUS, +} + +/*regions in monitor*/ +var MonitorRegionMap = map[string]string{ + "ap-guangzhou": "gz", + "ap-shenzhen-fsi": "szjr", + "ap-guangzhou-open": "gzopen", + "ap-shenzhen": "szx", + "ap-shanghai": "sh", + "ap-shanghai-fsi": "shjr", + "ap-nanjing": "nj", + "ap-jinan-ec": "jnec", + "ap-hangzhou-ec": "hzec", + "ap-fuzhou-ec": "fzec", + "ap-beijing": "bj", + "ap-tianjin": "tsn", + "ap-shijiazhuang-ec": "sjwec", + "ap-beijing-fsi": "bjjr", + "ap-wuhan-ec": "whec", + "ap-changsha-ec": "csec", + "ap-chengdu": "cd", + "ap-chongqing": "cq", + "ap-taipei": "tpe", + "ap-hongkong": "hk", + "ap-singapore": "sg", + "ap-bangkok": "th", + "ap-mumbai": "in", + "ap-seoul": "kr", + "ap-tokyo": "jp", + "na-siliconvalley": "usw", + "na-ashburn": "use", + "na-toronto": "ca", + "eu-frankfurt": "de", + "eu-moscow": "ru", +} diff --git a/tencentcloud/services/monitor/extension_tke.go b/tencentcloud/services/monitor/extension_tke.go new file mode 100644 index 0000000000..1de9f60859 --- /dev/null +++ b/tencentcloud/services/monitor/extension_tke.go @@ -0,0 +1,149 @@ +package monitor + +import ( + tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + + svccvm "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cvm" +) + +const ( + TKE_CLUSTER_OS_CENTOS72 = "centos7.2x86_64" + TKE_CLUSTER_OS_CENTOS76 = "centos7.6.0_x64" + TKE_CLUSTER_OS_UBUNTU18 = "ubuntu18.04.1x86_64" + TKE_CLUSTER_OS_LINUX24 = "tlinux2.4x86_64" + TKE_CLUSTER_OS_LINUX22 = "tlinux2.2(tkernel3)x86_64" + TKE_CLUSTER_OS_LINUXF22 = "Tencent tlinux release 2.2 (Final)" +) + +// 兼容旧的 cluster_os 定义 +const ( + TkeClusterOsCentOS76 = "centos7.6x86_64" + //TkeClusterOsUbuntu16 = "ubuntu16.04.1 LTSx86_64" + TkeClusterOsUbuntu18 = "ubuntu18.04.1 LTSx86_64" +) + +var TKE_CLUSTER_OS = []string{TKE_CLUSTER_OS_CENTOS76, TKE_CLUSTER_OS_UBUNTU18, TKE_CLUSTER_OS_LINUX24} + +var tkeClusterOsMap = map[string]string{TKE_CLUSTER_OS_CENTOS72: TKE_CLUSTER_OS_CENTOS72, + TKE_CLUSTER_OS_CENTOS76: TKE_CLUSTER_OS_CENTOS76, + TKE_CLUSTER_OS_UBUNTU18: TKE_CLUSTER_OS_UBUNTU18, + TKE_CLUSTER_OS_LINUX24: TKE_CLUSTER_OS_LINUX24, + TKE_CLUSTER_OS_LINUX22: TKE_CLUSTER_OS_LINUX22, + TKE_CLUSTER_OS_LINUXF22: TKE_CLUSTER_OS_LINUXF22, +} + +func tkeToShowClusterOs(apiOs string) string { + for showName, apiName := range tkeClusterOsMap { + if apiName == apiOs { + return showName + } + } + return apiOs +} + +const ( + TKE_DEPLOY_TYPE_MANAGED = "MANAGED_CLUSTER" + TKE_DEPLOY_TYPE_INDEPENDENT = "INDEPENDENT_CLUSTER" +) + +var TKE_DEPLOY_TYPES = []string{TKE_DEPLOY_TYPE_MANAGED, TKE_DEPLOY_TYPE_INDEPENDENT} + +const ( + TKE_RUNTIME_DOCKER = "docker" + TKE_RUNTIME_CONTAINERD = "containerd" +) + +var TKE_RUNTIMES = []string{TKE_RUNTIME_DOCKER, TKE_RUNTIME_CONTAINERD} + +const ( + TKE_ROLE_MASTER_ETCD = "MASTER_ETCD" + TKE_ROLE_WORKER = "WORKER" +) + +var TKE_INSTANCE_CHARGE_TYPE = []string{svccvm.CVM_CHARGE_TYPE_PREPAID, svccvm.CVM_CHARGE_TYPE_POSTPAID} + +const ( + TKE_CLUSTER_OS_TYPE_DOCKER_CUSTOMIZE = "DOCKER_CUSTOMIZE" + TKE_CLUSTER_OS_TYPE_GENERAL = "GENERAL" +) + +var TKE_CLUSTER_OS_TYPES = []string{TKE_CLUSTER_OS_TYPE_GENERAL} + +const ( + TkeInternetStatusCreating = "Creating" + TkeInternetStatusCreateFailed = "CreateFailed" + TkeInternetStatusCreated = "Created" + TkeInternetStatusDeleting = "Deleting" + TkeInternetStatusDeleted = "Deleted" + TkeInternetStatusDeletedFailed = "DeletedFailed" + TkeInternetStatusNotfound = "NotFound" +) + +const ( + TKE_CLUSTER_NETWORK_TYPE_GR = "GR" + TKE_CLUSTER_NETWORK_TYPE_VPC_CNI = "VPC-CNI" + TKE_CLUSTER_NETWORK_TYPE_CILIUM_OVERLAY = "CiliumOverlay" +) + +const ( + TKE_CLUSTER_VPC_CNI_STATUS_RUNNING = "Running" + TKE_CLUSTER_VPC_CNI_STATUS_SUCCEED = "Succeed" + TKE_CLUSTER_VPC_CNI_STATUS_FAILED = "Failed" +) + +var TKE_CLUSTER_NETWORK_TYPE = []string{TKE_CLUSTER_NETWORK_TYPE_GR, TKE_CLUSTER_NETWORK_TYPE_VPC_CNI, TKE_CLUSTER_NETWORK_TYPE_CILIUM_OVERLAY} + +const ( + TKE_CLUSTER_NODE_NAME_TYPE_LAN_IP = "lan-ip" + TKE_CLUSTER_NODE_NAME_TYPE_HOSTNAME = "hostname" +) + +var TKE_CLUSTER_NODE_NAME_TYPE = []string{TKE_CLUSTER_NODE_NAME_TYPE_LAN_IP, TKE_CLUSTER_NODE_NAME_TYPE_HOSTNAME} + +const ( + TKE_CLUSTER_KUBE_PROXY_MODE_BPF = "kube-proxy-bpf" +) + +var TKE_CLUSTER_KUBE_PROXY_MODE = []string{TKE_CLUSTER_KUBE_PROXY_MODE_BPF} + +type OverrideSettings struct { + Master []tke.InstanceAdvancedSettings + Work []tke.InstanceAdvancedSettings +} + +const ( + DefaultDesiredPodNum = 0 +) + +const ( + DefaultAuthenticationOptionsIssuer = "https://kubernetes.default.svc.cluster.local" +) + +// This use to filter default values the addon returns. +var TKE_ADDON_DEFAULT_VALUES_KEY = []string{ + "global.image.host", + "global.cluster.id", + "global.cluster.appid", + "global.cluster.uin", + "global.cluster.subuin", + "global.cluster.type", + "global.cluster.clustertype", + "global.cluster.kubeversion", + "global.cluster.kubeminor", +} + +const ( + InstallSecurityAgentCommandId = "cmd-d8jj2skv" +) + +const ( + TKE_CLUSTER_INTERNET = true + TKE_CLUSTER_INTRANET = false + + TKE_CLUSTER_OPEN_ACCESS = true + TKE_CLUSTER_CLOSE_ACCESS = false +) + +const ( + backupStorageLocationStateAvailable = "Available" +) diff --git a/tencentcloud/resource_tc_monitor_alarm_notice.go b/tencentcloud/services/monitor/resource_tc_monitor_alarm_notice.go similarity index 93% rename from tencentcloud/resource_tc_monitor_alarm_notice.go rename to tencentcloud/services/monitor/resource_tc_monitor_alarm_notice.go index ddb3b75fa2..77f66fe579 100644 --- a/tencentcloud/resource_tc_monitor_alarm_notice.go +++ b/tencentcloud/services/monitor/resource_tc_monitor_alarm_notice.go @@ -1,16 +1,19 @@ -package tencentcloud +package monitor import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func resourceTencentCloudMonitorAlarmNotice() *schema.Resource { +func ResourceTencentCloudMonitorAlarmNotice() *schema.Resource { return &schema.Resource{ Create: resourceTencentMonitorAlarmNoticeCreate, Read: resourceTencentMonitorAlarmNoticeRead, @@ -216,10 +219,10 @@ func resourceTencentCloudMonitorAlarmNotice() *schema.Resource { } func resourceTencentMonitorAlarmNoticeCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_notice.create")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_notice.create")() var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewCreateAlarmNoticeRequest() ) request.Module = helper.String("monitor") @@ -359,11 +362,11 @@ func resourceTencentMonitorAlarmNoticeCreate(d *schema.ResourceData, meta interf } var noticeId *string - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := monitorService.client.UseMonitorClient().CreateAlarmNotice(request) if err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } noticeId = response.Response.NoticeId return nil @@ -377,13 +380,13 @@ func resourceTencentMonitorAlarmNoticeCreate(d *schema.ResourceData, meta interf } func resourceTencentMonitorAlarmNoticeRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_notice.read")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_notice.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} err error alarmNotice []*monitor.AlarmNotice ) @@ -480,10 +483,10 @@ func resourceTencentMonitorAlarmNoticeRead(d *schema.ResourceData, meta interfac } func resourceTencentMonitorAlarmNoticeUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_notice.update")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_notice.update")() var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewModifyAlarmNoticeRequest() ) @@ -624,11 +627,11 @@ func resourceTencentMonitorAlarmNoticeUpdate(d *schema.ResourceData, meta interf request.CLSNotices = clsNotices } - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) _, err := monitorService.client.UseMonitorClient().ModifyAlarmNotice(request) if err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -641,13 +644,13 @@ func resourceTencentMonitorAlarmNoticeUpdate(d *schema.ResourceData, meta interf } func resourceTencentMonitorAlarmNoticeDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_notice.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_notice.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) err := monitorService.DeleteMonitorAlarmNoticeById(ctx, d.Id()) diff --git a/tencentcloud/resource_tc_monitor_alarm_notice_test.go b/tencentcloud/services/monitor/resource_tc_monitor_alarm_notice_test.go similarity index 89% rename from tencentcloud/resource_tc_monitor_alarm_notice_test.go rename to tencentcloud/services/monitor/resource_tc_monitor_alarm_notice_test.go index fc7f19432f..f9e70e319d 100644 --- a/tencentcloud/resource_tc_monitor_alarm_notice_test.go +++ b/tencentcloud/services/monitor/resource_tc_monitor_alarm_notice_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudMonitorAlarmNoticeResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmNotice, diff --git a/tencentcloud/resource_tc_monitor_alarm_policy.go b/tencentcloud/services/monitor/resource_tc_monitor_alarm_policy.go similarity index 91% rename from tencentcloud/resource_tc_monitor_alarm_policy.go rename to tencentcloud/services/monitor/resource_tc_monitor_alarm_policy.go index 5d97b059e7..14686507cd 100644 --- a/tencentcloud/resource_tc_monitor_alarm_policy.go +++ b/tencentcloud/services/monitor/resource_tc_monitor_alarm_policy.go @@ -1,4 +1,4 @@ -package tencentcloud +package monitor import ( "fmt" @@ -6,11 +6,14 @@ import ( "strconv" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/go-multierror" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) @@ -96,7 +99,7 @@ func AlarmPolicyRule() map[string]*schema.Schema { } } -func resourceTencentCloudMonitorAlarmPolicy() *schema.Resource { +func ResourceTencentCloudMonitorAlarmPolicy() *schema.Resource { return &schema.Resource{ Create: resourceTencentMonitorAlarmPolicyCreate, Read: resourceTencentMonitorAlarmPolicyRead, @@ -127,7 +130,7 @@ func resourceTencentCloudMonitorAlarmPolicy() *schema.Resource { "remark": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateStringLengthInRange(0, 100), + ValidateFunc: tccommon.ValidateStringLengthInRange(0, 100), Description: "The remark of policy group.", }, "enable": { @@ -161,7 +164,7 @@ func resourceTencentCloudMonitorAlarmPolicy() *schema.Resource { "is_union_rule": { Type: schema.TypeInt, Optional: true, - ValidateFunc: validateAllowedIntValue([]int{0, 1}), + ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}), Description: "The and or relation of indicator alarm rule.", }, "rules": { @@ -280,10 +283,10 @@ func resourceTencentCloudMonitorAlarmPolicy() *schema.Resource { } func resourceTencentMonitorAlarmPolicyCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_policy.create")() - logId := getLogId(contextNil) + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_policy.create")() + logId := tccommon.GetLogId(tccommon.ContextNil) var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewCreateAlarmPolicyRequest() ) request.Module = helper.String("monitor") @@ -470,13 +473,13 @@ func resourceTencentMonitorAlarmPolicyCreate(d *schema.ResourceData, meta interf var groupId *string var policyId *string - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := monitorService.client.UseMonitorClient().CreateAlarmPolicy(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) @@ -508,13 +511,13 @@ func resourceTencentMonitorAlarmPolicyCreate(d *schema.ResourceData, meta interf } request.Tag = tagSet[0] - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := monitorService.client.UseMonitorClient().BindingPolicyTag(request) if err != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), err.Error()) - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) @@ -528,14 +531,14 @@ func resourceTencentMonitorAlarmPolicyCreate(d *schema.ResourceData, meta interf } func resourceTencentMonitorAlarmPolicyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_policy.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_policy.read")() + defer tccommon.InconsistentCheck(d, meta)() - //logId := getLogId(contextNil) - //ctx := context.WithValue(context.TODO(), logIdKey, logId) + //logId := tccommon.GetLogId(tccommon.ContextNil) + //ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewDescribeAlarmPolicyRequest() policy *monitor.AlarmPolicy ) @@ -544,11 +547,11 @@ func resourceTencentMonitorAlarmPolicyRead(d *schema.ResourceData, meta interfac request.PolicyId = &policyId request.Module = helper.String("monitor") - if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) response, err := monitorService.client.UseMonitorClient().DescribeAlarmPolicy(request) if err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } policy = response.Response.Policy return nil @@ -715,12 +718,12 @@ func resourceTencentMonitorAlarmPolicyRead(d *schema.ResourceData, meta interfac } func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_policy.update")() - //logId := getLogId(contextNil) - //ctx := context.WithValue(context.TODO(), logIdKey, logId) + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_policy.update")() + //logId := tccommon.GetLogId(tccommon.ContextNil) + //ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) if d.HasChange("policy_name") { @@ -731,10 +734,10 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf value := d.Get("policy_name").(string) request.Value = helper.String(value) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := monitorService.client.UseMonitorClient().ModifyAlarmPolicyInfo(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -750,10 +753,10 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf value := d.Get("remark").(string) request.Value = helper.String(value) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := monitorService.client.UseMonitorClient().ModifyAlarmPolicyInfo(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -769,10 +772,10 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf enable := d.Get("enable").(int) request.Enable = helper.IntInt64(enable) - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := monitorService.client.UseMonitorClient().ModifyAlarmPolicyStatus(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -921,10 +924,10 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf request.Filter = &alarmPolicyFilter } - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := monitorService.client.UseMonitorClient().ModifyAlarmPolicyCondition(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -945,10 +948,10 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf request.NoticeIds = notice } - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := monitorService.client.UseMonitorClient().ModifyAlarmPolicyNotice(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -971,10 +974,10 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf } request.TriggerTasks = tasks } - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := monitorService.client.UseMonitorClient().ModifyAlarmPolicyTasks(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -985,20 +988,20 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf } func resourceTencentMonitorAlarmPolicyDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_policy.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_policy.delete")() var ( - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewDeleteAlarmPolicyRequest() ) request.Module = helper.String("monitor") policyIds := []*string{helper.String(d.Id())} request.PolicyIds = policyIds - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err := monitorService.client.UseMonitorClient().DeleteAlarmPolicy(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { diff --git a/tencentcloud/resource_tc_monitor_alarm_policy_set_default.go b/tencentcloud/services/monitor/resource_tc_monitor_alarm_policy_set_default.go similarity index 69% rename from tencentcloud/resource_tc_monitor_alarm_policy_set_default.go rename to tencentcloud/services/monitor/resource_tc_monitor_alarm_policy_set_default.go index 76ece17754..5803d9b884 100644 --- a/tencentcloud/resource_tc_monitor_alarm_policy_set_default.go +++ b/tencentcloud/services/monitor/resource_tc_monitor_alarm_policy_set_default.go @@ -1,15 +1,18 @@ -package tencentcloud +package monitor import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMonitorAlarmPolicySetDefault() *schema.Resource { +func ResourceTencentCloudMonitorAlarmPolicySetDefault() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMonitorAlarmPolicySetDefaultCreate, Read: resourceTencentCloudMonitorAlarmPolicySetDefaultRead, @@ -34,10 +37,10 @@ func resourceTencentCloudMonitorAlarmPolicySetDefault() *schema.Resource { } func resourceTencentCloudMonitorAlarmPolicySetDefaultCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_policy_set_default.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_policy_set_default.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = monitor.NewSetDefaultAlarmPolicyRequest() @@ -52,10 +55,10 @@ func resourceTencentCloudMonitorAlarmPolicySetDefaultCreate(d *schema.ResourceDa request.PolicyId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMonitorClient().SetDefaultAlarmPolicy(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMonitorClient().SetDefaultAlarmPolicy(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -72,15 +75,15 @@ func resourceTencentCloudMonitorAlarmPolicySetDefaultCreate(d *schema.ResourceDa } func resourceTencentCloudMonitorAlarmPolicySetDefaultRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_policy_set_default.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_policy_set_default.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMonitorAlarmPolicySetDefaultDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_alarm_policy_set_default.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_alarm_policy_set_default.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_monitor_alarm_policy_set_default_test.go b/tencentcloud/services/monitor/resource_tc_monitor_alarm_policy_set_default_test.go similarity index 82% rename from tencentcloud/resource_tc_monitor_alarm_policy_set_default_test.go rename to tencentcloud/services/monitor/resource_tc_monitor_alarm_policy_set_default_test.go index 2f9e912924..fab65c6f62 100644 --- a/tencentcloud/resource_tc_monitor_alarm_policy_set_default_test.go +++ b/tencentcloud/services/monitor/resource_tc_monitor_alarm_policy_set_default_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudMonitorAlarmPolicySetDefaultResource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmPolicySetDefault, diff --git a/tencentcloud/resource_tc_monitor_alarm_policy_test.go b/tencentcloud/services/monitor/resource_tc_monitor_alarm_policy_test.go similarity index 92% rename from tencentcloud/resource_tc_monitor_alarm_policy_test.go rename to tencentcloud/services/monitor/resource_tc_monitor_alarm_policy_test.go index 1c1e35b1b4..ed945e8945 100644 --- a/tencentcloud/resource_tc_monitor_alarm_policy_test.go +++ b/tencentcloud/services/monitor/resource_tc_monitor_alarm_policy_test.go @@ -1,16 +1,18 @@ -package tencentcloud +package monitor_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) func TestAccTencentCloudMonitorAlarmPolicyResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMonitorAlarmPolicy, diff --git a/tencentcloud/resource_tc_monitor_binding_object.go b/tencentcloud/services/monitor/resource_tc_monitor_binding_object.go similarity index 82% rename from tencentcloud/resource_tc_monitor_binding_object.go rename to tencentcloud/services/monitor/resource_tc_monitor_binding_object.go index 1d11751683..2b3ea0a4bd 100644 --- a/tencentcloud/resource_tc_monitor_binding_object.go +++ b/tencentcloud/services/monitor/resource_tc_monitor_binding_object.go @@ -1,4 +1,4 @@ -package tencentcloud +package monitor import ( "context" @@ -6,14 +6,17 @@ import ( "fmt" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func resourceTencentCloudMonitorBindingObject() *schema.Resource { +func ResourceTencentCloudMonitorBindingObject() *schema.Resource { return &schema.Resource{ DeprecationMessage: "This resource has been deprecated in Terraform TencentCloud provider version 1.60.5. Please use 'tencentcloud_monitor_policy_binding_object' instead.", Create: resourceTencentMonitorBindingObjectCreate, @@ -61,12 +64,12 @@ func resourceTencentCloudMonitorBindingObject() *schema.Resource { } func resourceTencentMonitorBindingObjectCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_binding_object.create")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_binding_object.create")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewBindingPolicyObjectRequest() idSeeds []string groupId = int64(d.Get("group_id").(int)) @@ -103,10 +106,10 @@ func resourceTencentMonitorBindingObjectCreate(d *schema.ResourceData, meta inte } request.Module = helper.String("monitor") - if err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err = monitorService.client.UseMonitorClient().BindingPolicyObject(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -141,12 +144,12 @@ func resourceTencentMonitorBindingObjectCreate(d *schema.ResourceData, meta inte } func resourceTencentMonitorBindingObjectRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_binding_object.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_binding_object.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} groupId = int64(d.Get("group_id").(int)) ) @@ -198,12 +201,12 @@ func resourceTencentMonitorBindingObjectRead(d *schema.ResourceData, meta interf return d.Set("dimensions", newDimensions) } func resourceTencentMonitorBindingObjectDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_binding_object.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_binding_object.delete")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} groupId = int64(d.Get("group_id").(int)) ) @@ -255,10 +258,10 @@ func resourceTencentMonitorBindingObjectDelete(d *schema.ResourceData, meta inte request.GroupId = &groupId request.UniqueId = uniqueIds - if err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err = monitorService.client.UseMonitorClient().UnBindingPolicyObject(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { diff --git a/tencentcloud/resource_tc_monitor_binding_receiver.go b/tencentcloud/services/monitor/resource_tc_monitor_binding_receiver.go similarity index 80% rename from tencentcloud/resource_tc_monitor_binding_receiver.go rename to tencentcloud/services/monitor/resource_tc_monitor_binding_receiver.go index fb2c1d7149..e03c2dbeb7 100644 --- a/tencentcloud/resource_tc_monitor_binding_receiver.go +++ b/tencentcloud/services/monitor/resource_tc_monitor_binding_receiver.go @@ -1,18 +1,21 @@ -package tencentcloud +package monitor import ( "context" "fmt" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func resourceTencentCloudMonitorBindingAlarmReceiver() *schema.Resource { +func ResourceTencentCloudMonitorBindingAlarmReceiver() *schema.Resource { return &schema.Resource{ Create: resourceTencentMonitorBindingAlarmReceiverCreate, Read: resourceTencentMonitorBindingAlarmReceiverRead, @@ -36,14 +39,14 @@ func resourceTencentCloudMonitorBindingAlarmReceiver() *schema.Resource { Type: schema.TypeInt, Optional: true, Default: 0, - ValidateFunc: validateIntegerInRange(0, 86399), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 86399), Description: "Alarm period start time. Valid value ranges: (0~86399). which removes the date after it is converted to Beijing time as a Unix timestamp, for example 7200 means '10:0:0'.", }, "end_time": { Type: schema.TypeInt, Optional: true, Default: 86400, - ValidateFunc: validateIntegerInRange(0, 86399), + ValidateFunc: tccommon.ValidateIntegerInRange(0, 86399), Description: "End of alarm period. Meaning with `start_time`.", }, "notify_way": { @@ -56,7 +59,7 @@ func resourceTencentCloudMonitorBindingAlarmReceiver() *schema.Resource { "receiver_type": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(monitorReceiverTypes), + ValidateFunc: tccommon.ValidateAllowedStringValue(monitorReceiverTypes), Description: "Receive type. Optional " + helper.SliceFieldSerialize(monitorReceiverTypes) + ".", }, "receiver_group_list": { @@ -74,7 +77,7 @@ func resourceTencentCloudMonitorBindingAlarmReceiver() *schema.Resource { "receive_language": { Type: schema.TypeString, Optional: true, - ValidateFunc: validateAllowedStringValue(monitorReceiveLanguages), + ValidateFunc: tccommon.ValidateAllowedStringValue(monitorReceiveLanguages), Default: monitorReceiveLanguageCN, Description: "Alert sending language. Optional " + helper.SliceFieldSerialize(monitorReceiveLanguages) + ".", }, @@ -86,12 +89,12 @@ func resourceTencentCloudMonitorBindingAlarmReceiver() *schema.Resource { } func resourceTencentMonitorBindingAlarmReceiverCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_binding_receiver.create")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_binding_receiver.create")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewModifyAlarmReceiversRequest() groupId = int64(d.Get("group_id").(int)) ) @@ -140,10 +143,10 @@ func resourceTencentMonitorBindingAlarmReceiverCreate(d *schema.ResourceData, me request.ReceiverInfos = append(request.ReceiverInfos, &receiverInfo) } - if err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err = monitorService.client.UseMonitorClient().ModifyAlarmReceivers(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -156,13 +159,13 @@ func resourceTencentMonitorBindingAlarmReceiverCreate(d *schema.ResourceData, me } func resourceTencentMonitorBindingAlarmReceiverRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_binding_receiver.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_binding_receiver.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} groupId = int64(d.Get("group_id").(int)) ) @@ -194,11 +197,11 @@ func resourceTencentMonitorBindingAlarmReceiverRead(d *schema.ResourceData, meta } func resourceTencentMonitorBindingAlarmReceiverUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_binding_receiver.update")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_binding_receiver.update")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewModifyAlarmReceiversRequest() groupId = int64(d.Get("group_id").(int)) ) @@ -246,10 +249,10 @@ func resourceTencentMonitorBindingAlarmReceiverUpdate(d *schema.ResourceData, me request.ReceiverInfos = append(request.ReceiverInfos, &receiverInfo) } - if err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err = monitorService.client.UseMonitorClient().ModifyAlarmReceivers(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -260,12 +263,12 @@ func resourceTencentMonitorBindingAlarmReceiverUpdate(d *schema.ResourceData, me } func resourceTencentMonitorBindingAlarmReceiverDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_binding_receiver.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_binding_receiver.delete")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewModifyAlarmReceiversRequest() groupId = int64(d.Get("group_id").(int)) ) @@ -282,10 +285,10 @@ func resourceTencentMonitorBindingAlarmReceiverDelete(d *schema.ResourceData, me request.GroupId = &groupId request.Module = helper.String("monitor") - if err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err = monitorService.client.UseMonitorClient().ModifyAlarmReceivers(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { diff --git a/tencentcloud/resource_tc_monitor_policy_binding_object.go b/tencentcloud/services/monitor/resource_tc_monitor_policy_binding_object.go similarity index 79% rename from tencentcloud/resource_tc_monitor_policy_binding_object.go rename to tencentcloud/services/monitor/resource_tc_monitor_policy_binding_object.go index bb2576488d..6316127096 100644 --- a/tencentcloud/resource_tc_monitor_policy_binding_object.go +++ b/tencentcloud/services/monitor/resource_tc_monitor_policy_binding_object.go @@ -1,4 +1,4 @@ -package tencentcloud +package monitor import ( "context" @@ -6,14 +6,17 @@ import ( "fmt" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) -func resourceTencentCloudMonitorPolicyBindingObject() *schema.Resource { +func ResourceTencentCloudMonitorPolicyBindingObject() *schema.Resource { return &schema.Resource{ Create: resourceTencentMonitorPolicyBindingObjectCreate, Read: resourceTencentMonitorPolicyBindingObjectRead, @@ -63,12 +66,12 @@ func resourceTencentCloudMonitorPolicyBindingObject() *schema.Resource { } func resourceTencentMonitorPolicyBindingObjectCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_binding_object.create")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_binding_object.create")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} request = monitor.NewBindingPolicyObjectRequest() policyId = d.Get("policy_id").(string) ) @@ -101,10 +104,10 @@ func resourceTencentMonitorPolicyBindingObjectCreate(d *schema.ResourceData, met } request.Module = helper.String("monitor") - if err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err = monitorService.client.UseMonitorClient().BindingPolicyObject(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { @@ -118,12 +121,12 @@ func resourceTencentMonitorPolicyBindingObjectCreate(d *schema.ResourceData, met } func resourceTencentMonitorPolicyBindingObjectRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_policy_binding_object.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_policy_binding_object.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} policyId = d.Id() ) @@ -158,12 +161,12 @@ func resourceTencentMonitorPolicyBindingObjectRead(d *schema.ResourceData, meta } func resourceTencentMonitorPolicyBindingObjectDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_monitor_binding_object.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_monitor_binding_object.delete")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + monitorService = MonitorService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} policyId = d.Id() ) @@ -211,10 +214,10 @@ func resourceTencentMonitorPolicyBindingObjectDelete(d *schema.ResourceData, met request.PolicyId = &policyId request.UniqueId = uniqueIds - if err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + if err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) if _, err = monitorService.client.UseMonitorClient().UnBindingPolicyObject(request); err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } return nil }); err != nil { diff --git a/tencentcloud/services/monitor/service_tencentcloud_monitor.go b/tencentcloud/services/monitor/service_tencentcloud_monitor.go new file mode 100644 index 0000000000..03a7cadd28 --- /dev/null +++ b/tencentcloud/services/monitor/service_tencentcloud_monitor.go @@ -0,0 +1,2483 @@ +package monitor + +import ( + "context" + "fmt" + "log" + "strconv" + "strings" + "time" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + monitor "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor/v20180724" + "gopkg.in/yaml.v2" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +type MonitorService struct { + client *connectivity.TencentCloudClient +} + +func (me *MonitorService) CheckCanCreateMysqlROInstance(ctx context.Context, mysqlId string) (can bool, errRet error) { + + logId := tccommon.GetLogId(ctx) + + loc, err := time.LoadLocation("Asia/Chongqing") + if err != nil { + errRet = fmt.Errorf("Can not load time zone `Asia/Chongqing`, reason %s", err.Error()) + return + } + + request := monitor.NewGetMonitorDataRequest() + + request.Namespace = helper.String("QCE/CDB") + request.MetricName = helper.String("RealCapacity") + request.Period = helper.Uint64(60) + + now := time.Now() + request.StartTime = helper.String(now.Add(-5 * time.Minute).In(loc).Format("2006-01-02T15:04:05+08:00")) + request.EndTime = helper.String(now.In(loc).Format("2006-01-02T15:04:05+08:00")) + + request.Instances = []*monitor.Instance{ + { + Dimensions: []*monitor.Dimension{{ + Name: helper.String("InstanceId"), + Value: &mysqlId, + }}, + }, + } + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().GetMonitorData(request) + if err != nil { + errRet = err + return + } + + if len(response.Response.DataPoints) == 0 { + return + } + dataPoint := response.Response.DataPoints[0] + if len(dataPoint.Values) == 0 { + return + } + can = true + return +} + +func (me *MonitorService) FullRegions() (regions []string, errRet error) { + request := cvm.NewDescribeRegionsRequest() + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + if response, err := me.client.UseCvmClient().DescribeRegions(request); err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } else { + for _, region := range response.Response.RegionSet { + regions = append(regions, *region.Region) + } + } + return nil + }); err != nil { + errRet = err + return + } + return +} + +func (me *MonitorService) DescribePolicyGroupDetailInfo(ctx context.Context, groupId int64) (response *monitor.DescribePolicyGroupInfoResponse, errRet error) { + + var ( + request = monitor.NewDescribePolicyGroupInfoRequest() + err error + ) + request.GroupId = &groupId + request.Module = helper.String("monitor") + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + if response, err = me.client.UseMonitorClient().DescribePolicyGroupInfo(request); err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + errRet = err + return + } + return +} + +func (me *MonitorService) DescribeAlarmPolicyById(ctx context.Context, policyId string) (info *monitor.AlarmPolicy, errRet error) { + + var ( + request = monitor.NewDescribeAlarmPolicyRequest() + ) + logId := tccommon.GetLogId(ctx) + request.Module = helper.String("monitor") + request.PolicyId = &policyId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribeAlarmPolicy(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + if response.Response.Policy == nil { + return + } + info = response.Response.Policy + return +} + +func (me *MonitorService) DescribeAlarmNoticeById(ctx context.Context, alarmmap map[string]interface{}) (noticeIds []*monitor.AlarmNotice, errRet error) { + var ( + request = monitor.NewDescribeAlarmNoticesRequest() + response *monitor.DescribeAlarmNoticesResponse + err error + ) + request.Module = helper.String("monitor") + request.PageNumber = helper.IntInt64(1) + request.PageSize = helper.IntInt64(200) + request.Order = alarmmap["order"].(*string) + if v, ok := alarmmap["ownerUid"]; ok { + request.OwnerUid = v.(*int64) + } + if v, ok := alarmmap["name"]; ok { + request.Name = v.(*string) + } + if v, ok := alarmmap["receiver_type"]; ok { + request.ReceiverType = v.(*string) + } + + if v, ok := alarmmap["userIdArr"]; ok { + request.UserIds = v.([]*int64) + } + if v, ok := alarmmap["groupArr"]; ok { + request.GroupIds = v.([]*int64) + } + if v, ok := alarmmap["noticeArr"]; ok { + request.NoticeIds = v.([]*string) + } + + if err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + if response, err = me.client.UseMonitorClient().DescribeAlarmNotices(request); err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + noticeIds = response.Response.Notices + return nil + }); err != nil { + return + } + return +} + +func (me *MonitorService) DescribePolicyGroup(ctx context.Context, groupId int64) (info *monitor.DescribePolicyGroupListGroup, errRet error) { + + var ( + request = monitor.NewDescribePolicyGroupListRequest() + offset int64 = 0 + limit int64 = 20 + finish bool + ) + request.Module = helper.String("monitor") + request.Offset = &offset + request.Limit = &limit + + for { + if finish { + break + } + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribePolicyGroupList(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + if len(response.Response.GroupList) < int(limit) { + finish = true + } + for _, v := range response.Response.GroupList { + if *v.GroupId == groupId { + info = v + return nil + } + } + return nil + }); err != nil { + errRet = err + return + } + if info != nil { + return + } + offset = offset + limit + } + return +} + +func (me *MonitorService) DescribeBindingPolicyObjectList(ctx context.Context, groupId int64) (objects []*monitor.DescribeBindingPolicyObjectListInstance, errRet error) { + + var ( + requestList = monitor.NewDescribeBindingPolicyObjectListRequest() + responseList *monitor.DescribeBindingPolicyObjectListResponse + offset int64 = 0 + limit int64 = 100 + finish bool + err error + ) + + requestList.GroupId = &groupId + requestList.Module = helper.String("monitor") + requestList.Offset = &offset + requestList.Limit = &limit + + for { + if finish { + break + } + if err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(requestList.GetAction()) + if responseList, err = me.client.UseMonitorClient().DescribeBindingPolicyObjectList(requestList); err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + objects = append(objects, responseList.Response.List...) + if len(responseList.Response.List) < int(limit) { + finish = true + } + return nil + }); err != nil { + errRet = err + return + } + offset = offset + limit + } + + return +} + +func (me *MonitorService) DescribeBindingAlarmPolicyObjectList(ctx context.Context, policyId string) ( + objects []*monitor.DescribeBindingPolicyObjectListInstance, errRet error) { + + var ( + requestList = monitor.NewDescribeBindingPolicyObjectListRequest() + responseList *monitor.DescribeBindingPolicyObjectListResponse + offset int64 = 0 + limit int64 = 100 + finish bool + err error + ) + requestList.GroupId = helper.Int64(0) + requestList.PolicyId = &policyId + requestList.Module = helper.String("monitor") + requestList.Offset = &offset + requestList.Limit = &limit + + for { + if finish { + break + } + if err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(requestList.GetAction()) + if responseList, err = me.client.UseMonitorClient().DescribeBindingPolicyObjectList(requestList); err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + objects = append(objects, responseList.Response.List...) + if len(responseList.Response.List) < int(limit) { + finish = true + } + return nil + }); err != nil { + errRet = err + return + } + offset = offset + limit + } + + return +} + +// DescribeMonitorTmpInstance tmp +func (me *MonitorService) DescribeMonitorTmpInstance(ctx context.Context, tmpInstanceId string) (tmpInstance *monitor.PrometheusInstancesItem, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePrometheusInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceIds = []*string{&tmpInstanceId} + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*monitor.PrometheusInstancesItem, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseMonitorClient().DescribePrometheusInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.InstanceSet) < 1 { + break + } + instances = append(instances, response.Response.InstanceSet...) + if len(response.Response.InstanceSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + tmpInstance = instances[0] + return +} + +func (me *MonitorService) IsolateMonitorTmpInstanceById(ctx context.Context, tmpInstanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewTerminatePrometheusInstancesRequest() + request.InstanceIds = []*string{&tmpInstanceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().TerminatePrometheusInstances(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DeleteMonitorTmpInstanceById(ctx context.Context, tmpInstanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDestroyPrometheusInstanceRequest() + request.InstanceId = &tmpInstanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DestroyPrometheusInstance(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeMonitorTmpCvmAgent(ctx context.Context, instanceId string, tmpCvmAgentId string) (tmpCvmAgent *monitor.PrometheusAgent, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePrometheusAgentsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceId = &instanceId + request.AgentIds = []*string{&tmpCvmAgentId} + + response, err := me.client.UseMonitorClient().DescribePrometheusAgents(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AgentSet) < 1 { + return + } + tmpCvmAgent = response.Response.AgentSet[0] + return +} + +func (me *MonitorService) DescribeMonitorTmpScrapeJob(ctx context.Context, tmpScrapeJobId string) (tmpScrapeJob *monitor.PrometheusScrapeJob, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePrometheusScrapeJobsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + ids := strings.Split(tmpScrapeJobId, tccommon.FILED_SP) + + request.JobIds = []*string{&ids[0]} + request.InstanceId = &ids[1] + request.AgentId = &ids[2] + + response, err := me.client.UseMonitorClient().DescribePrometheusScrapeJobs(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.ScrapeJobSet) < 1 { + return + } + tmpScrapeJob = response.Response.ScrapeJobSet[0] + return +} + +func (me *MonitorService) DeleteMonitorTmpScrapeJobById(ctx context.Context, tmpScrapeJobId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + ids := strings.Split(tmpScrapeJobId, tccommon.FILED_SP) + request := monitor.NewDeletePrometheusScrapeJobsRequest() + request.JobIds = []*string{&ids[0]} + request.InstanceId = &ids[1] + request.AgentId = &ids[2] + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeletePrometheusScrapeJobs(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DeleteMonitorAlarmNoticeById(ctx context.Context, Id string) (errRet error) { + request := monitor.NewDeleteAlarmNoticesRequest() + request.Module = helper.String("monitor") + noticeId := Id + var n = []*string{¬iceId} + request.NoticeIds = n + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseMonitorClient().DeleteAlarmNotices(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + return err + } + return +} + +func (me *MonitorService) DescribeMonitorTmpExporterIntegration(ctx context.Context, tmpExporterIntegrationId string) (tmpExporterIntegration *monitor.IntegrationConfiguration, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeExporterIntegrationsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + ids := strings.Split(tmpExporterIntegrationId, tccommon.FILED_SP) + if ids[0] != "" { + request.Name = &ids[0] + } + request.InstanceId = &ids[1] + kubeType, _ := strconv.Atoi(ids[2]) + request.KubeType = helper.IntInt64(kubeType) + request.ClusterId = &ids[3] + request.Kind = &ids[4] + + response, err := me.client.UseMonitorClient().DescribeExporterIntegrations(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.IntegrationSet) < 1 { + return + } + tmpExporterIntegration = response.Response.IntegrationSet[0] + return +} + +func (me *MonitorService) DeleteMonitorTmpExporterIntegrationById(ctx context.Context, tmpExporterIntegrationId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDeleteExporterIntegrationRequest() + ids := strings.Split(tmpExporterIntegrationId, tccommon.FILED_SP) + + request.Name = &ids[0] + request.InstanceId = &ids[1] + kubeType, _ := strconv.Atoi(ids[2]) + request.KubeType = helper.IntInt64(kubeType) + request.ClusterId = &ids[3] + request.Kind = &ids[4] + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeleteExporterIntegration(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeMonitorTmpAlertRuleById(ctx context.Context, instanceId string, tmpAlertRuleId string) (instance *monitor.PrometheusRuleSet, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeAlertRulesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.InstanceId = &instanceId + request.RuleId = &tmpAlertRuleId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribeAlertRules(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AlertRuleSet) < 1 { + return + } + instance = response.Response.AlertRuleSet[0] + + return +} + +func (me *MonitorService) DeleteMonitorTmpAlertRule(ctx context.Context, instanceId string, ruleId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDeleteAlertRulesRequest() + request.InstanceId = &instanceId + request.RuleIds = []*string{&ruleId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeleteAlertRules(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeMonitorRecordingRuleById(ctx context.Context, instanceId string, recordingRuleId string) (instance *monitor.RecordingRuleSet, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeRecordingRulesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.InstanceId = &instanceId + request.RuleId = &recordingRuleId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribeRecordingRules(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.RecordingRuleSet) < 1 { + return + } + instance = response.Response.RecordingRuleSet[0] + + return +} + +func (me *MonitorService) DeleteMonitorRecordingRule(ctx context.Context, instanceId string, recordingRuleId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDeleteRecordingRulesRequest() + request.InstanceId = &instanceId + request.RuleIds = []*string{&recordingRuleId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeleteRecordingRules(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeMonitorGrafanaInstance(ctx context.Context, instanceId string) (grafanaInstance *monitor.GrafanaInstanceInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeGrafanaInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceIds = []*string{&instanceId} + request.Offset = helper.IntInt64(0) + request.Limit = helper.IntInt64(10) + + response, err := me.client.UseMonitorClient().DescribeGrafanaInstances(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Instances) < 1 { + return + } + grafanaInstance = response.Response.Instances[0] + + return +} + +func (me *MonitorService) DeleteMonitorGrafanaInstanceById(ctx context.Context, instanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDeleteGrafanaInstanceRequest() + + request.InstanceIDs = []*string{&instanceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeleteGrafanaInstance(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) CleanGrafanaInstanceById(ctx context.Context, instanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewCleanGrafanaInstanceRequest() + + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().CleanGrafanaInstance(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeMonitorGrafanaIntegration(ctx context.Context, integrationId, instanceId string) (grafanaIntegration *monitor.GrafanaIntegrationConfig, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeGrafanaIntegrationsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.IntegrationId = &integrationId + request.InstanceId = &instanceId + + response, err := me.client.UseMonitorClient().DescribeGrafanaIntegrations(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + if response == nil || response.Response == nil || len(response.Response.IntegrationSet) < 1 { + return + } + grafanaIntegration = response.Response.IntegrationSet[0] + return +} + +func (me *MonitorService) DeleteMonitorGrafanaIntegrationById(ctx context.Context, integrationId, instanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDeleteGrafanaIntegrationRequest() + + request.IntegrationId = &integrationId + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeleteGrafanaIntegration(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeMonitorGrafanaNotificationChannel(ctx context.Context, channelId, instanceId string) (grafanaNotificationChannel *monitor.GrafanaChannel, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeGrafanaChannelsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.Offset = helper.IntInt64(0) + request.Limit = helper.IntInt64(10) + request.ChannelIds = []*string{&channelId} + request.InstanceId = &instanceId + + response, err := me.client.UseMonitorClient().DescribeGrafanaChannels(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.NotificationChannelSet) < 1 { + return + } + grafanaNotificationChannel = response.Response.NotificationChannelSet[0] + return +} + +func (me *MonitorService) DeleteMonitorGrafanaNotificationChannelById(ctx context.Context, channelId, instanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDeleteGrafanaNotificationChannelRequest() + + request.ChannelIDs = []*string{&channelId} + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeleteGrafanaNotificationChannel(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeMonitorSsoAccount(ctx context.Context, instanceId, userId string) (ssoAccount *monitor.GrafanaAccountInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeSSOAccountRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceId = &instanceId + request.UserId = &userId + + response, err := me.client.UseMonitorClient().DescribeSSOAccount(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + for _, v := range response.Response.AccountSet { + if *v.UserId == userId { + ssoAccount = v + return + } + } + + return +} + +func (me *MonitorService) DeleteMonitorSsoAccountById(ctx context.Context, instanceId, userId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDeleteSSOAccountRequest() + + request.InstanceId = &instanceId + request.UserId = &userId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeleteSSOAccount(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeMonitorGrafanaPlugin(ctx context.Context, instanceId, pluginId string) (grafanaPlugin *monitor.GrafanaPlugin, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeInstalledPluginsRequest() + response *monitor.DescribeInstalledPluginsResponse + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceId = &instanceId + request.PluginId = &pluginId + + response, err := me.client.UseMonitorClient().DescribeInstalledPlugins(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + + for _, v := range response.Response.PluginSet { + if *v.PluginId == pluginId { + grafanaPlugin = v + return + } + } + return +} + +func (me *MonitorService) DeleteMonitorGrafanaPluginById(ctx context.Context, instanceId, pluginId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewUninstallGrafanaPluginsRequest() + + request.InstanceId = &instanceId + request.PluginIds = []*string{&pluginId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().UninstallGrafanaPlugins(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeTkeTmpAlertPolicy(ctx context.Context, instanceId, tmpAlertPolicyId string) (tmpAlertPolicy *monitor.PrometheusAlertPolicyItem, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePrometheusAlertPolicyRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceId = &instanceId + request.Filters = append(request.Filters, &monitor.Filter{ + Name: helper.String("ID"), + Values: []*string{&tmpAlertPolicyId}, + }) + + response, err := me.client.UseMonitorClient().DescribePrometheusAlertPolicy(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AlertRules) < 1 { + return + } + tmpAlertPolicy = response.Response.AlertRules[0] + return +} + +func (me *MonitorService) DeleteTkeTmpAlertPolicyById(ctx context.Context, instanceId, tmpAlertPolicyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDeletePrometheusAlertPolicyRequest() + request.InstanceId = &instanceId + request.AlertIds = []*string{&tmpAlertPolicyId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeletePrometheusAlertPolicy(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeTmpTkeClusterAgentsById(ctx context.Context, instanceId, clusterId, clusterType string) (agents *monitor.PrometheusAgentOverview, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePrometheusClusterAgentsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.InstanceId = &instanceId + ratelimit.Check(request.GetAction()) + + var offset uint64 = 0 + var pageSize uint64 = 100 + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribePrometheusClusterAgents(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Agents) < 1 { + break + } + for _, v := range response.Response.Agents { + if *v.ClusterId == clusterId && *v.ClusterType == clusterType { + return v, nil + } + } + if len(response.Response.Agents) < int(pageSize) { + break + } + offset += pageSize + } + + return +} + +func (me *MonitorService) DeletePrometheusClusterAgent(ctx context.Context, instanceId, clusterId, clusterType string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := monitor.NewDeletePrometheusClusterAgentRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.InstanceId = &instanceId + request.Agents = append(request.Agents, &monitor.PrometheusAgentInfo{ + ClusterId: &clusterId, + ClusterType: &clusterType, + }) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeletePrometheusClusterAgent(request) + if err != nil { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeTkeTmpConfigById(ctx context.Context, configId string) (respParams *monitor.DescribePrometheusConfigResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + request := monitor.NewDescribePrometheusConfigRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, ids [%s], request body [%s], reason[%s]\n", + logId, "query object", configId, request.ToJsonString(), errRet.Error()) + } + }() + + ids, err := me.parseConfigId(configId) + if err != nil { + errRet = err + return + } + + request.ClusterId = &ids.ClusterId + request.ClusterType = &ids.ClusterType + request.InstanceId = &ids.InstanceId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribePrometheusConfig(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail,ids [%s], request body [%s], reason[%s]\n", + logId, request.GetAction(), configId, request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success,ids [%s], request body [%s], response body [%s]\n", + logId, request.GetAction(), configId, request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response.RequestId == nil { + return nil, fmt.Errorf("response is invalid,%s", response.ToJsonString()) + } + + respParams = response.Response + return +} + +func (me *MonitorService) DeleteTkeTmpConfigByName(ctx context.Context, configId string, ServiceMonitors []*string, PodMonitors []*string, RawJobs []*string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := monitor.NewDeletePrometheusConfigRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,ids [%s], request body [%s], reason[%s]\n", + logId, "delete object", configId, request.ToJsonString(), errRet.Error()) + } + }() + + ids, err := me.parseConfigId(configId) + if err != nil { + errRet = err + return + } + + request.ClusterId = &ids.ClusterId + request.ClusterType = &ids.ClusterType + request.InstanceId = &ids.InstanceId + + if len(ServiceMonitors) > 0 { + request.ServiceMonitors = ServiceMonitors + } + + if len(PodMonitors) > 0 { + request.PodMonitors = PodMonitors + } + + if len(RawJobs) > 0 { + request.RawJobs = RawJobs + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeletePrometheusConfig(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, ids [%s], request body [%s], response body [%s]\n", + logId, request.GetAction(), configId, request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) parseConfigId(configId string) (ret *PrometheusConfigIds, err error) { + idSplit := strings.Split(configId, tccommon.FILED_SP) + if len(idSplit) != 3 { + return nil, fmt.Errorf("id is broken,%s", configId) + } + + instanceId := idSplit[0] + clusterType := idSplit[1] + clusterId := idSplit[2] + if instanceId == "" || clusterType == "" || clusterId == "" { + return nil, fmt.Errorf("id is broken,%s", configId) + } + + ret = &PrometheusConfigIds{instanceId, clusterType, clusterId} + return +} + +func (me *MonitorService) DescribeTmpTkeTemplateById(ctx context.Context, templateId string) (template *monitor.PrometheusTemp, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePrometheusTempRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.Filters = append( + request.Filters, + &monitor.Filter{ + Name: helper.String("ID"), + Values: []*string{&templateId}, + }, + ) + ratelimit.Check(request.GetAction()) + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances := make([]*monitor.PrometheusTemp, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribePrometheusTemp(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Templates) < 1 { + break + } + instances = append(instances, response.Response.Templates...) + if len(response.Response.Templates) < int(pageSize) { + break + } + offset += pageSize + } + + if len(instances) < 1 { + return + } + + for _, v := range instances { + if *v.TemplateId == templateId { + template = v + return + } + } + + return +} + +func (me *MonitorService) DeleteTmpTkeTemplate(ctx context.Context, tempId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDeletePrometheusTempRequest() + request.TemplateId = &tempId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeletePrometheusTemp(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DeletePrometheusRecordRuleYaml(ctx context.Context, id, name string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := monitor.NewDeletePrometheusRecordRuleYamlRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.InstanceId = &id + request.Names = []*string{&name} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DeletePrometheusRecordRuleYaml(request) + if err != nil { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribePrometheusRecordRuleByName(ctx context.Context, id, name string) ( + ret *monitor.DescribePrometheusRecordRulesResponse, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := monitor.NewDescribePrometheusRecordRulesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.InstanceId = &id + if name != "" { + request.Filters = []*monitor.Filter{ + { + Name: helper.String("Name"), + Values: []*string{&name}, + }, + } + } + + response, err := me.client.UseMonitorClient().DescribePrometheusRecordRules(request) + + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + return response, nil +} + +func (me *MonitorService) DescribeTkeTmpGlobalNotification(ctx context.Context, instanceId string) (tmpNotification *monitor.PrometheusNotificationItem, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePrometheusGlobalNotificationRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceId = &instanceId + + response, err := me.client.UseMonitorClient().DescribePrometheusGlobalNotification(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response.Response.Notification != nil && response.Response.RequestId != nil { + tmpNotification = response.Response.Notification + return + } + + return +} + +func (me *MonitorService) ModifyTkeTmpGlobalNotification(ctx context.Context, instanceId string, notification monitor.PrometheusNotificationItem) (response *monitor.ModifyPrometheusGlobalNotificationResponse, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewModifyPrometheusGlobalNotificationRequest() + request.InstanceId = &instanceId + request.Notification = ¬ification + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().ModifyPrometheusGlobalNotification(request) + if err != nil { + errRet = err + return nil, err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribePrometheusTempSync(ctx context.Context, templateId string) (targets []*monitor.PrometheusTemplateSyncTarget, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePrometheusTempSyncRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.TemplateId = &templateId + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribePrometheusTempSync(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success,ids [%s], request body [%s], response body [%s]\n", + logId, request.GetAction(), templateId, request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response.RequestId == nil { + return nil, fmt.Errorf("response is invalid, %s", response.ToJsonString()) + } + + if len(response.Response.Targets) < 1 { + return + } + + targets = response.Response.Targets + + return +} + +func (me *MonitorService) DescribeMonitorManageGrafanaAttachmentById(ctx context.Context, instanceId string) (manageGrafanaAttachment *monitor.PrometheusInstancesItem, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDescribePrometheusInstancesRequest() + request.InstanceIds = []*string{&instanceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribePrometheusInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.InstanceSet) < 1 { + return + } + + manageGrafanaAttachment = response.Response.InstanceSet[0] + return +} + +func (me *MonitorService) DeleteMonitorManageGrafanaAttachmentById(ctx context.Context, instanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + resp, err := me.DescribeMonitorManageGrafanaAttachmentById(ctx, instanceId) + if err != nil { + errRet = err + return + } + + request := monitor.NewUnbindPrometheusManagedGrafanaRequest() + request.InstanceId = &instanceId + request.GrafanaId = resp.GrafanaInstanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().UnbindPrometheusManagedGrafana(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *MonitorService) DescribeTkeTmpBasicConfigById(ctx context.Context, clusterId, clusterType, instanceId string) (respParams *monitor.DescribePrometheusConfigResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + request := monitor.NewDescribePrometheusConfigRequest() + request.InstanceId = &instanceId + request.ClusterType = &clusterType + request.ClusterId = &clusterId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribePrometheusConfig(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response.RequestId == nil { + return nil, fmt.Errorf("response is invalid,%s", response.ToJsonString()) + } + + respParams = response.Response + return +} + +func (me *MonitorService) GetConfigType(name string, respParams *monitor.DescribePrometheusConfigResponseParams) (configType string, config *monitor.PrometheusConfigItem, err error) { + for _, v := range respParams.ServiceMonitors { + if *v.Name == name { + configType = "service_monitors" + config = v + return + } + } + + for _, v := range respParams.PodMonitors { + if *v.Name == name { + configType = "pod_monitors" + config = v + return + } + } + + for _, v := range respParams.RawJobs { + if *v.Name == name { + configType = "raw_jobs" + config = v + return + } + } + err = fmt.Errorf("[ERROR] name [%v] configuration does not exist", name) + return +} + +type PrometheusConfig struct { + Config *string + Regex []string +} + +func (r *PrometheusConfig) UnmarshalToMap() (map[interface{}]interface{}, error) { + var configMap map[interface{}]interface{} + err := yaml.Unmarshal([]byte(*r.Config), &configMap) + if err != nil { + log.Printf("[ERROR] yaml Unmarshal fail [%v]\n", err) + return nil, err + } + return configMap, nil +} + +func (r *PrometheusConfig) MarshalToYaml(config *map[interface{}]interface{}) (string, error) { + data, err := yaml.Marshal(config) + if err != nil { + log.Printf("[ERROR] yaml Marshal fail [%v]\n", err) + return "", err + } + return string(data), nil +} + +func (r *PrometheusConfig) SetRegex(configs []interface{}) (*[]interface{}, error) { + setStatus := false + regex := strings.Join(r.Regex, "|") + for k, v := range configs { + metricRelabelings := v.(map[interface{}]interface{})["metric_relabel_configs"] + if metricRelabelings == nil { + if v.(map[interface{}]interface{})["metricRelabelings"] != nil { + metricRelabelings = v.(map[interface{}]interface{})["metricRelabelings"] + } else { + metricRelabelings = []interface{}{} + } + } + metricRelabelingList := []interface{}{} + for _, vv := range metricRelabelings.([]interface{}) { + metricRelabeling := vv.(map[interface{}]interface{}) + sourceLabels := metricRelabeling["source_labels"] + if sourceLabels == nil { + sourceLabels = metricRelabeling["sourceLabels"] + } + if metricRelabeling["action"] == "keep" && sourceLabels.([]interface{})[0] == "__name__" { + if regex == "" { + metricRelabeling = nil + } else { + metricRelabeling["regex"] = regex + setStatus = true + } + } + if metricRelabeling["action"] == "drop" || metricRelabeling == nil { + } else { + metricRelabelingList = append(metricRelabelingList, metricRelabeling) + } + } + + if k == (len(configs)-1) && regex != "" && !setStatus { + metricRelabeling := map[interface{}]interface{}{ + "source_labels": []string{"__name__"}, + "regex": regex, + "replacement": "$1", + "action": "keep", + } + metricRelabelingList = append(metricRelabelingList, metricRelabeling) + } + if len(metricRelabelingList) > 0 { + v.(map[interface{}]interface{})["metric_relabel_configs"] = metricRelabelingList + } + } + return &configs, nil +} + +func (me *MonitorService) DescribeMonitorTmpGrafanaConfigById(ctx context.Context, instanceId string) (tmpGrafanaConfig *monitor.DescribeGrafanaConfigResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDescribeGrafanaConfigRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribeGrafanaConfig(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + tmpGrafanaConfig = response.Response + return +} + +func (me *MonitorService) DescribeMonitorGrafanaPluginOverviewsByFilter(ctx context.Context, param map[string]interface{}) (pluginOverviews []*monitor.GrafanaPlugin, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePluginOverviewsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribePluginOverviews(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || response.Response.PluginSet == nil { + return nil, nil + } + + pluginOverviews = response.Response.PluginSet + + return +} + +func (me *MonitorService) DescribeMonitorGrafanaDnsConfigById(ctx context.Context, instanceId string) (grafanaDnsConfig *monitor.DescribeDNSConfigResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDescribeDNSConfigRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribeDNSConfig(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + grafanaDnsConfig = response.Response + return +} + +func (me *MonitorService) DescribeMonitorGrafanaEnvConfigById(ctx context.Context, instanceId string) (grafanaEnvConfig *monitor.DescribeGrafanaEnvironmentsResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDescribeGrafanaEnvironmentsRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribeGrafanaEnvironments(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + grafanaEnvConfig = response.Response + return +} + +func (me *MonitorService) DescribeMonitorGrafanaWhitelistConfigById(ctx context.Context, instanceId string) (grafanaWhitelistConfig *monitor.DescribeGrafanaWhiteListResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := monitor.NewDescribeGrafanaWhiteListRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribeGrafanaWhiteList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + grafanaWhitelistConfig = response.Response + return +} + +func (me *MonitorService) DescribeMonitorAlarmHistoryByFilter(ctx context.Context, param map[string]interface{}) (alarmHistory []*monitor.AlarmHistory, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeAlarmHistoriesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Module" { + request.Module = v.(*string) + } + if k == "Order" { + request.Order = v.(*string) + } + if k == "StartTime" { + request.StartTime = v.(*int64) + } + if k == "EndTime" { + request.EndTime = v.(*int64) + } + if k == "MonitorTypes" { + request.MonitorTypes = v.([]*string) + } + if k == "AlarmObject" { + request.AlarmObject = v.(*string) + } + if k == "AlarmStatus" { + request.AlarmStatus = v.([]*string) + } + if k == "ProjectIds" { + request.ProjectIds = v.([]*int64) + } + if k == "InstanceGroupIds" { + request.InstanceGroupIds = v.([]*int64) + } + if k == "Namespaces" { + request.Namespaces = v.([]*monitor.MonitorTypeNamespace) + } + if k == "MetricNames" { + request.MetricNames = v.([]*string) + } + if k == "PolicyName" { + request.PolicyName = v.(*string) + } + if k == "Content" { + request.Content = v.(*string) + } + if k == "ReceiverUids" { + request.ReceiverUids = v.([]*int64) + } + if k == "ReceiverGroups" { + request.ReceiverGroups = v.([]*int64) + } + if k == "PolicyIds" { + request.PolicyIds = v.([]*string) + } + if k == "AlarmLevels" { + request.AlarmLevels = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 1 + limit int64 = 20 + ) + for { + request.PageNumber = &offset + request.PageSize = &limit + response, err := me.client.UseMonitorClient().DescribeAlarmHistories(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Histories) < 1 { + break + } + alarmHistory = append(alarmHistory, response.Response.Histories...) + if len(response.Response.Histories) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *MonitorService) DescribeMonitorAlarmBasicAlarmsByFilter(ctx context.Context, param map[string]interface{}) (alarms []*monitor.DescribeBasicAlarmListAlarms, warning *string, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeBasicAlarmListRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Module" { + request.Module = v.(*string) + } + if k == "StartTime" { + request.StartTime = v.(*int64) + } + if k == "EndTime" { + request.EndTime = v.(*int64) + } + if k == "OccurTimeOrder" { + request.OccurTimeOrder = v.(*string) + } + if k == "ProjectIds" { + request.ProjectIds = v.([]*int64) + } + if k == "ViewNames" { + request.ViewNames = v.([]*string) + } + if k == "AlarmStatus" { + request.AlarmStatus = v.([]*int64) + } + if k == "ObjLike" { + request.ObjLike = v.(*string) + } + if k == "InstanceGroupIds" { + request.InstanceGroupIds = v.([]*int64) + } + if k == "MetricNames" { + request.MetricNames = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseMonitorClient().DescribeBasicAlarmList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Alarms) < 1 { + break + } + alarms = append(alarms, response.Response.Alarms...) + warning = response.Response.Warning + if len(response.Response.Alarms) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *MonitorService) DescribeMonitorAlarmBasicMetricByFilter(ctx context.Context, param map[string]interface{}) (metric []*monitor.MetricSet, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeBaseMetricsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Namespace" { + request.Namespace = v.(*string) + } + if k == "MetricName" { + request.MetricName = v.(*string) + } + if k == "Dimensions" { + request.Dimensions = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribeBaseMetrics(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.MetricSet) < 1 { + return + } + + metric = response.Response.MetricSet + + return +} + +func (me *MonitorService) DescribeMonitorAlarmConditionsTemplateByFilter(ctx context.Context, param map[string]interface{}) (alarmConditionsTemplate []*monitor.TemplateGroup, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeConditionsTemplateListRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Module" { + request.Module = v.(*string) + } + if k == "ViewName" { + request.ViewName = v.(*string) + } + if k == "GroupName" { + request.GroupName = v.(*string) + } + if k == "GroupID" { + request.GroupID = v.(*string) + } + if k == "UpdateTimeOrder" { + request.UpdateTimeOrder = v.(*string) + } + if k == "PolicyCountOrder" { + request.PolicyCountOrder = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseMonitorClient().DescribeConditionsTemplateList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.TemplateGroupList) < 1 { + break + } + alarmConditionsTemplate = append(alarmConditionsTemplate, response.Response.TemplateGroupList...) + if len(response.Response.TemplateGroupList) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *MonitorService) DescribeMonitorAlarmMetricByFilter(ctx context.Context, param map[string]interface{}) (alarmMetric []*monitor.Metric, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeAlarmMetricsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Module" { + request.Module = v.(*string) + } + if k == "MonitorType" { + request.MonitorType = v.(*string) + } + if k == "Namespace" { + request.Namespace = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseMonitorClient().DescribeAlarmMetrics(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Metrics) < 1 { + return + } + + alarmMetric = response.Response.Metrics + + return +} + +func (me *MonitorService) DescribeMonitorAlarmNoticeCallbacksByFilter(ctx context.Context) (alarmNoticeCallbacks []*monitor.URLNotice, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeAlarmNoticeCallbacksRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.Module = helper.String("monitor") + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribeAlarmNoticeCallbacks(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.URLNotices) < 1 { + return + } + + alarmNoticeCallbacks = response.Response.URLNotices + + return +} + +func (me *MonitorService) DescribeMonitorAlarmPolicyByFilter(ctx context.Context, param map[string]interface{}) (alarmPolicy []*monitor.AlarmPolicy, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeAlarmPoliciesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Module" { + request.Module = v.(*string) + } + if k == "PolicyName" { + request.PolicyName = v.(*string) + } + if k == "MonitorTypes" { + request.MonitorTypes = v.([]*string) + } + if k == "Namespaces" { + request.Namespaces = v.([]*string) + } + if k == "Dimensions" { + request.Dimensions = v.(*string) + } + if k == "ReceiverUids" { + request.ReceiverUids = v.([]*int64) + } + if k == "ReceiverGroups" { + request.ReceiverGroups = v.([]*int64) + } + if k == "PolicyType" { + request.PolicyType = v.([]*string) + } + if k == "Field" { + request.Field = v.(*string) + } + if k == "Order" { + request.Order = v.(*string) + } + if k == "ProjectIds" { + request.ProjectIds = v.([]*int64) + } + if k == "NoticeIds" { + request.NoticeIds = v.([]*string) + } + if k == "RuleTypes" { + request.RuleTypes = v.([]*string) + } + if k == "Enable" { + request.Enable = v.([]*int64) + } + if k == "NotBindingNoticeRule" { + request.NotBindingNoticeRule = v.(*int64) + } + if k == "InstanceGroupId" { + request.InstanceGroupId = v.(*int64) + } + if k == "NeedCorrespondence" { + request.NeedCorrespondence = v.(*int64) + } + if k == "TriggerTasks" { + request.TriggerTasks = v.([]*monitor.AlarmPolicyTriggerTask) + } + if k == "OneClickPolicyType" { + request.OneClickPolicyType = v.([]*string) + } + if k == "NotBindAll" { + request.NotBindAll = v.(*int64) + } + if k == "NotInstanceGroup" { + request.NotInstanceGroup = v.(*int64) + } + if k == "PromInsId" { + request.PromInsId = v.(*string) + } + if k == "ReceiverOnCallFormIDs" { + request.ReceiverOnCallFormIDs = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 1 + limit int64 = 20 + ) + for { + request.PageNumber = &offset + request.PageSize = &limit + response, err := me.client.UseMonitorClient().DescribeAlarmPolicies(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Policies) < 1 { + break + } + alarmPolicy = append(alarmPolicy, response.Response.Policies...) + if len(response.Response.Policies) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *MonitorService) DescribeMonitorAlarmAllNamespacesByFilter(ctx context.Context, param map[string]interface{}) ( + qce, custom []*monitor.CommonNamespace, common []*monitor.CommonNamespaceNew, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeAllNamespacesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SceneType" { + request.SceneType = v.(*string) + } + if k == "Module" { + request.Module = v.(*string) + } + if k == "MonitorTypes" { + request.MonitorTypes = v.([]*string) + } + if k == "Ids" { + request.Ids = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribeAllNamespaces(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil { + return + } + + qce = response.Response.QceNamespacesNew + custom = response.Response.CustomNamespacesNew + common = response.Response.CommonNamespaces + + return +} + +func (me *MonitorService) DescribeMonitorAlarmMonitorTypeByFilter(ctx context.Context, param map[string]interface{}) (alarmMonitor *monitor.DescribeMonitorTypesResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeMonitorTypesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.Module = helper.String("monitor") + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribeMonitorTypes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil { + return + } + alarmMonitor = response.Response + + return +} + +func (me *MonitorService) DescribeMonitorTmpRegionsByFilter(ctx context.Context, param map[string]interface{}) (tmpRegions []*monitor.PrometheusRegionItem, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribePrometheusRegionsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "PayMode" { + request.PayMode = v.(*int64) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribePrometheusRegions(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.RegionSet) < 1 { + return + } + tmpRegions = response.Response.RegionSet + + return +} + +func (me *MonitorService) DescribeMonitorStatisticDataByFilter(ctx context.Context, param map[string]interface{}) (statisticData *monitor.DescribeStatisticDataResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = monitor.NewDescribeStatisticDataRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Module" { + request.Module = v.(*string) + } + if k == "Namespace" { + request.Namespace = v.(*string) + } + if k == "MetricNames" { + request.MetricNames = v.([]*string) + } + if k == "Conditions" { + request.Conditions = v.([]*monitor.MidQueryCondition) + } + if k == "GroupBys" { + request.GroupBys = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseMonitorClient().DescribeStatisticData(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil { + return + } + statisticData = response.Response + + return +} diff --git a/tencentcloud/services/monitor/service_tencentcloud_tke.go b/tencentcloud/services/monitor/service_tencentcloud_tke.go new file mode 100644 index 0000000000..45b04dc977 --- /dev/null +++ b/tencentcloud/services/monitor/service_tencentcloud_tke.go @@ -0,0 +1,2746 @@ +package monitor + +import ( + "context" + "fmt" + "log" + "strings" + + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + cwp "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp/v20180228" + tat "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tat/v20201028" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/pkg/errors" + "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + tchttp "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http" + tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" + svccvm "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cvm" +) + +type ClusterBasicSetting struct { + ClusterId string + ClusterOs string + ClusterOsType string + ClusterVersion string + ClusterName string + ClusterDescription string + ClusterLevel *string + AutoUpgradeClusterLevel *bool + VpcId string + ProjectId int64 + ClusterNodeNum int64 + ClusterStatus string + SubnetId string + Tags map[string]string +} + +type ClusterAdvancedSettings struct { + Ipvs bool + AsEnabled bool + EnableCustomizedPodCIDR bool + BasePodNumber int64 + ContainerRuntime string + RuntimeVersion string + NodeNameType string + ExtraArgs ClusterExtraArgs + NetworkType string + IsNonStaticIpMode bool + DeletionProtection bool + KubeProxyMode string + Property string + OsCustomizeType string + VpcCniType string +} + +type ClusterExtraArgs struct { + KubeAPIServer []string + KubeControllerManager []string + KubeScheduler []string +} + +type RunInstancesForNode struct { + Master []string + Work []string +} + +type InstanceAdvancedSettings struct { + MountTarget string + DockerGraphPath string + UserScript string + Unschedulable int64 + DesiredPodNum int64 + Labels []*tke.Label + DataDisks []*tke.DataDisk + ExtraArgs tke.InstanceExtraArgs +} + +type ClusterCidrSettings struct { + ClusterCidr string + IgnoreClusterCidrConflict bool + MaxNodePodNum int64 + MaxClusterServiceNum int64 + ServiceCIDR string + EniSubnetIds []string + ClaimExpiredSeconds int64 +} + +type ClusterInfo struct { + ClusterBasicSetting + ClusterCidrSettings + ClusterAdvancedSettings + + DeployType string + CreatedTime string +} + +type InstanceInfo struct { + InstanceId string + InstanceRole string + InstanceState string + FailedReason string + NodePoolId string + CreatedTime string + InstanceAdvancedSettings *tke.InstanceAdvancedSettings + InstanceDataDiskMountSetting *tke.InstanceDataDiskMountSetting + LanIp string +} + +type PrometheusConfigIds struct { + InstanceId string + ClusterType string + ClusterId string +} + +type Switch struct { + ClusterId *string `json:"ClusterId,omitempty" name:"ClusterId"` + Audit *SwitchInfo `json:"Audit,omitempty" name:"Audit"` + Event *SwitchInfo `json:"Event,omitempty" name:"Event"` + Log *SwitchInfo `json:"Log,omitempty" name:"Log"` +} + +type SwitchInfo struct { + Enable *bool `json:"Enable,omitempty" name:"Enable"` + LogsetId *string `json:"LogsetId,omitempty" name:"LogsetId"` + TopicId *string `json:"TopicId,omitempty" name:"TopicId"` + Version *string `json:"Version,omitempty" name:"Version"` + UpgradeAble *bool `json:"UpgradeAble,omitempty" name:"UpgradeAble"` +} + +type DescribeLogSwitchesResponseParams struct { + SwitchSet []*Switch `json:"SwitchSet,omitempty" name:"SwitchSet"` + RequestId *string `json:"RequestId,omitempty" name:"RequestId"` +} + +type DescribeLogSwitchesResponse struct { + tchttp.BaseResponse + Response *DescribeLogSwitchesResponseParams `json:"Response"` +} + +type TkeService struct { + client *connectivity.TencentCloudClient +} + +func (me *TkeService) DescribeClusterInstances(ctx context.Context, id string) (masters []InstanceInfo, workers []InstanceInfo, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClusterInstancesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = &id + masters = make([]InstanceInfo, 0, 100) + workers = make([]InstanceInfo, 0, 100) + var offset int64 = 0 + var limit int64 = 20 + var has = map[string]bool{} + var total int64 = -1 + +getMoreData: + if total >= 0 && offset >= total { + return + } + request.Limit = &limit + request.Offset = &offset + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterInstances(request) + if err != nil { + errRet = err + return + } + if total < 0 { + total = int64(*response.Response.TotalCount) + } + + if len(response.Response.InstanceSet) > 0 { + offset += limit + } else { + // get empty set, we're done + return + } + + for _, item := range response.Response.InstanceSet { + if has[*item.InstanceId] { + errRet = fmt.Errorf("get repeated instance_id[%s] when doing DescribeClusterInstances", *item.InstanceId) + return + } + has[*item.InstanceId] = true + instanceInfo := InstanceInfo{ + InstanceId: *item.InstanceId, + InstanceRole: *item.InstanceRole, + InstanceState: *item.InstanceState, + FailedReason: *item.FailedReason, + InstanceAdvancedSettings: item.InstanceAdvancedSettings, + } + if item.CreatedTime != nil { + instanceInfo.CreatedTime = *item.CreatedTime + } + if item.NodePoolId != nil { + instanceInfo.NodePoolId = *item.NodePoolId + } + if item.LanIP != nil { + instanceInfo.LanIp = *item.LanIP + } + if instanceInfo.InstanceRole == TKE_ROLE_WORKER { + workers = append(workers, instanceInfo) + } else { + masters = append(masters, instanceInfo) + } + } + goto getMoreData + +} + +func (me *TkeService) DescribeClusterInstancesByRole(ctx context.Context, id, role string) (masters []InstanceInfo, workers []InstanceInfo, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClusterInstancesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = &id + request.InstanceRole = &role + masters = make([]InstanceInfo, 0, 100) + workers = make([]InstanceInfo, 0, 100) + var offset int64 = 0 + var limit int64 = 20 + var has = map[string]bool{} + var total int64 = -1 + + for { + if total >= 0 && offset >= total { + break + } + request.Limit = &limit + request.Offset = &offset + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterInstances(request) + if err != nil { + errRet = err + return + } + if total < 0 { + total = int64(*response.Response.TotalCount) + } + + if len(response.Response.InstanceSet) == 0 { + // get empty set, we're done + break + } + + offset += limit + + for _, item := range response.Response.InstanceSet { + if has[*item.InstanceId] { + errRet = fmt.Errorf("get repeated instance_id[%s] when doing DescribeClusterInstances", *item.InstanceId) + return + } + has[*item.InstanceId] = true + instanceInfo := InstanceInfo{ + InstanceId: *item.InstanceId, + InstanceRole: *item.InstanceRole, + InstanceState: *item.InstanceState, + FailedReason: *item.FailedReason, + InstanceAdvancedSettings: item.InstanceAdvancedSettings, + } + if item.CreatedTime != nil { + instanceInfo.CreatedTime = *item.CreatedTime + } + if item.NodePoolId != nil { + instanceInfo.NodePoolId = *item.NodePoolId + } + if item.LanIP != nil { + instanceInfo.LanIp = *item.LanIP + } + if instanceInfo.InstanceRole == TKE_ROLE_WORKER { + workers = append(workers, instanceInfo) + } else { + masters = append(masters, instanceInfo) + } + } + } + + return +} + +func (me *TkeService) DescribeClusters(ctx context.Context, id string, name string) (clusterInfos []ClusterInfo, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClustersRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if id != "" && name != "" { + errRet = fmt.Errorf("cluster_id, cluster_name only one can be set one") + return + } + + if id != "" { + request.ClusterIds = []*string{&id} + } + + if name != "" { + filter := &tke.Filter{ + Name: helper.String("ClusterName"), + Values: []*string{&name}, + } + request.Filters = []*tke.Filter{filter} + } + + response, err := me.client.UseTkeClient().DescribeClusters(request) + + if err != nil { + errRet = err + return + } + + lenClusters := len(response.Response.Clusters) + + if lenClusters == 0 { + return + } + clusterInfos = make([]ClusterInfo, 0, lenClusters) + + for index := range response.Response.Clusters { + cluster := response.Response.Clusters[index] + var clusterInfo ClusterInfo + + clusterInfo.ClusterId = *cluster.ClusterId + clusterInfo.ClusterOs = *cluster.ClusterOs + clusterInfo.ClusterVersion = *cluster.ClusterVersion + clusterInfo.ClusterDescription = *cluster.ClusterDescription + clusterInfo.ClusterName = *cluster.ClusterName + clusterInfo.ClusterStatus = *cluster.ClusterStatus + clusterInfo.ClusterLevel = cluster.ClusterLevel + clusterInfo.AutoUpgradeClusterLevel = cluster.AutoUpgradeClusterLevel + + clusterInfo.ProjectId = int64(*cluster.ProjectId) + clusterInfo.VpcId = *cluster.ClusterNetworkSettings.VpcId + clusterInfo.ClusterNodeNum = int64(*cluster.ClusterNodeNum) + + clusterInfo.IgnoreClusterCidrConflict = *cluster.ClusterNetworkSettings.IgnoreClusterCIDRConflict + clusterInfo.ClusterCidr = *cluster.ClusterNetworkSettings.ClusterCIDR + clusterInfo.MaxClusterServiceNum = int64(*cluster.ClusterNetworkSettings.MaxClusterServiceNum) + clusterInfo.EniSubnetIds = common.StringValues(cluster.ClusterNetworkSettings.Subnets) + + clusterInfo.MaxNodePodNum = int64(*cluster.ClusterNetworkSettings.MaxNodePodNum) + clusterInfo.DeployType = strings.ToUpper(*cluster.ClusterType) + clusterInfo.Ipvs = *cluster.ClusterNetworkSettings.Ipvs + clusterInfo.CreatedTime = *cluster.CreatedTime + + projectMap, err := helper.JsonToMap(*cluster.Property) + if err != nil { + errRet = err + return + } + if projectMap["VpcCniType"] != nil { + vpcCniType := projectMap["VpcCniType"].(string) + clusterInfo.VpcCniType = vpcCniType + } + + if len(cluster.TagSpecification) > 0 { + clusterInfo.Tags = make(map[string]string) + for _, tag := range cluster.TagSpecification[0].Tags { + clusterInfo.Tags[*tag.Key] = *tag.Value + } + } + + clusterInfos = append(clusterInfos, clusterInfo) + } + return +} + +func (me *TkeService) DescribeCluster(ctx context.Context, id string) ( + clusterInfo ClusterInfo, + has bool, + errRet error, +) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClustersRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterIds = []*string{&id} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusters(request) + + if err != nil { + errRet = err + return + } + + if len(response.Response.Clusters) == 0 { + return + } + + has = true + cluster := response.Response.Clusters[0] + clusterInfo.ClusterId = *cluster.ClusterId + clusterInfo.ClusterOs = *cluster.ClusterOs + clusterInfo.ClusterVersion = *cluster.ClusterVersion + clusterInfo.ClusterDescription = *cluster.ClusterDescription + clusterInfo.ClusterName = *cluster.ClusterName + clusterInfo.ClusterStatus = *cluster.ClusterStatus + clusterInfo.ClusterLevel = cluster.ClusterLevel + clusterInfo.AutoUpgradeClusterLevel = cluster.AutoUpgradeClusterLevel + + clusterInfo.ProjectId = int64(*cluster.ProjectId) + clusterInfo.VpcId = *cluster.ClusterNetworkSettings.VpcId + clusterInfo.ClusterNodeNum = int64(*cluster.ClusterNodeNum) + + clusterInfo.DeployType = strings.ToUpper(*cluster.ClusterType) + clusterInfo.Ipvs = *cluster.ClusterNetworkSettings.Ipvs + clusterInfo.Property = helper.PString(cluster.Property) + clusterInfo.OsCustomizeType = helper.PString(cluster.OsCustomizeType) + clusterInfo.ContainerRuntime = helper.PString(cluster.ContainerRuntime) + clusterInfo.DeletionProtection = helper.PBool(cluster.DeletionProtection) + clusterInfo.RuntimeVersion = helper.PString(cluster.RuntimeVersion) + if cluster.ClusterNetworkSettings != nil { + clusterInfo.KubeProxyMode = helper.PString(cluster.ClusterNetworkSettings.KubeProxyMode) + clusterInfo.IgnoreClusterCidrConflict = helper.PBool(cluster.ClusterNetworkSettings.IgnoreClusterCIDRConflict) + clusterInfo.ClusterCidr = helper.PString(cluster.ClusterNetworkSettings.ClusterCIDR) + clusterInfo.MaxClusterServiceNum = int64(helper.PUint64(cluster.ClusterNetworkSettings.MaxClusterServiceNum)) + clusterInfo.MaxNodePodNum = int64(helper.PUint64(cluster.ClusterNetworkSettings.MaxNodePodNum)) + clusterInfo.ServiceCIDR = helper.PString(cluster.ClusterNetworkSettings.ServiceCIDR) + } + clusterInfo.EniSubnetIds = common.StringValues(cluster.ClusterNetworkSettings.Subnets) + + projectMap, err := helper.JsonToMap(*cluster.Property) + if err != nil { + errRet = err + return + } + if projectMap["VpcCniType"] != nil { + vpcCniType := projectMap["VpcCniType"].(string) + clusterInfo.VpcCniType = vpcCniType + } + if projectMap["NetworkType"] != nil { + networkType := projectMap["NetworkType"].(string) + clusterInfo.NetworkType = networkType + } + + if len(cluster.TagSpecification) > 0 { + clusterInfo.Tags = make(map[string]string) + for _, tag := range cluster.TagSpecification[0].Tags { + clusterInfo.Tags[*tag.Key] = *tag.Value + } + } + + return +} + +func (me *TkeService) DescribeClusterCommonNames(ctx context.Context, request *tke.DescribeClusterCommonNamesRequest) (commonNames []*tke.CommonName, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterCommonNames(request) + + if err != nil { + errRet = err + return + } + + commonNames = response.Response.CommonNames + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) DescribeClusterLevelAttribute(ctx context.Context, id string) (clusterLevels []*tke.ClusterLevelAttribute, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClusterLevelAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if id != "" { + request.ClusterID = &id + } + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterLevelAttribute(request) + + if err != nil { + errRet = err + return + } + + clusterLevels = response.Response.Items + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) DescribeClusterConfig(ctx context.Context, id string, isPublic bool) (config string, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClusterKubeconfigRequest() + if isPublic { + request.IsExtranet = &isPublic + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = &id + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterKubeconfig(request) + + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil { + return + } + + config = *response.Response.Kubeconfig + return +} + +func (me *TkeService) GetUpgradeInstanceResult(ctx context.Context, id string) ( + done bool, + errRet error, +) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewGetUpgradeInstanceProgressRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = &id + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().GetUpgradeInstanceProgress(request) + + if err != nil { + errRet = err + return + } + + lifeState := *response.Response.LifeState + + // all instances success, lifeState=done + if lifeState == "done" { + return true, nil + } else if lifeState != "process" { + return false, fmt.Errorf("upgrade instances failed, tke response lifeState is:%s", lifeState) + } + + // parent lifeState=process, check whether all instances in processing. + for _, inst := range response.Response.Instances { + if *inst.LifeState == "done" || *inst.LifeState == "pending" { + continue + } + if *inst.LifeState != "process" { + return false, fmt.Errorf("upgrade instances failed, "+ + "instanceId:%s, lifeState is:%s", *inst.InstanceID, *inst.LifeState) + } + // instance lifeState=process, check whether failed or not. + for _, detail := range inst.Detail { + if *detail.LifeState == "failed" { + return false, fmt.Errorf("upgrade instances failed, "+ + "instanceId:%s, detail.lifeState is:%s", *inst.InstanceID, *detail.LifeState) + } + } + } + + return +} + +func (me *TkeService) CreateCluster(ctx context.Context, + basic ClusterBasicSetting, + advanced ClusterAdvancedSettings, + cvms RunInstancesForNode, + iAdvanced InstanceAdvancedSettings, + cidrSetting ClusterCidrSettings, + tags map[string]string, + existedInstance []*tke.ExistedInstancesForNode, + overrideSettings *OverrideSettings, + iDiskMountSettings []*tke.InstanceDataDiskMountSetting, + extensionAddons []*tke.ExtensionAddon, +) (id string, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewCreateClusterRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterBasicSettings = &tke.ClusterBasicSettings{} + request.ClusterBasicSettings.ClusterOs = &basic.ClusterOs + request.ClusterBasicSettings.ClusterVersion = &basic.ClusterVersion + request.ClusterBasicSettings.ProjectId = &basic.ProjectId + request.ClusterBasicSettings.VpcId = &basic.VpcId + request.ClusterBasicSettings.ClusterDescription = &basic.ClusterDescription + request.ClusterBasicSettings.ClusterName = &basic.ClusterName + request.ClusterBasicSettings.OsCustomizeType = &basic.ClusterOsType + request.ClusterBasicSettings.ClusterLevel = basic.ClusterLevel + if basic.AutoUpgradeClusterLevel != nil { + request.ClusterBasicSettings.AutoUpgradeClusterLevel = &tke.AutoUpgradeClusterLevel{ + IsAutoUpgrade: basic.AutoUpgradeClusterLevel, + } + } + if basic.SubnetId != "" { + request.ClusterBasicSettings.SubnetId = &basic.SubnetId + } + for k, v := range tags { + if len(request.ClusterBasicSettings.TagSpecification) == 0 { + request.ClusterBasicSettings.TagSpecification = []*tke.TagSpecification{{ + ResourceType: helper.String("cluster"), + }} + } + + request.ClusterBasicSettings.TagSpecification[0].Tags = append(request.ClusterBasicSettings.TagSpecification[0].Tags, &tke.Tag{ + Key: helper.String(k), + Value: helper.String(v), + }) + } + + request.ClusterAdvancedSettings = &tke.ClusterAdvancedSettings{} + request.ClusterAdvancedSettings.IPVS = &advanced.Ipvs + request.ClusterAdvancedSettings.AsEnabled = &advanced.AsEnabled + request.ClusterAdvancedSettings.ContainerRuntime = &advanced.ContainerRuntime + request.ClusterAdvancedSettings.RuntimeVersion = &advanced.RuntimeVersion + request.ClusterAdvancedSettings.NodeNameType = &advanced.NodeNameType + request.ClusterAdvancedSettings.EnableCustomizedPodCIDR = &advanced.EnableCustomizedPodCIDR + request.ClusterAdvancedSettings.BasePodNumber = &advanced.BasePodNumber + request.ClusterAdvancedSettings.ExtraArgs = &tke.ClusterExtraArgs{ + KubeAPIServer: common.StringPtrs(advanced.ExtraArgs.KubeAPIServer), + KubeControllerManager: common.StringPtrs(advanced.ExtraArgs.KubeControllerManager), + KubeScheduler: common.StringPtrs(advanced.ExtraArgs.KubeScheduler), + } + request.ClusterAdvancedSettings.NetworkType = &advanced.NetworkType + request.ClusterAdvancedSettings.IsNonStaticIpMode = &advanced.IsNonStaticIpMode + request.ClusterAdvancedSettings.DeletionProtection = &advanced.DeletionProtection + request.ClusterAdvancedSettings.KubeProxyMode = &advanced.KubeProxyMode + request.ClusterAdvancedSettings.VpcCniType = &advanced.VpcCniType + + request.InstanceAdvancedSettings = &tke.InstanceAdvancedSettings{} + request.InstanceAdvancedSettings.MountTarget = &iAdvanced.MountTarget + request.InstanceAdvancedSettings.DockerGraphPath = &iAdvanced.DockerGraphPath + request.InstanceAdvancedSettings.UserScript = &iAdvanced.UserScript + request.InstanceAdvancedSettings.Unschedulable = &iAdvanced.Unschedulable + request.InstanceAdvancedSettings.DesiredPodNumber = &iAdvanced.DesiredPodNum + if len(iAdvanced.ExtraArgs.Kubelet) > 0 { + request.InstanceAdvancedSettings.ExtraArgs = &iAdvanced.ExtraArgs + } + + if len(iAdvanced.Labels) > 0 { + request.InstanceAdvancedSettings.Labels = iAdvanced.Labels + } + + if len(iAdvanced.DataDisks) > 0 { + request.InstanceAdvancedSettings.DataDisks = iAdvanced.DataDisks + } + + if len(extensionAddons) > 0 { + request.ExtensionAddons = extensionAddons + } + + if overrideSettings != nil { + if len(overrideSettings.Master)+len(overrideSettings.Work) > 0 && + len(overrideSettings.Master)+len(overrideSettings.Work) != (len(cvms.Master)+len(cvms.Work)) { + return "", fmt.Errorf("len(overrideSettings) != (len(cvms.Master)+len(cvms.Work))") + } + } + + request.RunInstancesForNode = []*tke.RunInstancesForNode{} + + if len(cvms.Master) != 0 { + + var node tke.RunInstancesForNode + node.NodeRole = helper.String(TKE_ROLE_MASTER_ETCD) + node.RunInstancesPara = []*string{} + request.ClusterType = helper.String(TKE_DEPLOY_TYPE_INDEPENDENT) + for v := range cvms.Master { + node.RunInstancesPara = append(node.RunInstancesPara, &cvms.Master[v]) + if overrideSettings != nil && len(overrideSettings.Master) != 0 { + node.InstanceAdvancedSettingsOverrides = append(node.InstanceAdvancedSettingsOverrides, &overrideSettings.Master[v]) + } + } + request.RunInstancesForNode = append(request.RunInstancesForNode, &node) + + } else { + request.ClusterType = helper.String(TKE_DEPLOY_TYPE_MANAGED) + } + + if len(cvms.Work) != 0 { + var node tke.RunInstancesForNode + node.NodeRole = helper.String(TKE_ROLE_WORKER) + node.RunInstancesPara = []*string{} + for v := range cvms.Work { + node.RunInstancesPara = append(node.RunInstancesPara, &cvms.Work[v]) + if overrideSettings != nil && len(overrideSettings.Work) != 0 { + node.InstanceAdvancedSettingsOverrides = append(node.InstanceAdvancedSettingsOverrides, &overrideSettings.Work[v]) + } + } + request.RunInstancesForNode = append(request.RunInstancesForNode, &node) + } + + if len(iDiskMountSettings) != 0 { + request.InstanceDataDiskMountSettings = iDiskMountSettings + } + + request.ClusterCIDRSettings = &tke.ClusterCIDRSettings{} + + maxNodePodNum := uint64(cidrSetting.MaxNodePodNum) + request.ClusterCIDRSettings.MaxNodePodNum = &maxNodePodNum + + maxClusterServiceNum := uint64(cidrSetting.MaxClusterServiceNum) + request.ClusterCIDRSettings.MaxClusterServiceNum = &maxClusterServiceNum + request.ClusterCIDRSettings.ClusterCIDR = &cidrSetting.ClusterCidr + request.ClusterCIDRSettings.IgnoreClusterCIDRConflict = &cidrSetting.IgnoreClusterCidrConflict + request.ClusterCIDRSettings.ServiceCIDR = &cidrSetting.ServiceCIDR + request.ClusterCIDRSettings.EniSubnetIds = common.StringPtrs(cidrSetting.EniSubnetIds) + request.ClusterCIDRSettings.ClaimExpiredSeconds = &cidrSetting.ClaimExpiredSeconds + + if len(existedInstance) > 0 { + request.ExistedInstancesForNode = existedInstance + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().CreateCluster(request) + + if err != nil { + errRet = err + return + } + + id = *response.Response.ClusterId + return +} + +func (me *TkeService) CreateClusterInstances(ctx context.Context, + id string, runInstancePara string, + iAdvanced tke.InstanceAdvancedSettings) (instanceIds []string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewCreateClusterInstancesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.ClusterId = &id + request.RunInstancePara = &runInstancePara + + request.InstanceAdvancedSettings = &iAdvanced + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().CreateClusterInstances(request) + + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("CreateClusterInstances return nil response") + return + } + + instanceIds = make([]string, 0, len(response.Response.InstanceIdSet)) + + for _, v := range response.Response.InstanceIdSet { + + instanceIds = append(instanceIds, *v) + } + return +} + +func (me *TkeService) CheckOneOfClusterNodeReady(ctx context.Context, clusterId string, mustHaveWorkers bool) error { + return resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError { + _, workers, err := me.DescribeClusterInstances(ctx, clusterId) + if err != nil { + return tccommon.RetryError(err) + } + + // check serverless node + virtualNodes, err := me.DescribeClusterVirtualNode(ctx, clusterId) + if err != nil { + return tccommon.RetryError(err) + } + + if len(workers) == 0 && len(virtualNodes) == 0 { + if mustHaveWorkers { + return resource.RetryableError(fmt.Errorf("waiting for workers created")) + } + return nil + } + + for i := range workers { + worker := workers[i] + if worker.InstanceState == "running" { + return nil + } + } + for i := range virtualNodes { + virtualNode := virtualNodes[i] + if virtualNode.Phase != nil && *virtualNode.Phase == "Running" { + return nil + } + } + + return resource.RetryableError(fmt.Errorf("cluster %s waiting for one of the workers ready", clusterId)) + }) +} + +/* +if cluster is creating, return error:TencentCloudSDKError] Code=InternalError.ClusterState +*/ +func (me *TkeService) DeleteClusterInstances(ctx context.Context, id string, instanceIds []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDeleteClusterInstancesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.ClusterId = &id + request.InstanceIds = make([]*string, 0, len(instanceIds)) + + for index := range instanceIds { + request.InstanceIds = append(request.InstanceIds, &instanceIds[index]) + } + + request.InstanceDeleteMode = helper.String("terminate") + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().DeleteClusterInstances(request) + return err +} + +func (me *TkeService) DeleteCluster(ctx context.Context, id string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewDeleteClusterRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.ClusterId = &id + request.InstanceDeleteMode = helper.String("terminate") + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().DeleteCluster(request) + + return err +} + +func (me *TkeService) DescribeClusterSecurity(ctx context.Context, id string) (ret *tke.DescribeClusterSecurityResponse, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClusterSecurityRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.ClusterId = &id + + return me.client.UseTkeClient().DescribeClusterSecurity(request) +} + +func (me *TkeService) CreateClusterAsGroup(ctx context.Context, id, groupPara, configPara string, labels []*tke.Label, iAdvanced InstanceAdvancedSettings) (asGroupId string, errRet error) { + return "", fmt.Errorf("Cluster AS Group has OFFLINE") +} + +func (me *TkeService) DescribeClusterAsGroupsByGroupId(ctx context.Context, id string, groupId string) (clusterAsGroupSet *tke.ClusterAsGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClusterAsGroupsRequest() + + request.ClusterId = &id + request.AutoScalingGroupIds = []*string{&groupId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterAsGroups(request) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), err.Error()) + errRet = err + return + } + + if len(response.Response.ClusterAsGroupSet) > 0 { + clusterAsGroupSet = response.Response.ClusterAsGroupSet[0] + } + return +} + +func (me *TkeService) DeleteClusterAsGroups(ctx context.Context, id, asGroupId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewDeleteClusterAsGroupsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.AutoScalingGroupIds = []*string{&asGroupId} + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().DeleteClusterAsGroups(request) + if err != nil { + errRet = err + } + return +} + +/* +open internet access +*/ +func (me *TkeService) CreateClusterEndpoint(ctx context.Context, id string, subnetId, securityGroupId string, internet bool, domain string, extensiveParameters string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tke.NewCreateClusterEndpointRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + + request.IsExtranet = &internet + + if subnetId != "" { + request.SubnetId = &subnetId + } + + if securityGroupId != "" && internet { + request.SecurityGroup = &securityGroupId + } + + if domain != "" { + request.Domain = helper.String(domain) + } + + if extensiveParameters != "" { + request.ExtensiveParameters = helper.String(extensiveParameters) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().CreateClusterEndpoint(request) + if err != nil { + errRet = err + } + return +} + +func (me *TkeService) DescribeClusterEndpointStatus(ctx context.Context, id string, isExtranet bool) (status string, message string, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tke.NewDescribeClusterEndpointStatusRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.IsExtranet = &isExtranet + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().DescribeClusterEndpointStatus(request) + if err != nil { + errRet = err + return + } + if response.Response == nil || response.Response.Status == nil { + errRet = fmt.Errorf("sdk DescribeClusterEndpointStatus return empty status") + return + } + status = *response.Response.Status + message = status + return +} +func (me *TkeService) DescribeClusterEndpoints(ctx context.Context, id string) (response tke.DescribeClusterEndpointsResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tke.NewDescribeClusterEndpointsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + ratelimit.Check(request.GetAction()) + + resp, err := me.client.UseTkeClient().DescribeClusterEndpoints(request) + if err != nil { + errRet = err + return + } + if resp.Response == nil { + errRet = fmt.Errorf("sdk DescribeClusterEndpoints return empty") + return + } + + return *resp.Response, errRet +} + +func (me *TkeService) DeleteClusterEndpoint(ctx context.Context, id string, isInternet bool) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDeleteClusterEndpointRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.IsExtranet = &isInternet + + ratelimit.Check(request.GetAction()) + + _, err := me.client.UseTkeClient().DeleteClusterEndpoint(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) ModifyClusterEndpointSP(ctx context.Context, id string, securityPolicies []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewModifyClusterEndpointSPRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.SecurityPolicies = helper.Strings(securityPolicies) + + ratelimit.Check(request.GetAction()) + + _, err := me.client.UseTkeClient().ModifyClusterEndpointSP(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) ModifyClusterEndpointSG(ctx context.Context, id string, securityGroup string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewModifyClusterEndpointSPRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.SecurityGroup = &securityGroup + + ratelimit.Check(request.GetAction()) + + _, err := me.client.UseTkeClient().ModifyClusterEndpointSP(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) ModifyClusterAttribute(ctx context.Context, id string, projectId int64, clusterName, clusterDesc, clusterLevel string, autoUpgradeClusterLevel bool) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewModifyClusterAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.ProjectId = &projectId + request.ClusterName = &clusterName + request.ClusterDesc = &clusterDesc + + if clusterLevel != "" { + request.ClusterLevel = &clusterLevel + } + + request.AutoUpgradeClusterLevel = &tke.AutoUpgradeClusterLevel{ + IsAutoUpgrade: &autoUpgradeClusterLevel, + } + + ratelimit.Check(request.GetAction()) + + _, err := me.client.UseTkeClient().ModifyClusterAttribute(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) EnableVpcCniNetworkType(ctx context.Context, id string, vpcCniType string, enableStaticIp bool, subnets []string, expiredSeconds uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewEnableVpcCniNetworkTypeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + + request.ClusterId = &id + request.VpcCniType = &vpcCniType + request.EnableStaticIp = &enableStaticIp + request.Subnets = common.StringPtrs(subnets) + request.ExpiredSeconds = &expiredSeconds + + ratelimit.Check(request.GetAction()) + + _, err := me.client.UseTkeClient().EnableVpcCniNetworkType(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) DescribeEnableVpcCniProgress(ctx context.Context, id string) (status, message string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeEnableVpcCniProgressRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().DescribeEnableVpcCniProgress(request) + if err != nil { + errRet = err + return + } + + status = *response.Response.Status + message = *response.Response.ErrorMessage + return +} + +func (me *TkeService) DisableVpcCniNetworkType(ctx context.Context, id string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDisableVpcCniNetworkTypeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + + ratelimit.Check(request.GetAction()) + + _, err := me.client.UseTkeClient().DisableVpcCniNetworkType(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) AddVpcCniSubnets(ctx context.Context, id string, subnets []string, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewAddVpcCniSubnetsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.SubnetIds = common.StringPtrs(subnets) + request.VpcId = &vpcId + + ratelimit.Check(request.GetAction()) + + _, err := me.client.UseTkeClient().AddVpcCniSubnets(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) ModifyClusterVersion(ctx context.Context, id string, clusterVersion string, extraArgs interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewUpdateClusterVersionRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + + if extraArgs != nil && len(extraArgs.([]interface{})) > 0 { + // the first elem is in use + extraInterface := extraArgs.([]interface{}) + extraMap := extraInterface[0].(map[string]interface{}) + + kas := make([]*string, 0) + if kaArgs, exist := extraMap["kube_apiserver"]; exist { + args := kaArgs.([]interface{}) + for index := range args { + str := args[index].(string) + kas = append(kas, &str) + } + } + kcms := make([]*string, 0) + if kcmArgs, exist := extraMap["kube_controller_manager"]; exist { + args := kcmArgs.([]interface{}) + for index := range args { + str := args[index].(string) + kcms = append(kcms, &str) + } + } + kss := make([]*string, 0) + if ksArgs, exist := extraMap["kube_scheduler"]; exist { + args := ksArgs.([]interface{}) + for index := range args { + str := args[index].(string) + kss = append(kss, &str) + } + } + + request.ExtraArgs = &tke.ClusterExtraArgs{ + KubeAPIServer: kas, + KubeControllerManager: kcms, + KubeScheduler: kss, + } + } + + request.ClusterId = &id + request.DstVersion = &clusterVersion + + ratelimit.Check(request.GetAction()) + + _, err := me.client.UseTkeClient().UpdateClusterVersion(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) DescribeKubernetesAvailableClusterVersionsByFilter(ctx context.Context, param map[string]interface{}) (availableClusterVersions *tke.DescribeAvailableClusterVersionResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tke.NewDescribeAvailableClusterVersionRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "cluster_id" { + request.ClusterId = v.(*string) + } + if k == "cluster_ids" { + request.ClusterIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().DescribeAvailableClusterVersion(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil { + availableClusterVersions = response.Response + } + return +} + +func (me *TkeService) CheckClusterVersion(ctx context.Context, id string, clusterVersion string) (isOk bool, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeAvailableClusterVersionRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + ratelimit.Check(request.GetAction()) + + resp, err := me.client.UseTkeClient().DescribeAvailableClusterVersion(request) + if err != nil { + errRet = err + return + } + + if resp == nil || resp.Response == nil || resp.Response.Versions == nil { + return + } + versions := resp.Response.Versions + for _, v := range versions { + if *v == clusterVersion { + isOk = true + return + } + } + + return +} + +func (me *TkeService) CheckInstancesUpgradeAble(ctx context.Context, id string, upgradeType string) (instanceIds []string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewCheckInstancesUpgradeAbleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.UpgradeType = &upgradeType + ratelimit.Check(request.GetAction()) + + resp, err := me.client.UseTkeClient().CheckInstancesUpgradeAble(request) + if err != nil { + errRet = err + return + } + + if resp == nil || resp.Response == nil || resp.Response.UpgradeAbleInstances == nil { + return + } + for _, inst := range resp.Response.UpgradeAbleInstances { + instanceIds = append(instanceIds, *inst.InstanceId) + } + + return +} + +func (me *TkeService) UpgradeClusterInstances(ctx context.Context, id string, upgradeType string, instanceIds []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewUpgradeClusterInstancesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + op := "create" + request.Operation = &op + request.ClusterId = &id + request.UpgradeType = &upgradeType + request.InstanceIds = helper.Strings(instanceIds) + ratelimit.Check(request.GetAction()) + + _, err := me.client.UseTkeClient().UpgradeClusterInstances(request) + if err != nil { + errRet = err + return + } + + return +} + +func (me *TkeService) DescribeImages(ctx context.Context) (imageIds []string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeImagesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeImages(request) + if err != nil { + errRet = err + return + } + + for _, image := range response.Response.ImageInstanceSet { + imageIds = append(imageIds, *image.ImageId) + } + return +} + +func GetTkeLabels(d *schema.ResourceData, k string) []*tke.Label { + labels := make([]*tke.Label, 0) + if raw, ok := d.GetOk(k); ok { + for k, v := range raw.(map[string]interface{}) { + labels = append(labels, &tke.Label{Name: helper.String(k), Value: helper.String(v.(string))}) + } + } + return labels +} + +func GetTkeTaints(d *schema.ResourceData, k string) []*tke.Taint { + taints := make([]*tke.Taint, 0) + if raw, ok := d.GetOk(k); ok { + for _, v := range raw.([]interface{}) { + vv := v.(map[string]interface{}) + taints = append(taints, &tke.Taint{Key: helper.String(vv["key"].(string)), Value: helper.String(vv["value"].(string)), Effect: helper.String(vv["effect"].(string))}) + } + } + return taints +} + +func (me *TkeService) ModifyClusterAsGroupAttribute(ctx context.Context, id, asGroupId string, maxSize, minSize int64) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewModifyClusterAsGroupAttributeRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.ClusterAsGroupAttribute = &tke.ClusterAsGroupAttribute{ + AutoScalingGroupId: &asGroupId, + AutoScalingGroupRange: &tke.AutoScalingGroupRange{ + MaxSize: &maxSize, + MinSize: &minSize, + }, + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().ModifyClusterAsGroupAttribute(request) + if err != nil { + errRet = err + } + return +} + +func (me *TkeService) CreateClusterNodePool(ctx context.Context, clusterId, name, groupPara, configPara string, enableAutoScale bool, nodeOs string, nodeOsType string, labels []*tke.Label, taints []*tke.Taint, iAdvanced tke.InstanceAdvancedSettings, deletionProtection bool) (asGroupId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewCreateClusterNodePoolRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &clusterId + request.Name = &name + request.AutoScalingGroupPara = &groupPara + request.LaunchConfigurePara = &configPara + request.InstanceAdvancedSettings = &iAdvanced + request.EnableAutoscale = &enableAutoScale + request.DeletionProtection = &deletionProtection + request.NodePoolOs = &nodeOs + if nodeOsType != "" { + request.OsCustomizeType = &nodeOsType + } + + if len(labels) > 0 { + request.Labels = labels + } + + if len(taints) > 0 { + request.Taints = taints + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().CreateClusterNodePool(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.NodePoolId == nil { + errRet = fmt.Errorf("CreateClusterNodePool return nil response") + return + } + + asGroupId = *response.Response.NodePoolId + return +} + +func (me *TkeService) ModifyClusterNodePool(ctx context.Context, clusterId, nodePoolId string, name string, enableAutoScale bool, minSize int64, maxSize int64, nodeOs string, nodeOsType string, labels []*tke.Label, taints []*tke.Taint, tags map[string]string, deletionProtection bool) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewModifyClusterNodePoolRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &clusterId + request.NodePoolId = &nodePoolId + request.Taints = taints + request.Labels = labels + request.EnableAutoscale = &enableAutoScale + request.DeletionProtection = &deletionProtection + request.MaxNodesNum = &maxSize + request.MinNodesNum = &minSize + request.Name = &name + request.OsName = &nodeOs + request.OsCustomizeType = &nodeOsType + + if len(labels) > 0 { + request.Labels = labels + } + + if len(tags) > 0 { + for k, v := range tags { + key := k + val := v + request.Tags = append(request.Tags, &tke.Tag{ + Key: &key, + Value: &val, + }) + } + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().ModifyClusterNodePool(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) ModifyClusterNodePoolDesiredCapacity(ctx context.Context, clusterId, nodePoolId string, desiredCapacity int64) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewModifyNodePoolDesiredCapacityAboutAsgRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &clusterId + request.NodePoolId = &nodePoolId + request.DesiredCapacity = &desiredCapacity + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().ModifyNodePoolDesiredCapacityAboutAsg(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) ModifyClusterNodePoolInstanceTypes(ctx context.Context, clusterId, nodePoolId string, instanceTypes []*string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewModifyNodePoolInstanceTypesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &clusterId + request.NodePoolId = &nodePoolId + request.InstanceTypes = instanceTypes + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().ModifyNodePoolInstanceTypes(request) + if err != nil { + errRet = err + return + } + return +} + +func (me *TkeService) DeleteClusterNodePool(ctx context.Context, id, nodePoolId string, deleteKeepInstance bool) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := tke.NewDeleteClusterNodePoolRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + request.ClusterId = &id + request.NodePoolIds = []*string{&nodePoolId} + request.KeepInstance = &deleteKeepInstance + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().DeleteClusterNodePool(request) + if err != nil { + errRet = err + } + return +} + +func (me *TkeService) DescribeNodePool(ctx context.Context, clusterId string, nodePoolId string) ( + nodePool *tke.NodePool, + has bool, + errRet error, +) { + + logId := tccommon.GetLogId(ctx) + //the error code of cluster not exist is InternalError + //check cluster exist first + _, clusterHas, err := me.DescribeCluster(ctx, clusterId) + if err != nil { + errRet = err + return + } + if !clusterHas { + return + } + + request := tke.NewDescribeClusterNodePoolDetailRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = helper.String(clusterId) + request.NodePoolId = helper.String(nodePoolId) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterNodePoolDetail(request) + + if err != nil { + errRet = err + return + } + + if response.Response.NodePool == nil { + return + } + + has = true + nodePool = response.Response.NodePool + + return +} + +// node pool global config +func (me *TkeService) ModifyClusterNodePoolGlobalConfig(ctx context.Context, request *tke.ModifyClusterAsGroupOptionAttributeRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().ModifyClusterAsGroupOptionAttribute(request) + if err != nil { + errRet = err + } + return +} + +func (me *TkeService) DescribeClusterNodePoolGlobalConfig(ctx context.Context, clusterId string) ( + npGlobalConfig *tke.ClusterAsGroupOption, + errRet error, +) { + + logId := tccommon.GetLogId(ctx) + //the error code of cluster not exist is InternalError + //check cluster exist first + _, clusterHas, err := me.DescribeCluster(ctx, clusterId) + if err != nil { + errRet = err + return + } + if !clusterHas { + return + } + + request := tke.NewDescribeClusterAsGroupOptionRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = helper.String(clusterId) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterAsGroupOption(request) + + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.ClusterAsGroupOption == nil { + return + } + + npGlobalConfig = response.Response.ClusterAsGroupOption + + return +} + +func (me *TkeService) WaitForAuthenticationOptionsUpdateSuccess(ctx context.Context, id string) (info *tke.ServiceAccountAuthenticationOptions, oidc *tke.OIDCConfigAuthenticationOptions, errRet error) { + err := resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { + options, state, config, err := me.DescribeClusterAuthenticationOptions(ctx, id) + info = options + oidc = config + + if err != nil { + return resource.NonRetryableError(err) + } + + if state == "Success" { + return nil + } + + if state == "Updating" { + return resource.RetryableError(fmt.Errorf("state is %s, retry", state)) + } + + return resource.NonRetryableError(fmt.Errorf("update failed: %s", state)) + }) + + if err != nil { + errRet = err + return + } + return +} + +// DescribeClusterAuthenticationOptions +// Field `ServiceAccounts.AutoCreateDiscoveryAnonymousAuth` will always return null by design +func (me *TkeService) DescribeClusterAuthenticationOptions(ctx context.Context, id string) (options *tke.ServiceAccountAuthenticationOptions, state string, oidcConfig *tke.OIDCConfigAuthenticationOptions, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClusterAuthenticationOptionsRequest() + request.ClusterId = helper.String(id) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + res, err := me.client.UseTkeClient().DescribeClusterAuthenticationOptions(request) + if err != nil { + errRet = err + } + + if res.Response != nil { + state = *res.Response.LatestOperationState + options = res.Response.ServiceAccounts + oidcConfig = res.Response.OIDCConfig + } + + return +} + +func (me *TkeService) ModifyClusterAuthenticationOptions(ctx context.Context, request *tke.ModifyClusterAuthenticationOptionsRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", logId, request.GetAction(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().ModifyClusterAuthenticationOptions(request) + if err != nil { + errRet = err + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) ModifyDeletionProtection(ctx context.Context, id string, enable bool) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + action string + ) + + if enable { + request := tke.NewEnableClusterDeletionProtectionRequest() + request.ClusterId = &id + action = request.GetAction() + ratelimit.Check(action) + response, err := me.client.UseTkeClient().EnableClusterDeletionProtection(request) + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } else { + request := tke.NewDisableClusterDeletionProtectionRequest() + request.ClusterId = &id + action = request.GetAction() + ratelimit.Check(action) + response, err := me.client.UseTkeClient().DisableClusterDeletionProtection(request) + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, reason[%s]\n", + logId, action, errRet.Error()) + } + }() + + return +} + +func (me *TkeService) AcquireClusterAdminRole(ctx context.Context, clusterId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewAcquireClusterAdminRoleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = &clusterId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().AcquireClusterAdminRole(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) DescribeExternalNodeSupportConfig(ctx context.Context, clusterId string) (resp *tke.DescribeExternalNodeSupportConfigResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeExternalNodeSupportConfigRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = &clusterId + + ratelimit.Check(request.GetAction()) + res, err := me.client.UseTkeClient().DescribeExternalNodeSupportConfig(request) + + if err != nil { + errRet = err + return + } + if res == nil || res.Response == nil && res.Response.RequestId == nil { + return nil, errors.New("invalid response") + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), res.ToJsonString()) + + return res.Response, nil +} + +func (me *TkeService) DescribeClusterExtraArgs(ctx context.Context, clusterId string) (extraArgs *tke.ClusterExtraArgs, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeClusterExtraArgsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = &clusterId + + ratelimit.Check(request.GetAction()) + res, err := me.client.UseTkeClient().DescribeClusterExtraArgs(request) + + if err != nil { + errRet = err + return + } + if res == nil || res.Response == nil && res.Response.RequestId == nil { + return nil, errors.New("invalid response") + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), res.ToJsonString()) + + return res.Response.ClusterExtraArgs, nil +} + +func (me *TkeService) DescribeIPAMD(ctx context.Context, clusterId string) (resp *tke.DescribeIPAMDResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tke.NewDescribeIPAMDRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterId = &clusterId + + ratelimit.Check(request.GetAction()) + res, err := me.client.UseTkeClient().DescribeIPAMD(request) + + if err != nil { + errRet = err + return + } + if res == nil || res.Response == nil && res.Response.RequestId == nil { + return nil, errors.New("invalid response") + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), res.ToJsonString()) + + return res.Response, nil + +} + +func (me *TkeService) DescribeLogSwitches(ctx context.Context, clusterId string) (resp []*tke.Switch, errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDescribeLogSwitchesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.ClusterIds = helper.StringsStringsPoint([]string{clusterId}) + request.ClusterType = helper.String("tke") + ratelimit.Check(request.GetAction()) + res, err := me.client.UseTkeClient().DescribeLogSwitches(request) + + if err != nil { + errRet = err + return + } + if res == nil || res.Response == nil && res.Response.RequestId == nil { + return nil, errors.New("invalid response") + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), res.ToJsonString()) + + return res.Response.SwitchSet, nil +} + +func (me *TkeService) SwitchLogAgent(ctx context.Context, clusterId, rootDir string, enable bool) error { + if enable { + request := tke.NewInstallLogAgentRequest() + request.ClusterId = &clusterId + if rootDir != "" { + request.KubeletRootDir = &rootDir + } + return me.InstallLogAgent(ctx, request) + } + request := tke.NewUninstallLogAgentRequest() + request.ClusterId = &clusterId + return me.UninstallLogAgent(ctx, request) +} + +func (me *TkeService) SwitchEventPersistence(ctx context.Context, clusterId, logSetId, topicId string, + enable, deleteEventLog bool) error { + if enable { + request := tke.NewEnableEventPersistenceRequest() + request.ClusterId = &clusterId + if logSetId != "" { + request.LogsetId = &logSetId + } + if topicId != "" { + request.TopicId = &topicId + } + return me.EnableEventPersistence(ctx, request) + } + + request := tke.NewDisableEventPersistenceRequest() + request.ClusterId = &clusterId + request.DeleteLogSetAndTopic = &deleteEventLog + return me.DisableEventPersistence(ctx, request) +} + +func (me *TkeService) SwitchClusterAudit(ctx context.Context, clusterId, logSetId, topicId string, + enable, deleteAuditLog bool) error { + if enable { + request := tke.NewEnableClusterAuditRequest() + request.ClusterId = &clusterId + if logSetId != "" { + request.LogsetId = &logSetId + } + if topicId != "" { + request.TopicId = &topicId + } + return me.EnableClusterAudit(ctx, request) + } + request := tke.NewDisableClusterAuditRequest() + request.ClusterId = &clusterId + request.DeleteLogSetAndTopic = &deleteAuditLog + return me.DisableClusterAudit(ctx, request) +} + +func (me *TkeService) InstallLogAgent(ctx context.Context, request *tke.InstallLogAgentRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().InstallLogAgent(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) UninstallLogAgent(ctx context.Context, request *tke.UninstallLogAgentRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().UninstallLogAgent(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) EnableEventPersistence(ctx context.Context, request *tke.EnableEventPersistenceRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().EnableEventPersistence(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) DisableEventPersistence(ctx context.Context, request *tke.DisableEventPersistenceRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DisableEventPersistence(request) + + if err != nil { + code := err.(*sdkErrors.TencentCloudSDKError).Code + if code == "InternalError.KubernetesDeleteOperationError" { + return + } + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) EnableClusterAudit(ctx context.Context, request *tke.EnableClusterAuditRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().EnableClusterAudit(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) DisableClusterAudit(ctx context.Context, request *tke.DisableClusterAuditRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DisableClusterAudit(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) DescribeServerlessNodePoolByClusterIdAndNodePoolId(ctx context.Context, clusterId, nodePoolId string) (instance *tke.VirtualNodePool, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tke.NewDescribeClusterVirtualNodePoolsRequest() + request.ClusterId = common.StringPtr(clusterId) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterVirtualNodePools(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response.Response != nil && len(response.Response.NodePoolSet) > 0 { + for _, nodePool := range response.Response.NodePoolSet { + if nodePool != nil && nodePool.NodePoolId != nil && *nodePool.NodePoolId == nodePoolId { + has = true + instance = nodePool + } + } + } + return +} + +func (me *TkeService) CreateClusterVirtualNodePool(ctx context.Context, request *tke.CreateClusterVirtualNodePoolRequest) (id string, errRet error) { + logId := tccommon.GetLogId(ctx) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().CreateClusterVirtualNodePool(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil && response.Response != nil && response.Response.NodePoolId != nil { + id = *response.Response.NodePoolId + } + + return +} + +func (me *TkeService) DeleteClusterVirtualNodePool(ctx context.Context, request *tke.DeleteClusterVirtualNodePoolRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DeleteClusterVirtualNodePool(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) ModifyClusterVirtualNodePool(ctx context.Context, request *tke.ModifyClusterVirtualNodePoolRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().ModifyClusterVirtualNodePool(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) DescribeClusterVirtualNode(ctx context.Context, clusterId string) (virtualNodes []tke.VirtualNode, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tke.NewDescribeClusterVirtualNodeRequest() + request.ClusterId = common.StringPtr(clusterId) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeClusterVirtualNode(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response.Response != nil && len(response.Response.Nodes) > 0 { + for _, node := range response.Response.Nodes { + if node != nil { + virtualNodes = append(virtualNodes, *node) + } + } + } + return +} + +func ModifySecurityServiceOfCvmInNodePool(ctx context.Context, d *schema.ResourceData, tkeSvc *TkeService, cvmSvc *svccvm.CvmService, client *connectivity.TencentCloudClient, clusterId string, nodePoolId string) error { + logId := tccommon.GetLogId(ctx) + + if d.HasChange("auto_scaling_config.0.enhanced_security_service") { + workersInsIdOfNodePool := make([]string, 0) + _, workers, err := tkeSvc.DescribeClusterInstances(ctx, clusterId) + if err != nil { + return err + } + for _, worker := range workers { + if worker.NodePoolId != "" && worker.NodePoolId == nodePoolId { + workersInsIdOfNodePool = append(workersInsIdOfNodePool, worker.InstanceId) + } + } + + const BatchProcessedInsLimit = 100 // limit 100 items to change each request + var ( + launchConfigRaw []interface{} + dMap map[string]interface{} + ) + if raw, ok := d.GetOk("auto_scaling_config"); ok { + launchConfigRaw = raw.([]interface{}) + dMap = launchConfigRaw[0].(map[string]interface{}) + } + + if v, ok := dMap["enhanced_security_service"]; ok && !v.(bool) { + // uninstall, cwp/DeleteMachine, need uuid + // https://cloud.tencent.com/document/product/296/19844 + for i := 0; i < len(workersInsIdOfNodePool); i += BatchProcessedInsLimit { + var reqInstanceIds []string + if i+BatchProcessedInsLimit <= len(workersInsIdOfNodePool) { + reqInstanceIds = workersInsIdOfNodePool[i : i+BatchProcessedInsLimit] + } else { + reqInstanceIds = workersInsIdOfNodePool[i:] + } + // get uuid + instanceSet, err := cvmSvc.DescribeInstanceSetByIds(ctx, helper.StrListValToStr(reqInstanceIds)) + if err != nil { + return err + } + // call cwp/DeleteMachine + for _, ins := range instanceSet { + requestDeleteMachine := cwp.NewDeleteMachineRequest() + requestDeleteMachine.Uuid = ins.Uuid + if _, err := client.UseCwpClient().DeleteMachine(requestDeleteMachine); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, requestDeleteMachine.GetAction(), requestDeleteMachine.ToJsonString(), err.Error()) + return err + } + } + } + } else { + // default is true, install security agent + // tat/InvokeCommand, CommandId=cmd-d8jj2skv, instanceId is enough + // https://cloud.tencent.com/document/product/1340/52678 + for i := 0; i < len(workersInsIdOfNodePool); i += BatchProcessedInsLimit { + var reqInstanceIds []string + if i+BatchProcessedInsLimit <= len(workersInsIdOfNodePool) { + reqInstanceIds = workersInsIdOfNodePool[i : i+BatchProcessedInsLimit] + } else { + reqInstanceIds = workersInsIdOfNodePool[i:] + } + requestInvokeCommand := tat.NewInvokeCommandRequest() + requestInvokeCommand.InstanceIds = helper.StringsStringsPoint(reqInstanceIds) + requestInvokeCommand.CommandId = helper.String(InstallSecurityAgentCommandId) + requestInvokeCommand.Parameters = helper.String("{}") + requestInvokeCommand.Timeout = helper.Uint64(60) + _, err := client.UseTatClient().InvokeCommand(requestInvokeCommand) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, requestInvokeCommand.GetAction(), requestInvokeCommand.ToJsonString(), err.Error()) + return err + } + } + } + } + return nil +} + +func ModifyClusterInternetOrIntranetAccess(ctx context.Context, d *schema.ResourceData, tkeSvc *TkeService, + isInternet bool, enable bool, sg string, subnetId string, domain string) error { + + id := d.Id() + var accessType string + if isInternet { + accessType = "cluster internet" + } else { + accessType = "cluster intranet" + } + // open access + if enable { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + inErr := tkeSvc.CreateClusterEndpoint(ctx, id, subnetId, sg, isInternet, domain, "") + if inErr != nil { + return tccommon.RetryError(inErr) + } + return nil + }) + if err != nil { + return err + } + err = resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { + status, message, inErr := tkeSvc.DescribeClusterEndpointStatus(ctx, id, isInternet) + if inErr != nil { + return tccommon.RetryError(inErr) + } + if status == TkeInternetStatusCreating { + return resource.RetryableError( + fmt.Errorf("%s create %s endpoint status still is %s", id, accessType, status)) + } + if status == TkeInternetStatusNotfound || status == TkeInternetStatusCreated { + return nil + } + return resource.NonRetryableError( + fmt.Errorf("%s create %s endpoint error ,status is %s,message is %s", id, accessType, status, message)) + }) + if err != nil { + return err + } + } else { // close access + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + inErr := tkeSvc.DeleteClusterEndpoint(ctx, id, isInternet) + if inErr != nil { + return tccommon.RetryError(inErr) + } + return nil + }) + if err != nil { + return err + } + err = resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { + status, message, inErr := tkeSvc.DescribeClusterEndpointStatus(ctx, id, isInternet) + if inErr != nil { + return tccommon.RetryError(inErr) + } + if status == TkeInternetStatusDeleting { + return resource.RetryableError( + fmt.Errorf("%s close %s endpoint status still is %s", id, accessType, status)) + } + if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted || status == TkeInternetStatusCreated { + return nil + } + return resource.NonRetryableError( + fmt.Errorf("%s close %s endpoint error ,status is %s,message is %s", id, accessType, status, message)) + }) + if err != nil { + return err + } + } + return nil +} + +func (me *TkeService) createBackupStorageLocation(ctx context.Context, request *tke.CreateBackupStorageLocationRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().CreateBackupStorageLocation(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) describeBackupStorageLocations(ctx context.Context, names []string) (locations []*tke.BackupStorageLocation, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tke.NewDescribeBackupStorageLocationsRequest() + request.Names = common.StringPtrs(names) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseTkeClient().DescribeBackupStorageLocations(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response.Response != nil && len(response.Response.BackupStorageLocationSet) > 0 { + locations = append(locations, response.Response.BackupStorageLocationSet...) + } + return + +} + +func (me *TkeService) deleteBackupStorageLocation(ctx context.Context, name string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := tke.NewDeleteBackupStorageLocationRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.Name = common.StringPtr(name) + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseTkeClient().DeleteBackupStorageLocation(request) + return err +} + +func (me *TkeService) DescribeTkeEncryptionProtectionById(ctx context.Context, clusterId string) (encryptionProtection *tke.DescribeEncryptionStatusResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tke.NewDescribeEncryptionStatusRequest() + request.ClusterId = &clusterId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().DescribeEncryptionStatus(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + encryptionProtection = response.Response + return +} + +func (me *TkeService) DeleteTkeEncryptionProtectionById(ctx context.Context, clusterId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tke.NewDisableEncryptionProtectionRequest() + request.ClusterId = &clusterId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().DisableEncryptionProtection(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TkeService) TkeEncryptionProtectionStateRefreshFunc(clusterId string, failStates []string) resource.StateRefreshFunc { + return func() (interface{}, string, error) { + ctx := tccommon.ContextNil + + logId := tccommon.GetLogId(ctx) + + request := tke.NewDescribeEncryptionStatusRequest() + request.ClusterId = helper.String(clusterId) + + var errRet error + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + object, err := me.client.UseTkeClient().DescribeEncryptionStatus(request) + + if err != nil { + return nil, "", err + } + + if err != nil { + errRet = err + return object, "", err + } + + return object, helper.PString(object.Response.Status), nil + } +} + +func (me *TkeService) DescribeKubernetesClusterInstancesByFilter(ctx context.Context, param map[string]interface{}) (clusterInstances []*tke.Instance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tke.NewDescribeClusterInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "ClusterId" { + request.ClusterId = v.(*string) + } + if k == "InstanceIds" { + request.InstanceIds = v.([]*string) + } + if k == "InstanceRole" { + request.InstanceRole = v.(*string) + } + if k == "Filters" { + request.Filters = v.([]*tke.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().DescribeClusterInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.InstanceSet) < 1 { + return + } + + clusterInstances = response.Response.InstanceSet + return +} + +func (me *TkeService) DescribeKubernetesClusterNodePoolsByFilter(ctx context.Context, param map[string]interface{}) (clusterNodePools []*tke.NodePool, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tke.NewDescribeClusterNodePoolsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "ClusterId" { + request.ClusterId = v.(*string) + } + if k == "Filters" { + request.Filters = v.([]*tke.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTkeClient().DescribeClusterNodePools(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NodePoolSet) < 1 { + return + } + + clusterNodePools = response.Response.NodePoolSet + return +} diff --git a/tencentcloud/data_source_tc_mps_media_meta_data.go b/tencentcloud/services/mps/data_source_tc_mps_media_meta_data.go similarity index 95% rename from tencentcloud/data_source_tc_mps_media_meta_data.go rename to tencentcloud/services/mps/data_source_tc_mps_media_meta_data.go index 069663da4e..8010b61832 100644 --- a/tencentcloud/data_source_tc_mps_media_meta_data.go +++ b/tencentcloud/services/mps/data_source_tc_mps_media_meta_data.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "encoding/json" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMpsMediaMetaData() *schema.Resource { +func DataSourceTencentCloudMpsMediaMetaData() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMpsMediaMetaDataRead, Schema: map[string]*schema.Schema{ @@ -253,12 +256,12 @@ func dataSourceTencentCloudMpsMediaMetaData() *schema.Resource { } func dataSourceTencentCloudMpsMediaMetaDataRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mps_media_meta_data.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mps_media_meta_data.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) mediaInputInfo := mps.MediaInputInfo{} paramMap := make(map[string]interface{}) @@ -308,14 +311,14 @@ func dataSourceTencentCloudMpsMediaMetaDataRead(d *schema.ResourceData, meta int paramMap["InputInfo"] = &mediaInputInfo } - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var metaData *mps.MediaMetaData - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMpsMediaMetaDataByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } metaData = result return nil @@ -443,7 +446,7 @@ func dataSourceTencentCloudMpsMediaMetaDataRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdHash(string(id))) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), mediaMetaDataMap); e != nil { + if e := tccommon.WriteToFile(output.(string), mediaMetaDataMap); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mps_media_meta_data_test.go b/tencentcloud/services/mps/data_source_tc_mps_media_meta_data_test.go similarity index 80% rename from tencentcloud/data_source_tc_mps_media_meta_data_test.go rename to tencentcloud/services/mps/data_source_tc_mps_media_meta_data_test.go index bc428d9c6a..5798e18bb3 100644 --- a/tencentcloud/data_source_tc_mps_media_meta_data_test.go +++ b/tencentcloud/services/mps/data_source_tc_mps_media_meta_data_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package mps_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,19 +13,19 @@ func TestAccTencentCloudMpsMediaMetaDataDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccMpsMediaMetaDataDataSource, defaultRegion), + Config: fmt.Sprintf(testAccMpsMediaMetaDataDataSource, tcacctest.DefaultRegion), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mps_media_meta_data.metadata"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mps_media_meta_data.metadata"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_media_meta_data.metadata", "input_info.#"), resource.TestCheckResourceAttr("data.tencentcloud_mps_media_meta_data.metadata", "input_info.0.type", "COS"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_media_meta_data.metadata", "input_info.0.cos_input_info.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_media_meta_data.metadata", "input_info.0.cos_input_info.0.bucket"), - resource.TestCheckResourceAttr("data.tencentcloud_mps_media_meta_data.metadata", "input_info.0.cos_input_info.0.region", defaultRegion), + resource.TestCheckResourceAttr("data.tencentcloud_mps_media_meta_data.metadata", "input_info.0.cos_input_info.0.region", tcacctest.DefaultRegion), resource.TestCheckResourceAttr("data.tencentcloud_mps_media_meta_data.metadata", "input_info.0.cos_input_info.0.object", "/mps-test/test.mov"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_media_meta_data.metadata", "meta_data.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_media_meta_data.metadata", "meta_data.0.size"), @@ -38,7 +40,7 @@ func TestAccTencentCloudMpsMediaMetaDataDataSource_basic(t *testing.T) { }) } -const testAccMpsMediaMetaDataDataSource = userInfoData + ` +const testAccMpsMediaMetaDataDataSource = tcacctest.UserInfoData + ` data "tencentcloud_cos_bucket_object" "object" { bucket = "keep-bucket-${local.app_id}" key = "/mps-test/test.mov" diff --git a/tencentcloud/data_source_tc_mps_parse_live_stream_process_notification.go b/tencentcloud/services/mps/data_source_tc_mps_parse_live_stream_process_notification.go similarity index 68% rename from tencentcloud/data_source_tc_mps_parse_live_stream_process_notification.go rename to tencentcloud/services/mps/data_source_tc_mps_parse_live_stream_process_notification.go index f36489a3c0..19e172c627 100644 --- a/tencentcloud/data_source_tc_mps_parse_live_stream_process_notification.go +++ b/tencentcloud/services/mps/data_source_tc_mps_parse_live_stream_process_notification.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMpsParseLiveStreamProcessNotification() *schema.Resource { +func DataSourceTencentCloudMpsParseLiveStreamProcessNotification() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMpsParseLiveStreamProcessNotificationRead, Schema: map[string]*schema.Schema{ @@ -29,12 +32,12 @@ func dataSourceTencentCloudMpsParseLiveStreamProcessNotification() *schema.Resou } func dataSourceTencentCloudMpsParseLiveStreamProcessNotificationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mps_parse_live_stream_process_notification.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mps_parse_live_stream_process_notification.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("content"); ok { @@ -45,12 +48,12 @@ func dataSourceTencentCloudMpsParseLiveStreamProcessNotificationRead(d *schema.R result *mps.ParseLiveStreamProcessNotificationResponseParams e error ) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e = service.DescribeMpsParseLiveStreamProcessNotificationByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -64,7 +67,7 @@ func dataSourceTencentCloudMpsParseLiveStreamProcessNotificationRead(d *schema.R d.SetId(taskId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mps_parse_live_stream_process_notification_test.go b/tencentcloud/services/mps/data_source_tc_mps_parse_live_stream_process_notification_test.go similarity index 77% rename from tencentcloud/data_source_tc_mps_parse_live_stream_process_notification_test.go rename to tencentcloud/services/mps/data_source_tc_mps_parse_live_stream_process_notification_test.go index 0d16caec59..1ad5183586 100644 --- a/tencentcloud/data_source_tc_mps_parse_live_stream_process_notification_test.go +++ b/tencentcloud/services/mps/data_source_tc_mps_parse_live_stream_process_notification_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudMpsParseLiveStreamProcessNotificationDataSource_basic(t t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsParseLiveStreamProcessNotificationDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mps_parse_live_stream_process_notification.notification"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mps_parse_live_stream_process_notification.notification"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_parse_live_stream_process_notification.notification", "content"), ), }, diff --git a/tencentcloud/data_source_tc_mps_parse_notification.go b/tencentcloud/services/mps/data_source_tc_mps_parse_notification.go similarity index 67% rename from tencentcloud/data_source_tc_mps_parse_notification.go rename to tencentcloud/services/mps/data_source_tc_mps_parse_notification.go index 827582e2c8..c24e316546 100644 --- a/tencentcloud/data_source_tc_mps_parse_notification.go +++ b/tencentcloud/services/mps/data_source_tc_mps_parse_notification.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMpsParseNotification() *schema.Resource { +func DataSourceTencentCloudMpsParseNotification() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMpsParseNotificationRead, Schema: map[string]*schema.Schema{ @@ -29,12 +32,12 @@ func dataSourceTencentCloudMpsParseNotification() *schema.Resource { } func dataSourceTencentCloudMpsParseNotificationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mps_parse_notification.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mps_parse_notification.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("content"); ok { @@ -46,12 +49,12 @@ func dataSourceTencentCloudMpsParseNotificationRead(d *schema.ResourceData, meta e error ) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e = service.DescribeMpsParseNotificationByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil @@ -66,7 +69,7 @@ func dataSourceTencentCloudMpsParseNotificationRead(d *schema.ResourceData, meta d.SetId(taskId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mps_parse_notification_test.go b/tencentcloud/services/mps/data_source_tc_mps_parse_notification_test.go similarity index 87% rename from tencentcloud/data_source_tc_mps_parse_notification_test.go rename to tencentcloud/services/mps/data_source_tc_mps_parse_notification_test.go index 0791900871..9fe62f92df 100644 --- a/tencentcloud/data_source_tc_mps_parse_notification_test.go +++ b/tencentcloud/services/mps/data_source_tc_mps_parse_notification_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudMpsParseNotificationDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsParseNotificationDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mps_parse_notification.notification"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mps_parse_notification.notification"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_parse_notification.notification", "content"), ), }, diff --git a/tencentcloud/data_source_tc_mps_schedules.go b/tencentcloud/services/mps/data_source_tc_mps_schedules.go similarity index 99% rename from tencentcloud/data_source_tc_mps_schedules.go rename to tencentcloud/services/mps/data_source_tc_mps_schedules.go index 2fe3866f92..e437945f52 100644 --- a/tencentcloud/data_source_tc_mps_schedules.go +++ b/tencentcloud/services/mps/data_source_tc_mps_schedules.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMpsSchedules() *schema.Resource { +func DataSourceTencentCloudMpsSchedules() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMpsSchedulesRead, Schema: map[string]*schema.Schema{ @@ -2576,12 +2579,12 @@ func dataSourceTencentCloudMpsSchedules() *schema.Resource { } func dataSourceTencentCloudMpsSchedulesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mps_schedules.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mps_schedules.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("schedule_ids"); ok { @@ -2602,14 +2605,14 @@ func dataSourceTencentCloudMpsSchedulesRead(d *schema.ResourceData, meta interfa paramMap["Status"] = helper.String(v.(string)) } - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var scheduleInfoSet []*mps.SchedulesInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMpsSchedulesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } scheduleInfoSet = result return nil @@ -4572,7 +4575,7 @@ func dataSourceTencentCloudMpsSchedulesRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mps_schedules_test.go b/tencentcloud/services/mps/data_source_tc_mps_schedules_test.go similarity index 81% rename from tencentcloud/data_source_tc_mps_schedules_test.go rename to tencentcloud/services/mps/data_source_tc_mps_schedules_test.go index d9884fa763..df192942f1 100644 --- a/tencentcloud/data_source_tc_mps_schedules_test.go +++ b/tencentcloud/services/mps/data_source_tc_mps_schedules_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package mps_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudMpsSchedulesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsSchedulesDataSource_none, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mps_schedules.schedules"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mps_schedules.schedules"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.0.activities.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.0.create_time"), @@ -26,16 +28,16 @@ func TestAccTencentCloudMpsSchedulesDataSource_basic(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccMpsSchedulesDataSource_specific_one, defaultMpsScheduleId), + Config: fmt.Sprintf(testAccMpsSchedulesDataSource_specific_one, tcacctest.DefaultMpsScheduleId), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mps_schedules.schedules"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mps_schedules.schedules"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_schedules.schedules", "schedule_ids.#"), - resource.TestCheckTypeSetElemAttr("data.tencentcloud_mps_schedules.schedules", "schedule_ids.*", fmt.Sprint(defaultMpsScheduleId)), + resource.TestCheckTypeSetElemAttr("data.tencentcloud_mps_schedules.schedules", "schedule_ids.*", fmt.Sprint(tcacctest.DefaultMpsScheduleId)), resource.TestCheckResourceAttr("data.tencentcloud_mps_schedules.schedules", "trigger_type", "CosFileUpload"), resource.TestCheckResourceAttr("data.tencentcloud_mps_schedules.schedules", "status", "Disabled"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.#"), - resource.TestCheckResourceAttr("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.0.schedule_id", fmt.Sprint(defaultMpsScheduleId)), - resource.TestCheckResourceAttr("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.0.schedule_name", defaultMpsScheduleName), + resource.TestCheckResourceAttr("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.0.schedule_id", fmt.Sprint(tcacctest.DefaultMpsScheduleId)), + resource.TestCheckResourceAttr("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.0.schedule_name", tcacctest.DefaultMpsScheduleName), resource.TestCheckResourceAttr("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.0.status", "Disabled"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.0.trigger.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_schedules.schedules", "schedule_info_set.0.activities.#"), diff --git a/tencentcloud/data_source_tc_mps_tasks.go b/tencentcloud/services/mps/data_source_tc_mps_tasks.go similarity index 87% rename from tencentcloud/data_source_tc_mps_tasks.go rename to tencentcloud/services/mps/data_source_tc_mps_tasks.go index e391e614a4..749806b0e8 100644 --- a/tencentcloud/data_source_tc_mps_tasks.go +++ b/tencentcloud/services/mps/data_source_tc_mps_tasks.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudMpsTasks() *schema.Resource { +func DataSourceTencentCloudMpsTasks() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudMpsTasksRead, Schema: map[string]*schema.Schema{ @@ -85,12 +88,12 @@ func dataSourceTencentCloudMpsTasks() *schema.Resource { } func dataSourceTencentCloudMpsTasksRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_mps_tasks.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_mps_tasks.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("status"); ok { @@ -105,14 +108,14 @@ func dataSourceTencentCloudMpsTasksRead(d *schema.ResourceData, meta interface{} paramMap["ScrollToken"] = helper.String(v.(string)) } - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var taskSet []*mps.TaskSimpleInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeMpsTasksByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } taskSet = result return nil @@ -162,7 +165,7 @@ func dataSourceTencentCloudMpsTasksRead(d *schema.ResourceData, meta interface{} d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_mps_tasks_test.go b/tencentcloud/services/mps/data_source_tc_mps_tasks_test.go similarity index 74% rename from tencentcloud/data_source_tc_mps_tasks_test.go rename to tencentcloud/services/mps/data_source_tc_mps_tasks_test.go index 2c0a902e81..4c3bac227a 100644 --- a/tencentcloud/data_source_tc_mps_tasks_test.go +++ b/tencentcloud/services/mps/data_source_tc_mps_tasks_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudMpsTasksDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsTasksDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_mps_tasks.tasks"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_mps_tasks.tasks"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_tasks.tasks", "task_set.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_tasks.tasks", "task_set.0.task_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_mps_tasks.tasks", "task_set.0.task_type"), diff --git a/tencentcloud/extension_mps.go b/tencentcloud/services/mps/extension_mps.go similarity index 93% rename from tencentcloud/extension_mps.go rename to tencentcloud/services/mps/extension_mps.go index c6e0f98abc..8c7594ba00 100644 --- a/tencentcloud/extension_mps.go +++ b/tencentcloud/services/mps/extension_mps.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps const ( WORKFLOW_STATUS_ENABLED = "Enabled" diff --git a/tencentcloud/resource_tc_mps_adaptive_dynamic_streaming_template.go b/tencentcloud/services/mps/resource_tc_mps_adaptive_dynamic_streaming_template.go similarity index 92% rename from tencentcloud/resource_tc_mps_adaptive_dynamic_streaming_template.go rename to tencentcloud/services/mps/resource_tc_mps_adaptive_dynamic_streaming_template.go index 0574ac9eee..01844962fb 100644 --- a/tencentcloud/resource_tc_mps_adaptive_dynamic_streaming_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_adaptive_dynamic_streaming_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplate() *schema.Resource { +func ResourceTencentCloudMpsAdaptiveDynamicStreamingTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateCreate, Read: resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateRead, @@ -159,10 +162,10 @@ func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplate() *schema.Resource } func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_adaptive_dynamic_streaming_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_adaptive_dynamic_streaming_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateAdaptiveDynamicStreamingTemplateRequest() @@ -250,10 +253,10 @@ func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateCreate(d *schema.Res request.Comment = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateAdaptiveDynamicStreamingTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateAdaptiveDynamicStreamingTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -272,14 +275,14 @@ func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateCreate(d *schema.Res } func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_adaptive_dynamic_streaming_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_adaptive_dynamic_streaming_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -402,10 +405,10 @@ func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateRead(d *schema.Resou } func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_adaptive_dynamic_streaming_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_adaptive_dynamic_streaming_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyAdaptiveDynamicStreamingTemplateRequest() @@ -507,10 +510,10 @@ func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateUpdate(d *schema.Res request.Comment = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyAdaptiveDynamicStreamingTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyAdaptiveDynamicStreamingTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -526,13 +529,13 @@ func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateUpdate(d *schema.Res } func resourceTencentCloudMpsAdaptiveDynamicStreamingTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_adaptive_dynamic_streaming_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_adaptive_dynamic_streaming_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsAdaptiveDynamicStreamingTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_adaptive_dynamic_streaming_template_test.go b/tencentcloud/services/mps/resource_tc_mps_adaptive_dynamic_streaming_template_test.go similarity index 95% rename from tencentcloud/resource_tc_mps_adaptive_dynamic_streaming_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_adaptive_dynamic_streaming_template_test.go index 11466ea01a..aa425fe829 100644 --- a/tencentcloud/resource_tc_mps_adaptive_dynamic_streaming_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_adaptive_dynamic_streaming_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsAdaptiveDynamicStreamingTemplateResource_basic(t *tes t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsAdaptiveDynamicStreamingTemplate, diff --git a/tencentcloud/resource_tc_mps_ai_analysis_template.go b/tencentcloud/services/mps/resource_tc_mps_ai_analysis_template.go similarity index 84% rename from tencentcloud/resource_tc_mps_ai_analysis_template.go rename to tencentcloud/services/mps/resource_tc_mps_ai_analysis_template.go index 278f14bc5c..5728d28e0b 100644 --- a/tencentcloud/resource_tc_mps_ai_analysis_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_ai_analysis_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsAiAnalysisTemplate() *schema.Resource { +func ResourceTencentCloudMpsAiAnalysisTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsAiAnalysisTemplateCreate, Read: resourceTencentCloudMpsAiAnalysisTemplateRead, @@ -100,10 +103,10 @@ func resourceTencentCloudMpsAiAnalysisTemplate() *schema.Resource { } func resourceTencentCloudMpsAiAnalysisTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_ai_analysis_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_ai_analysis_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateAIAnalysisTemplateRequest() @@ -150,10 +153,10 @@ func resourceTencentCloudMpsAiAnalysisTemplateCreate(d *schema.ResourceData, met request.FrameTagConfigure = &frameTagConfigureInfo } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateAIAnalysisTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateAIAnalysisTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -172,14 +175,14 @@ func resourceTencentCloudMpsAiAnalysisTemplateCreate(d *schema.ResourceData, met } func resourceTencentCloudMpsAiAnalysisTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_ai_analysis_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_ai_analysis_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -246,10 +249,10 @@ func resourceTencentCloudMpsAiAnalysisTemplateRead(d *schema.ResourceData, meta } func resourceTencentCloudMpsAiAnalysisTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_ai_analysis_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_ai_analysis_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyAIAnalysisTemplateRequest() @@ -308,10 +311,10 @@ func resourceTencentCloudMpsAiAnalysisTemplateUpdate(d *schema.ResourceData, met request.FrameTagConfigure = &frameTagConfigureInfo } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyAIAnalysisTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyAIAnalysisTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -327,13 +330,13 @@ func resourceTencentCloudMpsAiAnalysisTemplateUpdate(d *schema.ResourceData, met } func resourceTencentCloudMpsAiAnalysisTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_ai_analysis_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_ai_analysis_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsAiAnalysisTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_ai_analysis_template_test.go b/tencentcloud/services/mps/resource_tc_mps_ai_analysis_template_test.go similarity index 90% rename from tencentcloud/resource_tc_mps_ai_analysis_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_ai_analysis_template_test.go index 9eddd6af56..e8f49afe34 100644 --- a/tencentcloud/resource_tc_mps_ai_analysis_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_ai_analysis_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsAiAnalysisTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsAiAnalysisTemplate, diff --git a/tencentcloud/resource_tc_mps_ai_recognition_template.go b/tencentcloud/services/mps/resource_tc_mps_ai_recognition_template.go similarity index 91% rename from tencentcloud/resource_tc_mps_ai_recognition_template.go rename to tencentcloud/services/mps/resource_tc_mps_ai_recognition_template.go index 30ad95b417..fe41a290fc 100644 --- a/tencentcloud/resource_tc_mps_ai_recognition_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_ai_recognition_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsAiRecognitionTemplate() *schema.Resource { +func ResourceTencentCloudMpsAiRecognitionTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsAiRecognitionTemplateCreate, Read: resourceTencentCloudMpsAiRecognitionTemplateRead, @@ -163,10 +166,10 @@ func resourceTencentCloudMpsAiRecognitionTemplate() *schema.Resource { } func resourceTencentCloudMpsAiRecognitionTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_ai_recognition_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_ai_recognition_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateAIRecognitionTemplateRequest() @@ -258,10 +261,10 @@ func resourceTencentCloudMpsAiRecognitionTemplateCreate(d *schema.ResourceData, request.AsrWordsConfigure = &asrWordsConfigureInfo } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateAIRecognitionTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateAIRecognitionTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -280,14 +283,14 @@ func resourceTencentCloudMpsAiRecognitionTemplateCreate(d *schema.ResourceData, } func resourceTencentCloudMpsAiRecognitionTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_ai_recognition_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_ai_recognition_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -392,10 +395,10 @@ func resourceTencentCloudMpsAiRecognitionTemplateRead(d *schema.ResourceData, me } func resourceTencentCloudMpsAiRecognitionTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_ai_recognition_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_ai_recognition_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyAIRecognitionTemplateRequest() @@ -500,10 +503,10 @@ func resourceTencentCloudMpsAiRecognitionTemplateUpdate(d *schema.ResourceData, request.AsrWordsConfigure = &asrWordsConfigureInfo } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyAIRecognitionTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyAIRecognitionTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -519,13 +522,13 @@ func resourceTencentCloudMpsAiRecognitionTemplateUpdate(d *schema.ResourceData, } func resourceTencentCloudMpsAiRecognitionTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_ai_recognition_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_ai_recognition_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsAiRecognitionTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_ai_recognition_template_test.go b/tencentcloud/services/mps/resource_tc_mps_ai_recognition_template_test.go similarity index 92% rename from tencentcloud/resource_tc_mps_ai_recognition_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_ai_recognition_template_test.go index b1b4156e28..4bc0d8145c 100644 --- a/tencentcloud/resource_tc_mps_ai_recognition_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_ai_recognition_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsAiRecognitionTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsAiRecognitionTemplate, diff --git a/tencentcloud/resource_tc_mps_animated_graphics_template.go b/tencentcloud/services/mps/resource_tc_mps_animated_graphics_template.go similarity index 82% rename from tencentcloud/resource_tc_mps_animated_graphics_template.go rename to tencentcloud/services/mps/resource_tc_mps_animated_graphics_template.go index 898cced57f..c1138bacbd 100644 --- a/tencentcloud/resource_tc_mps_animated_graphics_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_animated_graphics_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsAnimatedGraphicsTemplate() *schema.Resource { +func ResourceTencentCloudMpsAnimatedGraphicsTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsAnimatedGraphicsTemplateCreate, Read: resourceTencentCloudMpsAnimatedGraphicsTemplateRead, @@ -72,10 +75,10 @@ func resourceTencentCloudMpsAnimatedGraphicsTemplate() *schema.Resource { } func resourceTencentCloudMpsAnimatedGraphicsTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_animated_graphics_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_animated_graphics_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateAnimatedGraphicsTemplateRequest() @@ -114,10 +117,10 @@ func resourceTencentCloudMpsAnimatedGraphicsTemplateCreate(d *schema.ResourceDat request.Comment = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateAnimatedGraphicsTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateAnimatedGraphicsTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -136,14 +139,14 @@ func resourceTencentCloudMpsAnimatedGraphicsTemplateCreate(d *schema.ResourceDat } func resourceTencentCloudMpsAnimatedGraphicsTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_animated_graphics_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_animated_graphics_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -194,10 +197,10 @@ func resourceTencentCloudMpsAnimatedGraphicsTemplateRead(d *schema.ResourceData, } func resourceTencentCloudMpsAnimatedGraphicsTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_animated_graphics_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_animated_graphics_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyAnimatedGraphicsTemplateRequest() @@ -250,10 +253,10 @@ func resourceTencentCloudMpsAnimatedGraphicsTemplateUpdate(d *schema.ResourceDat request.Comment = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyAnimatedGraphicsTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyAnimatedGraphicsTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -269,13 +272,13 @@ func resourceTencentCloudMpsAnimatedGraphicsTemplateUpdate(d *schema.ResourceDat } func resourceTencentCloudMpsAnimatedGraphicsTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_animated_graphics_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_animated_graphics_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsAnimatedGraphicsTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_animated_graphics_template_test.go b/tencentcloud/services/mps/resource_tc_mps_animated_graphics_template_test.go similarity index 90% rename from tencentcloud/resource_tc_mps_animated_graphics_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_animated_graphics_template_test.go index de525338bc..358cd1617f 100644 --- a/tencentcloud/resource_tc_mps_animated_graphics_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_animated_graphics_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsAnimatedGraphicsTemplateResource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsAnimatedGraphicsTemplate, diff --git a/tencentcloud/resource_tc_mps_content_review_template.go b/tencentcloud/services/mps/resource_tc_mps_content_review_template.go similarity index 97% rename from tencentcloud/resource_tc_mps_content_review_template.go rename to tencentcloud/services/mps/resource_tc_mps_content_review_template.go index fe5dc385b6..8b9b8aff85 100644 --- a/tencentcloud/resource_tc_mps_content_review_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_content_review_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsContentReviewTemplate() *schema.Resource { +func ResourceTencentCloudMpsContentReviewTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsContentReviewTemplateCreate, Read: resourceTencentCloudMpsContentReviewTemplateRead, @@ -464,10 +467,10 @@ func resourceTencentCloudMpsContentReviewTemplate() *schema.Resource { } func resourceTencentCloudMpsContentReviewTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_content_review_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_content_review_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateContentReviewTemplateRequest() @@ -733,10 +736,10 @@ func resourceTencentCloudMpsContentReviewTemplateCreate(d *schema.ResourceData, request.UserDefineConfigure = &userDefineConfigureInfo } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateContentReviewTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateContentReviewTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -755,14 +758,14 @@ func resourceTencentCloudMpsContentReviewTemplateCreate(d *schema.ResourceData, } func resourceTencentCloudMpsContentReviewTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_content_review_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_content_review_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -1083,10 +1086,10 @@ func resourceTencentCloudMpsContentReviewTemplateRead(d *schema.ResourceData, me } func resourceTencentCloudMpsContentReviewTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_content_review_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_content_review_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyContentReviewTemplateRequest() @@ -1365,10 +1368,10 @@ func resourceTencentCloudMpsContentReviewTemplateUpdate(d *schema.ResourceData, } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyContentReviewTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyContentReviewTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -1383,13 +1386,13 @@ func resourceTencentCloudMpsContentReviewTemplateUpdate(d *schema.ResourceData, } func resourceTencentCloudMpsContentReviewTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_content_review_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_content_review_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsContentReviewTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_content_review_template_test.go b/tencentcloud/services/mps/resource_tc_mps_content_review_template_test.go similarity index 99% rename from tencentcloud/resource_tc_mps_content_review_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_content_review_template_test.go index 6543208d24..3ac390f665 100644 --- a/tencentcloud/resource_tc_mps_content_review_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_content_review_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsContentReviewTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsContentReviewTemplate, diff --git a/tencentcloud/resource_tc_mps_edit_media_operation.go b/tencentcloud/services/mps/resource_tc_mps_edit_media_operation.go similarity index 96% rename from tencentcloud/resource_tc_mps_edit_media_operation.go rename to tencentcloud/services/mps/resource_tc_mps_edit_media_operation.go index acde2be3a3..9f69a6bab2 100644 --- a/tencentcloud/resource_tc_mps_edit_media_operation.go +++ b/tencentcloud/services/mps/resource_tc_mps_edit_media_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsEditMediaOperation() *schema.Resource { +func ResourceTencentCloudMpsEditMediaOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsEditMediaOperationCreate, Read: resourceTencentCloudMpsEditMediaOperationRead, @@ -324,10 +327,10 @@ func resourceTencentCloudMpsEditMediaOperation() *schema.Resource { } func resourceTencentCloudMpsEditMediaOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_edit_media_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_edit_media_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewEditMediaRequest() @@ -497,10 +500,10 @@ func resourceTencentCloudMpsEditMediaOperationCreate(d *schema.ResourceData, met request.SessionContext = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().EditMedia(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().EditMedia(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -519,15 +522,15 @@ func resourceTencentCloudMpsEditMediaOperationCreate(d *schema.ResourceData, met } func resourceTencentCloudMpsEditMediaOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_edit_media_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_edit_media_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMpsEditMediaOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_edit_media_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_edit_media_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mps_edit_media_operation_test.go b/tencentcloud/services/mps/resource_tc_mps_edit_media_operation_test.go similarity index 84% rename from tencentcloud/resource_tc_mps_edit_media_operation_test.go rename to tencentcloud/services/mps/resource_tc_mps_edit_media_operation_test.go index 98de976997..1f6d605cf9 100644 --- a/tencentcloud/resource_tc_mps_edit_media_operation_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_edit_media_operation_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package mps_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,19 +13,19 @@ func TestAccTencentCloudMpsEditMediaOperationResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccMpsEditMediaOperation, defaultRegion, defaultRegion), + Config: fmt.Sprintf(testAccMpsEditMediaOperation, tcacctest.DefaultRegion, tcacctest.DefaultRegion), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_mps_edit_media_operation.operation", "id"), resource.TestCheckResourceAttrSet("tencentcloud_mps_edit_media_operation.operation", "file_infos.0.input_info.#"), resource.TestCheckResourceAttr("tencentcloud_mps_edit_media_operation.operation", "file_infos.0.input_info.0.type", "COS"), resource.TestCheckResourceAttrSet("tencentcloud_mps_edit_media_operation.operation", "file_infos.0.input_info.0.cos_input_info.#"), resource.TestCheckResourceAttrSet("tencentcloud_mps_edit_media_operation.operation", "file_infos.0.input_info.0.cos_input_info.0.bucket"), - resource.TestCheckResourceAttr("tencentcloud_mps_edit_media_operation.operation", "file_infos.0.input_info.0.cos_input_info.0.region", defaultRegion), + resource.TestCheckResourceAttr("tencentcloud_mps_edit_media_operation.operation", "file_infos.0.input_info.0.cos_input_info.0.region", tcacctest.DefaultRegion), resource.TestCheckResourceAttr("tencentcloud_mps_edit_media_operation.operation", "file_infos.0.input_info.0.cos_input_info.0.object", "/mps-test/test.mov"), ), }, @@ -31,7 +33,7 @@ func TestAccTencentCloudMpsEditMediaOperationResource_basic(t *testing.T) { }) } -const testAccMpsEditMediaOperation = userInfoData + ` +const testAccMpsEditMediaOperation = tcacctest.UserInfoData + ` resource "tencentcloud_cos_bucket" "output" { bucket = "tf-bucket-mps-edit-media-output-${local.app_id}" force_clean = true diff --git a/tencentcloud/resource_tc_mps_enable_schedule_config.go b/tencentcloud/services/mps/resource_tc_mps_enable_schedule_config.go similarity index 71% rename from tencentcloud/resource_tc_mps_enable_schedule_config.go rename to tencentcloud/services/mps/resource_tc_mps_enable_schedule_config.go index 1f449124a1..8ce7ad1f0b 100644 --- a/tencentcloud/resource_tc_mps_enable_schedule_config.go +++ b/tencentcloud/services/mps/resource_tc_mps_enable_schedule_config.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsEnableScheduleConfig() *schema.Resource { +func ResourceTencentCloudMpsEnableScheduleConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsEnableScheduleConfigCreate, Read: resourceTencentCloudMpsEnableScheduleConfigRead, @@ -36,8 +39,8 @@ func resourceTencentCloudMpsEnableScheduleConfig() *schema.Resource { } func resourceTencentCloudMpsEnableScheduleConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_enable_schedule_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_enable_schedule_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var scheduleId int if v, ok := d.GetOkExists("schedule_id"); ok { @@ -49,14 +52,14 @@ func resourceTencentCloudMpsEnableScheduleConfigCreate(d *schema.ResourceData, m } func resourceTencentCloudMpsEnableScheduleConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_enable_schedule_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_enable_schedule_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} scheduleId := d.Id() @@ -90,10 +93,10 @@ func resourceTencentCloudMpsEnableScheduleConfigRead(d *schema.ResourceData, met } func resourceTencentCloudMpsEnableScheduleConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_enable_schedule_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_enable_schedule_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( enableRequest = mps.NewEnableScheduleRequest() @@ -109,10 +112,10 @@ func resourceTencentCloudMpsEnableScheduleConfigUpdate(d *schema.ResourceData, m if enabled { enableRequest.ScheduleId = scheduleId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().EnableSchedule(enableRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().EnableSchedule(enableRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, enableRequest.GetAction(), enableRequest.ToJsonString(), result.ToJsonString()) } @@ -124,10 +127,10 @@ func resourceTencentCloudMpsEnableScheduleConfigUpdate(d *schema.ResourceData, m } } else { disableRequest.ScheduleId = scheduleId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().DisableSchedule(disableRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().DisableSchedule(disableRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, disableRequest.GetAction(), disableRequest.ToJsonString(), result.ToJsonString()) } @@ -144,8 +147,8 @@ func resourceTencentCloudMpsEnableScheduleConfigUpdate(d *schema.ResourceData, m } func resourceTencentCloudMpsEnableScheduleConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_enable_schedule_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_enable_schedule_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mps_enable_schedule_config_test.go b/tencentcloud/services/mps/resource_tc_mps_enable_schedule_config_test.go similarity index 90% rename from tencentcloud/resource_tc_mps_enable_schedule_config_test.go rename to tencentcloud/services/mps/resource_tc_mps_enable_schedule_config_test.go index c7261dc194..24b0d513cb 100644 --- a/tencentcloud/resource_tc_mps_enable_schedule_config_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_enable_schedule_config_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package mps_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,12 +13,12 @@ func TestAccTencentCloudMpsEnableScheduleConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccMpsEnableScheduleConfig_enable, defaultRegion, defaultRegion), + Config: fmt.Sprintf(testAccMpsEnableScheduleConfig_enable, tcacctest.DefaultRegion, tcacctest.DefaultRegion), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_mps_enable_schedule_config.config", "id"), resource.TestCheckResourceAttrSet("tencentcloud_mps_enable_schedule_config.config", "schedule_id"), @@ -24,7 +26,7 @@ func TestAccTencentCloudMpsEnableScheduleConfigResource_basic(t *testing.T) { ), }, { - Config: fmt.Sprintf(testAccMpsEnableScheduleConfig_disable, defaultRegion, defaultRegion), + Config: fmt.Sprintf(testAccMpsEnableScheduleConfig_disable, tcacctest.DefaultRegion, tcacctest.DefaultRegion), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_mps_enable_schedule_config.config", "id"), resource.TestCheckResourceAttrSet("tencentcloud_mps_enable_schedule_config.config", "schedule_id"), @@ -39,7 +41,7 @@ func TestAccTencentCloudMpsEnableScheduleConfigResource_basic(t *testing.T) { }) } -const testAccMpsSchedule_basic = userInfoData + ` +const testAccMpsSchedule_basic = tcacctest.UserInfoData + ` data "tencentcloud_cos_bucket_object" "object" { bucket = "keep-bucket-${local.app_id}" key = "/mps-test/test.mov" diff --git a/tencentcloud/resource_tc_mps_enable_workflow_config.go b/tencentcloud/services/mps/resource_tc_mps_enable_workflow_config.go similarity index 71% rename from tencentcloud/resource_tc_mps_enable_workflow_config.go rename to tencentcloud/services/mps/resource_tc_mps_enable_workflow_config.go index 7a36e1609a..bc0a63bb01 100644 --- a/tencentcloud/resource_tc_mps_enable_workflow_config.go +++ b/tencentcloud/services/mps/resource_tc_mps_enable_workflow_config.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsEnableWorkflowConfig() *schema.Resource { +func ResourceTencentCloudMpsEnableWorkflowConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsEnableWorkflowConfigCreate, Read: resourceTencentCloudMpsEnableWorkflowConfigRead, @@ -36,8 +39,8 @@ func resourceTencentCloudMpsEnableWorkflowConfig() *schema.Resource { } func resourceTencentCloudMpsEnableWorkflowConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_enable_workflow_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_enable_workflow_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var workflowId int if v, ok := d.GetOkExists("workflow_id"); ok { @@ -49,14 +52,14 @@ func resourceTencentCloudMpsEnableWorkflowConfigCreate(d *schema.ResourceData, m } func resourceTencentCloudMpsEnableWorkflowConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_enable_workflow_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_enable_workflow_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} workflowId := d.Id() @@ -88,10 +91,10 @@ func resourceTencentCloudMpsEnableWorkflowConfigRead(d *schema.ResourceData, met } func resourceTencentCloudMpsEnableWorkflowConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_enable_workflow_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_enable_workflow_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( enableRequest = mps.NewEnableWorkflowRequest() @@ -107,10 +110,10 @@ func resourceTencentCloudMpsEnableWorkflowConfigUpdate(d *schema.ResourceData, m if enabled { enableRequest.WorkflowId = workflowId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().EnableWorkflow(enableRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().EnableWorkflow(enableRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, enableRequest.GetAction(), enableRequest.ToJsonString(), result.ToJsonString()) } @@ -122,10 +125,10 @@ func resourceTencentCloudMpsEnableWorkflowConfigUpdate(d *schema.ResourceData, m } } else { disableRequest.WorkflowId = workflowId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().DisableWorkflow(disableRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().DisableWorkflow(disableRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, disableRequest.GetAction(), disableRequest.ToJsonString(), result.ToJsonString()) } @@ -142,8 +145,8 @@ func resourceTencentCloudMpsEnableWorkflowConfigUpdate(d *schema.ResourceData, m } func resourceTencentCloudMpsEnableWorkflowConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_enable_workflow_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_enable_workflow_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mps_enable_workflow_config_test.go b/tencentcloud/services/mps/resource_tc_mps_enable_workflow_config_test.go similarity index 95% rename from tencentcloud/resource_tc_mps_enable_workflow_config_test.go rename to tencentcloud/services/mps/resource_tc_mps_enable_workflow_config_test.go index f49a9cdbd5..5818540468 100644 --- a/tencentcloud/resource_tc_mps_enable_workflow_config_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_enable_workflow_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsEnableWorkflowConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsEnableWorkflowConfig_enable, diff --git a/tencentcloud/resource_tc_mps_event.go b/tencentcloud/services/mps/resource_tc_mps_event.go similarity index 68% rename from tencentcloud/resource_tc_mps_event.go rename to tencentcloud/services/mps/resource_tc_mps_event.go index fcce14a19b..d5a71574fa 100644 --- a/tencentcloud/resource_tc_mps_event.go +++ b/tencentcloud/services/mps/resource_tc_mps_event.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsEvent() *schema.Resource { +func ResourceTencentCloudMpsEvent() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsEventCreate, Read: resourceTencentCloudMpsEventRead, @@ -36,10 +39,10 @@ func resourceTencentCloudMpsEvent() *schema.Resource { } func resourceTencentCloudMpsEventCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_event.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_event.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateStreamLinkEventRequest() @@ -54,10 +57,10 @@ func resourceTencentCloudMpsEventCreate(d *schema.ResourceData, meta interface{} request.Description = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateStreamLinkEvent(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateStreamLinkEvent(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -79,14 +82,14 @@ func resourceTencentCloudMpsEventCreate(d *schema.ResourceData, meta interface{} } func resourceTencentCloudMpsEventRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_event.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_event.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} eventId := d.Id() @@ -113,10 +116,10 @@ func resourceTencentCloudMpsEventRead(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudMpsEventUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_event.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_event.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyStreamLinkEventRequest() @@ -136,10 +139,10 @@ func resourceTencentCloudMpsEventUpdate(d *schema.ResourceData, meta interface{} } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyStreamLinkEvent(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyStreamLinkEvent(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -154,13 +157,13 @@ func resourceTencentCloudMpsEventUpdate(d *schema.ResourceData, meta interface{} } func resourceTencentCloudMpsEventDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_event.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_event.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} eventId := d.Id() if err := service.DeleteMpsEventById(ctx, eventId); err != nil { diff --git a/tencentcloud/resource_tc_mps_event_test.go b/tencentcloud/services/mps/resource_tc_mps_event_test.go similarity index 90% rename from tencentcloud/resource_tc_mps_event_test.go rename to tencentcloud/services/mps/resource_tc_mps_event_test.go index 03c38375fc..65b1fef08b 100644 --- a/tencentcloud/resource_tc_mps_event_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_event_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps_test import ( "fmt" @@ -6,6 +6,8 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,9 +17,9 @@ func TestAccTencentCloudMpsEventResource_basic(t *testing.T) { randomNum := randIns.Intn(1000) resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccMpsEvent, randomNum), diff --git a/tencentcloud/resource_tc_mps_execute_function_operation.go b/tencentcloud/services/mps/resource_tc_mps_execute_function_operation.go similarity index 70% rename from tencentcloud/resource_tc_mps_execute_function_operation.go rename to tencentcloud/services/mps/resource_tc_mps_execute_function_operation.go index 476734d130..43de02f40a 100644 --- a/tencentcloud/resource_tc_mps_execute_function_operation.go +++ b/tencentcloud/services/mps/resource_tc_mps_execute_function_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsExecuteFunctionOperation() *schema.Resource { +func ResourceTencentCloudMpsExecuteFunctionOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsExecuteFunctionOperationCreate, Read: resourceTencentCloudMpsExecuteFunctionOperationRead, @@ -33,10 +36,10 @@ func resourceTencentCloudMpsExecuteFunctionOperation() *schema.Resource { } func resourceTencentCloudMpsExecuteFunctionOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_execute_function_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_execute_function_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewExecuteFunctionRequest() @@ -51,10 +54,10 @@ func resourceTencentCloudMpsExecuteFunctionOperationCreate(d *schema.ResourceDat request.FunctionArg = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ExecuteFunction(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ExecuteFunction(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -71,15 +74,15 @@ func resourceTencentCloudMpsExecuteFunctionOperationCreate(d *schema.ResourceDat } func resourceTencentCloudMpsExecuteFunctionOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_execute_function_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_execute_function_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMpsExecuteFunctionOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_execute_function_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_execute_function_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mps_execute_function_operation_test.go b/tencentcloud/services/mps/resource_tc_mps_execute_function_operation_test.go similarity index 84% rename from tencentcloud/resource_tc_mps_execute_function_operation_test.go rename to tencentcloud/services/mps/resource_tc_mps_execute_function_operation_test.go index 0ea6c7e4f7..bbf2e091c8 100644 --- a/tencentcloud/resource_tc_mps_execute_function_operation_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_execute_function_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixMpsExecuteFunctionOperationResource_basic(t *test t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsExecuteFunctionOperation, diff --git a/tencentcloud/resource_tc_mps_flow.go b/tencentcloud/services/mps/resource_tc_mps_flow.go similarity index 93% rename from tencentcloud/resource_tc_mps_flow.go rename to tencentcloud/services/mps/resource_tc_mps_flow.go index d78819e997..fea015f0ec 100644 --- a/tencentcloud/resource_tc_mps_flow.go +++ b/tencentcloud/services/mps/resource_tc_mps_flow.go @@ -1,17 +1,20 @@ -package tencentcloud +package mps import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsFlow() *schema.Resource { +func ResourceTencentCloudMpsFlow() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsFlowCreate, Read: resourceTencentCloudMpsFlowRead, @@ -284,10 +287,10 @@ func resourceTencentCloudMpsFlow() *schema.Resource { } func resourceTencentCloudMpsFlowCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_flow.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_flow.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateStreamLinkFlowRequest() @@ -441,10 +444,10 @@ func resourceTencentCloudMpsFlowCreate(d *schema.ResourceData, meta interface{}) request.EventId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateStreamLinkFlow(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateStreamLinkFlow(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -466,14 +469,14 @@ func resourceTencentCloudMpsFlowCreate(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudMpsFlowRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_flow.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_flow.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} flowId := d.Id() @@ -696,10 +699,10 @@ func resourceTencentCloudMpsFlowRead(d *schema.ResourceData, meta interface{}) e } func resourceTencentCloudMpsFlowUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_flow.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_flow.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyStreamLinkFlowRequest() @@ -721,10 +724,10 @@ func resourceTencentCloudMpsFlowUpdate(d *schema.ResourceData, meta interface{}) } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyStreamLinkFlow(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyStreamLinkFlow(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -739,13 +742,13 @@ func resourceTencentCloudMpsFlowUpdate(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudMpsFlowDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_flow.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_flow.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} flowId := d.Id() if err := service.DeleteMpsFlowById(ctx, flowId); err != nil { diff --git a/tencentcloud/resource_tc_mps_flow_test.go b/tencentcloud/services/mps/resource_tc_mps_flow_test.go similarity index 96% rename from tencentcloud/resource_tc_mps_flow_test.go rename to tencentcloud/services/mps/resource_tc_mps_flow_test.go index 5cb304dd79..cd97e9c853 100644 --- a/tencentcloud/resource_tc_mps_flow_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_flow_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps_test import ( "fmt" @@ -6,6 +6,8 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,9 +17,9 @@ func TestAccTencentCloudMpsFlowResource_srt(t *testing.T) { randomNum := randIns.Intn(1000) resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccMpsFlow_srt, randomNum, randomNum), @@ -65,9 +67,9 @@ func TestAccTencentCloudMpsFlowResource_rtp(t *testing.T) { randomNum := randIns.Intn(1000) resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccMpsFlow_rtp, randomNum, randomNum), diff --git a/tencentcloud/resource_tc_mps_image_sprite_template.go b/tencentcloud/services/mps/resource_tc_mps_image_sprite_template.go similarity index 85% rename from tencentcloud/resource_tc_mps_image_sprite_template.go rename to tencentcloud/services/mps/resource_tc_mps_image_sprite_template.go index 7caafb0100..5800153416 100644 --- a/tencentcloud/resource_tc_mps_image_sprite_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_image_sprite_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsImageSpriteTemplate() *schema.Resource { +func ResourceTencentCloudMpsImageSpriteTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsImageSpriteTemplateCreate, Read: resourceTencentCloudMpsImageSpriteTemplateRead, @@ -90,10 +93,10 @@ func resourceTencentCloudMpsImageSpriteTemplate() *schema.Resource { } func resourceTencentCloudMpsImageSpriteTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_image_sprite_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_image_sprite_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateImageSpriteTemplateRequest() @@ -144,10 +147,10 @@ func resourceTencentCloudMpsImageSpriteTemplateCreate(d *schema.ResourceData, me request.Format = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateImageSpriteTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateImageSpriteTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -166,14 +169,14 @@ func resourceTencentCloudMpsImageSpriteTemplateCreate(d *schema.ResourceData, me } func resourceTencentCloudMpsImageSpriteTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_image_sprite_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_image_sprite_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -236,10 +239,10 @@ func resourceTencentCloudMpsImageSpriteTemplateRead(d *schema.ResourceData, meta } func resourceTencentCloudMpsImageSpriteTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_image_sprite_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_image_sprite_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyImageSpriteTemplateRequest() @@ -303,10 +306,10 @@ func resourceTencentCloudMpsImageSpriteTemplateUpdate(d *schema.ResourceData, me request.Format = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyImageSpriteTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyImageSpriteTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -323,13 +326,13 @@ func resourceTencentCloudMpsImageSpriteTemplateUpdate(d *schema.ResourceData, me } func resourceTencentCloudMpsImageSpriteTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_image_sprite_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_image_sprite_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsImageSpriteTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_image_sprite_template_test.go b/tencentcloud/services/mps/resource_tc_mps_image_sprite_template_test.go similarity index 91% rename from tencentcloud/resource_tc_mps_image_sprite_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_image_sprite_template_test.go index 35d3e3c5b0..101447ad7e 100644 --- a/tencentcloud/resource_tc_mps_image_sprite_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_image_sprite_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsImageSpriteTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsImageSpriteTemplate, diff --git a/tencentcloud/resource_tc_mps_input.go b/tencentcloud/services/mps/resource_tc_mps_input.go similarity index 95% rename from tencentcloud/resource_tc_mps_input.go rename to tencentcloud/services/mps/resource_tc_mps_input.go index 029d93bd0a..2ecc82e74f 100644 --- a/tencentcloud/resource_tc_mps_input.go +++ b/tencentcloud/services/mps/resource_tc_mps_input.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsInput() *schema.Resource { +func ResourceTencentCloudMpsInput() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsInputCreate, Read: resourceTencentCloudMpsInputRead, @@ -274,10 +277,10 @@ func resourceTencentCloudMpsInput() *schema.Resource { } func resourceTencentCloudMpsInputCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_input.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_input.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateStreamLinkInputRequest() @@ -437,10 +440,10 @@ func resourceTencentCloudMpsInputCreate(d *schema.ResourceData, meta interface{} } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateStreamLinkInput(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateStreamLinkInput(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -456,23 +459,23 @@ func resourceTencentCloudMpsInputCreate(d *schema.ResourceData, meta interface{} inputId = *response.Response.Info.InputGroup[0].InputId } - d.SetId(strings.Join([]string{flowId, inputId}, FILED_SP)) + d.SetId(strings.Join([]string{flowId, inputId}, tccommon.FILED_SP)) return resourceTencentCloudMpsInputRead(d, meta) } func resourceTencentCloudMpsInputRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_input.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_input.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var protocol string - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -684,15 +687,15 @@ func resourceTencentCloudMpsInputRead(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudMpsInputUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_input.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_input.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyStreamLinkInputRequest() var protocol string - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -857,10 +860,10 @@ func resourceTencentCloudMpsInputUpdate(d *schema.ResourceData, meta interface{} } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyStreamLinkInput(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyStreamLinkInput(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -875,8 +878,8 @@ func resourceTencentCloudMpsInputUpdate(d *schema.ResourceData, meta interface{} } func resourceTencentCloudMpsInputDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_input.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_input.delete")() + defer tccommon.InconsistentCheck(d, meta)() // deleted through `tencentcloud_mps_flow` return nil } diff --git a/tencentcloud/resource_tc_mps_input_test.go b/tencentcloud/services/mps/resource_tc_mps_input_test.go similarity index 96% rename from tencentcloud/resource_tc_mps_input_test.go rename to tencentcloud/services/mps/resource_tc_mps_input_test.go index badd3ab044..9630f370a7 100644 --- a/tencentcloud/resource_tc_mps_input_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_input_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps_test import ( "fmt" @@ -6,6 +6,8 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,9 +17,9 @@ func TestAccTencentCloudMpsInputResource_basic(t *testing.T) { randomNum := randIns.Intn(1000) resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccMpsInput, randomNum, randomNum), diff --git a/tencentcloud/resource_tc_mps_manage_task_operation.go b/tencentcloud/services/mps/resource_tc_mps_manage_task_operation.go similarity index 72% rename from tencentcloud/resource_tc_mps_manage_task_operation.go rename to tencentcloud/services/mps/resource_tc_mps_manage_task_operation.go index 8558e87f5e..4c6b71d422 100644 --- a/tencentcloud/resource_tc_mps_manage_task_operation.go +++ b/tencentcloud/services/mps/resource_tc_mps_manage_task_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsManageTaskOperation() *schema.Resource { +func ResourceTencentCloudMpsManageTaskOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsManageTaskOperationCreate, Read: resourceTencentCloudMpsManageTaskOperationRead, @@ -33,10 +36,10 @@ func resourceTencentCloudMpsManageTaskOperation() *schema.Resource { } func resourceTencentCloudMpsManageTaskOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_manage_task_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_manage_task_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewManageTaskRequest() @@ -50,10 +53,10 @@ func resourceTencentCloudMpsManageTaskOperationCreate(d *schema.ResourceData, me request.TaskId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ManageTask(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ManageTask(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -70,15 +73,15 @@ func resourceTencentCloudMpsManageTaskOperationCreate(d *schema.ResourceData, me } func resourceTencentCloudMpsManageTaskOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_manage_task_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_manage_task_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMpsManageTaskOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_manage_task_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_manage_task_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mps_manage_task_operation_test.go b/tencentcloud/services/mps/resource_tc_mps_manage_task_operation_test.go similarity index 79% rename from tencentcloud/resource_tc_mps_manage_task_operation_test.go rename to tencentcloud/services/mps/resource_tc_mps_manage_task_operation_test.go index 91889f816b..8732545905 100644 --- a/tencentcloud/resource_tc_mps_manage_task_operation_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_manage_task_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixMpsManageTaskOperationResource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsManageTaskOperation, @@ -27,7 +29,7 @@ func TestAccTencentCloudNeedFixMpsManageTaskOperationResource_basic(t *testing.T }) } -const testAccMpsManageTaskOperation = userInfoData + ` +const testAccMpsManageTaskOperation = tcacctest.UserInfoData + ` resource "tencentcloud_mps_manage_task_operation" "operation" { operation_type = "Abort" diff --git a/tencentcloud/resource_tc_mps_output.go b/tencentcloud/services/mps/resource_tc_mps_output.go similarity index 93% rename from tencentcloud/resource_tc_mps_output.go rename to tencentcloud/services/mps/resource_tc_mps_output.go index e4eef0fcf0..9c11bd0304 100644 --- a/tencentcloud/resource_tc_mps_output.go +++ b/tencentcloud/services/mps/resource_tc_mps_output.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsOutput() *schema.Resource { +func ResourceTencentCloudMpsOutput() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsOutputCreate, Read: resourceTencentCloudMpsOutputRead, @@ -228,10 +231,10 @@ func resourceTencentCloudMpsOutput() *schema.Resource { } func resourceTencentCloudMpsOutputCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_output.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_output.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateStreamLinkOutputInfoRequest() @@ -367,10 +370,10 @@ func resourceTencentCloudMpsOutputCreate(d *schema.ResourceData, meta interface{ request.Output = &createOutputInfo } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateStreamLinkOutputInfo(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateStreamLinkOutputInfo(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -386,23 +389,23 @@ func resourceTencentCloudMpsOutputCreate(d *schema.ResourceData, meta interface{ outputId = *response.Response.Info.OutputId } - d.SetId(strings.Join([]string{flowId, outputId}, FILED_SP)) + d.SetId(strings.Join([]string{flowId, outputId}, tccommon.FILED_SP)) return resourceTencentCloudMpsOutputRead(d, meta) } func resourceTencentCloudMpsOutputRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_output.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_output.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var protocol string - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -574,15 +577,15 @@ func resourceTencentCloudMpsOutputRead(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudMpsOutputUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_output.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_output.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyStreamLinkOutputInfoRequest() var protocol string - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -715,10 +718,10 @@ func resourceTencentCloudMpsOutputUpdate(d *schema.ResourceData, meta interface{ } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyStreamLinkOutputInfo(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyStreamLinkOutputInfo(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -733,15 +736,15 @@ func resourceTencentCloudMpsOutputUpdate(d *schema.ResourceData, meta interface{ } func resourceTencentCloudMpsOutputDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_output.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_output.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_mps_output_test.go b/tencentcloud/services/mps/resource_tc_mps_output_test.go similarity index 95% rename from tencentcloud/resource_tc_mps_output_test.go rename to tencentcloud/services/mps/resource_tc_mps_output_test.go index d5fbb10526..76102e7a47 100644 --- a/tencentcloud/resource_tc_mps_output_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_output_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps_test import ( "fmt" @@ -6,6 +6,8 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,9 +17,9 @@ func TestAccTencentCloudMpsOutputResource_basic(t *testing.T) { randomNum := randIns.Intn(1000) resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccMpsOutput, randomNum), diff --git a/tencentcloud/resource_tc_mps_person_sample.go b/tencentcloud/services/mps/resource_tc_mps_person_sample.go similarity index 79% rename from tencentcloud/resource_tc_mps_person_sample.go rename to tencentcloud/services/mps/resource_tc_mps_person_sample.go index 87fecf6dfa..f34b0ef6b0 100644 --- a/tencentcloud/resource_tc_mps_person_sample.go +++ b/tencentcloud/services/mps/resource_tc_mps_person_sample.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps import ( "context" @@ -7,13 +7,16 @@ import ( "log" "net/http" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsPersonSample() *schema.Resource { +func ResourceTencentCloudMpsPersonSample() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsPersonSampleCreate, Read: resourceTencentCloudMpsPersonSampleRead, @@ -57,10 +60,10 @@ func resourceTencentCloudMpsPersonSample() *schema.Resource { } func resourceTencentCloudMpsPersonSampleCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_person_sample.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_person_sample.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreatePersonSampleRequest() @@ -91,10 +94,10 @@ func resourceTencentCloudMpsPersonSampleCreate(d *schema.ResourceData, meta inte } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreatePersonSample(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreatePersonSample(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -113,14 +116,14 @@ func resourceTencentCloudMpsPersonSampleCreate(d *schema.ResourceData, meta inte } func resourceTencentCloudMpsPersonSampleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_person_sample.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_person_sample.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} personId := d.Id() @@ -169,10 +172,10 @@ func resourceTencentCloudMpsPersonSampleRead(d *schema.ResourceData, meta interf } func resourceTencentCloudMpsPersonSampleUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_person_sample.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_person_sample.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyPersonSampleRequest() @@ -219,10 +222,10 @@ func resourceTencentCloudMpsPersonSampleUpdate(d *schema.ResourceData, meta inte request.FaceOperationInfo = &operationInfo } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyPersonSample(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyPersonSample(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -238,13 +241,13 @@ func resourceTencentCloudMpsPersonSampleUpdate(d *schema.ResourceData, meta inte } func resourceTencentCloudMpsPersonSampleDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_person_sample.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_person_sample.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} personId := d.Id() if err := service.DeleteMpsPersonSampleById(ctx, personId); err != nil { diff --git a/tencentcloud/resource_tc_mps_person_sample_test.go b/tencentcloud/services/mps/resource_tc_mps_person_sample_test.go similarity index 82% rename from tencentcloud/resource_tc_mps_person_sample_test.go rename to tencentcloud/services/mps/resource_tc_mps_person_sample_test.go index b69ed90f51..25d4fd3399 100644 --- a/tencentcloud/resource_tc_mps_person_sample_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_person_sample_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixMpsPersonSampleResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsPersonSample, diff --git a/tencentcloud/resource_tc_mps_process_live_stream_operation.go b/tencentcloud/services/mps/resource_tc_mps_process_live_stream_operation.go similarity index 94% rename from tencentcloud/resource_tc_mps_process_live_stream_operation.go rename to tencentcloud/services/mps/resource_tc_mps_process_live_stream_operation.go index 2564be3113..38c2bf88fb 100644 --- a/tencentcloud/resource_tc_mps_process_live_stream_operation.go +++ b/tencentcloud/services/mps/resource_tc_mps_process_live_stream_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsProcessLiveStreamOperation() *schema.Resource { +func ResourceTencentCloudMpsProcessLiveStreamOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsProcessLiveStreamOperationCreate, Read: resourceTencentCloudMpsProcessLiveStreamOperationRead, @@ -241,10 +244,10 @@ func resourceTencentCloudMpsProcessLiveStreamOperation() *schema.Resource { } func resourceTencentCloudMpsProcessLiveStreamOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_process_live_stream_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_process_live_stream_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewProcessLiveStreamRequest() @@ -366,10 +369,10 @@ func resourceTencentCloudMpsProcessLiveStreamOperationCreate(d *schema.ResourceD request.ScheduleId = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ProcessLiveStream(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ProcessLiveStream(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -388,15 +391,15 @@ func resourceTencentCloudMpsProcessLiveStreamOperationCreate(d *schema.ResourceD } func resourceTencentCloudMpsProcessLiveStreamOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_process_live_stream_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_process_live_stream_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMpsProcessLiveStreamOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_process_live_stream_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_process_live_stream_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mps_process_live_stream_operation_test.go b/tencentcloud/services/mps/resource_tc_mps_process_live_stream_operation_test.go similarity index 87% rename from tencentcloud/resource_tc_mps_process_live_stream_operation_test.go rename to tencentcloud/services/mps/resource_tc_mps_process_live_stream_operation_test.go index 5674601287..42353f1bd6 100644 --- a/tencentcloud/resource_tc_mps_process_live_stream_operation_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_process_live_stream_operation_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package mps_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,12 +13,12 @@ func TestAccTencentCloudMpsProcessLiveStreamOperationResource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccMpsProcessLiveStreamOperation, defaultRegion), + Config: fmt.Sprintf(testAccMpsProcessLiveStreamOperation, tcacctest.DefaultRegion), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_mps_process_live_stream_operation.operation", "id"), resource.TestCheckResourceAttr("tencentcloud_mps_process_live_stream_operation.operation", "url", "http://www.abc.com/abc.m3u8"), @@ -25,7 +27,7 @@ func TestAccTencentCloudMpsProcessLiveStreamOperationResource_basic(t *testing.T resource.TestCheckResourceAttr("tencentcloud_mps_process_live_stream_operation.operation", "output_storage.0.type", "COS"), resource.TestCheckResourceAttrSet("tencentcloud_mps_process_live_stream_operation.operation", "output_storage.0.cos_output_storage.#"), resource.TestCheckResourceAttrSet("tencentcloud_mps_process_live_stream_operation.operation", "output_storage.0.cos_output_storage.0.bucket"), - resource.TestCheckResourceAttr("tencentcloud_mps_process_live_stream_operation.operation", "output_storage.0.cos_output_storage.0.region", defaultRegion), + resource.TestCheckResourceAttr("tencentcloud_mps_process_live_stream_operation.operation", "output_storage.0.cos_output_storage.0.region", tcacctest.DefaultRegion), resource.TestCheckResourceAttr("tencentcloud_mps_process_live_stream_operation.operation", "output_dir", "/output/"), resource.TestCheckResourceAttrSet("tencentcloud_mps_process_live_stream_operation.operation", "ai_content_review_task.#"), resource.TestCheckResourceAttr("tencentcloud_mps_process_live_stream_operation.operation", "ai_content_review_task.0.definition", "10"), @@ -37,7 +39,7 @@ func TestAccTencentCloudMpsProcessLiveStreamOperationResource_basic(t *testing.T }) } -const testAccMpsProcessLiveStreamOperation = userInfoData + ` +const testAccMpsProcessLiveStreamOperation = tcacctest.UserInfoData + ` resource "tencentcloud_cos_bucket" "output" { bucket = "tf-bucket-mps-process-live-stream-output-${local.app_id}" force_clean = true diff --git a/tencentcloud/resource_tc_mps_process_media_operation.go b/tencentcloud/services/mps/resource_tc_mps_process_media_operation.go similarity index 99% rename from tencentcloud/resource_tc_mps_process_media_operation.go rename to tencentcloud/services/mps/resource_tc_mps_process_media_operation.go index 4941897b16..bc1f8b5db0 100644 --- a/tencentcloud/resource_tc_mps_process_media_operation.go +++ b/tencentcloud/services/mps/resource_tc_mps_process_media_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsProcessMediaOperation() *schema.Resource { +func ResourceTencentCloudMpsProcessMediaOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsProcessMediaOperationCreate, Read: resourceTencentCloudMpsProcessMediaOperationRead, @@ -2630,10 +2633,10 @@ func resourceTencentCloudMpsProcessMediaOperation() *schema.Resource { } func resourceTencentCloudMpsProcessMediaOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_process_media_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_process_media_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewProcessMediaRequest() @@ -4065,10 +4068,10 @@ func resourceTencentCloudMpsProcessMediaOperationCreate(d *schema.ResourceData, request.TaskType = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ProcessMedia(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ProcessMedia(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -4087,15 +4090,15 @@ func resourceTencentCloudMpsProcessMediaOperationCreate(d *schema.ResourceData, } func resourceTencentCloudMpsProcessMediaOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_process_media_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_process_media_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMpsProcessMediaOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_process_media_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_process_media_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mps_process_media_operation_test.go b/tencentcloud/services/mps/resource_tc_mps_process_media_operation_test.go similarity index 87% rename from tencentcloud/resource_tc_mps_process_media_operation_test.go rename to tencentcloud/services/mps/resource_tc_mps_process_media_operation_test.go index 96a458b58a..00238f48d8 100644 --- a/tencentcloud/resource_tc_mps_process_media_operation_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_process_media_operation_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package mps_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,32 +13,32 @@ func TestAccTencentCloudMpsProcessMediaOperationResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccMpsProcessMediaOperation, defaultRegion, defaultRegion), + Config: fmt.Sprintf(testAccMpsProcessMediaOperation, tcacctest.DefaultRegion, tcacctest.DefaultRegion), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_mps_process_media_operation.operation", "id"), resource.TestCheckResourceAttrSet("tencentcloud_mps_process_media_operation.operation", "input_info.#"), resource.TestCheckResourceAttr("tencentcloud_mps_process_media_operation.operation", "input_info.0.type", "COS"), resource.TestCheckResourceAttrSet("tencentcloud_mps_process_media_operation.operation", "input_info.0.cos_input_info.#"), resource.TestCheckResourceAttrSet("tencentcloud_mps_process_media_operation.operation", "input_info.0.cos_input_info.0.bucket"), - resource.TestCheckResourceAttr("tencentcloud_mps_process_media_operation.operation", "input_info.0.cos_input_info.0.region", defaultRegion), + resource.TestCheckResourceAttr("tencentcloud_mps_process_media_operation.operation", "input_info.0.cos_input_info.0.region", tcacctest.DefaultRegion), resource.TestCheckResourceAttr("tencentcloud_mps_process_media_operation.operation", "input_info.0.cos_input_info.0.object", "/mps-test/test.mov"), resource.TestCheckResourceAttrSet("tencentcloud_mps_process_media_operation.operation", "output_storage.#"), resource.TestCheckResourceAttr("tencentcloud_mps_process_media_operation.operation", "output_storage.0.type", "COS"), resource.TestCheckResourceAttrSet("tencentcloud_mps_process_media_operation.operation", "output_storage.0.cos_output_storage.#"), resource.TestCheckResourceAttrSet("tencentcloud_mps_process_media_operation.operation", "output_storage.0.cos_output_storage.0.bucket"), - resource.TestCheckResourceAttr("tencentcloud_mps_process_media_operation.operation", "output_storage.0.cos_output_storage.0.region", defaultRegion), + resource.TestCheckResourceAttr("tencentcloud_mps_process_media_operation.operation", "output_storage.0.cos_output_storage.0.region", tcacctest.DefaultRegion), ), }, }, }) } -const testAccMpsProcessMediaOperation = userInfoData + ` +const testAccMpsProcessMediaOperation = tcacctest.UserInfoData + ` resource "tencentcloud_cos_bucket" "output" { bucket = "tf-bucket-mps-edit-media-output-${local.app_id}" force_clean = true diff --git a/tencentcloud/resource_tc_mps_sample_snapshot_template.go b/tencentcloud/services/mps/resource_tc_mps_sample_snapshot_template.go similarity index 84% rename from tencentcloud/resource_tc_mps_sample_snapshot_template.go rename to tencentcloud/services/mps/resource_tc_mps_sample_snapshot_template.go index c16e1433b0..40fe65798e 100644 --- a/tencentcloud/resource_tc_mps_sample_snapshot_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_sample_snapshot_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsSampleSnapshotTemplate() *schema.Resource { +func ResourceTencentCloudMpsSampleSnapshotTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsSampleSnapshotTemplateCreate, Read: resourceTencentCloudMpsSampleSnapshotTemplateRead, @@ -78,10 +81,10 @@ func resourceTencentCloudMpsSampleSnapshotTemplate() *schema.Resource { } func resourceTencentCloudMpsSampleSnapshotTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_sample_snapshot_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_sample_snapshot_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateSampleSnapshotTemplateRequest() @@ -124,10 +127,10 @@ func resourceTencentCloudMpsSampleSnapshotTemplateCreate(d *schema.ResourceData, request.FillType = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateSampleSnapshotTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateSampleSnapshotTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -146,14 +149,14 @@ func resourceTencentCloudMpsSampleSnapshotTemplateCreate(d *schema.ResourceData, } func resourceTencentCloudMpsSampleSnapshotTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_sample_snapshot_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_sample_snapshot_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -208,10 +211,10 @@ func resourceTencentCloudMpsSampleSnapshotTemplateRead(d *schema.ResourceData, m } func resourceTencentCloudMpsSampleSnapshotTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_sample_snapshot_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_sample_snapshot_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifySampleSnapshotTemplateRequest() @@ -268,10 +271,10 @@ func resourceTencentCloudMpsSampleSnapshotTemplateUpdate(d *schema.ResourceData, request.FillType = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifySampleSnapshotTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifySampleSnapshotTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -287,13 +290,13 @@ func resourceTencentCloudMpsSampleSnapshotTemplateUpdate(d *schema.ResourceData, } func resourceTencentCloudMpsSampleSnapshotTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_sample_snapshot_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_sample_snapshot_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsSampleSnapshotTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_sample_snapshot_template_test.go b/tencentcloud/services/mps/resource_tc_mps_sample_snapshot_template_test.go similarity index 91% rename from tencentcloud/resource_tc_mps_sample_snapshot_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_sample_snapshot_template_test.go index ca7c51b7cd..176b100e7b 100644 --- a/tencentcloud/resource_tc_mps_sample_snapshot_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_sample_snapshot_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsSampleSnapshotTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsSampleSnapshotTemplate, diff --git a/tencentcloud/resource_tc_mps_schedule.go b/tencentcloud/services/mps/resource_tc_mps_schedule.go similarity index 99% rename from tencentcloud/resource_tc_mps_schedule.go rename to tencentcloud/services/mps/resource_tc_mps_schedule.go index 4b7bac1505..73d27ba14e 100644 --- a/tencentcloud/resource_tc_mps_schedule.go +++ b/tencentcloud/services/mps/resource_tc_mps_schedule.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsSchedule() *schema.Resource { +func ResourceTencentCloudMpsSchedule() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsScheduleCreate, Read: resourceTencentCloudMpsScheduleRead, @@ -2652,10 +2655,10 @@ func resourceTencentCloudMpsSchedule() *schema.Resource { } func resourceTencentCloudMpsScheduleCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_schedule.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_schedule.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateScheduleRequest() @@ -4076,10 +4079,10 @@ func resourceTencentCloudMpsScheduleCreate(d *schema.ResourceData, meta interfac request.TaskNotifyConfig = &taskNotifyConfig } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateSchedule(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateSchedule(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -4098,14 +4101,14 @@ func resourceTencentCloudMpsScheduleCreate(d *schema.ResourceData, meta interfac } func resourceTencentCloudMpsScheduleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_schedule.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_schedule.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} scheduleId := d.Id() @@ -6048,10 +6051,10 @@ func resourceTencentCloudMpsScheduleRead(d *schema.ResourceData, meta interface{ } func resourceTencentCloudMpsScheduleUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_schedule.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_schedule.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyScheduleRequest() @@ -7485,10 +7488,10 @@ func resourceTencentCloudMpsScheduleUpdate(d *schema.ResourceData, meta interfac } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifySchedule(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifySchedule(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -7503,13 +7506,13 @@ func resourceTencentCloudMpsScheduleUpdate(d *schema.ResourceData, meta interfac } func resourceTencentCloudMpsScheduleDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_schedule.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_schedule.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} scheduleId := d.Id() if err := service.DeleteMpsScheduleById(ctx, scheduleId); err != nil { diff --git a/tencentcloud/resource_tc_mps_schedule_test.go b/tencentcloud/services/mps/resource_tc_mps_schedule_test.go similarity index 92% rename from tencentcloud/resource_tc_mps_schedule_test.go rename to tencentcloud/services/mps/resource_tc_mps_schedule_test.go index 29cd6156fc..11b3f66dd6 100644 --- a/tencentcloud/resource_tc_mps_schedule_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_schedule_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps_test import ( "context" @@ -8,9 +8,14 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + svcmps "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/mps" ) func init() { @@ -22,10 +27,10 @@ func init() { // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_mps_schedule func testSweepMpsSchedule(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - mpsService := MpsService{client: cli.(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + mpsService := svcmps.NewMpsService(cli.(tccommon.ProviderMeta).GetAPIV3Conn()) schedules, err := mpsService.DescribeMpsScheduleById(ctx, nil) if err != nil { @@ -40,10 +45,10 @@ func testSweepMpsSchedule(r string) error { delName := *v.ScheduleName if strings.HasPrefix(delName, "tf_test_") { - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { err := mpsService.DeleteMpsScheduleById(ctx, helper.Int64ToStr(delId)) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } return nil }) @@ -61,12 +66,12 @@ func TestAccTencentCloudMpsScheduleResource_basic(t *testing.T) { randomNum := randIns.Intn(1000) resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccMpsSchedule, randomNum, defaultRegion, defaultRegion), + Config: fmt.Sprintf(testAccMpsSchedule, randomNum, tcacctest.DefaultRegion, tcacctest.DefaultRegion), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "id"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "schedule_name"), @@ -74,7 +79,7 @@ func TestAccTencentCloudMpsScheduleResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "trigger.0.type", "CosFileUpload"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.#"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.bucket"), - resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.region", defaultRegion), + resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.region", tcacctest.DefaultRegion), resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.dir", "/upload/"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.formats.#"), resource.TestCheckTypeSetElemAttr("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.formats.*", "flv"), @@ -118,13 +123,13 @@ func TestAccTencentCloudMpsScheduleResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "output_storage.0.type", "COS"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "output_storage.0.cos_output_storage.#"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "output_storage.0.cos_output_storage.0.bucket"), - resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "output_storage.0.cos_output_storage.0.region", defaultRegion), + resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "output_storage.0.cos_output_storage.0.region", tcacctest.DefaultRegion), resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "output_dir", "output/"), ), }, { - Config: fmt.Sprintf(testAccMpsSchedule_update, randomNum, defaultRegion, defaultRegion), + Config: fmt.Sprintf(testAccMpsSchedule_update, randomNum, tcacctest.DefaultRegion, tcacctest.DefaultRegion), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "id"), resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "schedule_name", fmt.Sprintf("tf_test_mps_schedule_%d_changed", randomNum)), @@ -132,7 +137,7 @@ func TestAccTencentCloudMpsScheduleResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "trigger.0.type", "CosFileUpload"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.#"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.bucket"), - resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.region", defaultRegion), + resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.region", tcacctest.DefaultRegion), resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.dir", "/upload_changed/"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.formats.#"), resource.TestCheckTypeSetElemAttr("tencentcloud_mps_schedule.schedule", "trigger.0.cos_file_upload_trigger.0.formats.*", "mp4"), @@ -176,7 +181,7 @@ func TestAccTencentCloudMpsScheduleResource_basic(t *testing.T) { resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "output_storage.0.type", "COS"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "output_storage.0.cos_output_storage.#"), resource.TestCheckResourceAttrSet("tencentcloud_mps_schedule.schedule", "output_storage.0.cos_output_storage.0.bucket"), - resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "output_storage.0.cos_output_storage.0.region", defaultRegion), + resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "output_storage.0.cos_output_storage.0.region", tcacctest.DefaultRegion), resource.TestCheckResourceAttr("tencentcloud_mps_schedule.schedule", "output_dir", "output_chagned/"), ), @@ -190,7 +195,7 @@ func TestAccTencentCloudMpsScheduleResource_basic(t *testing.T) { }) } -const testAccMpsSchedule = userInfoData + ` +const testAccMpsSchedule = tcacctest.UserInfoData + ` data "tencentcloud_cos_bucket_object" "object" { bucket = "keep-bucket-${local.app_id}" key = "/mps-test/test.mov" @@ -328,7 +333,7 @@ resource "tencentcloud_mps_schedule" "schedule" { ` -const testAccMpsSchedule_update = userInfoData + ` +const testAccMpsSchedule_update = tcacctest.UserInfoData + ` data "tencentcloud_cos_bucket_object" "object" { bucket = "keep-bucket-${local.app_id}" key = "/mps-test/test.mov" diff --git a/tencentcloud/resource_tc_mps_snapshot_by_timeoffset_template.go b/tencentcloud/services/mps/resource_tc_mps_snapshot_by_timeoffset_template.go similarity index 82% rename from tencentcloud/resource_tc_mps_snapshot_by_timeoffset_template.go rename to tencentcloud/services/mps/resource_tc_mps_snapshot_by_timeoffset_template.go index 1a98c4061f..21617053b2 100644 --- a/tencentcloud/resource_tc_mps_snapshot_by_timeoffset_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_snapshot_by_timeoffset_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsSnapshotByTimeoffsetTemplate() *schema.Resource { +func ResourceTencentCloudMpsSnapshotByTimeoffsetTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsSnapshotByTimeoffsetTemplateCreate, Read: resourceTencentCloudMpsSnapshotByTimeoffsetTemplateRead, @@ -66,10 +69,10 @@ func resourceTencentCloudMpsSnapshotByTimeoffsetTemplate() *schema.Resource { } func resourceTencentCloudMpsSnapshotByTimeoffsetTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_snapshot_by_timeoffset_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_snapshot_by_timeoffset_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateSnapshotByTimeOffsetTemplateRequest() @@ -104,10 +107,10 @@ func resourceTencentCloudMpsSnapshotByTimeoffsetTemplateCreate(d *schema.Resourc request.FillType = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateSnapshotByTimeOffsetTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateSnapshotByTimeOffsetTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -126,14 +129,14 @@ func resourceTencentCloudMpsSnapshotByTimeoffsetTemplateCreate(d *schema.Resourc } func resourceTencentCloudMpsSnapshotByTimeoffsetTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_snapshot_by_timeoffset_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_snapshot_by_timeoffset_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -180,10 +183,10 @@ func resourceTencentCloudMpsSnapshotByTimeoffsetTemplateRead(d *schema.ResourceD } func resourceTencentCloudMpsSnapshotByTimeoffsetTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_snapshot_by_timeoffset_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_snapshot_by_timeoffset_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) needChange := false @@ -232,10 +235,10 @@ func resourceTencentCloudMpsSnapshotByTimeoffsetTemplateUpdate(d *schema.Resourc request.FillType = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifySnapshotByTimeOffsetTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifySnapshotByTimeOffsetTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -251,13 +254,13 @@ func resourceTencentCloudMpsSnapshotByTimeoffsetTemplateUpdate(d *schema.Resourc } func resourceTencentCloudMpsSnapshotByTimeoffsetTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_snapshot_by_timeoffset_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_snapshot_by_timeoffset_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsSnapshotByTimeoffsetTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_snapshot_by_timeoffset_template_test.go b/tencentcloud/services/mps/resource_tc_mps_snapshot_by_timeoffset_template_test.go similarity index 90% rename from tencentcloud/resource_tc_mps_snapshot_by_timeoffset_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_snapshot_by_timeoffset_template_test.go index 6077b85dae..900ad0f263 100644 --- a/tencentcloud/resource_tc_mps_snapshot_by_timeoffset_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_snapshot_by_timeoffset_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsSnapshotByTimeoffsetTemplateResource_basic(t *testing t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsSnapshotByTimeoffsetTemplate, diff --git a/tencentcloud/resource_tc_mps_start_flow_operation.go b/tencentcloud/services/mps/resource_tc_mps_start_flow_operation.go similarity index 69% rename from tencentcloud/resource_tc_mps_start_flow_operation.go rename to tencentcloud/services/mps/resource_tc_mps_start_flow_operation.go index b32aa82ae2..9c634cae32 100644 --- a/tencentcloud/resource_tc_mps_start_flow_operation.go +++ b/tencentcloud/services/mps/resource_tc_mps_start_flow_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsStartFlowOperation() *schema.Resource { +func ResourceTencentCloudMpsStartFlowOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsStartFlowOperationCreate, Read: resourceTencentCloudMpsStartFlowOperationRead, @@ -32,10 +35,10 @@ func resourceTencentCloudMpsStartFlowOperation() *schema.Resource { } func resourceTencentCloudMpsStartFlowOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_start_flow_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_start_flow_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( startRequest = mps.NewStartStreamLinkFlowRequest() @@ -54,10 +57,10 @@ func resourceTencentCloudMpsStartFlowOperationCreate(d *schema.ResourceData, met } if start { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().StartStreamLinkFlow(startRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().StartStreamLinkFlow(startRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, startRequest.GetAction(), startRequest.ToJsonString(), result.ToJsonString()) } @@ -68,10 +71,10 @@ func resourceTencentCloudMpsStartFlowOperationCreate(d *schema.ResourceData, met return err } } else { - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().StopStreamLinkFlow(stopRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().StopStreamLinkFlow(stopRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, stopRequest.GetAction(), stopRequest.ToJsonString(), result.ToJsonString()) } @@ -89,15 +92,15 @@ func resourceTencentCloudMpsStartFlowOperationCreate(d *schema.ResourceData, met } func resourceTencentCloudMpsStartFlowOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_start_flow_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_start_flow_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMpsStartFlowOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_start_flow_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_start_flow_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mps_start_flow_operation_test.go b/tencentcloud/services/mps/resource_tc_mps_start_flow_operation_test.go similarity index 94% rename from tencentcloud/resource_tc_mps_start_flow_operation_test.go rename to tencentcloud/services/mps/resource_tc_mps_start_flow_operation_test.go index 47e0798120..c89fdf9e61 100644 --- a/tencentcloud/resource_tc_mps_start_flow_operation_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_start_flow_operation_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps_test import ( "fmt" @@ -6,6 +6,8 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,9 +17,9 @@ func TestAccTencentCloudMpsStartFlowOperationResource_basic(t *testing.T) { randomNum := randIns.Intn(1000) resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccMpsStartFlowOperation_start, randomNum, randomNum, randomNum), diff --git a/tencentcloud/resource_tc_mps_transcode_template.go b/tencentcloud/services/mps/resource_tc_mps_transcode_template.go similarity index 96% rename from tencentcloud/resource_tc_mps_transcode_template.go rename to tencentcloud/services/mps/resource_tc_mps_transcode_template.go index b99e642fe0..5809b4e586 100644 --- a/tencentcloud/resource_tc_mps_transcode_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_transcode_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsTranscodeTemplate() *schema.Resource { +func ResourceTencentCloudMpsTranscodeTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsTranscodeTemplateCreate, Read: resourceTencentCloudMpsTranscodeTemplateRead, @@ -408,10 +411,10 @@ func resourceTencentCloudMpsTranscodeTemplate() *schema.Resource { } func resourceTencentCloudMpsTranscodeTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_transcode_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_transcode_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateTranscodeTemplateRequest() @@ -620,10 +623,10 @@ func resourceTencentCloudMpsTranscodeTemplateCreate(d *schema.ResourceData, meta request.EnhanceConfig = &enhanceConfig } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateTranscodeTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateTranscodeTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -642,14 +645,14 @@ func resourceTencentCloudMpsTranscodeTemplateCreate(d *schema.ResourceData, meta } func resourceTencentCloudMpsTranscodeTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_transcode_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_transcode_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -936,10 +939,10 @@ func resourceTencentCloudMpsTranscodeTemplateRead(d *schema.ResourceData, meta i } func resourceTencentCloudMpsTranscodeTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_transcode_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_transcode_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyTranscodeTemplateRequest() @@ -1167,10 +1170,10 @@ func resourceTencentCloudMpsTranscodeTemplateUpdate(d *schema.ResourceData, meta } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyTranscodeTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyTranscodeTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -1185,13 +1188,13 @@ func resourceTencentCloudMpsTranscodeTemplateUpdate(d *schema.ResourceData, meta } func resourceTencentCloudMpsTranscodeTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_transcode_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_transcode_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsTranscodeTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_transcode_template_test.go b/tencentcloud/services/mps/resource_tc_mps_transcode_template_test.go similarity index 87% rename from tencentcloud/resource_tc_mps_transcode_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_transcode_template_test.go index 3448da6ec5..ee51f6b14d 100644 --- a/tencentcloud/resource_tc_mps_transcode_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_transcode_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsTranscodeTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsTranscodeTemplate, diff --git a/tencentcloud/resource_tc_mps_watermark_template.go b/tencentcloud/services/mps/resource_tc_mps_watermark_template.go similarity index 91% rename from tencentcloud/resource_tc_mps_watermark_template.go rename to tencentcloud/services/mps/resource_tc_mps_watermark_template.go index 7cb398b5fc..36a4af78f9 100644 --- a/tencentcloud/resource_tc_mps_watermark_template.go +++ b/tencentcloud/services/mps/resource_tc_mps_watermark_template.go @@ -1,4 +1,4 @@ -package tencentcloud +package mps import ( "context" @@ -7,13 +7,16 @@ import ( "log" "net/http" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsWatermarkTemplate() *schema.Resource { +func ResourceTencentCloudMpsWatermarkTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsWatermarkTemplateCreate, Read: resourceTencentCloudMpsWatermarkTemplateRead, @@ -147,10 +150,10 @@ func resourceTencentCloudMpsWatermarkTemplate() *schema.Resource { } func resourceTencentCloudMpsWatermarkTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_watermark_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_watermark_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateWatermarkTemplateRequest() @@ -226,10 +229,10 @@ func resourceTencentCloudMpsWatermarkTemplateCreate(d *schema.ResourceData, meta request.SvgTemplate = &svgWatermarkInput } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateWatermarkTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateWatermarkTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -248,14 +251,14 @@ func resourceTencentCloudMpsWatermarkTemplateCreate(d *schema.ResourceData, meta } func resourceTencentCloudMpsWatermarkTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_watermark_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_watermark_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() @@ -366,10 +369,10 @@ func resourceTencentCloudMpsWatermarkTemplateRead(d *schema.ResourceData, meta i } func resourceTencentCloudMpsWatermarkTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_watermark_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_watermark_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyWatermarkTemplateRequest() @@ -458,10 +461,10 @@ func resourceTencentCloudMpsWatermarkTemplateUpdate(d *schema.ResourceData, meta } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyWatermarkTemplate(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyWatermarkTemplate(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -476,13 +479,13 @@ func resourceTencentCloudMpsWatermarkTemplateUpdate(d *schema.ResourceData, meta } func resourceTencentCloudMpsWatermarkTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_watermark_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_watermark_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} definition := d.Id() if err := service.DeleteMpsWatermarkTemplateById(ctx, definition); err != nil { diff --git a/tencentcloud/resource_tc_mps_watermark_template_test.go b/tencentcloud/services/mps/resource_tc_mps_watermark_template_test.go similarity index 99% rename from tencentcloud/resource_tc_mps_watermark_template_test.go rename to tencentcloud/services/mps/resource_tc_mps_watermark_template_test.go index 14f3843f97..a6426a82cf 100644 --- a/tencentcloud/resource_tc_mps_watermark_template_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_watermark_template_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsWatermarkTemplateResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsWatermarkTemplate, diff --git a/tencentcloud/resource_tc_mps_withdraws_watermark_operation.go b/tencentcloud/services/mps/resource_tc_mps_withdraws_watermark_operation.go similarity index 93% rename from tencentcloud/resource_tc_mps_withdraws_watermark_operation.go rename to tencentcloud/services/mps/resource_tc_mps_withdraws_watermark_operation.go index 4c949519bb..28c685fcaa 100644 --- a/tencentcloud/resource_tc_mps_withdraws_watermark_operation.go +++ b/tencentcloud/services/mps/resource_tc_mps_withdraws_watermark_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package mps import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsWithdrawsWatermarkOperation() *schema.Resource { +func ResourceTencentCloudMpsWithdrawsWatermarkOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsWithdrawsWatermarkOperationCreate, Read: resourceTencentCloudMpsWithdrawsWatermarkOperationRead, @@ -195,10 +198,10 @@ func resourceTencentCloudMpsWithdrawsWatermarkOperation() *schema.Resource { } func resourceTencentCloudMpsWithdrawsWatermarkOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_withdraws_watermark_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_withdraws_watermark_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewWithdrawsWatermarkRequest() @@ -298,10 +301,10 @@ func resourceTencentCloudMpsWithdrawsWatermarkOperationCreate(d *schema.Resource request.SessionContext = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().WithdrawsWatermark(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().WithdrawsWatermark(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -320,15 +323,15 @@ func resourceTencentCloudMpsWithdrawsWatermarkOperationCreate(d *schema.Resource } func resourceTencentCloudMpsWithdrawsWatermarkOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_withdraws_watermark_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_withdraws_watermark_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudMpsWithdrawsWatermarkOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_withdraws_watermark_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_withdraws_watermark_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_mps_withdraws_watermark_operation_test.go b/tencentcloud/services/mps/resource_tc_mps_withdraws_watermark_operation_test.go similarity index 87% rename from tencentcloud/resource_tc_mps_withdraws_watermark_operation_test.go rename to tencentcloud/services/mps/resource_tc_mps_withdraws_watermark_operation_test.go index 7d300bcc96..3ffdc61eae 100644 --- a/tencentcloud/resource_tc_mps_withdraws_watermark_operation_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_withdraws_watermark_operation_test.go @@ -1,9 +1,11 @@ -package tencentcloud +package mps_test import ( "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,19 +13,19 @@ func TestAccTencentCloudMpsWithdrawsWatermarkOperationResource_basic(t *testing. t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { - Config: fmt.Sprintf(testAccMpsWithdrawsWatermarkOperation, defaultRegion), + Config: fmt.Sprintf(testAccMpsWithdrawsWatermarkOperation, tcacctest.DefaultRegion), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_mps_withdraws_watermark_operation.operation", "id"), resource.TestCheckResourceAttrSet("tencentcloud_mps_withdraws_watermark_operation.operation", "input_info.#"), resource.TestCheckResourceAttr("tencentcloud_mps_withdraws_watermark_operation.operation", "input_info.0.type", "COS"), resource.TestCheckResourceAttrSet("tencentcloud_mps_withdraws_watermark_operation.operation", "input_info.0.cos_input_info.#"), resource.TestCheckResourceAttrSet("tencentcloud_mps_withdraws_watermark_operation.operation", "input_info.0.cos_input_info.0.bucket"), - resource.TestCheckResourceAttr("tencentcloud_mps_withdraws_watermark_operation.operation", "input_info.0.cos_input_info.0.region", defaultRegion), + resource.TestCheckResourceAttr("tencentcloud_mps_withdraws_watermark_operation.operation", "input_info.0.cos_input_info.0.region", tcacctest.DefaultRegion), resource.TestCheckResourceAttr("tencentcloud_mps_withdraws_watermark_operation.operation", "input_info.0.cos_input_info.0.object", "/mps-test/test.mov"), resource.TestCheckResourceAttr("tencentcloud_mps_withdraws_watermark_operation.operation", "session_context", "this is a example session context"), ), @@ -32,7 +34,7 @@ func TestAccTencentCloudMpsWithdrawsWatermarkOperationResource_basic(t *testing. }) } -const testAccMpsWithdrawsWatermarkOperation = userInfoData + ` +const testAccMpsWithdrawsWatermarkOperation = tcacctest.UserInfoData + ` // resource "tencentcloud_cos_bucket" "example" { // bucket = "tf-test-mps-wm-${local.app_id}" // acl = "public-read" diff --git a/tencentcloud/resource_tc_mps_word_sample.go b/tencentcloud/services/mps/resource_tc_mps_word_sample.go similarity index 78% rename from tencentcloud/resource_tc_mps_word_sample.go rename to tencentcloud/services/mps/resource_tc_mps_word_sample.go index dcb6bc9484..189b351e1e 100644 --- a/tencentcloud/resource_tc_mps_word_sample.go +++ b/tencentcloud/services/mps/resource_tc_mps_word_sample.go @@ -1,17 +1,20 @@ -package tencentcloud +package mps import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsWordSample() *schema.Resource { +func ResourceTencentCloudMpsWordSample() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsWordSampleCreate, Read: resourceTencentCloudMpsWordSampleRead, @@ -48,10 +51,10 @@ func resourceTencentCloudMpsWordSample() *schema.Resource { } func resourceTencentCloudMpsWordSampleCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_word_sample.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_word_sample.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateWordSamplesRequest() @@ -106,10 +109,10 @@ func resourceTencentCloudMpsWordSampleCreate(d *schema.ResourceData, meta interf // } //} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateWordSamples(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateWordSamples(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -126,16 +129,16 @@ func resourceTencentCloudMpsWordSampleCreate(d *schema.ResourceData, meta interf } func resourceTencentCloudMpsWordSampleRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_word_sample.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_word_sample.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - //keywords := strings.Split(d.Id(), FILED_SP) + //keywords := strings.Split(d.Id(), tccommon.FILED_SP) //if len(keywords) == 0 { // return fmt.Errorf("id is broken,%s", d.Id()) //} @@ -184,14 +187,14 @@ func resourceTencentCloudMpsWordSampleRead(d *schema.ResourceData, meta interfac } func resourceTencentCloudMpsWordSampleUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_word_sample.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_word_sample.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewModifyWordSampleRequest() - //keywords := strings.Split(d.Id(), FILED_SP) + //keywords := strings.Split(d.Id(), tccommon.FILED_SP) //if len(keywords) == 0 { // return fmt.Errorf("id is broken,%s", d.Id()) //} @@ -230,10 +233,10 @@ func resourceTencentCloudMpsWordSampleUpdate(d *schema.ResourceData, meta interf } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ModifyWordSample(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ModifyWordSample(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -248,13 +251,13 @@ func resourceTencentCloudMpsWordSampleUpdate(d *schema.ResourceData, meta interf } func resourceTencentCloudMpsWordSampleDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_word_sample.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_word_sample.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} keyword := d.Id() if err := service.DeleteMpsWordSamplesById(ctx, []string{keyword}); err != nil { diff --git a/tencentcloud/resource_tc_mps_word_sample_test.go b/tencentcloud/services/mps/resource_tc_mps_word_sample_test.go similarity index 93% rename from tencentcloud/resource_tc_mps_word_sample_test.go rename to tencentcloud/services/mps/resource_tc_mps_word_sample_test.go index 80df6ab9c2..5fbd554758 100644 --- a/tencentcloud/resource_tc_mps_word_sample_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_word_sample_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsWordSampleResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsWordSample, diff --git a/tencentcloud/resource_tc_mps_workflow.go b/tencentcloud/services/mps/resource_tc_mps_workflow.go similarity index 99% rename from tencentcloud/resource_tc_mps_workflow.go rename to tencentcloud/services/mps/resource_tc_mps_workflow.go index 63a05d07d4..1769c247da 100644 --- a/tencentcloud/resource_tc_mps_workflow.go +++ b/tencentcloud/services/mps/resource_tc_mps_workflow.go @@ -1,16 +1,19 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudMpsWorkflow() *schema.Resource { +func ResourceTencentCloudMpsWorkflow() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudMpsWorkflowCreate, Read: resourceTencentCloudMpsWorkflowRead, @@ -1795,10 +1798,10 @@ func resourceTencentCloudMpsWorkflow() *schema.Resource { } func resourceTencentCloudMpsWorkflowCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_workflow.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_workflow.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = mps.NewCreateWorkflowRequest() @@ -2780,10 +2783,10 @@ func resourceTencentCloudMpsWorkflowCreate(d *schema.ResourceData, meta interfac request.TaskPriority = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().CreateWorkflow(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().CreateWorkflow(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -2802,14 +2805,14 @@ func resourceTencentCloudMpsWorkflowCreate(d *schema.ResourceData, meta interfac } func resourceTencentCloudMpsWorkflowRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_workflow.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_workflow.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} workflowId := d.Id() @@ -4153,10 +4156,10 @@ func resourceTencentCloudMpsWorkflowRead(d *schema.ResourceData, meta interface{ } func resourceTencentCloudMpsWorkflowUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_workflow.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_workflow.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := mps.NewResetWorkflowRequest() @@ -5155,10 +5158,10 @@ func resourceTencentCloudMpsWorkflowUpdate(d *schema.ResourceData, meta interfac request.TaskPriority = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseMpsClient().ResetWorkflow(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMpsClient().ResetWorkflow(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -5175,13 +5178,13 @@ func resourceTencentCloudMpsWorkflowUpdate(d *schema.ResourceData, meta interfac } func resourceTencentCloudMpsWorkflowDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_mps_workflow.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_mps_workflow.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := MpsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := MpsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} workflowId := d.Id() if err := service.DeleteMpsWorkflowById(ctx, workflowId); err != nil { diff --git a/tencentcloud/resource_tc_mps_workflow_test.go b/tencentcloud/services/mps/resource_tc_mps_workflow_test.go similarity index 92% rename from tencentcloud/resource_tc_mps_workflow_test.go rename to tencentcloud/services/mps/resource_tc_mps_workflow_test.go index 056f83365d..d557df154a 100644 --- a/tencentcloud/resource_tc_mps_workflow_test.go +++ b/tencentcloud/services/mps/resource_tc_mps_workflow_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package mps_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudMpsWorkflowResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccMpsWorkflow, diff --git a/tencentcloud/service_tencentcloud_mps.go b/tencentcloud/services/mps/service_tencentcloud_mps.go similarity index 95% rename from tencentcloud/service_tencentcloud_mps.go rename to tencentcloud/services/mps/service_tencentcloud_mps.go index b70d0ada6b..49d627eb94 100644 --- a/tencentcloud/service_tencentcloud_mps.go +++ b/tencentcloud/services/mps/service_tencentcloud_mps.go @@ -1,21 +1,28 @@ -package tencentcloud +package mps import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + mps "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps/v20190612" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewMpsService(client *connectivity.TencentCloudClient) MpsService { + return MpsService{client: client} +} + type MpsService struct { client *connectivity.TencentCloudClient } func (me *MpsService) DescribeMpsWorkflowById(ctx context.Context, workflowId string) (workflow *mps.WorkflowInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeWorkflowsRequest() request.WorkflowIds = []*int64{helper.Int64(helper.StrToInt64(workflowId))} @@ -44,7 +51,7 @@ func (me *MpsService) DescribeMpsWorkflowById(ctx context.Context, workflowId st } func (me *MpsService) DeleteMpsWorkflowById(ctx context.Context, workflowId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteWorkflowRequest() request.WorkflowId = helper.Int64(helper.StrToInt64(workflowId)) @@ -68,7 +75,7 @@ func (me *MpsService) DeleteMpsWorkflowById(ctx context.Context, workflowId stri } func (me *MpsService) EnableWorkflow(ctx context.Context, workflowId int64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewEnableWorkflowRequest() request.WorkflowId = helper.Int64(workflowId) @@ -92,7 +99,7 @@ func (me *MpsService) EnableWorkflow(ctx context.Context, workflowId int64) (err } func (me *MpsService) DisableWorkflow(ctx context.Context, workflowId int64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDisableWorkflowRequest() request.WorkflowId = helper.Int64(workflowId) @@ -116,7 +123,7 @@ func (me *MpsService) DisableWorkflow(ctx context.Context, workflowId int64) (er } func (me *MpsService) DescribeMpsTranscodeTemplateById(ctx context.Context, definition string) (transcodeTemplate *mps.TranscodeTemplate, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeTranscodeTemplatesRequest() request.Definitions = []*int64{helper.StrToInt64Point(definition)} @@ -145,7 +152,7 @@ func (me *MpsService) DescribeMpsTranscodeTemplateById(ctx context.Context, defi } func (me *MpsService) DeleteMpsTranscodeTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteTranscodeTemplateRequest() request.Definition = helper.StrToInt64Point(definition) @@ -169,7 +176,7 @@ func (me *MpsService) DeleteMpsTranscodeTemplateById(ctx context.Context, defini } func (me *MpsService) DescribeMpsWatermarkTemplateById(ctx context.Context, definition string) (watermarkTemplate *mps.WatermarkTemplate, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeWatermarkTemplatesRequest() request.Definitions = []*int64{helper.StrToInt64Point(definition)} @@ -198,7 +205,7 @@ func (me *MpsService) DescribeMpsWatermarkTemplateById(ctx context.Context, defi } func (me *MpsService) DeleteMpsWatermarkTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteWatermarkTemplateRequest() request.Definition = helper.StrToInt64Point(definition) @@ -222,7 +229,7 @@ func (me *MpsService) DeleteMpsWatermarkTemplateById(ctx context.Context, defini } func (me *MpsService) DescribeMpsImageSpriteTemplateById(ctx context.Context, definition string) (imageSpriteTemplate *mps.ImageSpriteTemplate, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeImageSpriteTemplatesRequest() request.Definitions = []*uint64{helper.StrToUint64Point(definition)} @@ -251,7 +258,7 @@ func (me *MpsService) DescribeMpsImageSpriteTemplateById(ctx context.Context, de } func (me *MpsService) DeleteMpsImageSpriteTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteImageSpriteTemplateRequest() request.Definition = helper.StrToUint64Point(definition) @@ -275,7 +282,7 @@ func (me *MpsService) DeleteMpsImageSpriteTemplateById(ctx context.Context, defi } func (me *MpsService) DescribeMpsSnapshotByTimeoffsetTemplateById(ctx context.Context, definition string) (snapshotByTimeoffsetTemplate *mps.SnapshotByTimeOffsetTemplate, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeSnapshotByTimeOffsetTemplatesRequest() request.Definitions = []*uint64{helper.StrToUint64Point(definition)} @@ -304,7 +311,7 @@ func (me *MpsService) DescribeMpsSnapshotByTimeoffsetTemplateById(ctx context.Co } func (me *MpsService) DeleteMpsSnapshotByTimeoffsetTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteSnapshotByTimeOffsetTemplateRequest() request.Definition = helper.StrToUint64Point(definition) @@ -328,7 +335,7 @@ func (me *MpsService) DeleteMpsSnapshotByTimeoffsetTemplateById(ctx context.Cont } func (me *MpsService) DescribeMpsSampleSnapshotTemplateById(ctx context.Context, definition string) (sampleSnapshotTemplate *mps.SampleSnapshotTemplate, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeSampleSnapshotTemplatesRequest() request.Definitions = []*uint64{helper.StrToUint64Point(definition)} @@ -357,7 +364,7 @@ func (me *MpsService) DescribeMpsSampleSnapshotTemplateById(ctx context.Context, } func (me *MpsService) DeleteMpsSampleSnapshotTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteSampleSnapshotTemplateRequest() request.Definition = helper.StrToUint64Point(definition) @@ -381,7 +388,7 @@ func (me *MpsService) DeleteMpsSampleSnapshotTemplateById(ctx context.Context, d } func (me *MpsService) DescribeMpsAnimatedGraphicsTemplateById(ctx context.Context, definition string) (animatedGraphicsTemplate *mps.AnimatedGraphicsTemplate, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeAnimatedGraphicsTemplatesRequest() request.Definitions = []*uint64{helper.StrToUint64Point(definition)} @@ -410,7 +417,7 @@ func (me *MpsService) DescribeMpsAnimatedGraphicsTemplateById(ctx context.Contex } func (me *MpsService) DeleteMpsAnimatedGraphicsTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteAnimatedGraphicsTemplateRequest() request.Definition = helper.StrToUint64Point(definition) @@ -434,7 +441,7 @@ func (me *MpsService) DeleteMpsAnimatedGraphicsTemplateById(ctx context.Context, } func (me *MpsService) DescribeMpsAdaptiveDynamicStreamingTemplateById(ctx context.Context, definition string) (adaptiveDynamicStreamingTemplate *mps.AdaptiveDynamicStreamingTemplate, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeAdaptiveDynamicStreamingTemplatesRequest() request.Definitions = []*uint64{helper.StrToUint64Point(definition)} @@ -463,7 +470,7 @@ func (me *MpsService) DescribeMpsAdaptiveDynamicStreamingTemplateById(ctx contex } func (me *MpsService) DeleteMpsAdaptiveDynamicStreamingTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteAdaptiveDynamicStreamingTemplateRequest() request.Definition = helper.StrToUint64Point(definition) @@ -487,7 +494,7 @@ func (me *MpsService) DeleteMpsAdaptiveDynamicStreamingTemplateById(ctx context. } func (me *MpsService) DescribeMpsAiAnalysisTemplateById(ctx context.Context, definition string) (aiAnalysisTemplate *mps.AIAnalysisTemplateItem, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeAIAnalysisTemplatesRequest() request.Definitions = []*int64{helper.StrToInt64Point(definition)} @@ -516,7 +523,7 @@ func (me *MpsService) DescribeMpsAiAnalysisTemplateById(ctx context.Context, def } func (me *MpsService) DeleteMpsAiAnalysisTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteAIAnalysisTemplateRequest() request.Definition = helper.StrToInt64Point(definition) @@ -540,7 +547,7 @@ func (me *MpsService) DeleteMpsAiAnalysisTemplateById(ctx context.Context, defin } func (me *MpsService) DescribeMpsAiRecognitionTemplateById(ctx context.Context, definition string) (aiRecognitionTemplate *mps.AIRecognitionTemplateItem, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeAIRecognitionTemplatesRequest() request.Definitions = []*int64{helper.StrToInt64Point(definition)} @@ -569,7 +576,7 @@ func (me *MpsService) DescribeMpsAiRecognitionTemplateById(ctx context.Context, } func (me *MpsService) DeleteMpsAiRecognitionTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteAIRecognitionTemplateRequest() request.Definition = helper.StrToInt64Point(definition) @@ -593,7 +600,7 @@ func (me *MpsService) DeleteMpsAiRecognitionTemplateById(ctx context.Context, de } func (me *MpsService) DescribeMpsPersonSampleById(ctx context.Context, personId string) (personSample *mps.AiSamplePerson, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribePersonSamplesRequest() request.PersonIds = []*string{helper.String(personId)} @@ -622,7 +629,7 @@ func (me *MpsService) DescribeMpsPersonSampleById(ctx context.Context, personId } func (me *MpsService) DeleteMpsPersonSampleById(ctx context.Context, personId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeletePersonSampleRequest() request.PersonId = &personId @@ -646,7 +653,7 @@ func (me *MpsService) DeleteMpsPersonSampleById(ctx context.Context, personId st } func (me *MpsService) DescribeMpsWordSamplesById(ctx context.Context, keywords []string) (wordSamples []*mps.AiSampleWord, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeWordSamplesRequest() request.Keywords = helper.Strings(keywords) @@ -675,7 +682,7 @@ func (me *MpsService) DescribeMpsWordSamplesById(ctx context.Context, keywords [ } func (me *MpsService) DescribeMpsWordSampleById(ctx context.Context, keyword string) (wordSample *mps.AiSampleWord, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeWordSamplesRequest() request.Keywords = []*string{ @@ -706,7 +713,7 @@ func (me *MpsService) DescribeMpsWordSampleById(ctx context.Context, keyword str } func (me *MpsService) DeleteMpsWordSamplesById(ctx context.Context, keywords []string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteWordSamplesRequest() request.Keywords = helper.Strings(keywords) @@ -730,7 +737,7 @@ func (me *MpsService) DeleteMpsWordSamplesById(ctx context.Context, keywords []s } func (me *MpsService) DescribeMpsScheduleById(ctx context.Context, scheduleId *string) (schedules []*mps.SchedulesInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeSchedulesRequest() if scheduleId != nil { @@ -757,7 +764,7 @@ func (me *MpsService) DescribeMpsScheduleById(ctx context.Context, scheduleId *s } func (me *MpsService) DeleteMpsScheduleById(ctx context.Context, scheduleId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteScheduleRequest() request.ScheduleId = helper.StrToInt64Point(scheduleId) @@ -782,7 +789,7 @@ func (me *MpsService) DeleteMpsScheduleById(ctx context.Context, scheduleId stri func (me *MpsService) DescribeMpsSchedulesByFilter(ctx context.Context, param map[string]interface{}) (schedules []*mps.SchedulesInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mps.NewDescribeSchedulesRequest() ) @@ -836,7 +843,7 @@ func (me *MpsService) DescribeMpsSchedulesByFilter(ctx context.Context, param ma } func (me *MpsService) DescribeMpsFlowById(ctx context.Context, flowId string) (flow *mps.DescribeFlow, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeStreamLinkFlowRequest() request.FlowId = &flowId @@ -861,7 +868,7 @@ func (me *MpsService) DescribeMpsFlowById(ctx context.Context, flowId string) (f } func (me *MpsService) DeleteMpsFlowById(ctx context.Context, flowId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteStreamLinkFlowRequest() request.FlowId = &flowId @@ -885,7 +892,7 @@ func (me *MpsService) DeleteMpsFlowById(ctx context.Context, flowId string) (err } func (me *MpsService) DescribeMpsEventById(ctx context.Context, eventId string) (event *mps.DescribeEvent, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeStreamLinkEventRequest() request.EventId = &eventId @@ -910,7 +917,7 @@ func (me *MpsService) DescribeMpsEventById(ctx context.Context, eventId string) } func (me *MpsService) DeleteMpsEventById(ctx context.Context, eventId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteStreamLinkEventRequest() request.EventId = &eventId @@ -934,7 +941,7 @@ func (me *MpsService) DeleteMpsEventById(ctx context.Context, eventId string) (e } func (me *MpsService) DescribeMpsTaskDetailById(ctx context.Context, taskId string) (manageTaskOperation *mps.DescribeTaskDetailResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeTaskDetailRequest() request.TaskId = &taskId @@ -959,7 +966,7 @@ func (me *MpsService) DescribeMpsTaskDetailById(ctx context.Context, taskId stri } func (me *MpsService) DeleteMpsOutputById(ctx context.Context, flowId, outputId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteStreamLinkOutputRequest() request.FlowId = &flowId @@ -984,7 +991,7 @@ func (me *MpsService) DeleteMpsOutputById(ctx context.Context, flowId, outputId } func (me *MpsService) DescribeMpsInputById(ctx context.Context, flowId, inputId string) (input *mps.DescribeInput, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) flow, err := me.DescribeMpsFlowById(ctx, flowId) if err != nil { @@ -1003,7 +1010,7 @@ func (me *MpsService) DescribeMpsInputById(ctx context.Context, flowId, inputId } func (me *MpsService) DescribeMpsOutputById(ctx context.Context, flowId, outputId string) (output *mps.DescribeOutput, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) flow, err := me.DescribeMpsFlowById(ctx, flowId) if err != nil { @@ -1023,7 +1030,7 @@ func (me *MpsService) DescribeMpsOutputById(ctx context.Context, flowId, outputI func (me *MpsService) DescribeMpsTasksByFilter(ctx context.Context, param map[string]interface{}) (tasks []*mps.TaskSimpleInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mps.NewDescribeTasksRequest() ) @@ -1063,7 +1070,7 @@ func (me *MpsService) DescribeMpsTasksByFilter(ctx context.Context, param map[st } func (me *MpsService) DescribeMpsContentReviewTemplateById(ctx context.Context, definition string) (contentReviewTemplate *mps.ContentReviewTemplateItem, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDescribeContentReviewTemplatesRequest() request.Definitions = []*int64{helper.StrToInt64Point(definition)} @@ -1092,7 +1099,7 @@ func (me *MpsService) DescribeMpsContentReviewTemplateById(ctx context.Context, } func (me *MpsService) DeleteMpsContentReviewTemplateById(ctx context.Context, definition string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := mps.NewDeleteContentReviewTemplateRequest() request.Definition = helper.StrToInt64Point(definition) @@ -1117,7 +1124,7 @@ func (me *MpsService) DeleteMpsContentReviewTemplateById(ctx context.Context, de func (me *MpsService) DescribeMpsParseLiveStreamProcessNotificationByFilter(ctx context.Context, param map[string]interface{}) (ret *mps.ParseLiveStreamProcessNotificationResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mps.NewParseLiveStreamProcessNotificationRequest() ) @@ -1153,7 +1160,7 @@ func (me *MpsService) DescribeMpsParseLiveStreamProcessNotificationByFilter(ctx func (me *MpsService) DescribeMpsParseNotificationByFilter(ctx context.Context, param map[string]interface{}) (ret *mps.ParseNotificationResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mps.NewParseNotificationRequest() ) @@ -1189,7 +1196,7 @@ func (me *MpsService) DescribeMpsParseNotificationByFilter(ctx context.Context, func (me *MpsService) DescribeMpsMediaMetaDataByFilter(ctx context.Context, param map[string]interface{}) (ret *mps.MediaMetaData, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = mps.NewDescribeMediaMetaDataRequest() ) diff --git a/tencentcloud/data_source_tc_oceanus_check_savepoint.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_check_savepoint.go similarity index 77% rename from tencentcloud/data_source_tc_oceanus_check_savepoint.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_check_savepoint.go index 631b9a7c59..15c6e54722 100644 --- a/tencentcloud/data_source_tc_oceanus_check_savepoint.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_check_savepoint.go @@ -1,15 +1,18 @@ -package tencentcloud +package oceanus import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudOceanusCheckSavepoint() *schema.Resource { +func DataSourceTencentCloudOceanusCheckSavepoint() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudOceanusCheckSavepointRead, Schema: map[string]*schema.Schema{ @@ -26,7 +29,7 @@ func dataSourceTencentCloudOceanusCheckSavepoint() *schema.Resource { "record_type": { Required: true, Type: schema.TypeInt, - ValidateFunc: validateAllowedIntValue(RECORD_TYPE), + ValidateFunc: tccommon.ValidateAllowedIntValue(RECORD_TYPE), Description: "Snapshot type. 1:savepoint; 2:checkpoint; 3:cancelWithSavepoint.", }, "savepoint_path": { @@ -54,13 +57,13 @@ func dataSourceTencentCloudOceanusCheckSavepoint() *schema.Resource { } func dataSourceTencentCloudOceanusCheckSavepointRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_oceanus_check_savepoint.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_check_savepoint.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} checkSavepoint *oceanus.CheckSavepointResponseParams serialId string ) @@ -87,10 +90,10 @@ func dataSourceTencentCloudOceanusCheckSavepointRead(d *schema.ResourceData, met paramMap["WorkSpaceId"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeOceanusCheckSavepointByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } checkSavepoint = result @@ -112,7 +115,7 @@ func dataSourceTencentCloudOceanusCheckSavepointRead(d *schema.ResourceData, met d.SetId(serialId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_oceanus_check_savepoint_test.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_check_savepoint_test.go similarity index 82% rename from tencentcloud/data_source_tc_oceanus_check_savepoint_test.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_check_savepoint_test.go index 503c48ab40..6c7d1436a7 100644 --- a/tencentcloud/data_source_tc_oceanus_check_savepoint_test.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_check_savepoint_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixOceanusCheckSavepointDataSource_basic(t *testing. t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusCheckSavepointDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_check_savepoint.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_check_savepoint.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_check_savepoint.example", "job_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_check_savepoint.example", "serial_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_check_savepoint.example", "record_type"), diff --git a/tencentcloud/data_source_tc_oceanus_clusters.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_clusters.go similarity index 97% rename from tencentcloud/data_source_tc_oceanus_clusters.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_clusters.go index cd0dd9cfe7..dd2088d12a 100644 --- a/tencentcloud/data_source_tc_oceanus_clusters.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_clusters.go @@ -1,15 +1,18 @@ -package tencentcloud +package oceanus import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudOceanusClusters() *schema.Resource { +func DataSourceTencentCloudOceanusClusters() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudOceanusClustersRead, Schema: map[string]*schema.Schema{ @@ -23,7 +26,7 @@ func dataSourceTencentCloudOceanusClusters() *schema.Resource { "order_type": { Optional: true, Type: schema.TypeInt, - ValidateFunc: validateAllowedIntValue(CLUSTER_ORDER_TYPE), + ValidateFunc: tccommon.ValidateAllowedIntValue(CLUSTER_ORDER_TYPE), Description: "The sorting rule of the cluster information results. Possible values are 1 (sort by time in descending order), 2 (sort by time in ascending order), and 3 (sort by status).", }, "filters": { @@ -481,13 +484,13 @@ func dataSourceTencentCloudOceanusClusters() *schema.Resource { } func dataSourceTencentCloudOceanusClustersRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_oceanus_clusters.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_clusters.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} clusterSet []*oceanus.Cluster ) @@ -528,10 +531,10 @@ func dataSourceTencentCloudOceanusClustersRead(d *schema.ResourceData, meta inte paramMap["WorkSpaceId"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeOceanusClustersByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } clusterSet = result @@ -920,7 +923,7 @@ func dataSourceTencentCloudOceanusClustersRead(d *schema.ResourceData, meta inte d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_oceanus_clusters_test.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_clusters_test.go similarity index 79% rename from tencentcloud/data_source_tc_oceanus_clusters_test.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_clusters_test.go index 09885b8a3d..7d0937c371 100644 --- a/tencentcloud/data_source_tc_oceanus_clusters_test.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_clusters_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixOceanusClustersDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusClustersDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_clusters.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_clusters.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_clusters.example", "cluster_ids.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_clusters.example", "order_type"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_clusters.example", "work_space_id"), diff --git a/tencentcloud/data_source_tc_oceanus_job_submission_log.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_job_submission_log.go similarity index 90% rename from tencentcloud/data_source_tc_oceanus_job_submission_log.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_job_submission_log.go index 896c9b5102..73a200c7be 100644 --- a/tencentcloud/data_source_tc_oceanus_job_submission_log.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_job_submission_log.go @@ -1,15 +1,18 @@ -package tencentcloud +package oceanus import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudOceanusJobSubmissionLog() *schema.Resource { +func DataSourceTencentCloudOceanusJobSubmissionLog() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudOceanusJobSubmissionLogRead, Schema: map[string]*schema.Schema{ @@ -135,13 +138,13 @@ func dataSourceTencentCloudOceanusJobSubmissionLog() *schema.Resource { } func dataSourceTencentCloudOceanusJobSubmissionLogRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_oceanus_job_submission_log.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_job_submission_log.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobSubmissionLog *oceanus.DescribeJobSubmissionLogResponseParams jobId string ) @@ -176,10 +179,10 @@ func dataSourceTencentCloudOceanusJobSubmissionLogRead(d *schema.ResourceData, m paramMap["Cursor"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeOceanusJobSubmissionLogByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } jobSubmissionLog = result @@ -268,7 +271,7 @@ func dataSourceTencentCloudOceanusJobSubmissionLogRead(d *schema.ResourceData, m d.SetId(jobId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_oceanus_job_submission_log_test.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_job_submission_log_test.go similarity index 82% rename from tencentcloud/data_source_tc_oceanus_job_submission_log_test.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_job_submission_log_test.go index ae395f1a2c..54c616cf76 100644 --- a/tencentcloud/data_source_tc_oceanus_job_submission_log_test.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_job_submission_log_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixOceanusJobSubmissionLogDataSource_basic(t *testin t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusJobSubmissionLogDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_job_submission_log.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_job_submission_log.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_job_submission_log.example", "job_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_job_submission_log.example", "start_time"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_job_submission_log.example", "end_time"), diff --git a/tencentcloud/data_source_tc_oceanus_resource_related_job.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_resource_related_job.go similarity index 82% rename from tencentcloud/data_source_tc_oceanus_resource_related_job.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_resource_related_job.go index 2d5706c9a5..23d38df02d 100644 --- a/tencentcloud/data_source_tc_oceanus_resource_related_job.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_resource_related_job.go @@ -1,15 +1,18 @@ -package tencentcloud +package oceanus import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudOceanusResourceRelatedJob() *schema.Resource { +func DataSourceTencentCloudOceanusResourceRelatedJob() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudOceanusResourceRelatedJobRead, Schema: map[string]*schema.Schema{ @@ -22,7 +25,7 @@ func dataSourceTencentCloudOceanusResourceRelatedJob() *schema.Resource { Optional: true, Type: schema.TypeInt, Default: DESC_BY_JOB_CONFIG_CREATETIME_0, - ValidateFunc: validateAllowedIntValue(DESC_BY_JOB_CONFIG_CREATETIME), + ValidateFunc: tccommon.ValidateAllowedIntValue(DESC_BY_JOB_CONFIG_CREATETIME), Description: "Default:0; 1:sort by job version creation time in descending order.", }, "resource_config_version": { @@ -69,13 +72,13 @@ func dataSourceTencentCloudOceanusResourceRelatedJob() *schema.Resource { } func dataSourceTencentCloudOceanusResourceRelatedJobRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_oceanus_resource_related_job.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_resource_related_job.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} refJobInfos []*oceanus.ResourceRefJobInfo ) @@ -96,10 +99,10 @@ func dataSourceTencentCloudOceanusResourceRelatedJobRead(d *schema.ResourceData, paramMap["WorkSpaceId"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeOceanusResourceRelatedJobByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } refJobInfos = result @@ -139,7 +142,7 @@ func dataSourceTencentCloudOceanusResourceRelatedJobRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_oceanus_resource_related_job_test.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_resource_related_job_test.go similarity index 81% rename from tencentcloud/data_source_tc_oceanus_resource_related_job_test.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_resource_related_job_test.go index 96eef9f8f9..907ce2f547 100644 --- a/tencentcloud/data_source_tc_oceanus_resource_related_job_test.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_resource_related_job_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixOceanusResourceRelatedJobDataSource_basic(t *test t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusResourceRelatedJobDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_resource_related_job.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_resource_related_job.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_resource_related_job.example", "resource_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_resource_related_job.example", "desc_by_job_config_create_time"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_resource_related_job.example", "resource_config_version"), diff --git a/tencentcloud/data_source_tc_oceanus_savepoint_list.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_savepoint_list.go similarity index 90% rename from tencentcloud/data_source_tc_oceanus_savepoint_list.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_savepoint_list.go index 9c2949372f..ea91fda2ee 100644 --- a/tencentcloud/data_source_tc_oceanus_savepoint_list.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_savepoint_list.go @@ -1,15 +1,18 @@ -package tencentcloud +package oceanus import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudOceanusSavepointList() *schema.Resource { +func DataSourceTencentCloudOceanusSavepointList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudOceanusSavepointListRead, Schema: map[string]*schema.Schema{ @@ -118,13 +121,13 @@ func dataSourceTencentCloudOceanusSavepointList() *schema.Resource { } func dataSourceTencentCloudOceanusSavepointListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_oceanus_savepoint_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_savepoint_list.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} savepointList []*oceanus.Savepoint jobId string ) @@ -148,10 +151,10 @@ func dataSourceTencentCloudOceanusSavepointListRead(d *schema.ResourceData, meta paramMap["RecordTypes"] = recordTypesList } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeOceanusSavepointListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } savepointList = result @@ -233,7 +236,7 @@ func dataSourceTencentCloudOceanusSavepointListRead(d *schema.ResourceData, meta d.SetId(jobId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_oceanus_savepoint_list_test.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_savepoint_list_test.go similarity index 75% rename from tencentcloud/data_source_tc_oceanus_savepoint_list_test.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_savepoint_list_test.go index 174ef087de..db41ec885c 100644 --- a/tencentcloud/data_source_tc_oceanus_savepoint_list_test.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_savepoint_list_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixOceanusSavepointListDataSource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusSavepointListDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_savepoint_list.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_savepoint_list.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_savepoint_list.example", "job_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_savepoint_list.example", "work_space_id"), ), diff --git a/tencentcloud/data_source_tc_oceanus_system_resource.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_system_resource.go similarity index 88% rename from tencentcloud/data_source_tc_oceanus_system_resource.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_system_resource.go index a4ea0b9339..b9c14ad692 100644 --- a/tencentcloud/data_source_tc_oceanus_system_resource.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_system_resource.go @@ -1,15 +1,18 @@ -package tencentcloud +package oceanus import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudOceanusSystemResource() *schema.Resource { +func DataSourceTencentCloudOceanusSystemResource() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudOceanusSystemResourceRead, Schema: map[string]*schema.Schema{ @@ -98,13 +101,13 @@ func dataSourceTencentCloudOceanusSystemResource() *schema.Resource { } func dataSourceTencentCloudOceanusSystemResourceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_oceanus_system_resource.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_system_resource.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} systemResourceList []*oceanus.SystemResourceItem ) @@ -145,10 +148,10 @@ func dataSourceTencentCloudOceanusSystemResourceRead(d *schema.ResourceData, met paramMap["FlinkVersion"] = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeOceanusSystemResourceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } systemResourceList = result @@ -199,7 +202,7 @@ func dataSourceTencentCloudOceanusSystemResourceRead(d *schema.ResourceData, met d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_oceanus_system_resource_test.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_system_resource_test.go similarity index 79% rename from tencentcloud/data_source_tc_oceanus_system_resource_test.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_system_resource_test.go index 1074fb27c5..7db81164c3 100644 --- a/tencentcloud/data_source_tc_oceanus_system_resource_test.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_system_resource_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixOceanusSystemResourceDataSource_basic(t *testing. t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusSystemResourceDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_system_resource.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_system_resource.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_system_resource.example", "resource_ids.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_system_resource.example", "cluster_id"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_system_resource.example", "flink_version"), diff --git a/tencentcloud/data_source_tc_oceanus_tree_jobs.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_tree_jobs.go similarity index 88% rename from tencentcloud/data_source_tc_oceanus_tree_jobs.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_tree_jobs.go index e92da43f8a..8ea1de0f2d 100644 --- a/tencentcloud/data_source_tc_oceanus_tree_jobs.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_tree_jobs.go @@ -1,17 +1,20 @@ -package tencentcloud +package oceanus import ( "context" "encoding/json" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudOceanusTreeJobs() *schema.Resource { +func DataSourceTencentCloudOceanusTreeJobs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudOceanusTreeJobsRead, Schema: map[string]*schema.Schema{ @@ -113,13 +116,13 @@ func dataSourceTencentCloudOceanusTreeJobs() *schema.Resource { } func dataSourceTencentCloudOceanusTreeJobsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_oceanus_tree_jobs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_tree_jobs.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} treeJobs *oceanus.DescribeTreeJobsResponseParams workSpaceId string ) @@ -153,10 +156,10 @@ func dataSourceTencentCloudOceanusTreeJobsRead(d *schema.ResourceData, meta inte paramMap["Filters"] = tmpSet } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeOceanusTreeJobsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } treeJobs = result @@ -226,7 +229,7 @@ func dataSourceTencentCloudOceanusTreeJobsRead(d *schema.ResourceData, meta inte d.SetId(workSpaceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_oceanus_tree_jobs_test.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_tree_jobs_test.go similarity index 72% rename from tencentcloud/data_source_tc_oceanus_tree_jobs_test.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_tree_jobs_test.go index cce93c5a4e..02143340ce 100644 --- a/tencentcloud/data_source_tc_oceanus_tree_jobs_test.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_tree_jobs_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixOceanusTreeJobsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusTreeJobsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_tree_jobs.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_tree_jobs.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_tree_jobs.example", "work_space_id"), ), }, diff --git a/tencentcloud/data_source_tc_oceanus_tree_resources.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_tree_resources.go similarity index 89% rename from tencentcloud/data_source_tc_oceanus_tree_resources.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_tree_resources.go index a8bb86aed0..91436541b4 100644 --- a/tencentcloud/data_source_tc_oceanus_tree_resources.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_tree_resources.go @@ -1,16 +1,19 @@ -package tencentcloud +package oceanus import ( "context" "encoding/json" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudOceanusTreeResources() *schema.Resource { +func DataSourceTencentCloudOceanusTreeResources() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudOceanusTreeResourcesRead, Schema: map[string]*schema.Schema{ @@ -116,13 +119,13 @@ func dataSourceTencentCloudOceanusTreeResources() *schema.Resource { } func dataSourceTencentCloudOceanusTreeResourcesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_oceanus_tree_resources.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_tree_resources.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} treeResources *oceanus.DescribeTreeResourcesResponseParams workSpaceId string ) @@ -133,10 +136,10 @@ func dataSourceTencentCloudOceanusTreeResourcesRead(d *schema.ResourceData, meta workSpaceId = v.(string) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeOceanusTreeResourcesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } treeResources = result @@ -227,7 +230,7 @@ func dataSourceTencentCloudOceanusTreeResourcesRead(d *schema.ResourceData, meta d.SetId(workSpaceId) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_oceanus_tree_resources_test.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_tree_resources_test.go similarity index 72% rename from tencentcloud/data_source_tc_oceanus_tree_resources_test.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_tree_resources_test.go index cfacb06a40..37ca7e38a7 100644 --- a/tencentcloud/data_source_tc_oceanus_tree_resources_test.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_tree_resources_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixOceanusTreeResourcesDataSource_basic(t *testing.T t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusTreeResourcesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_tree_resources.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_tree_resources.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_tree_resources.example", "work_space_id"), ), }, diff --git a/tencentcloud/data_source_tc_oceanus_work_spaces.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_work_spaces.go similarity index 95% rename from tencentcloud/data_source_tc_oceanus_work_spaces.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_work_spaces.go index 0888421c45..b8e181c52a 100644 --- a/tencentcloud/data_source_tc_oceanus_work_spaces.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_work_spaces.go @@ -1,15 +1,18 @@ -package tencentcloud +package oceanus import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudOceanusWorkSpaces() *schema.Resource { +func DataSourceTencentCloudOceanusWorkSpaces() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudOceanusWorkSpacesRead, Schema: map[string]*schema.Schema{ @@ -17,7 +20,7 @@ func dataSourceTencentCloudOceanusWorkSpaces() *schema.Resource { Optional: true, Type: schema.TypeInt, Default: WORK_SPACES_ORDER_TYPE_0, - ValidateFunc: validateAllowedIntValue(WORK_SPACES_ORDER_TYPE), + ValidateFunc: tccommon.ValidateAllowedIntValue(WORK_SPACES_ORDER_TYPE), Description: "1:sort by creation time in descending order (default); 2:sort by creation time in ascending order; 3:sort by status in descending order; 4:sort by status in ascending order; default is 0.", }, "filters": { @@ -297,13 +300,13 @@ func dataSourceTencentCloudOceanusWorkSpaces() *schema.Resource { } func dataSourceTencentCloudOceanusWorkSpacesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_oceanus_work_spaces.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_work_spaces.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} workSpaceList []*oceanus.WorkSpaceSetItem ) @@ -335,10 +338,10 @@ func dataSourceTencentCloudOceanusWorkSpacesRead(d *schema.ResourceData, meta in paramMap["Filters"] = tmpSet } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeOceanusWorkSpacesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } workSpaceList = result @@ -563,7 +566,7 @@ func dataSourceTencentCloudOceanusWorkSpacesRead(d *schema.ResourceData, meta in d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), d); e != nil { + if e := tccommon.WriteToFile(output.(string), d); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_oceanus_work_spaces_test.go b/tencentcloud/services/oceanus/data_source_tc_oceanus_work_spaces_test.go similarity index 73% rename from tencentcloud/data_source_tc_oceanus_work_spaces_test.go rename to tencentcloud/services/oceanus/data_source_tc_oceanus_work_spaces_test.go index 9723aaf28d..06190b5c15 100644 --- a/tencentcloud/data_source_tc_oceanus_work_spaces_test.go +++ b/tencentcloud/services/oceanus/data_source_tc_oceanus_work_spaces_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudNeedFixOceanusWorkSpacesDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusWorkSpacesDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_work_spaces.example"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_work_spaces.example"), resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_work_spaces.example", "order_type"), ), }, diff --git a/tencentcloud/extension_oceanus.go b/tencentcloud/services/oceanus/extension_oceanus.go similarity index 98% rename from tencentcloud/extension_oceanus.go rename to tencentcloud/services/oceanus/extension_oceanus.go index f310769fe2..194a8e8f8f 100644 --- a/tencentcloud/extension_oceanus.go +++ b/tencentcloud/services/oceanus/extension_oceanus.go @@ -1,4 +1,4 @@ -package tencentcloud +package oceanus const ( DESC_BY_JOB_CONFIG_CREATETIME_0 = 0 diff --git a/tencentcloud/resource_tc_oceanus_folder.go b/tencentcloud/services/oceanus/resource_tc_oceanus_folder.go similarity index 73% rename from tencentcloud/resource_tc_oceanus_folder.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_folder.go index 3ae9d8ef12..4fcc26a4fa 100644 --- a/tencentcloud/resource_tc_oceanus_folder.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_folder.go @@ -1,4 +1,4 @@ -package tencentcloud +package oceanus import ( "context" @@ -7,6 +7,8 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" @@ -14,7 +16,7 @@ import ( "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusFolder() *schema.Resource { +func ResourceTencentCloudOceanusFolder() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusFolderCreate, Read: resourceTencentCloudOceanusFolderRead, @@ -37,7 +39,7 @@ func resourceTencentCloudOceanusFolder() *schema.Resource { "folder_type": { Optional: true, Type: schema.TypeInt, - ValidateFunc: validateAllowedIntValue([]int{0, 1}), + ValidateFunc: tccommon.ValidateAllowedIntValue([]int{0, 1}), Default: 0, Description: "Folder type, 0: job folder, 1: resource folder. Default is 0.", }, @@ -51,11 +53,11 @@ func resourceTencentCloudOceanusFolder() *schema.Resource { } func resourceTencentCloudOceanusFolderCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_folder.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_folder.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewCreateFolderRequest() response = oceanus.NewCreateFolderResponse() folderId string @@ -81,10 +83,10 @@ func resourceTencentCloudOceanusFolderCreate(d *schema.ResourceData, meta interf workSpaceId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().CreateFolder(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().CreateFolder(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -104,22 +106,22 @@ func resourceTencentCloudOceanusFolderCreate(d *schema.ResourceData, meta interf } folderId = *response.Response.FolderId - d.SetId(strings.Join([]string{workSpaceId, folderId, folderType}, FILED_SP)) + d.SetId(strings.Join([]string{workSpaceId, folderId, folderType}, tccommon.FILED_SP)) return resourceTencentCloudOceanusFolderRead(d, meta) } func resourceTencentCloudOceanusFolderRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_folder.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_folder.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -158,11 +160,11 @@ func resourceTencentCloudOceanusFolderRead(d *schema.ResourceData, meta interfac } func resourceTencentCloudOceanusFolderUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_folder.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_folder.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewModifyFolderRequest() ) @@ -174,7 +176,7 @@ func resourceTencentCloudOceanusFolderUpdate(d *schema.ResourceData, meta interf } } - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -195,10 +197,10 @@ func resourceTencentCloudOceanusFolderUpdate(d *schema.ResourceData, meta interf request.FolderName = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().ModifyFolder(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().ModifyFolder(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -215,16 +217,16 @@ func resourceTencentCloudOceanusFolderUpdate(d *schema.ResourceData, meta interf } func resourceTencentCloudOceanusFolderDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_folder.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_folder.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_oceanus_folder_test.go b/tencentcloud/services/oceanus/resource_tc_oceanus_folder_test.go similarity index 92% rename from tencentcloud/resource_tc_oceanus_folder_test.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_folder_test.go index 3a4dc283df..64376f04af 100644 --- a/tencentcloud/resource_tc_oceanus_folder_test.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_folder_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixOceanusFolderResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusFolder, diff --git a/tencentcloud/resource_tc_oceanus_job.go b/tencentcloud/services/oceanus/resource_tc_oceanus_job.go similarity index 78% rename from tencentcloud/resource_tc_oceanus_job.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_job.go index cce423edbc..a1b83abfde 100644 --- a/tencentcloud/resource_tc_oceanus_job.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_job.go @@ -1,17 +1,20 @@ -package tencentcloud +package oceanus import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusJob() *schema.Resource { +func ResourceTencentCloudOceanusJob() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusJobCreate, Read: resourceTencentCloudOceanusJobRead, @@ -27,13 +30,13 @@ func resourceTencentCloudOceanusJob() *schema.Resource { "job_type": { Required: true, Type: schema.TypeInt, - ValidateFunc: validateAllowedIntValue(JOB_TYPE), + ValidateFunc: tccommon.ValidateAllowedIntValue(JOB_TYPE), Description: "The type of the job. 1 indicates SQL job, and 2 indicates JAR job.", }, "cluster_type": { Required: true, Type: schema.TypeInt, - ValidateFunc: validateAllowedIntValue(CLUSTER_TYPE), + ValidateFunc: tccommon.ValidateAllowedIntValue(CLUSTER_TYPE), Description: "The type of the cluster. 1 indicates shared cluster, and 2 indicates exclusive cluster.", }, "cluster_id": { @@ -45,7 +48,7 @@ func resourceTencentCloudOceanusJob() *schema.Resource { Optional: true, Type: schema.TypeInt, Default: CU_MEM_4, - ValidateFunc: validateAllowedIntValue(CU_MEM), + ValidateFunc: tccommon.ValidateAllowedIntValue(CU_MEM), Description: "Set the memory specification of each CU, in GB. It supports 2, 4, 8, and 16 (which needs to apply for the whitelist before use). The default is 4, that is, 1 CU corresponds to 4 GB of running memory.", }, "remark": { @@ -73,11 +76,11 @@ func resourceTencentCloudOceanusJob() *schema.Resource { } func resourceTencentCloudOceanusJobCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewCreateJobRequest() response = oceanus.NewCreateJobResponse() jobId string @@ -119,10 +122,10 @@ func resourceTencentCloudOceanusJobCreate(d *schema.ResourceData, meta interface request.WorkSpaceId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().CreateJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().CreateJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -148,13 +151,13 @@ func resourceTencentCloudOceanusJobCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudOceanusJobRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobId = d.Id() ) @@ -201,11 +204,11 @@ func resourceTencentCloudOceanusJobRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudOceanusJobUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewModifyJobRequest() jobId = d.Id() ) @@ -238,10 +241,10 @@ func resourceTencentCloudOceanusJobUpdate(d *schema.ResourceData, meta interface } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().ModifyJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().ModifyJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -258,13 +261,13 @@ func resourceTencentCloudOceanusJobUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudOceanusJobDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobId = d.Id() ) diff --git a/tencentcloud/resource_tc_oceanus_job_config.go b/tencentcloud/services/oceanus/resource_tc_oceanus_job_config.go similarity index 94% rename from tencentcloud/resource_tc_oceanus_job_config.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_job_config.go index 663993363e..557f552479 100644 --- a/tencentcloud/resource_tc_oceanus_job_config.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_job_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package oceanus import ( "context" @@ -7,13 +7,16 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusJobConfig() *schema.Resource { +func ResourceTencentCloudOceanusJobConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusJobConfigCreate, Read: resourceTencentCloudOceanusJobConfigRead, @@ -339,11 +342,11 @@ func resourceTencentCloudOceanusJobConfig() *schema.Resource { } func resourceTencentCloudOceanusJobConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewCreateJobConfigRequest() response = oceanus.NewCreateJobConfigResponse() jobId string @@ -599,10 +602,10 @@ func resourceTencentCloudOceanusJobConfigCreate(d *schema.ResourceData, meta int request.AutoDelete = helper.IntInt64(0) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().CreateJobConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().CreateJobConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -623,22 +626,22 @@ func resourceTencentCloudOceanusJobConfigCreate(d *schema.ResourceData, meta int versionInt := *response.Response.Version version = strconv.FormatUint(versionInt, 10) - d.SetId(strings.Join([]string{jobId, version}, FILED_SP)) + d.SetId(strings.Join([]string{jobId, version}, tccommon.FILED_SP)) return resourceTencentCloudOceanusJobConfigRead(d, meta) } func resourceTencentCloudOceanusJobConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job_config.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -930,8 +933,8 @@ func resourceTencentCloudOceanusJobConfigRead(d *schema.ResourceData, meta inter } func resourceTencentCloudOceanusJobConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job_config.update")() + defer tccommon.InconsistentCheck(d, meta)() immutableArgs := []string{"job_id", "entrypoint_class", "program_args", "remark", "resource_refs", "default_parallelism", "properties", "c_o_s_bucket", "log_collect", "job_manager_spec", "task_manager_spec", "cls_logset_id", "cls_topic_id", "log_collect_type", "python_version", "work_space_id", "log_level", "auto_recover", "clazz_levels", "expert_mode_on", "expert_mode_configuration"} @@ -945,16 +948,16 @@ func resourceTencentCloudOceanusJobConfigUpdate(d *schema.ResourceData, meta int } func resourceTencentCloudOceanusJobConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_oceanus_job_config_test.go b/tencentcloud/services/oceanus/resource_tc_oceanus_job_config_test.go similarity index 93% rename from tencentcloud/resource_tc_oceanus_job_config_test.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_job_config_test.go index 74f224bd91..8cf95d216c 100644 --- a/tencentcloud/resource_tc_oceanus_job_config_test.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_job_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixOceanusJobConfigResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusJobConfig, diff --git a/tencentcloud/resource_tc_oceanus_job_copy.go b/tencentcloud/services/oceanus/resource_tc_oceanus_job_copy.go similarity index 78% rename from tencentcloud/resource_tc_oceanus_job_copy.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_job_copy.go index d28d1a5f2f..f9d1e905c6 100644 --- a/tencentcloud/resource_tc_oceanus_job_copy.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_job_copy.go @@ -1,17 +1,20 @@ -package tencentcloud +package oceanus import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusJobCopy() *schema.Resource { +func ResourceTencentCloudOceanusJobCopy() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusJobCopyCreate, Read: resourceTencentCloudOceanusJobCopyRead, @@ -70,11 +73,11 @@ func resourceTencentCloudOceanusJobCopy() *schema.Resource { } func resourceTencentCloudOceanusJobCopyCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job_copy.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job_copy.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewCopyJobsRequest() response = oceanus.NewCopyJobsResponse() jobId string @@ -111,10 +114,10 @@ func resourceTencentCloudOceanusJobCopyCreate(d *schema.ResourceData, meta inter request.WorkSpaceId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().CopyJobs(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().CopyJobs(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -140,13 +143,13 @@ func resourceTencentCloudOceanusJobCopyCreate(d *schema.ResourceData, meta inter } func resourceTencentCloudOceanusJobCopyRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job_copy.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job_copy.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobId = d.Id() ) @@ -181,13 +184,13 @@ func resourceTencentCloudOceanusJobCopyRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudOceanusJobCopyDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_job_copy.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_job_copy.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} jobId = d.Id() ) diff --git a/tencentcloud/resource_tc_oceanus_job_copy_test.go b/tencentcloud/services/oceanus/resource_tc_oceanus_job_copy_test.go similarity index 89% rename from tencentcloud/resource_tc_oceanus_job_copy_test.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_job_copy_test.go index 38a239ab14..e25ad55a44 100644 --- a/tencentcloud/resource_tc_oceanus_job_copy_test.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_job_copy_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixOceanusJobCopyResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusJobCopy, diff --git a/tencentcloud/resource_tc_oceanus_job_test.go b/tencentcloud/services/oceanus/resource_tc_oceanus_job_test.go similarity index 94% rename from tencentcloud/resource_tc_oceanus_job_test.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_job_test.go index a39975e3d5..89f7a4c852 100644 --- a/tencentcloud/resource_tc_oceanus_job_test.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_job_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixOceanusJobResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusJob, diff --git a/tencentcloud/resource_tc_oceanus_resource.go b/tencentcloud/services/oceanus/resource_tc_oceanus_resource.go similarity index 82% rename from tencentcloud/resource_tc_oceanus_resource.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_resource.go index 2891ce82f0..a8324e00d5 100644 --- a/tencentcloud/resource_tc_oceanus_resource.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_resource.go @@ -1,4 +1,4 @@ -package tencentcloud +package oceanus import ( "context" @@ -7,13 +7,16 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusResource() *schema.Resource { +func ResourceTencentCloudOceanusResource() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusResourceCreate, Read: resourceTencentCloudOceanusResourceRead, @@ -106,11 +109,11 @@ func resourceTencentCloudOceanusResource() *schema.Resource { } func resourceTencentCloudOceanusResourceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_resource.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_resource.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewCreateResourceRequest() response = oceanus.NewCreateResourceResponse() resourceId string @@ -167,10 +170,10 @@ func resourceTencentCloudOceanusResourceCreate(d *schema.ResourceData, meta inte request.WorkSpaceId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().CreateResource(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().CreateResource(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -192,22 +195,22 @@ func resourceTencentCloudOceanusResourceCreate(d *schema.ResourceData, meta inte resourceId = *response.Response.ResourceId versionInt := *response.Response.Version version = strconv.FormatInt(versionInt, 10) - d.SetId(strings.Join([]string{resourceId, version}, FILED_SP)) + d.SetId(strings.Join([]string{resourceId, version}, tccommon.FILED_SP)) return resourceTencentCloudOceanusResourceRead(d, meta) } func resourceTencentCloudOceanusResourceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_resource.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_resource.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -264,8 +267,8 @@ func resourceTencentCloudOceanusResourceRead(d *schema.ResourceData, meta interf } func resourceTencentCloudOceanusResourceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_resource.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_resource.update")() + defer tccommon.InconsistentCheck(d, meta)() immutableArgs := []string{"resource_loc", "resource_type", "remark", "name", "resource_config_remark", "folder_id", "work_space_id"} @@ -279,16 +282,16 @@ func resourceTencentCloudOceanusResourceUpdate(d *schema.ResourceData, meta inte } func resourceTencentCloudOceanusResourceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_resource.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_resource.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_oceanus_resource_config.go b/tencentcloud/services/oceanus/resource_tc_oceanus_resource_config.go similarity index 81% rename from tencentcloud/resource_tc_oceanus_resource_config.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_resource_config.go index ef84a13c93..a57fd2705e 100644 --- a/tencentcloud/resource_tc_oceanus_resource_config.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_resource_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package oceanus import ( "context" @@ -7,13 +7,16 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusResourceConfig() *schema.Resource { +func ResourceTencentCloudOceanusResourceConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusResourceConfigCreate, Read: resourceTencentCloudOceanusResourceConfigRead, @@ -86,11 +89,11 @@ func resourceTencentCloudOceanusResourceConfig() *schema.Resource { } func resourceTencentCloudOceanusResourceConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_resource_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_resource_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewCreateResourceConfigRequest() response = oceanus.NewCreateResourceConfigResponse() resourceId string @@ -137,10 +140,10 @@ func resourceTencentCloudOceanusResourceConfigCreate(d *schema.ResourceData, met } request.AutoDelete = helper.IntInt64(0) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().CreateResourceConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().CreateResourceConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -161,22 +164,22 @@ func resourceTencentCloudOceanusResourceConfigCreate(d *schema.ResourceData, met versionInt := *response.Response.Version version = strconv.FormatInt(versionInt, 10) - d.SetId(strings.Join([]string{resourceId, version}, FILED_SP)) + d.SetId(strings.Join([]string{resourceId, version}, tccommon.FILED_SP)) return resourceTencentCloudOceanusResourceConfigRead(d, meta) } func resourceTencentCloudOceanusResourceConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_resource_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_resource_config.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -238,8 +241,8 @@ func resourceTencentCloudOceanusResourceConfigRead(d *schema.ResourceData, meta } func resourceTencentCloudOceanusResourceConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_resource_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_resource_config.update")() + defer tccommon.InconsistentCheck(d, meta)() immutableArgs := []string{"resource_id", "resource_loc", "remark", "work_space_id"} @@ -253,16 +256,16 @@ func resourceTencentCloudOceanusResourceConfigUpdate(d *schema.ResourceData, met } func resourceTencentCloudOceanusResourceConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_resource_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_resource_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_oceanus_resource_config_test.go b/tencentcloud/services/oceanus/resource_tc_oceanus_resource_config_test.go similarity index 87% rename from tencentcloud/resource_tc_oceanus_resource_config_test.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_resource_config_test.go index de18f5843a..13947627b6 100644 --- a/tencentcloud/resource_tc_oceanus_resource_config_test.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_resource_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixOceanusResourceConfigResource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusResourceConfig, diff --git a/tencentcloud/resource_tc_oceanus_resource_test.go b/tencentcloud/services/oceanus/resource_tc_oceanus_resource_test.go similarity index 90% rename from tencentcloud/resource_tc_oceanus_resource_test.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_resource_test.go index 1f5000efa4..bf7d817d61 100644 --- a/tencentcloud/resource_tc_oceanus_resource_test.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_resource_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixOceanusResourceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusResource, diff --git a/tencentcloud/resource_tc_oceanus_run_job.go b/tencentcloud/services/oceanus/resource_tc_oceanus_run_job.go similarity index 84% rename from tencentcloud/resource_tc_oceanus_run_job.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_run_job.go index 13ca197e0c..a806199f74 100644 --- a/tencentcloud/resource_tc_oceanus_run_job.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_run_job.go @@ -1,16 +1,19 @@ -package tencentcloud +package oceanus import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusRunJob() *schema.Resource { +func ResourceTencentCloudOceanusRunJob() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusRunJobCreate, Read: resourceTencentCloudOceanusRunJobRead, @@ -78,11 +81,11 @@ func resourceTencentCloudOceanusRunJob() *schema.Resource { } func resourceTencentCloudOceanusRunJobCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_run_job.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_run_job.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewRunJobsRequest() jobIds []string ) @@ -132,10 +135,10 @@ func resourceTencentCloudOceanusRunJobCreate(d *schema.ResourceData, meta interf request.WorkSpaceId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().RunJobs(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().RunJobs(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -148,21 +151,21 @@ func resourceTencentCloudOceanusRunJobCreate(d *schema.ResourceData, meta interf return err } - d.SetId(strings.Join(jobIds, FILED_SP)) + d.SetId(strings.Join(jobIds, tccommon.FILED_SP)) return resourceTencentCloudOceanusRunJobRead(d, meta) } func resourceTencentCloudOceanusRunJobRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_run_job.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_run_job.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudOceanusRunJobDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_run_job.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_run_job.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_oceanus_stop_job.go b/tencentcloud/services/oceanus/resource_tc_oceanus_stop_job.go similarity index 75% rename from tencentcloud/resource_tc_oceanus_stop_job.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_stop_job.go index 362f024dba..0092254dae 100644 --- a/tencentcloud/resource_tc_oceanus_stop_job.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_stop_job.go @@ -1,16 +1,19 @@ -package tencentcloud +package oceanus import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusStopJob() *schema.Resource { +func ResourceTencentCloudOceanusStopJob() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusStopJobCreate, Read: resourceTencentCloudOceanusStopJobRead, @@ -48,11 +51,11 @@ func resourceTencentCloudOceanusStopJob() *schema.Resource { } func resourceTencentCloudOceanusStopJobCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_stop_job.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_stop_job.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewStopJobsRequest() jobIds []string ) @@ -78,10 +81,10 @@ func resourceTencentCloudOceanusStopJobCreate(d *schema.ResourceData, meta inter request.WorkSpaceId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().StopJobs(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().StopJobs(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -94,21 +97,21 @@ func resourceTencentCloudOceanusStopJobCreate(d *schema.ResourceData, meta inter return err } - d.SetId(strings.Join(jobIds, FILED_SP)) + d.SetId(strings.Join(jobIds, tccommon.FILED_SP)) return resourceTencentCloudOceanusStopJobRead(d, meta) } func resourceTencentCloudOceanusStopJobRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_stop_job.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_stop_job.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudOceanusStopJobDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_stop_job.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_stop_job.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_oceanus_trigger_job_savepoint.go b/tencentcloud/services/oceanus/resource_tc_oceanus_trigger_job_savepoint.go similarity index 72% rename from tencentcloud/resource_tc_oceanus_trigger_job_savepoint.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_trigger_job_savepoint.go index a3c0d49d2a..126400d029 100644 --- a/tencentcloud/resource_tc_oceanus_trigger_job_savepoint.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_trigger_job_savepoint.go @@ -1,15 +1,18 @@ -package tencentcloud +package oceanus import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusTriggerJobSavepoint() *schema.Resource { +func ResourceTencentCloudOceanusTriggerJobSavepoint() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusTriggerJobSavepointCreate, Read: resourceTencentCloudOceanusTriggerJobSavepointRead, @@ -39,11 +42,11 @@ func resourceTencentCloudOceanusTriggerJobSavepoint() *schema.Resource { } func resourceTencentCloudOceanusTriggerJobSavepointCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_trigger_job_savepoint.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_trigger_job_savepoint.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewTriggerJobSavepointRequest() jobId string ) @@ -61,10 +64,10 @@ func resourceTencentCloudOceanusTriggerJobSavepointCreate(d *schema.ResourceData request.WorkSpaceId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().TriggerJobSavepoint(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().TriggerJobSavepoint(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -83,15 +86,15 @@ func resourceTencentCloudOceanusTriggerJobSavepointCreate(d *schema.ResourceData } func resourceTencentCloudOceanusTriggerJobSavepointRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_trigger_job_savepoint.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_trigger_job_savepoint.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudOceanusTriggerJobSavepointDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_trigger_job_savepoint.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_trigger_job_savepoint.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_oceanus_work_space.go b/tencentcloud/services/oceanus/resource_tc_oceanus_work_space.go similarity index 76% rename from tencentcloud/resource_tc_oceanus_work_space.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_work_space.go index 1a45ce6563..7b4825956e 100644 --- a/tencentcloud/resource_tc_oceanus_work_space.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_work_space.go @@ -1,4 +1,4 @@ -package tencentcloud +package oceanus import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudOceanusWorkSpace() *schema.Resource { +func ResourceTencentCloudOceanusWorkSpace() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudOceanusWorkSpaceCreate, Read: resourceTencentCloudOceanusWorkSpaceRead, @@ -88,11 +91,11 @@ func resourceTencentCloudOceanusWorkSpace() *schema.Resource { } func resourceTencentCloudOceanusWorkSpaceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_work_space.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_work_space.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewCreateWorkSpaceRequest() response = oceanus.NewCreateWorkSpaceResponse() workSpaceId string @@ -108,10 +111,10 @@ func resourceTencentCloudOceanusWorkSpaceCreate(d *schema.ResourceData, meta int request.Description = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().CreateWorkSpace(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().CreateWorkSpace(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -131,22 +134,22 @@ func resourceTencentCloudOceanusWorkSpaceCreate(d *schema.ResourceData, meta int } workSpaceId = *response.Response.WorkSpaceId - d.SetId(strings.Join([]string{workSpaceId, workSpaceName}, FILED_SP)) + d.SetId(strings.Join([]string{workSpaceId, workSpaceName}, tccommon.FILED_SP)) return resourceTencentCloudOceanusWorkSpaceRead(d, meta) } func resourceTencentCloudOceanusWorkSpaceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_work_space.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_work_space.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -215,15 +218,15 @@ func resourceTencentCloudOceanusWorkSpaceRead(d *schema.ResourceData, meta inter } func resourceTencentCloudOceanusWorkSpaceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_work_space.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_work_space.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = oceanus.NewModifyWorkSpaceRequest() ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -239,10 +242,10 @@ func resourceTencentCloudOceanusWorkSpaceUpdate(d *schema.ResourceData, meta int request.Description = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseOceanusClient().ModifyWorkSpace(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOceanusClient().ModifyWorkSpace(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -259,16 +262,16 @@ func resourceTencentCloudOceanusWorkSpaceUpdate(d *schema.ResourceData, meta int } func resourceTencentCloudOceanusWorkSpaceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_oceanus_work_space.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_oceanus_work_space.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = OceanusService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_oceanus_work_space_test.go b/tencentcloud/services/oceanus/resource_tc_oceanus_work_space_test.go similarity index 90% rename from tencentcloud/resource_tc_oceanus_work_space_test.go rename to tencentcloud/services/oceanus/resource_tc_oceanus_work_space_test.go index 47cf56c00c..7c51a62952 100644 --- a/tencentcloud/resource_tc_oceanus_work_space_test.go +++ b/tencentcloud/services/oceanus/resource_tc_oceanus_work_space_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package oceanus_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudNeedFixOceanusWorkSpaceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccOceanusWorkSpace, diff --git a/tencentcloud/service_tencentcloud_oceanus.go b/tencentcloud/services/oceanus/service_tencentcloud_oceanus.go similarity index 96% rename from tencentcloud/service_tencentcloud_oceanus.go rename to tencentcloud/services/oceanus/service_tencentcloud_oceanus.go index 38cd1a36df..d1d9c621fe 100644 --- a/tencentcloud/service_tencentcloud_oceanus.go +++ b/tencentcloud/services/oceanus/service_tencentcloud_oceanus.go @@ -1,12 +1,15 @@ -package tencentcloud +package oceanus import ( "context" "log" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) @@ -17,7 +20,7 @@ type OceanusService struct { func (me *OceanusService) DescribeOceanusResourceRelatedJobByFilter(ctx context.Context, param map[string]interface{}) (ResourceRelatedJob []*oceanus.ResourceRefJobInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = oceanus.NewDescribeResourceRelatedJobsRequest() ) @@ -79,7 +82,7 @@ func (me *OceanusService) DescribeOceanusResourceRelatedJobByFilter(ctx context. func (me *OceanusService) DescribeOceanusSavepointListByFilter(ctx context.Context, param map[string]interface{}) (savepointList []*oceanus.Savepoint, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = oceanus.NewDescribeJobSavepointRequest() ) @@ -133,7 +136,7 @@ func (me *OceanusService) DescribeOceanusSavepointListByFilter(ctx context.Conte func (me *OceanusService) DescribeOceanusSystemResourceByFilter(ctx context.Context, param map[string]interface{}) (SystemResource []*oceanus.SystemResourceItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = oceanus.NewDescribeSystemResourcesRequest() ) @@ -195,7 +198,7 @@ func (me *OceanusService) DescribeOceanusSystemResourceByFilter(ctx context.Cont func (me *OceanusService) DescribeOceanusWorkSpacesByFilter(ctx context.Context, param map[string]interface{}) (WorkSpace []*oceanus.WorkSpaceSetItem, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = oceanus.NewDescribeWorkSpacesRequest() ) @@ -248,7 +251,7 @@ func (me *OceanusService) DescribeOceanusWorkSpacesByFilter(ctx context.Context, } func (me *OceanusService) DescribeOceanusJobById(ctx context.Context, jobId string) (Job *oceanus.JobV1, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDescribeJobsRequest() request.JobIds = common.StringPtrs([]string{jobId}) @@ -278,7 +281,7 @@ func (me *OceanusService) DescribeOceanusJobById(ctx context.Context, jobId stri } func (me *OceanusService) DeleteOceanusJobById(ctx context.Context, jobId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDeleteJobsRequest() request.JobIds = common.StringPtrs([]string{jobId}) @@ -303,7 +306,7 @@ func (me *OceanusService) DeleteOceanusJobById(ctx context.Context, jobId string } func (me *OceanusService) DescribeOceanusResourceById(ctx context.Context, resourceId string) (resource *oceanus.ResourceItem, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDescribeResourcesRequest() request.ResourceIds = common.StringPtrs([]string{resourceId}) @@ -333,7 +336,7 @@ func (me *OceanusService) DescribeOceanusResourceById(ctx context.Context, resou } func (me *OceanusService) DeleteOceanusResourceById(ctx context.Context, resourceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDeleteResourcesRequest() request.ResourceIds = common.StringPtrs([]string{resourceId}) @@ -358,7 +361,7 @@ func (me *OceanusService) DeleteOceanusResourceById(ctx context.Context, resourc } func (me *OceanusService) DescribeOceanusResourceConfigById(ctx context.Context, resourceId, version string) (resourceConfig *oceanus.ResourceConfigItem, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDescribeResourceConfigsRequest() request.ResourceId = &resourceId @@ -390,7 +393,7 @@ func (me *OceanusService) DescribeOceanusResourceConfigById(ctx context.Context, } func (me *OceanusService) DeleteOceanusResourceConfigById(ctx context.Context, resourceId, version string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDeleteResourceConfigsRequest() request.ResourceId = &resourceId @@ -418,7 +421,7 @@ func (me *OceanusService) DeleteOceanusResourceConfigById(ctx context.Context, r func (me *OceanusService) DescribeOceanusClustersByFilter(ctx context.Context, param map[string]interface{}) (Clusters []*oceanus.Cluster, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = oceanus.NewDescribeClustersRequest() ) @@ -480,7 +483,7 @@ func (me *OceanusService) DescribeOceanusClustersByFilter(ctx context.Context, p func (me *OceanusService) DescribeOceanusTreeJobsByFilter(ctx context.Context, param map[string]interface{}) (treeJobs *oceanus.DescribeTreeJobsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = oceanus.NewDescribeTreeJobsRequest() ) @@ -520,7 +523,7 @@ func (me *OceanusService) DescribeOceanusTreeJobsByFilter(ctx context.Context, p func (me *OceanusService) DescribeOceanusTreeResourcesByFilter(ctx context.Context, param map[string]interface{}) (treeResources *oceanus.DescribeTreeResourcesResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = oceanus.NewDescribeTreeResourcesRequest() ) @@ -556,7 +559,7 @@ func (me *OceanusService) DescribeOceanusTreeResourcesByFilter(ctx context.Conte func (me *OceanusService) DescribeOceanusJobSubmissionLogByFilter(ctx context.Context, param map[string]interface{}) (jobSubmissionLog *oceanus.DescribeJobSubmissionLogResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = oceanus.NewDescribeJobSubmissionLogRequest() ) @@ -618,7 +621,7 @@ func (me *OceanusService) DescribeOceanusJobSubmissionLogByFilter(ctx context.Co func (me *OceanusService) DescribeOceanusCheckSavepointByFilter(ctx context.Context, param map[string]interface{}) (CheckSavepoint *oceanus.CheckSavepointResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = oceanus.NewCheckSavepointRequest() ) @@ -669,7 +672,7 @@ func (me *OceanusService) DescribeOceanusCheckSavepointByFilter(ctx context.Cont } func (me *OceanusService) DescribeOceanusWorkSpaceById(ctx context.Context, workSpaceName string) (WorkSpace *oceanus.WorkSpaceSetItem, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDescribeWorkSpacesRequest() request.Filters = []*oceanus.Filter{ @@ -703,7 +706,7 @@ func (me *OceanusService) DescribeOceanusWorkSpaceById(ctx context.Context, work } func (me *OceanusService) DeleteOceanusWorkSpaceById(ctx context.Context, workSpaceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDeleteWorkSpaceRequest() request.WorkSpaceId = &workSpaceId @@ -728,7 +731,7 @@ func (me *OceanusService) DeleteOceanusWorkSpaceById(ctx context.Context, workSp } func (me *OceanusService) DescribeOceanusJobConfigById(ctx context.Context, jobId, version string) (JobConfig *oceanus.JobConfig, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDescribeJobConfigsRequest() request.JobId = &jobId @@ -760,7 +763,7 @@ func (me *OceanusService) DescribeOceanusJobConfigById(ctx context.Context, jobI } func (me *OceanusService) DeleteOceanusJobConfigById(ctx context.Context, jobId, version string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDeleteJobConfigsRequest() request.JobId = &jobId @@ -787,7 +790,7 @@ func (me *OceanusService) DeleteOceanusJobConfigById(ctx context.Context, jobId, } func (me *OceanusService) DescribeOceanusFolderById(ctx context.Context, workSpaceId, folderId, folderType string) (Folder *oceanus.DescribeFolderResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDescribeFolderRequest() request.FolderId = common.StringPtr(folderId) @@ -820,7 +823,7 @@ func (me *OceanusService) DescribeOceanusFolderById(ctx context.Context, workSpa } func (me *OceanusService) DeleteOceanusFolderById(ctx context.Context, workSpaceId, folderId, folderType string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := oceanus.NewDeleteFoldersRequest() request.FolderIds = common.StringPtrs([]string{folderId}) diff --git a/tencentcloud/services/pls/extension_security_group.go b/tencentcloud/services/pls/extension_security_group.go new file mode 100644 index 0000000000..d6d3164b80 --- /dev/null +++ b/tencentcloud/services/pls/extension_security_group.go @@ -0,0 +1,3 @@ +package pls + +const DESCRIBE_SECURITY_GROUP_LIMIT = 50 diff --git a/tencentcloud/services/pls/extension_vpc.go b/tencentcloud/services/pls/extension_vpc.go new file mode 100644 index 0000000000..35ecd8bb88 --- /dev/null +++ b/tencentcloud/services/pls/extension_vpc.go @@ -0,0 +1,339 @@ +package pls + +/* +all gate way types +https://cloud.tencent.com/document/api/215/15824#Route +*/ +const GATE_WAY_TYPE_CVM = "CVM" +const GATE_WAY_TYPE_VPN = "VPN" +const GATE_WAY_TYPE_DIRECTCONNECT = "DIRECTCONNECT" +const GATE_WAY_TYPE_PEERCONNECTION = "PEERCONNECTION" +const GATE_WAY_TYPE_SSLVPN = "SSLVPN" +const GATE_WAY_TYPE_HAVIP = "HAVIP" +const GATE_WAY_TYPE_NAT = "NAT" +const GATE_WAY_TYPE_NORMAL_CVM = "NORMAL_CVM" +const GATE_WAY_TYPE_EIP = "EIP" +const GATE_WAY_TYPE_CCN = "CCN" +const GATE_WAY_TYPE_LOCAL_GATEWAY = "LOCAL_GATEWAY" + +var ALL_GATE_WAY_TYPES = []string{ + GATE_WAY_TYPE_CVM, + GATE_WAY_TYPE_VPN, + GATE_WAY_TYPE_DIRECTCONNECT, + GATE_WAY_TYPE_PEERCONNECTION, + GATE_WAY_TYPE_SSLVPN, + GATE_WAY_TYPE_HAVIP, + GATE_WAY_TYPE_NAT, + GATE_WAY_TYPE_NORMAL_CVM, + GATE_WAY_TYPE_EIP, + GATE_WAY_TYPE_CCN, + GATE_WAY_TYPE_LOCAL_GATEWAY, +} + +const VPC_SERVICE_TYPE = "vpc" + +/* +EIP +*/ +const ( + EIP_STATUS_CREATING = "CREATING" + EIP_STATUS_BINDING = "BINDING" + EIP_STATUS_BIND = "BIND" + EIP_STATUS_UNBINDING = "UNBINDING" + EIP_STATUS_UNBIND = "UNBIND" + EIP_STATUS_OFFLINING = "OFFLINING" + EIP_STATUS_BIND_ENI = "BIND_ENI" + + EIP_TYPE_EIP = "EIP" + EIP_TYPE_ANYCAST = "AnycastEIP" + EIP_TYPE_HIGH_QUALITY = "HighQualityEIP" + EIP_TYPE_ANTI_DDOS = "AntiDDoSEIP" + + EIP_ANYCAST_ZONE_GLOBAL = "ANYCAST_ZONE_GLOBAL" + EIP_ANYCAST_ZONE_OVERSEAS = "ANYCAST_ZONE_OVERSEAS" + + EIP_INTERNET_PROVIDER_BGP = "BGP" + EIP_INTERNET_PROVIDER_CMCC = "CMCC" + EIP_INTERNET_PROVIDER_CTCC = "CTCC" + EIP_INTERNET_PROVIDER_CUCC = "CUCC" + + EIP_RESOURCE_TYPE = "eip" + + EIP_TASK_STATUS_SUCCESS = "SUCCESS" + EIP_TASK_STATUS_RUNNING = "RUNNING" + EIP_TASK_STATUS_FAILED = "FAILED" +) + +var EIP_INTERNET_PROVIDER = []string{ + EIP_INTERNET_PROVIDER_BGP, + EIP_INTERNET_PROVIDER_CMCC, + EIP_INTERNET_PROVIDER_CTCC, + EIP_INTERNET_PROVIDER_CUCC, +} + +var EIP_TYPE = []string{ + EIP_TYPE_EIP, + EIP_TYPE_ANYCAST, + EIP_TYPE_HIGH_QUALITY, + EIP_TYPE_ANTI_DDOS, +} + +var EIP_ANYCAST_ZONE = []string{ + EIP_ANYCAST_ZONE_GLOBAL, + EIP_ANYCAST_ZONE_OVERSEAS, +} + +var EIP_AVAILABLE_PERIOD = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36} + +// ENI +const ( + ENI_DESCRIBE_LIMIT = 100 +) + +const ( + ENI_STATE_PENDING = "PENDING" + ENI_STATE_AVAILABLE = "AVAILABLE" + ENI_STATE_ATTACHING = "ATTACHING" + ENI_STATE_DETACHING = "DETACHING" + ENI_STATE_DELETING = "DELETING" +) + +const ( + ENI_IP_PENDING = "PENDING" + ENI_IP_AVAILABLE = "AVAILABLE" + ENI_IP_ATTACHING = "ATTACHING" + ENI_IP_DETACHING = "DETACHING" + ENI_IP_DELETING = "DELETING" +) + +/* +NAT +*/ + +const ( + NAT_DESCRIBE_LIMIT = 100 + NAT_EIP_MAX_LIMIT = 10 +) + +const ( + NAT_FAILED_STATE = "FAILED" +) + +const ( + NAT_GATEWAY_TYPE_SUBNET = "SUBNET" + NAT_GATEWAY_TYPE_NETWORK_INTERFACE = "NETWORKINTERFACE" +) + +/* +VPN +*/ + +const ( + VPN_DESCRIBE_LIMIT = 100 +) + +const ( + VPN_TASK_STATUS_SUCCESS = "SUCCESS" + VPN_TASK_STATUS_RUNNING = "RUNNING" + VPN_TASK_STATUS_FAILED = "FAILED" +) + +const ( + VPN_STATE_PENDING = "PENDING" + VPN_STATE_DELETING = "DELETING" + VPN_STATE_AVAILABLE = "AVAILABLE" +) + +var VPN_STATE = []string{ + VPN_STATE_PENDING, + VPN_STATE_DELETING, + VPN_STATE_AVAILABLE, +} + +const ( + VPN_PERIOD_PREPAID_RENEW_FLAG_AUTO_NOTIFY = "NOTIFY_AND_AUTO_RENEW" + VPN_PERIOD_PREPAID_RENEW_FLAG_NOT = "NOTIFY_AND_MANUAL_RENEW" +) + +var VPN_PERIOD_PREPAID_RENEW_FLAG = []string{ + VPN_PERIOD_PREPAID_RENEW_FLAG_AUTO_NOTIFY, + VPN_PERIOD_PREPAID_RENEW_FLAG_NOT, +} + +const ( + VPN_CHARGE_TYPE_PREPAID = "PREPAID" + VPN_CHARGE_TYPE_POSTPAID_BY_HOUR = "POSTPAID_BY_HOUR" +) + +var VPN_CHARGE_TYPE = []string{ + VPN_CHARGE_TYPE_PREPAID, + VPN_CHARGE_TYPE_POSTPAID_BY_HOUR, +} + +const ( + VPN_PURCHASE_PLAN_PRE_POST = "PREPAID_TO_POSTPAID" +) + +var VPN_PURCHASE_PLAN = []string{ + VPN_PURCHASE_PLAN_PRE_POST, +} + +const ( + VPN_RESTRICT_STATE_NORMAL = "NORMAL" + VPN_RESTRICT_STATE_ISOLATE = "PRETECIVELY_ISOLATED" +) + +var VPN_RESTRICT_STATE = []string{ + VPN_RESTRICT_STATE_NORMAL, + VPN_RESTRICT_STATE_ISOLATE, +} + +const ( + VPN_IKE_PROPO_ENCRY_ALGORITHM_3DESCBC = "3DES-CBC" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC128 = "AES-CBC-128" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC192 = "AES-CBS-192`" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC256 = "AES-CBC-256" + VPN_IKE_PROPO_ENCRY_ALGORITHM_DESCBC = "DES-CBC" +) + +var VPN_IKE_PROPO_ENCRY_ALGORITHM = []string{ + VPN_IKE_PROPO_ENCRY_ALGORITHM_3DESCBC, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC128, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC192, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC256, + VPN_IKE_PROPO_ENCRY_ALGORITHM_DESCBC, +} + +const ( + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA = "SHA" + VPN_IKE_PROPO_AUTHEN_ALGORITHM_MD5 = "MD5" + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA256 = "SHA-256" +) + +var VPN_IKE_PROPO_AUTHEN_ALGORITHM = []string{ + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA, + VPN_IKE_PROPO_AUTHEN_ALGORITHM_MD5, + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA256, +} + +const ( + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA1 = "SHA1" + VPN_IPSEC_INTEGRITY_ALGORITHM_MD5 = "MD5" + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA256 = "SHA-256" +) + +var VPN_IPSEC_INTEGRITY_ALGORITHM = []string{ + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA1, + VPN_IPSEC_INTEGRITY_ALGORITHM_MD5, + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA256, +} + +const ( + VPN_IKE_EXCHANGE_MODE_AGGRESSIVE = "AGGRESSIVE" + VPN_IKE_EXCHANGE_MODE_MAIN = "MAIN" +) + +var VPN_IKE_EXCHANGE_MODE = []string{ + VPN_IKE_EXCHANGE_MODE_AGGRESSIVE, + VPN_IKE_EXCHANGE_MODE_MAIN, +} + +const ( + ROUTE_TYPE_STATIC = "STATIC" + ROUTE_TYPE_STATIC_ROUTE = "StaticRoute" + ROUTE_TYPE_POLICY = "Policy" +) + +var VPN_CONNECTION_ROUTE_TYPE = []string{ + ROUTE_TYPE_STATIC, + ROUTE_TYPE_STATIC_ROUTE, + ROUTE_TYPE_POLICY, +} + +const ( + VPN_IKE_IDENTITY_ADDRESS = "ADDRESS" + VPN_IKE_IDENTITY_FQDN = "FQDN" +) + +var VPN_IKE_IDENTITY = []string{ + VPN_IKE_IDENTITY_ADDRESS, + VPN_IKE_IDENTITY_FQDN, +} + +const ( + VPN_IKE_DH_GROUP_NAME_GROUP1 = "GROUP1" + VPN_IKE_DH_GROUP_NAME_GROUP2 = "GROUP2" + VPN_IKE_DH_GROUP_NAME_GROUP5 = "GROUP5" + VPN_IKE_DH_GROUP_NAME_GROUP14 = "GROUP14" + VPN_IKE_DH_GROUP_NAME_GROUP24 = "GROUP24" +) + +var VPN_IKE_DH_GROUP_NAME = []string{ + VPN_IKE_DH_GROUP_NAME_GROUP1, + VPN_IKE_DH_GROUP_NAME_GROUP2, + VPN_IKE_DH_GROUP_NAME_GROUP5, + VPN_IKE_DH_GROUP_NAME_GROUP14, + VPN_IKE_DH_GROUP_NAME_GROUP24, +} + +const ( + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP1 = "DH-GROUP1" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP2 = "DH-GROUP2" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP5 = "DH-GROUP5" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP14 = "DH-GROUP14" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP24 = "DH-GROUP24" + VPN_IPSEC_PFS_DH_GROUP_NAME_NULL = "NULL" +) + +var VPN_IPSEC_PFS_DH_GROUP_NAME = []string{ + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP1, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP2, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP5, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP14, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP24, + VPN_IPSEC_PFS_DH_GROUP_NAME_NULL, +} + +const ( + VPN_IPSEC_ENCRY_ALGORITHM_3DESCBC = "3DES-CBC" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC128 = "AES-CBC-128" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC192 = "AES-CBS-192`" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC256 = "AES-CBC-256" + VPN_IPSEC_ENCRY_ALGORITHM_DESCBC = "DES-CBC" + VPN_IPSEC_ENCRY_ALGORITHM_NULL = "NULL" +) + +var VPN_IPSEC_ENCRY_ALGORITHM = []string{ + VPN_IPSEC_ENCRY_ALGORITHM_3DESCBC, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC128, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC192, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC256, + VPN_IPSEC_ENCRY_ALGORITHM_DESCBC, + VPN_IPSEC_ENCRY_ALGORITHM_NULL, +} + +/* +HAVIP +*/ + +const ( + HAVIP_DESCRIBE_LIMIT = 100 +) + +/* +COMMON +*/ +const ( + VPCNotFound = "ResourceNotFound" + VPCUnsupportedOperation = "UnsupportedOperation" +) + +const ( + DPD_ACTION_CLEAR = "clear" + DPD_ACTION_RESTART = "restart" +) + +var DPD_ACTIONS = []string{ + DPD_ACTION_CLEAR, + DPD_ACTION_RESTART, +} diff --git a/tencentcloud/resource_tc_vpc_enable_end_point_connect.go b/tencentcloud/services/pls/resource_tc_vpc_enable_end_point_connect.go similarity index 73% rename from tencentcloud/resource_tc_vpc_enable_end_point_connect.go rename to tencentcloud/services/pls/resource_tc_vpc_enable_end_point_connect.go index 76c2a868b6..66341e25d2 100644 --- a/tencentcloud/resource_tc_vpc_enable_end_point_connect.go +++ b/tencentcloud/services/pls/resource_tc_vpc_enable_end_point_connect.go @@ -1,15 +1,18 @@ -package tencentcloud +package pls import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudVpcEnableEndPointConnect() *schema.Resource { +func ResourceTencentCloudVpcEnableEndPointConnect() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudVpcEnableEndPointConnectCreate, Read: resourceTencentCloudVpcEnableEndPointConnectRead, @@ -43,10 +46,10 @@ func resourceTencentCloudVpcEnableEndPointConnect() *schema.Resource { } func resourceTencentCloudVpcEnableEndPointConnectCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_enable_end_point_connect.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_enable_end_point_connect.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = vpc.NewEnableVpcEndPointConnectRequest() @@ -70,10 +73,10 @@ func resourceTencentCloudVpcEnableEndPointConnectCreate(d *schema.ResourceData, request.AcceptFlag = helper.Bool(v.(bool)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().EnableVpcEndPointConnect(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().EnableVpcEndPointConnect(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -84,21 +87,21 @@ func resourceTencentCloudVpcEnableEndPointConnectCreate(d *schema.ResourceData, return err } - d.SetId(endPointServiceId + FILED_SP + endPointId) + d.SetId(endPointServiceId + tccommon.FILED_SP + endPointId) return resourceTencentCloudVpcEnableEndPointConnectRead(d, meta) } func resourceTencentCloudVpcEnableEndPointConnectRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_enable_end_point_connect.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_enable_end_point_connect.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudVpcEnableEndPointConnectDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_enable_end_point_connect.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_enable_end_point_connect.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_vpc_enable_end_point_connect_test.go b/tencentcloud/services/pls/resource_tc_vpc_enable_end_point_connect_test.go similarity index 80% rename from tencentcloud/resource_tc_vpc_enable_end_point_connect_test.go rename to tencentcloud/services/pls/resource_tc_vpc_enable_end_point_connect_test.go index b144d81fc1..76a29872f3 100644 --- a/tencentcloud/resource_tc_vpc_enable_end_point_connect_test.go +++ b/tencentcloud/services/pls/resource_tc_vpc_enable_end_point_connect_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pls_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixVpcEnableEndPointConnectResource_basic(t *testing t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccVpcEnableEndPointConnect, diff --git a/tencentcloud/resource_tc_vpc_end_point.go b/tencentcloud/services/pls/resource_tc_vpc_end_point.go similarity index 76% rename from tencentcloud/resource_tc_vpc_end_point.go rename to tencentcloud/services/pls/resource_tc_vpc_end_point.go index 74ad025b14..8306f63d4f 100644 --- a/tencentcloud/resource_tc_vpc_end_point.go +++ b/tencentcloud/services/pls/resource_tc_vpc_end_point.go @@ -1,17 +1,20 @@ -package tencentcloud +package pls import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudVpcEndPoint() *schema.Resource { +func ResourceTencentCloudVpcEndPoint() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudVpcEndPointCreate, Read: resourceTencentCloudVpcEndPointRead, @@ -73,10 +76,10 @@ func resourceTencentCloudVpcEndPoint() *schema.Resource { } func resourceTencentCloudVpcEndPointCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = vpc.NewCreateVpcEndPointRequest() @@ -103,10 +106,10 @@ func resourceTencentCloudVpcEndPointCreate(d *schema.ResourceData, meta interfac request.EndPointVip = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().CreateVpcEndPoint(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().CreateVpcEndPoint(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -125,14 +128,14 @@ func resourceTencentCloudVpcEndPointCreate(d *schema.ResourceData, meta interfac } func resourceTencentCloudVpcEndPointRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} endPointId := d.Id() @@ -182,10 +185,10 @@ func resourceTencentCloudVpcEndPointRead(d *schema.ResourceData, meta interface{ } func resourceTencentCloudVpcEndPointUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := vpc.NewModifyVpcEndPointAttributeRequest() @@ -211,10 +214,10 @@ func resourceTencentCloudVpcEndPointUpdate(d *schema.ResourceData, meta interfac } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().ModifyVpcEndPointAttribute(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyVpcEndPointAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -229,13 +232,13 @@ func resourceTencentCloudVpcEndPointUpdate(d *schema.ResourceData, meta interfac } func resourceTencentCloudVpcEndPointDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} endPointId := d.Id() if err := service.DeleteVpcEndPointById(ctx, endPointId); err != nil { diff --git a/tencentcloud/resource_tc_vpc_end_point_service.go b/tencentcloud/services/pls/resource_tc_vpc_end_point_service.go similarity index 79% rename from tencentcloud/resource_tc_vpc_end_point_service.go rename to tencentcloud/services/pls/resource_tc_vpc_end_point_service.go index 7e377703a7..b46f8bd73a 100644 --- a/tencentcloud/resource_tc_vpc_end_point_service.go +++ b/tencentcloud/services/pls/resource_tc_vpc_end_point_service.go @@ -1,17 +1,20 @@ -package tencentcloud +package pls import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudVpcEndPointService() *schema.Resource { +func ResourceTencentCloudVpcEndPointService() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudVpcEndPointServiceCreate, Read: resourceTencentCloudVpcEndPointServiceRead, @@ -80,10 +83,10 @@ func resourceTencentCloudVpcEndPointService() *schema.Resource { } func resourceTencentCloudVpcEndPointServiceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point_service.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point_service.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = vpc.NewCreateVpcEndPointServiceRequest() @@ -110,10 +113,10 @@ func resourceTencentCloudVpcEndPointServiceCreate(d *schema.ResourceData, meta i request.ServiceType = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().CreateVpcEndPointService(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().CreateVpcEndPointService(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -132,14 +135,14 @@ func resourceTencentCloudVpcEndPointServiceCreate(d *schema.ResourceData, meta i } func resourceTencentCloudVpcEndPointServiceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point_service.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point_service.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} endPointServiceId := d.Id() @@ -194,10 +197,10 @@ func resourceTencentCloudVpcEndPointServiceRead(d *schema.ResourceData, meta int } func resourceTencentCloudVpcEndPointServiceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point_service.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point_service.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := vpc.NewModifyVpcEndPointServiceAttributeRequest() @@ -237,10 +240,10 @@ func resourceTencentCloudVpcEndPointServiceUpdate(d *schema.ResourceData, meta i } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().ModifyVpcEndPointServiceAttribute(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyVpcEndPointServiceAttribute(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -255,13 +258,13 @@ func resourceTencentCloudVpcEndPointServiceUpdate(d *schema.ResourceData, meta i } func resourceTencentCloudVpcEndPointServiceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point_service.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point_service.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} endPointServiceId := d.Id() if err := service.DeleteVpcEndPointServiceById(ctx, endPointServiceId); err != nil { diff --git a/tencentcloud/resource_tc_vpc_end_point_service_test.go b/tencentcloud/services/pls/resource_tc_vpc_end_point_service_test.go similarity index 83% rename from tencentcloud/resource_tc_vpc_end_point_service_test.go rename to tencentcloud/services/pls/resource_tc_vpc_end_point_service_test.go index 7136002f80..cd3aa574a3 100644 --- a/tencentcloud/resource_tc_vpc_end_point_service_test.go +++ b/tencentcloud/services/pls/resource_tc_vpc_end_point_service_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pls_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudVpcEndPointServiceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccVpcEndPointService, diff --git a/tencentcloud/resource_tc_vpc_end_point_service_white_list.go b/tencentcloud/services/pls/resource_tc_vpc_end_point_service_white_list.go similarity index 72% rename from tencentcloud/resource_tc_vpc_end_point_service_white_list.go rename to tencentcloud/services/pls/resource_tc_vpc_end_point_service_white_list.go index 6e46bfacb5..b1583cb0cc 100644 --- a/tencentcloud/resource_tc_vpc_end_point_service_white_list.go +++ b/tencentcloud/services/pls/resource_tc_vpc_end_point_service_white_list.go @@ -1,4 +1,4 @@ -package tencentcloud +package pls import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudVpcEndPointServiceWhiteList() *schema.Resource { +func ResourceTencentCloudVpcEndPointServiceWhiteList() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudVpcEndPointServiceWhiteListCreate, Read: resourceTencentCloudVpcEndPointServiceWhiteListRead, @@ -56,10 +59,10 @@ func resourceTencentCloudVpcEndPointServiceWhiteList() *schema.Resource { } func resourceTencentCloudVpcEndPointServiceWhiteListCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point_service_white_list.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point_service_white_list.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = vpc.NewCreateVpcEndPointServiceWhiteListRequest() @@ -80,10 +83,10 @@ func resourceTencentCloudVpcEndPointServiceWhiteListCreate(d *schema.ResourceDat request.Description = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().CreateVpcEndPointServiceWhiteList(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().CreateVpcEndPointServiceWhiteList(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -94,22 +97,22 @@ func resourceTencentCloudVpcEndPointServiceWhiteListCreate(d *schema.ResourceDat return err } - d.SetId(userUin + FILED_SP + endPointServiceId) + d.SetId(userUin + tccommon.FILED_SP + endPointServiceId) return resourceTencentCloudVpcEndPointServiceWhiteListRead(d, meta) } func resourceTencentCloudVpcEndPointServiceWhiteListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point_service_white_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point_service_white_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -150,14 +153,14 @@ func resourceTencentCloudVpcEndPointServiceWhiteListRead(d *schema.ResourceData, } func resourceTencentCloudVpcEndPointServiceWhiteListUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point_service_white_list.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point_service_white_list.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := vpc.NewModifyVpcEndPointServiceWhiteListRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -183,10 +186,10 @@ func resourceTencentCloudVpcEndPointServiceWhiteListUpdate(d *schema.ResourceDat } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().ModifyVpcEndPointServiceWhiteList(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().ModifyVpcEndPointServiceWhiteList(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -201,14 +204,14 @@ func resourceTencentCloudVpcEndPointServiceWhiteListUpdate(d *schema.ResourceDat } func resourceTencentCloudVpcEndPointServiceWhiteListDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_vpc_end_point_service_white_list.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_vpc_end_point_service_white_list.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_vpc_end_point_service_white_list_test.go b/tencentcloud/services/pls/resource_tc_vpc_end_point_service_white_list_test.go similarity index 83% rename from tencentcloud/resource_tc_vpc_end_point_service_white_list_test.go rename to tencentcloud/services/pls/resource_tc_vpc_end_point_service_white_list_test.go index d857f66cbf..49f067d065 100644 --- a/tencentcloud/resource_tc_vpc_end_point_service_white_list_test.go +++ b/tencentcloud/services/pls/resource_tc_vpc_end_point_service_white_list_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pls_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudVpcEndPointServiceWhiteListResource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccVpcEndPointServiceWhiteList, diff --git a/tencentcloud/resource_tc_vpc_end_point_test.go b/tencentcloud/services/pls/resource_tc_vpc_end_point_test.go similarity index 82% rename from tencentcloud/resource_tc_vpc_end_point_test.go rename to tencentcloud/services/pls/resource_tc_vpc_end_point_test.go index 1491af8ee7..6ef6064dbd 100644 --- a/tencentcloud/resource_tc_vpc_end_point_test.go +++ b/tencentcloud/services/pls/resource_tc_vpc_end_point_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pls_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudVpcEndPointResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccVpcEndPoint, diff --git a/tencentcloud/services/pls/service_tencentcloud_vpc.go b/tencentcloud/services/pls/service_tencentcloud_vpc.go new file mode 100644 index 0000000000..f19057b69f --- /dev/null +++ b/tencentcloud/services/pls/service_tencentcloud_vpc.go @@ -0,0 +1,8146 @@ +package pls + +import ( + "context" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "log" + "net" + "regexp" + "strconv" + "strings" + "sync" + "time" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +var eipUnattachLocker = &sync.Mutex{} + +/* For Adun Sake please DO NOT Declare the redundant Type STRUCT!! */ +// VPC basic information +type VpcBasicInfo struct { + vpcId string + name string + cidr string + isMulticast bool + isDefault bool + dnsServers []string + createTime string + tags []*vpc.Tag + assistantCidrs []string + dockerAssistantCidrs []string +} + +// subnet basic information +type VpcSubnetBasicInfo struct { + vpcId string + subnetId string + routeTableId string + name string + cidr string + isMulticast bool + isDefault bool + zone string + availableIpCount int64 + createTime string +} + +// route entry basic information +type VpcRouteEntryBasicInfo struct { + routeEntryId int64 + destinationCidr string + nextType string + nextBub string + description string + entryType string + enabled bool +} + +// route table basic information +type VpcRouteTableBasicInfo struct { + routeTableId string + name string + vpcId string + isDefault bool + subnetIds []string + entryInfos []VpcRouteEntryBasicInfo + createTime string +} + +type VpcSecurityGroupLiteRule struct { + action string + cidrIp string + port string + protocol string + addressId string + addressGroupId string + securityGroupId string + protocolTemplateId string + protocolTemplateGroupId string +} + +var securityGroupIdRE = regexp.MustCompile(`^sg-\w{8}$`) +var ipAddressIdRE = regexp.MustCompile(`^ipm-\w{8}$`) +var ipAddressGroupIdRE = regexp.MustCompile(`^ipmg-\w{8}$`) +var protocolTemplateRE = regexp.MustCompile(`^ppmg?-\w{8}$`) +var protocolTemplateIdRE = regexp.MustCompile(`^ppm-\w{8}$`) +var protocolTemplateGroupIdRE = regexp.MustCompile(`^ppmg-\w{8}$`) +var portRE = regexp.MustCompile(`^(\d{1,5},)*\d{1,5}$|^\d{1,5}-\d{1,5}$`) + +// acl rule +type VpcACLRule struct { + action string + cidrIp string + port string + protocol string +} + +type VpcEniIP struct { + ip net.IP + primary bool + desc *string +} + +func (rule VpcSecurityGroupLiteRule) String() string { + + var source string + + if rule.cidrIp != "" { + source = rule.cidrIp + } + if rule.securityGroupId != "" { + source = rule.securityGroupId + } + if rule.addressId != "" { + source = rule.addressId + } + if rule.addressGroupId != "" { + source = rule.addressGroupId + } + + protocol := rule.protocol + + if protocol == "" && rule.protocolTemplateId != "" { + protocol = rule.protocolTemplateId + } else if protocol == "" && rule.protocolTemplateGroupId != "" { + protocol = rule.protocolTemplateGroupId + } + + return fmt.Sprintf("%s#%s#%s#%s", rule.action, source, rule.port, protocol) +} + +func getSecurityGroupPolicies(rules []VpcSecurityGroupLiteRule) []*vpc.SecurityGroupPolicy { + policies := make([]*vpc.SecurityGroupPolicy, 0) + + for i := range rules { + rule := rules[i] + policy := &vpc.SecurityGroupPolicy{ + Action: &rule.action, + } + + if rule.securityGroupId != "" { + policy.SecurityGroupId = &rule.securityGroupId + } else if rule.addressId != "" || rule.addressGroupId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + if rule.addressId != "" { + policy.AddressTemplate.AddressId = &rule.addressId + } + if rule.addressGroupId != "" { + policy.AddressTemplate.AddressGroupId = &rule.addressGroupId + } + } else { + policy.CidrBlock = &rule.cidrIp + } + + usingProtocolTemplate := rule.protocolTemplateId != "" || rule.protocolTemplateGroupId != "" + + if usingProtocolTemplate { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + if rule.protocolTemplateId != "" { + policy.ServiceTemplate.ServiceId = &rule.protocolTemplateId + } + if rule.protocolTemplateGroupId != "" { + policy.ServiceTemplate.ServiceGroupId = &rule.protocolTemplateGroupId + } + } + + if !usingProtocolTemplate { + policy.Protocol = &rule.protocol + } + + if !usingProtocolTemplate && rule.port != "" { + policy.Port = &rule.port + } + + policies = append(policies, policy) + } + return policies +} + +type VpcService struct { + client *connectivity.TencentCloudClient +} + +// ///////common +func (me *VpcService) fillFilter(ins []*vpc.Filter, key, value string) (outs []*vpc.Filter) { + if ins == nil { + ins = make([]*vpc.Filter, 0, 2) + } + + var filter = vpc.Filter{Name: &key, Values: []*string{&value}} + ins = append(ins, &filter) + outs = ins + return +} + +// ////////api +func (me *VpcService) CreateVpc(ctx context.Context, name, cidr string, + isMulticast bool, dnsServers []string, tags map[string]string) (vpcId string, isDefault bool, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateVpcRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcName = &name + request.CidrBlock = &cidr + + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + request.EnableMulticast = &enableMulticast + + if len(dnsServers) > 0 { + request.DnsServers = make([]*string, 0, len(dnsServers)) + for index := range dnsServers { + request.DnsServers = append(request.DnsServers, &dnsServers[index]) + } + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + var response *vpc.CreateVpcResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().CreateVpc(request) + if err != nil { + return tccommon.RetryError(err) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s create vpc failed, reason: %v", logId, err) + errRet = err + return + } + vpcId, isDefault = *response.Response.Vpc.VpcId, *response.Response.Vpc.IsDefault + return +} + +func (me *VpcService) DescribeVpc(ctx context.Context, + vpcId string, + tagKey string, + cidrBlock string) (info VpcBasicInfo, has int, errRet error) { + infos, err := me.DescribeVpcs(ctx, vpcId, "", nil, nil, tagKey, cidrBlock) + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return +} + +func (me *VpcService) DescribeVpcs(ctx context.Context, + vpcId, name string, + tags map[string]string, + isDefaultPtr *bool, + tagKey string, + cidrBlock string) (infos []VpcBasicInfo, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpcsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + infos = make([]VpcBasicInfo, 0, 100) + + var ( + offset = 0 + limit = 100 + total = -1 + hasVpc = map[string]bool{} + filters []*vpc.Filter + ) + + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + + if name != "" { + filters = me.fillFilter(filters, "vpc-name", name) + } + + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + + if cidrBlock != "" { + filters = me.fillFilter(filters, "cidr-block", cidrBlock) + } + + if isDefaultPtr != nil { + filters = me.fillFilter(filters, "is-default", map[bool]string{true: "true", false: "false"}[*isDefaultPtr]) + } + + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + var response *vpc.DescribeVpcsResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().DescribeVpcs(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s read vpc failed, reason: %v", logId, err) + return nil, err + } + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.VpcSet) > 0 { + offset += limit + } else { + // get empty VpcInfo, we're done + return + } + for _, item := range response.Response.VpcSet { + var basicInfo VpcBasicInfo + basicInfo.cidr = *item.CidrBlock + basicInfo.createTime = *item.CreatedTime + basicInfo.dnsServers = make([]string, 0, len(item.DnsServerSet)) + + for _, v := range item.DnsServerSet { + basicInfo.dnsServers = append(basicInfo.dnsServers, *v) + } + basicInfo.isDefault = *item.IsDefault + basicInfo.isMulticast = *item.EnableMulticast + basicInfo.name = *item.VpcName + basicInfo.vpcId = *item.VpcId + + if hasVpc[basicInfo.vpcId] { + errRet = fmt.Errorf("get repeated vpc_id[%s] when doing DescribeVpcs", basicInfo.vpcId) + return + } + hasVpc[basicInfo.vpcId] = true + + if len(item.AssistantCidrSet) > 0 { + for i := range item.AssistantCidrSet { + kind := item.AssistantCidrSet[i].AssistantType + cidr := item.AssistantCidrSet[i].CidrBlock + if kind != nil && *kind == 0 { + basicInfo.assistantCidrs = append(basicInfo.assistantCidrs, *cidr) + } else { + basicInfo.dockerAssistantCidrs = append(basicInfo.dockerAssistantCidrs, *cidr) + } + } + } + + if len(item.TagSet) > 0 { + basicInfo.tags = item.TagSet + } + + infos = append(infos, basicInfo) + } + goto getMoreData + +} +func (me *VpcService) DescribeSubnet(ctx context.Context, + subnetId string, + isRemoteVpcSNAT *bool, + tagKey, + cidrBlock string) (info VpcSubnetBasicInfo, has int, errRet error) { + infos, err := me.DescribeSubnets(ctx, subnetId, "", "", "", nil, nil, isRemoteVpcSNAT, tagKey, cidrBlock) + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return +} + +func (me *VpcService) DescribeSubnets(ctx context.Context, + subnetId, + vpcId, + subnetName, + zone string, + tags map[string]string, + isDefaultPtr *bool, + isRemoteVpcSNAT *bool, + tagKey, + cidrBlock string) (infos []VpcSubnetBasicInfo, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeSubnetsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var ( + offset = 0 + limit = 100 + total = -1 + hasSubnet = map[string]bool{} + filters []*vpc.Filter + ) + + if subnetId != "" { + filters = me.fillFilter(filters, "subnet-id", subnetId) + } + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + if subnetName != "" { + filters = me.fillFilter(filters, "subnet-name", subnetName) + } + if zone != "" { + filters = me.fillFilter(filters, "zone", zone) + } + + if isDefaultPtr != nil { + filters = me.fillFilter(filters, "is-default", map[bool]string{true: "true", false: "false"}[*isDefaultPtr]) + } + + if isRemoteVpcSNAT != nil { + filters = me.fillFilter(filters, "is-remote-vpc-snat", map[bool]string{true: "true", false: "false"}[*isRemoteVpcSNAT]) + } + + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + if cidrBlock != "" { + filters = me.fillFilter(filters, "cidr-block", cidrBlock) + } + + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + var response *vpc.DescribeSubnetsResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().DescribeSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s read subnets failed, reason: %v", logId, err) + return nil, err + } + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.SubnetSet) > 0 { + offset += limit + } else { + // get empty subnet, we're done + return + } + for _, item := range response.Response.SubnetSet { + var basicInfo VpcSubnetBasicInfo + + basicInfo.cidr = *item.CidrBlock + basicInfo.createTime = *item.CreatedTime + basicInfo.vpcId = *item.VpcId + basicInfo.subnetId = *item.SubnetId + basicInfo.routeTableId = *item.RouteTableId + + basicInfo.name = *item.SubnetName + basicInfo.isDefault = *item.IsDefault + basicInfo.isMulticast = *item.EnableBroadcast + + basicInfo.zone = *item.Zone + basicInfo.availableIpCount = int64(*item.AvailableIpAddressCount) + + if hasSubnet[basicInfo.subnetId] { + errRet = fmt.Errorf("get repeated subnetId[%s] when doing DescribeSubnets", basicInfo.subnetId) + return + } + hasSubnet[basicInfo.subnetId] = true + infos = append(infos, basicInfo) + } + goto getMoreData +} + +func (me *VpcService) ModifyVpcAttribute(ctx context.Context, vpcId, name string, isMulticast bool, dnsServers []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyVpcAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcId = &vpcId + request.VpcName = &name + + if len(dnsServers) > 0 { + request.DnsServers = make([]*string, 0, len(dnsServers)) + for index := range dnsServers { + request.DnsServers = append(request.DnsServers, &dnsServers[index]) + } + } + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + request.EnableMulticast = &enableMulticast + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyVpcAttribute(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify vpc failed, reason: %v", logId, err) + return err + } + + return +} + +func (me *VpcService) DeleteVpc(ctx context.Context, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpcRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + if vpcId == "" { + errRet = fmt.Errorf("DeleteVpc can not delete empty vpc_id.") + return + } + + request.VpcId = &vpcId + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteVpc(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete vpc failed, reason: %v", logId, err) + return err + } + return + +} + +func (me *VpcService) CreateSubnet(ctx context.Context, vpcId, name, cidr, zone string, tags map[string]string) (subnetId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateSubnetRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if vpcId == "" { + errRet = fmt.Errorf("CreateSubnet can not invoke by empty vpc_id.") + return + } + request.VpcId = &vpcId + request.SubnetName = &name + request.CidrBlock = &cidr + request.Zone = &zone + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + var response *vpc.CreateSubnetResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().CreateSubnet(request) + if err != nil { + return tccommon.RetryError(err) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s create subnet failed, reason: %v", logId, err) + return "", err + } + + subnetId = *response.Response.Subnet.SubnetId + + return +} + +func (me *VpcService) ModifySubnetAttribute(ctx context.Context, subnetId, name string, isMulticast bool) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifySubnetAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + + request.SubnetId = &subnetId + request.SubnetName = &name + request.EnableBroadcast = &enableMulticast + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifySubnetAttribute(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify subnet failed, reason: %v", logId, err) + return err + } + return +} + +func (me *VpcService) DeleteSubnet(ctx context.Context, subnetId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteSubnetRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SubnetId = &subnetId + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteSubnet(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete subnet failed, reason: %v", logId, err) + return err + } + return + +} + +func (me *VpcService) ReplaceRouteTableAssociation(ctx context.Context, subnetId string, routeTableId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewReplaceRouteTableAssociationRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SubnetId = &subnetId + request.RouteTableId = &routeTableId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ReplaceRouteTableAssociation(request) + + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return +} + +func (me *VpcService) IsRouteTableInVpc(ctx context.Context, routeTableId, vpcId string) (info VpcRouteTableBasicInfo, has int, errRet error) { + + infos, err := me.DescribeRouteTables(ctx, routeTableId, "", vpcId, nil, nil, "") + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return + +} + +func (me *VpcService) DescribeRouteTable(ctx context.Context, routeTableId string) (info VpcRouteTableBasicInfo, has int, errRet error) { + + infos, err := me.DescribeRouteTables(ctx, routeTableId, "", "", nil, nil, "") + if err != nil { + errRet = err + return + } + + has = len(infos) + + if has == 0 { + return + } + info = infos[0] + return +} +func (me *VpcService) DescribeRouteTables(ctx context.Context, + routeTableId, + routeTableName, + vpcId string, + tags map[string]string, + associationMain *bool, + tagKey string) (infos []VpcRouteTableBasicInfo, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeRouteTablesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + infos = make([]VpcRouteTableBasicInfo, 0, 100) + var offset = 0 + var limit = 100 + var total = -1 + var hasTableMap = map[string]bool{} + + var filters []*vpc.Filter + if routeTableId != "" { + filters = me.fillFilter(filters, "route-table-id", routeTableId) + } + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + if routeTableName != "" { + filters = me.fillFilter(filters, "route-table-name", routeTableName) + } + if associationMain != nil { + filters = me.fillFilter(filters, "association.main", map[bool]string{true: "true", false: "false"}[*associationMain]) + } + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteTables(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.RouteTableSet) > 0 { + offset += limit + } else { + // get empty Vpcinfo, we're done + return + } + for _, item := range response.Response.RouteTableSet { + var basicInfo VpcRouteTableBasicInfo + basicInfo.createTime = *item.CreatedTime + basicInfo.isDefault = *item.Main + basicInfo.name = *item.RouteTableName + basicInfo.routeTableId = *item.RouteTableId + basicInfo.vpcId = *item.VpcId + + basicInfo.subnetIds = make([]string, 0, len(item.AssociationSet)) + for _, v := range item.AssociationSet { + basicInfo.subnetIds = append(basicInfo.subnetIds, *v.SubnetId) + } + + basicInfo.entryInfos = make([]VpcRouteEntryBasicInfo, 0, len(item.RouteSet)) + + for _, v := range item.RouteSet { + var entry VpcRouteEntryBasicInfo + entry.destinationCidr = *v.DestinationCidrBlock + entry.nextBub = *v.GatewayId + entry.nextType = *v.GatewayType + entry.description = *v.RouteDescription + entry.routeEntryId = int64(*v.RouteId) + entry.entryType = *v.RouteType + entry.enabled = *v.Enabled + basicInfo.entryInfos = append(basicInfo.entryInfos, entry) + } + if hasTableMap[basicInfo.routeTableId] { + errRet = fmt.Errorf("get repeated route_table_id[%s] when doing DescribeRouteTables", basicInfo.routeTableId) + return + } + hasTableMap[basicInfo.routeTableId] = true + infos = append(infos, basicInfo) + } + goto getMoreData + +} + +func (me *VpcService) CreateRouteTable(ctx context.Context, name, vpcId string, tags map[string]string) (routeTableId string, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateRouteTableRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if vpcId == "" { + errRet = fmt.Errorf("CreateRouteTable can not invoke by empty vpc_id.") + return + } + request.VpcId = &vpcId + request.RouteTableName = &name + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateRouteTable(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + routeTableId = *response.Response.RouteTable.RouteTableId + } + return +} + +func (me *VpcService) DeleteRouteTable(ctx context.Context, routeTableId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteRouteTableRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("DeleteRouteTable can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteRouteTable(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + return +} + +func (me *VpcService) ModifyRouteTableAttribute(ctx context.Context, routeTableId string, name string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyRouteTableAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("ModifyRouteTableAttribute can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + request.RouteTableName = &name + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyRouteTableAttribute(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + return +} + +func (me *VpcService) GetRouteId(ctx context.Context, + routeTableId, destinationCidrBlock, nextType, nextHub, description string) (entryId int64, errRet error) { + + logId := tccommon.GetLogId(ctx) + + info, has, err := me.DescribeRouteTable(ctx, routeTableId) + if err != nil { + errRet = err + return + } + if has == 0 { + errRet = fmt.Errorf("not fonud the route table of this route entry") + return + } + + if has != 1 { + errRet = fmt.Errorf("one routeTableId id get %d routeTableId infos", has) + return + } + + for _, v := range info.entryInfos { + + if v.destinationCidr == destinationCidrBlock && v.nextType == nextType && v.nextBub == nextHub { + entryId = v.routeEntryId + return + } + } + errRet = fmt.Errorf("not found route entry id from route table [%s]", routeTableId) + + for _, v := range info.entryInfos { + log.Printf("%s[WARN] GetRouteId [%+v] vs [%+v],[%+v] vs [%+v],[%+v] vs [%+v] %+v\n", + logId, + v.destinationCidr, + destinationCidrBlock, + v.nextType, + nextType, + v.nextBub, + nextHub, + v.destinationCidr == destinationCidrBlock && v.nextType == nextType && v.nextBub == nextHub) + } + + return + +} + +func (me *VpcService) DeleteRoutes(ctx context.Context, routeTableId string, entryId uint64) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("DeleteRoutes can not invoke by empty routeTableId.") + return + } + + request.RouteTableId = &routeTableId + var route vpc.Route + route.RouteId = &entryId + request.Routes = []*vpc.Route{&route} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteRoutes(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return +} + +func (me *VpcService) CreateRoutes(ctx context.Context, + routeTableId, destinationCidrBlock, nextType, nextHub, description string, enabled bool) (entryId int64, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("CreateRoutes can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + var route vpc.Route + route.DestinationCidrBlock = &destinationCidrBlock + route.RouteDescription = &description + route.GatewayType = &nextType + route.GatewayId = &nextHub + route.Enabled = &enabled + request.Routes = []*vpc.Route{&route} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateRoutes(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } else { + return + } + + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + + if errRet != nil { + time.Sleep(3 * time.Second) + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + } + + if errRet != nil { + time.Sleep(5 * time.Second) + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + } + + /* + if *(response.Response.TotalCount) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTable . but we only request 1.", *response.Response.TotalCount) + return + } + + if len(response.Response.RouteTableSet) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTable info . but we only request 1.", len(response.Response.RouteTableSet)) + return + } + + if len(response.Response.RouteTableSet[0].RouteSet) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTableSet info . but we only create 1.", len(response.Response.RouteTableSet[0].RouteSet)) + return + } + + entryId = int64(*response.Response.RouteTableSet[0].RouteSet[0].RouteId) + */ + + return +} + +func (me *VpcService) SwitchRouteEnabled(ctx context.Context, routeTableId string, routeId uint64, enabled bool) error { + if enabled { + request := vpc.NewEnableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.EnableRoutes(ctx, request) + } else { + request := vpc.NewDisableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.DisableRoutes(ctx, request) + } +} + +func (me *VpcService) EnableRoutes(ctx context.Context, request *vpc.EnableRoutesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().EnableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *VpcService) DisableRoutes(ctx context.Context, request *vpc.DisableRoutesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *VpcService) CreateSecurityGroup(ctx context.Context, name, desc string, projectId *int, tags map[string]string) (id string, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewCreateSecurityGroupRequest() + + request.GroupName = &name + request.GroupDescription = &desc + + if projectId != nil { + request.ProjectId = helper.String(strconv.Itoa(*projectId)) + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().CreateSecurityGroup(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + if response.Response.SecurityGroup == nil || response.Response.SecurityGroup.SecurityGroupId == nil { + err := fmt.Errorf("api[%s] return security group id is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + id = *response.Response.SecurityGroup.SecurityGroupId + return nil + }); err != nil { + log.Printf("[CRITAL]%s create security group failed, reason: %v", logId, err) + return "", err + } + + return +} + +func (me *VpcService) DescribeSecurityGroup(ctx context.Context, id string) (sg *vpc.SecurityGroup, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupsRequest() + request.SecurityGroupIds = []*string{&id} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroups(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err, tccommon.InternalError) + } + + if len(response.Response.SecurityGroupSet) == 0 { + return nil + } + + sg = response.Response.SecurityGroupSet[0] + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read security group failed, reason: %v", logId, err) + return nil, err + } + + return +} + +func (me *VpcService) ModifySecurityGroup(ctx context.Context, id string, newName, newDesc *string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupAttributeRequest() + + request.SecurityGroupId = &id + request.GroupName = newName + request.GroupDescription = newDesc + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifySecurityGroupAttribute(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify security group failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DeleteSecurityGroup(ctx context.Context, id string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupRequest() + request.SecurityGroupId = &id + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().DeleteSecurityGroup(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete security group failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DescribeSecurityGroupsAssociate(ctx context.Context, ids []string) ([]*vpc.SecurityGroupAssociationStatistics, error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupAssociationStatisticsRequest() + request.SecurityGroupIds = common.StringPtrs(ids) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupAssociationStatistics(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil, err + } + + return response.Response.SecurityGroupAssociationStatisticsSet, nil +} + +// Deprecated: the redundant type struct cause cause unnecessary mental burden, use sdk request directly +func (me *VpcService) CreateSecurityGroupPolicy(ctx context.Context, info securityGroupRuleBasicInfoWithPolicyIndex) (ruleId string, err error) { + logId := tccommon.GetLogId(ctx) + + createRequest := vpc.NewCreateSecurityGroupPoliciesRequest() + createRequest.SecurityGroupId = &info.SgId + + createRequest.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + + policy.CidrBlock = info.CidrIp + policy.SecurityGroupId = info.SourceSgId + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + policy.AddressTemplate.AddressId = info.AddressTemplateId + } + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + policy.AddressTemplate.AddressGroupId = info.AddressTemplateGroupId + } + + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + policy.ServiceTemplate.ServiceId = info.ProtocolTemplateId + } + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + policy.ServiceTemplate.ServiceGroupId = info.ProtocolTemplateGroupId + } + + if info.Protocol != nil { + policy.Protocol = common.StringPtr(strings.ToUpper(*info.Protocol)) + } + policy.PolicyIndex = helper.Int64(info.PolicyIndex) + policy.Port = info.PortRange + policy.PolicyDescription = info.Description + policy.Action = common.StringPtr(strings.ToUpper(info.Action)) + + switch strings.ToLower(info.PolicyType) { + case "ingress": + createRequest.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + createRequest.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(createRequest.GetAction()) + if _, err := me.client.UseVpcClient().CreateSecurityGroupPolicies(createRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, createRequest.GetAction(), createRequest.ToJsonString(), err) + return "", err + } + + if info.CidrIp == nil { + info.CidrIp = common.StringPtr("") + } + if info.Protocol == nil { + info.Protocol = common.StringPtr("ALL") + } + if info.PortRange == nil { + info.PortRange = common.StringPtr("ALL") + } + if info.SourceSgId == nil { + info.SourceSgId = common.StringPtr("") + } + + ruleId, err = buildSecurityGroupRuleId(info.securityGroupRuleBasicInfo) + if err != nil { + return "", fmt.Errorf("build rule id error, reason: %v", err) + } + + return ruleId, nil +} + +func (me *VpcService) CreateSecurityGroupPolicies(ctx context.Context, request *vpc.CreateSecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +// Deprecated: use DescribeSecurityGroupPolicies instead +func (me *VpcService) DescribeSecurityGroupPolicy(ctx context.Context, ruleId string) (sgId string, policyType string, policy *vpc.SecurityGroupPolicy, errRet error) { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + errRet = err + return + } + + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + request.SecurityGroupId = &info.SgId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + // if security group does not exist, security group rule does not exist too + if sdkError.Code == "ResourceNotFound" { + return + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + policySet := response.Response.SecurityGroupPolicySet + + if policySet == nil { + log.Printf("[DEBUG]%s policy set is nil", logId) + return + } + + var policies []*vpc.SecurityGroupPolicy + + switch strings.ToLower(info.PolicyType) { + case "ingress": + policies = policySet.Ingress + + case "egress": + policies = policySet.Egress + } + + for _, pl := range policies { + if comparePolicyAndSecurityGroupInfo(pl, info) { + policy = pl + break + } + } + + if policy == nil { + log.Printf("[DEBUG]%s can't find security group rule, maybe user modify rules on web console", logId) + return + } + + return info.SgId, info.PolicyType, policy, nil +} + +func (me *VpcService) DescribeSecurityGroupPolicies(ctx context.Context, sgId string) (result *vpc.SecurityGroupPolicySet, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SecurityGroupId = &sgId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + result = response.Response.SecurityGroupPolicySet + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteSecurityGroupPolicy(ctx context.Context, ruleId string) error { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + return err + } + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = &info.SgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + policy.Action = common.StringPtr(strings.ToUpper(info.Action)) + + if *info.CidrIp != "" { + policy.CidrBlock = info.CidrIp + } + + if *info.Protocol != "ALL" { + policy.Protocol = common.StringPtr(strings.ToUpper(*info.Protocol)) + } + + if *info.PortRange != "ALL" { + policy.Port = info.PortRange + } + + if *info.SourceSgId != "" { + policy.SecurityGroupId = info.SourceSgId + } + + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + policy.AddressTemplate.AddressGroupId = info.AddressTemplateGroupId + } + + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + policy.AddressTemplate.AddressId = info.AddressTemplateId + } + + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + policy.ServiceTemplate.ServiceGroupId = info.ProtocolTemplateGroupId + } + + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + policy.ServiceTemplate.ServiceId = info.ProtocolTemplateId + } + + if info.Description != nil && *info.Description != "" { + policy.PolicyDescription = info.Description + } + + switch strings.ToLower(info.PolicyType) { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + + return nil +} + +func (me *VpcService) DeleteSecurityGroupPolicies(ctx context.Context, request *vpc.DeleteSecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteSecurityGroupPolicyByPolicyIndex(ctx context.Context, policyIndex int64, sgId, policyType string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = helper.String(sgId) + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + policy.PolicyIndex = helper.Int64(policyIndex) + switch strings.ToLower(policyType) { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + return nil + +} + +func (me *VpcService) DeleteSecurityGroupPolicyByPolicyIndexList(ctx context.Context, sgId string, policyIndexList []*int64, policyType string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = helper.String(sgId) + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + tmpList := make([]*vpc.SecurityGroupPolicy, 0) + for _, v := range policyIndexList { + policy := new(vpc.SecurityGroupPolicy) + policy.PolicyIndex = v + tmpList = append(tmpList, policy) + } + + switch strings.ToLower(policyType) { + + case "ingress": + request.SecurityGroupPolicySet.Ingress = tmpList + + case "egress": + request.SecurityGroupPolicySet.Egress = tmpList + } + + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + return nil + +} + +// Deprecated: Use ModifySecurityGroupPolicies instead +func (me *VpcService) ModifySecurityGroupPolicy(ctx context.Context, ruleId string, desc *string) error { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + return err + } + + request := vpc.NewReplaceSecurityGroupPolicyRequest() + request.SecurityGroupId = &info.SgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := &vpc.SecurityGroupPolicy{ + Action: &info.Action, + CidrBlock: info.CidrIp, + Protocol: info.Protocol, + Port: info.PortRange, + SecurityGroupId: info.SourceSgId, + PolicyDescription: desc, + } + + switch info.PolicyType { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().ReplaceSecurityGroupPolicy(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + + return nil +} + +func (me *VpcService) ModifySecurityGroupPolicies(ctx context.Context, request *vpc.ModifySecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeSecurityGroups(ctx context.Context, sgId, sgName *string, projectId *int, tags map[string]string) (sgs []*vpc.SecurityGroup, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupsRequest() + + if sgId != nil { + request.SecurityGroupIds = []*string{sgId} + } else { + if sgName != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("security-group-name"), + Values: []*string{sgName}, + }) + } + + if projectId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("project-id"), + Values: []*string{helper.String(strconv.Itoa(*projectId))}, + }) + } + + for k, v := range tags { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("tag:" + k), + Values: []*string{helper.String(v)}, + }) + } + } + + request.Limit = helper.String(strconv.Itoa(DESCRIBE_SECURITY_GROUP_LIMIT)) + + offset := 0 + count := DESCRIBE_SECURITY_GROUP_LIMIT + // run loop at least once + for count == DESCRIBE_SECURITY_GROUP_LIMIT { + request.Offset = helper.String(strconv.Itoa(offset)) + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroups(request) + if err != nil { + count = 0 + + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err, tccommon.InternalError) + } + + set := response.Response.SecurityGroupSet + count = len(set) + sgs = append(sgs, set...) + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read security groups failed, reason: %v", logId, err) + return nil, err + } + + offset += count + } + + return +} + +func (me *VpcService) modifyLiteRulesInSecurityGroup(ctx context.Context, sgId string, ingress, egress []VpcSecurityGroupLiteRule) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + request.SecurityGroupPolicySet.Egress = getSecurityGroupPolicies(egress) + request.SecurityGroupPolicySet.Ingress = getSecurityGroupPolicies(ingress) + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }) +} + +func (me *VpcService) DeleteLiteRules(ctx context.Context, sgId string, rules []VpcSecurityGroupLiteRule, isIngress bool) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + if isIngress { + request.SecurityGroupPolicySet.Ingress = getSecurityGroupPolicies(rules) + } else { + request.SecurityGroupPolicySet.Egress = getSecurityGroupPolicies(rules) + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + + return tccommon.RetryError(err) + } + + return nil + }) +} + +func (me *VpcService) AttachLiteRulesToSecurityGroup(ctx context.Context, sgId string, ingress, egress []VpcSecurityGroupLiteRule) error { + logId := tccommon.GetLogId(ctx) + + if err := me.modifyLiteRulesInSecurityGroup(ctx, sgId, ingress, egress); err != nil { + log.Printf("[CRITAL]%s attach lite rules to security group failed, reason: %v", logId, err) + + return err + } + + return nil +} + +func (me *VpcService) DescribeSecurityGroupPolices(ctx context.Context, sgId string) (ingress, egress []VpcSecurityGroupLiteRule, exist bool, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + policySet := response.Response.SecurityGroupPolicySet + + for _, in := range policySet.Ingress { + if nilFields := tccommon.CheckNil(in, map[string]string{ + "Action": "action", + "SecurityGroupId": "nested security group id", + }); len(nilFields) > 0 { + err := fmt.Errorf("api[%s] security group ingress %v are nil", request.GetAction(), nilFields) + log.Printf("[CRITAL]%s %v", logId, err) + } + + liteRule := VpcSecurityGroupLiteRule{ + //protocol: strings.ToUpper(*in.Protocol), + //port: *in.Port, + cidrIp: *in.CidrBlock, + action: *in.Action, + securityGroupId: *in.SecurityGroupId, + } + + if in.Protocol != nil { + liteRule.protocol = strings.ToUpper(*in.Protocol) + } + + if in.Port != nil { + liteRule.port = *in.Port + } + + if in.AddressTemplate != nil { + liteRule.addressId = *in.AddressTemplate.AddressId + liteRule.addressGroupId = *in.AddressTemplate.AddressGroupId + } + + if in.ServiceTemplate != nil { + liteRule.protocolTemplateId = *in.ServiceTemplate.ServiceId + liteRule.protocolTemplateGroupId = *in.ServiceTemplate.ServiceGroupId + } + + ingress = append(ingress, liteRule) + } + + for _, eg := range policySet.Egress { + if nilFields := tccommon.CheckNil(eg, map[string]string{ + "Action": "action", + "SecurityGroupId": "nested security group id", + }); len(nilFields) > 0 { + err := fmt.Errorf("api[%s] security group egress %v are nil", request.GetAction(), nilFields) + log.Printf("[CRITAL]%s %v", logId, err) + } + + liteRule := VpcSecurityGroupLiteRule{ + action: *eg.Action, + cidrIp: *eg.CidrBlock, + securityGroupId: *eg.SecurityGroupId, + } + + if eg.Port != nil { + liteRule.port = *eg.Port + } + + if eg.Protocol != nil { + liteRule.protocol = strings.ToUpper(*eg.Protocol) + } + + if eg.AddressTemplate != nil { + liteRule.addressId = *eg.AddressTemplate.AddressId + liteRule.addressGroupId = *eg.AddressTemplate.AddressGroupId + } + + if eg.ServiceTemplate != nil { + liteRule.protocolTemplateId = *eg.ServiceTemplate.ServiceId + liteRule.protocolTemplateGroupId = *eg.ServiceTemplate.ServiceGroupId + } + + egress = append(egress, liteRule) + } + + exist = true + + return nil + }); err != nil { + log.Printf("[CRITAL]%s describe security group policies failed, rason: %v", logId, err) + return nil, nil, false, err + } + + return +} + +func (me *VpcService) DetachAllLiteRulesFromSecurityGroup(ctx context.Context, sgId string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = &vpc.SecurityGroupPolicySet{ + Version: helper.String("0"), + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }) +} + +type securityGroupRuleBasicInfo struct { + SgId string `json:"sg_id"` + PolicyType string `json:"policy_type"` + CidrIp *string `json:"cidr_ip,omitempty"` + Protocol *string `json:"protocol"` + PortRange *string `json:"port_range"` + Action string `json:"action"` + SourceSgId *string `json:"source_sg_id"` + Description *string `json:"description,omitempty"` + AddressTemplateId *string `json:"address_template_id,omitempty"` + AddressTemplateGroupId *string `json:"address_template_group_id,omitempty"` + ProtocolTemplateId *string `json:"protocol_template_id,omitempty"` + ProtocolTemplateGroupId *string `json:"protocol_template_group_id,omitempty"` +} + +type securityGroupRuleBasicInfoWithPolicyIndex struct { + securityGroupRuleBasicInfo + PolicyIndex int64 `json:"policy_index"` +} + +// Build an ID for a Security Group Rule (new version) +func buildSecurityGroupRuleId(info securityGroupRuleBasicInfo) (ruleId string, err error) { + b, err := json.Marshal(info) + if err != nil { + return "", err + } + + log.Printf("[DEBUG] build rule is %s", string(b)) + + return base64.StdEncoding.EncodeToString(b), nil +} + +// Parse Security Group Rule ID +func parseSecurityGroupRuleId(ruleId string) (info securityGroupRuleBasicInfo, errRet error) { + log.Printf("[DEBUG] parseSecurityGroupRuleId before: %v", ruleId) + + // new version ID + if b, err := base64.StdEncoding.DecodeString(ruleId); err == nil { + errRet = json.Unmarshal(b, &info) + return + } + + // old version ID + m := make(map[string]string) + ruleQueryStrings := strings.Split(ruleId, "&") + if len(ruleQueryStrings) == 0 { + errRet = errors.New("ruleId is invalid") + return + } + for _, str := range ruleQueryStrings { + arr := strings.Split(str, "=") + if len(arr) != 2 { + errRet = errors.New("ruleId is invalid") + return + } + m[arr[0]] = arr[1] + } + + info.SgId = m["sgId"] + info.PolicyType = m["direction"] + info.Action = m["action"] + + // the newest version include template + addressTemplateId, addressTemplateOk := m["address_template_id"] + addressGroupTemplateId, addressTemplateGroupOk := m["address_template_group_id"] + if addressTemplateOk || addressTemplateGroupOk { + if addressTemplateGroupOk { + info.AddressTemplateGroupId = common.StringPtr(addressGroupTemplateId) + } else { + info.AddressTemplateId = common.StringPtr(addressTemplateId) + } + info.CidrIp = common.StringPtr("") + info.SourceSgId = common.StringPtr("") + } else { + if m["sourceSgid"] == "" { + info.CidrIp = common.StringPtr(m["cidrIp"]) + } else { + info.CidrIp = common.StringPtr("") + } + info.SourceSgId = common.StringPtr(m["sourceSgid"]) + } + + protocolTemplateId, protocolTemplateOk := m["protocol_template_id"] + protocolGroupTemplateId, protocolTemplateGroupOk := m["protocol_template_group_id"] + if protocolTemplateOk || protocolTemplateGroupOk { + if protocolTemplateGroupOk { + info.ProtocolTemplateGroupId = common.StringPtr(protocolGroupTemplateId) + } else { + info.ProtocolTemplateId = common.StringPtr(protocolTemplateId) + } + info.Protocol = common.StringPtr("") + info.PortRange = common.StringPtr("") + } else { + info.Protocol = common.StringPtr(m["ipProtocol"]) + info.PortRange = common.StringPtr(m["portRange"]) + } + + info.Description = common.StringPtr(m["description"]) + + log.Printf("[DEBUG] parseSecurityGroupRuleId after: %v", info) + return +} + +func comparePolicyAndSecurityGroupInfo(policy *vpc.SecurityGroupPolicy, info securityGroupRuleBasicInfo) bool { + if policy.PolicyDescription != nil && *policy.PolicyDescription != "" { + if info.Description == nil || *policy.PolicyDescription != *info.Description { + return false + } + } else { + if info.Description != nil && *info.Description != "" { + return false + } + } + // policy.CidrBlock will be nil if address template is set + if policy.CidrBlock != nil && *policy.CidrBlock != "" { + if info.CidrIp == nil || *policy.CidrBlock != *info.CidrIp { + return false + } + } else { + if info.CidrIp != nil && *info.CidrIp != "" { + return false + } + } + + // policy.Port will be nil if protocol template is set + if policy.Port != nil && *policy.Port != "" { + if info.PortRange == nil || *policy.Port != *info.PortRange { + return false + } + } else { + if info.PortRange != nil && *info.PortRange != "" && *info.PortRange != "ALL" { + return false + } + } + + // policy.Protocol will be nil if protocol template is set + if policy.Protocol != nil && *policy.Protocol != "" { + if info.Protocol == nil || !strings.EqualFold(*policy.Protocol, *info.Protocol) { + return false + } + } else { + if info.Protocol != nil && *info.Protocol != "" && *info.Protocol != "ALL" { + return false + } + } + + // policy.SecurityGroupId always not nil + if *policy.SecurityGroupId != *info.SourceSgId { + return false + } + + if !strings.EqualFold(*policy.Action, info.Action) { + return false + } + + // if template is not null it must be compared + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + if policy.ServiceTemplate == nil || policy.ServiceTemplate.ServiceId == nil || *info.ProtocolTemplateId != *policy.ServiceTemplate.ServiceId { + log.Printf("%s %v test", *info.ProtocolTemplateId, policy.ServiceTemplate) + return false + } + } else { + if policy.ServiceTemplate != nil && policy.ServiceTemplate.ServiceId != nil && *policy.ServiceTemplate.ServiceId != "" { + return false + } + } + + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + if policy.ServiceTemplate == nil || policy.ServiceTemplate.ServiceGroupId == nil || *info.ProtocolTemplateGroupId != *policy.ServiceTemplate.ServiceGroupId { + log.Printf("%s %v test", *info.ProtocolTemplateGroupId, policy.ServiceTemplate) + return false + } + } else { + if policy.ServiceTemplate != nil && policy.ServiceTemplate.ServiceGroupId != nil && *policy.ServiceTemplate.ServiceGroupId != "" { + return false + } + } + + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + if policy.AddressTemplate == nil || policy.AddressTemplate.AddressGroupId == nil || *info.AddressTemplateGroupId != *policy.AddressTemplate.AddressGroupId { + return false + } + } else { + if policy.AddressTemplate != nil && policy.AddressTemplate.AddressGroupId != nil && *policy.AddressTemplate.AddressGroupId != "" { + return false + } + } + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + if policy.AddressTemplate == nil || policy.AddressTemplate.AddressId == nil || *info.AddressTemplateId != *policy.AddressTemplate.AddressId { + return false + } + } else { + if policy.AddressTemplate != nil && policy.AddressTemplate.AddressId != nil && *policy.AddressTemplate.AddressId != "" { + return false + } + } + + return true +} + +func parseRule(str string) (liteRule VpcSecurityGroupLiteRule, err error) { + split := strings.Split(str, "#") + if len(split) != 4 { + err = fmt.Errorf("invalid security group rule %s", str) + return + } + + var ( + source string + port string + protocol string + // source is "sg-xxxxxx" / "ipm-xxxxxx" / "ipmg-xxxxxx" formatted + isInstanceIdSource = true + ) + + liteRule.action, source, port, protocol = split[0], split[1], split[2], split[3] + + if securityGroupIdRE.MatchString(source) { + liteRule.securityGroupId = source + } else if ipAddressIdRE.MatchString(source) { + liteRule.addressId = source + } else if ipAddressGroupIdRE.MatchString(source) { + liteRule.addressGroupId = source + } else { + isInstanceIdSource = false + liteRule.cidrIp = source + } + + if v := liteRule.action; v != "ACCEPT" && v != "DROP" { + err = fmt.Errorf("invalid action `%s`, available actions: `ACCEPT`, `DROP`", v) + return + } + + if net.ParseIP(liteRule.cidrIp) == nil && !isInstanceIdSource { + if _, _, err = net.ParseCIDR(liteRule.cidrIp); err != nil { + err = fmt.Errorf("invalid cidr_ip %s, allow cidr_ip format is `8.8.8.8` or `10.0.1.0/24`", liteRule.cidrIp) + return + } + } + + liteRule.port = port + if port != "ALL" && !portRE.MatchString(port) && !protocolTemplateRE.MatchString(protocol) { + err = fmt.Errorf("invalid port %s, allow port format is `ALL`, `53`, `80,443` or `80-90`", liteRule.port) + return + } + + liteRule.protocol = protocol + if protocolTemplateRE.MatchString(protocol) { + liteRule.port = "" + liteRule.protocol = "" + if protocolTemplateIdRE.MatchString(protocol) { + liteRule.protocolTemplateId = protocol + } else if protocolTemplateGroupIdRE.MatchString(protocol) { + liteRule.protocolTemplateGroupId = protocol + } + } else if protocol != "TCP" && protocol != "UDP" && protocol != "ALL" && protocol != "ICMP" { + err = fmt.Errorf("invalid protocol %s, allow protocol is `ALL`, `TCP`, `UDP`, `ICMP` or `ppm(g?)-xxxxxxxx`", liteRule.protocol) + } else if protocol == "ALL" || protocol == "ICMP" { + if liteRule.port != "ALL" { + err = fmt.Errorf("when protocol is %s, port must be ALL", protocol) + } else { + liteRule.port = "" + } + } + + if err != nil { + return + } + + return +} + +/* +EIP +*/ +func (me *VpcService) DescribeEipById(ctx context.Context, eipId string) (eip *vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressesRequest() + request.AddressIds = []*string{&eipId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AddressSet) < 1 { + return + } + eip = response.Response.AddressSet[0] + return +} + +func (me *VpcService) DescribeEipByFilter(ctx context.Context, filters map[string][]string) (eips []*vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressesRequest() + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := &vpc.Filter{ + Name: helper.String(k), + Values: []*string{}, + } + for _, vv := range v { + filter.Values = append(filter.Values, helper.String(vv)) + } + request.Filters = append(request.Filters, filter) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + eips = response.Response.AddressSet + return +} + +func (me *VpcService) ModifyEipName(ctx context.Context, eipId, eipName string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressAttributeRequest() + request.AddressId = &eipId + request.AddressName = &eipName + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressAttribute(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) ModifyEipBandwidthOut(ctx context.Context, eipId string, bandwidthOut int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressesBandwidthRequest() + request.AddressIds = []*string{&eipId} + request.InternetMaxBandwidthOut = helper.IntInt64(bandwidthOut) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressesBandwidth(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) ModifyEipInternetChargeType(ctx context.Context, eipId string, internetChargeType string, bandwidthOut, period, renewFlag int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressInternetChargeTypeRequest() + request.AddressId = &eipId + request.InternetChargeType = &internetChargeType + request.InternetMaxBandwidthOut = helper.IntUint64(bandwidthOut) + + if internetChargeType == "BANDWIDTH_PREPAID_BY_MONTH" { + addressChargePrepaid := vpc.AddressChargePrepaid{} + addressChargePrepaid.AutoRenewFlag = helper.IntInt64(renewFlag) + addressChargePrepaid.Period = helper.IntInt64(period) + request.AddressChargePrepaid = &addressChargePrepaid + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressInternetChargeType(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) RenewAddress(ctx context.Context, eipId string, period int, renewFlag int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewRenewAddressesRequest() + request.AddressIds = []*string{&eipId} + addressChargePrepaid := vpc.AddressChargePrepaid{} + addressChargePrepaid.AutoRenewFlag = helper.IntInt64(renewFlag) + addressChargePrepaid.Period = helper.IntInt64(period) + request.AddressChargePrepaid = &addressChargePrepaid + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().RenewAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) DeleteEip(ctx context.Context, eipId string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewReleaseAddressesRequest() + request.AddressIds = []*string{&eipId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ReleaseAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) AttachEip(ctx context.Context, eipId, instanceId string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewAssociateAddressRequest() + request.AddressId = &eipId + request.InstanceId = &instanceId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().AssociateAddress(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) DescribeNatGatewayById(ctx context.Context, natGateWayId string) (natGateWay *vpc.NatGateway, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeNatGatewaysRequest() + request.NatGatewayIds = []*string{&natGateWayId} + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeNatGateways(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NatGatewaySet) > 0 { + natGateWay = response.Response.NatGatewaySet[0] + } + + return +} + +func (me *VpcService) DescribeNatGatewayByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.NatGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNatGatewaysRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.NatGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeNatGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NatGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.NatGatewaySet...) + if len(response.Response.NatGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteNatGateway(ctx context.Context, natGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteNatGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteNatGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DisassociateNatGatewayAddress(ctx context.Context, request *vpc.DisassociateNatGatewayAddressRequest) (result *vpc.DisassociateNatGatewayAddressResponse, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + // Check if Nat Gateway Ip still associate + gateway, err := me.DescribeNatGatewayById(ctx, *request.NatGatewayId) + + if err != nil { + errRet = err + return + } + + if gateway == nil || len(gateway.PublicIpAddressSet) == 0 { + return + } + + var gatewayAddresses []string + var candidates []*string + + for i := range gateway.PublicIpAddressSet { + addr := gateway.PublicIpAddressSet[i].PublicIpAddress + gatewayAddresses = append(gatewayAddresses, *addr) + } + + for i := range request.PublicIpAddresses { + addr := request.PublicIpAddresses[i] + if helper.StringsContain(gatewayAddresses, *addr) { + candidates = append(candidates, addr) + } + } + + if len(candidates) == 0 { + return nil, nil + } + + request.PublicIpAddresses = candidates + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisassociateNatGatewayAddress(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + result = response + return +} + +func (me *VpcService) UnattachEip(ctx context.Context, eipId string) error { + eipUnattachLocker.Lock() + defer eipUnattachLocker.Unlock() + + logId := tccommon.GetLogId(ctx) + eip, err := me.DescribeEipById(ctx, eipId) + if err != nil { + return err + } + if eip == nil || *eip.AddressStatus == EIP_STATUS_UNBIND { + return nil + } + + // DisassociateAddress Doesn't support Disassociate NAT Address + if eip.InstanceId != nil && strings.HasPrefix(*eip.InstanceId, "nat-") { + request := vpc.NewDisassociateNatGatewayAddressRequest() + request.NatGatewayId = eip.InstanceId + request.PublicIpAddresses = []*string{eip.AddressIp} + _, err := me.DisassociateNatGatewayAddress(ctx, request) + if err != nil { + return err + } + + outErr := resource.Retry(tccommon.ReadRetryTimeout*3, func() *resource.RetryError { + eip, err := me.DescribeEipById(ctx, eipId) + if err != nil { + return tccommon.RetryError(err) + } + if eip != nil && *eip.AddressStatus != EIP_STATUS_UNBIND { + return resource.RetryableError(fmt.Errorf("eip is still %s", EIP_STATUS_UNBIND)) + } + return nil + }) + + if outErr != nil { + return outErr + } + } + + request := vpc.NewDisassociateAddressRequest() + request.AddressId = &eipId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisassociateAddress(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + if response.Response.TaskId == nil { + return nil + } + taskId, err := strconv.ParseUint(*response.Response.TaskId, 10, 64) + if err != nil { + return nil + } + + taskRequest := vpc.NewDescribeTaskResultRequest() + taskRequest.TaskId = &taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(taskRequest.GetAction()) + taskResponse, err := me.client.UseVpcClient().DescribeTaskResult(taskRequest) + if err != nil { + return tccommon.RetryError(err) + } + if taskResponse.Response.Result != nil && *taskResponse.Response.Result == EIP_TASK_STATUS_RUNNING { + return resource.RetryableError(errors.New("eip task is running")) + } + return nil + }) + if err != nil { + return err + } + + return nil +} + +func (me *VpcService) CreateEni( + ctx context.Context, + name, vpcId, subnetId, desc string, + securityGroups []string, + ipv4Count *int, + ipv4s []VpcEniIP, + tags map[string]string, +) (id string, err error) { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + createRequest := vpc.NewCreateNetworkInterfaceRequest() + createRequest.NetworkInterfaceName = &name + createRequest.VpcId = &vpcId + createRequest.SubnetId = &subnetId + createRequest.NetworkInterfaceDescription = &desc + + if len(securityGroups) > 0 { + createRequest.SecurityGroupIds = common.StringPtrs(securityGroups) + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + createRequest.Tags = append(createRequest.Tags, &tag) + } + } + + if ipv4Count != nil { + // create will assign a primary ip, secondary ip count is *ipv4Count-1 + createRequest.SecondaryPrivateIpAddressCount = helper.IntUint64(*ipv4Count - 1) + } + + var wantIpv4 []string + + for _, ipv4 := range ipv4s { + wantIpv4 = append(wantIpv4, ipv4.ip.String()) + createRequest.PrivateIpAddresses = append(createRequest.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4.ip.String()), + Primary: helper.Bool(ipv4.primary), + Description: ipv4.desc, + }) + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(createRequest.GetAction()) + + response, err := client.CreateNetworkInterface(createRequest) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, createRequest.GetAction(), createRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + eni := response.Response.NetworkInterface + + if eni == nil { + err := fmt.Errorf("api[%s] eni is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + ipv4Set := eni.PrivateIpAddressSet + + if len(wantIpv4) > 0 { + checkMap := make(map[string]bool, len(wantIpv4)) + for _, ipv4 := range wantIpv4 { + checkMap[ipv4] = false + } + + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + checkMap[*ipv4.PrivateIpAddress] = true + } + + for ipv4, checked := range checkMap { + if !checked { + err := fmt.Errorf("api[%s] doesn't assign %s ip", createRequest.GetAction(), ipv4) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + } + } else { + if len(ipv4Set) != *ipv4Count { + err := fmt.Errorf("api[%s] doesn't assign enough ip", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = make([]string, 0, *ipv4Count) + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = append(wantIpv4, *ipv4.PrivateIpAddress) + } + } + + id = *eni.NetworkInterfaceId + + return nil + }); err != nil { + log.Printf("[CRITAL]%s create eni failed, reason: %v", logId, err) + return "", err + } + + if err := waitEniReady(ctx, id, client, wantIpv4, nil); err != nil { + log.Printf("[CRITAL]%s create eni failed, reason: %v", logId, err) + return "", err + } + + return +} + +func (me *VpcService) describeEnis( + ctx context.Context, + ids []string, + vpcId, subnetId, id, cvmId, sgId, name, desc, ipv4 *string, + tags map[string]string, +) (enis []*vpc.NetworkInterface, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkInterfacesRequest() + + if len(ids) > 0 { + request.NetworkInterfaceIds = common.StringPtrs(ids) + } + + if vpcId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("vpc-id"), + Values: []*string{vpcId}, + }) + } + + if subnetId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("subnet-id"), + Values: []*string{subnetId}, + }) + } + + if id != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-id"), + Values: []*string{id}, + }) + } + + if cvmId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("attachment.instance-id"), + Values: []*string{cvmId}, + }) + } + + if sgId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("groups.security-group-id"), + Values: []*string{sgId}, + }) + } + + if name != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-name"), + Values: []*string{name}, + }) + } + + if desc != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-description"), + Values: []*string{desc}, + }) + } + + if ipv4 != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("address-ip"), + Values: []*string{ipv4}, + }) + } + + for k, v := range tags { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("tag:" + k), + Values: []*string{helper.String(v)}, + }) + } + + var offset uint64 + request.Offset = &offset + request.Limit = helper.IntUint64(ENI_DESCRIBE_LIMIT) + + count := ENI_DESCRIBE_LIMIT + for count == ENI_DESCRIBE_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkInterfaces(request) + if err != nil { + count = 0 + + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + eniSet := response.Response.NetworkInterfaceSet + count = len(eniSet) + enis = append(enis, eniSet...) + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read eni list failed, reason: %v", logId, err) + return nil, err + } + + offset += uint64(count) + } + + return +} + +func (me *VpcService) DescribeEniById(ctx context.Context, ids []string) (enis []*vpc.NetworkInterface, err error) { + return me.describeEnis(ctx, ids, nil, nil, nil, nil, nil, nil, nil, nil, nil) +} + +func (me *VpcService) ModifyEniAttribute(ctx context.Context, id string, name, desc *string, sgs []string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewModifyNetworkInterfaceAttributeRequest() + request.NetworkInterfaceId = &id + request.NetworkInterfaceName = name + request.NetworkInterfaceDescription = desc + request.SecurityGroupIds = common.StringPtrs(sgs) + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.ModifyNetworkInterfaceAttribute(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify eni attribute failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, nil, nil); err != nil { + log.Printf("[CRITAL]%s modify eni attribute failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) UnAssignIpv4FromEni(ctx context.Context, id string, ipv4s []string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewUnassignPrivateIpAddressesRequest() + request.NetworkInterfaceId = &id + request.PrivateIpAddresses = make([]*vpc.PrivateIpAddressSpecification, 0, len(ipv4s)) + for _, ipv4 := range ipv4s { + request.PrivateIpAddresses = append(request.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4), + }) + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.UnassignPrivateIpAddresses(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s unassign ipv4 from eni failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, nil, ipv4s); err != nil { + log.Printf("[CRITAL]%s unassign ipv4 from eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) AssignIpv4ToEni(ctx context.Context, id string, ipv4s []VpcEniIP, ipv4Count *int) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewAssignPrivateIpAddressesRequest() + request.NetworkInterfaceId = &id + + if ipv4Count != nil { + request.SecondaryPrivateIpAddressCount = helper.IntUint64(*ipv4Count) + } + + var wantIpv4 []string + + if len(ipv4s) > 0 { + request.PrivateIpAddresses = make([]*vpc.PrivateIpAddressSpecification, 0, len(ipv4s)) + wantIpv4 = make([]string, 0, len(ipv4s)) + + for _, ipv4 := range ipv4s { + wantIpv4 = append(wantIpv4, ipv4.ip.String()) + request.PrivateIpAddresses = append(request.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4.ip.String()), + Primary: helper.Bool(ipv4.primary), + Description: ipv4.desc, + }) + } + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.AssignPrivateIpAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + ipv4Set := response.Response.PrivateIpAddressSet + + if len(wantIpv4) > 0 { + checkMap := make(map[string]bool, len(wantIpv4)) + for _, ipv4 := range wantIpv4 { + checkMap[ipv4] = false + } + + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + checkMap[*ipv4.PrivateIpAddress] = true + } + + for ipv4, checked := range checkMap { + if !checked { + err := fmt.Errorf("api[%s] doesn't assign %s ip", request.GetAction(), ipv4) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + } + } else { + if len(ipv4Set) != *ipv4Count { + err := fmt.Errorf("api[%s] doesn't assign enough ip", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = make([]string, 0, *ipv4Count) + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = append(wantIpv4, *ipv4.PrivateIpAddress) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s assign ipv4 to eni failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, wantIpv4, nil); err != nil { + log.Printf("[CRITAL]%s assign ipv4 to eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DeleteEni(ctx context.Context, id string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + deleteRequest := vpc.NewDeleteNetworkInterfaceRequest() + deleteRequest.NetworkInterfaceId = &id + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(deleteRequest.GetAction()) + + if _, err := client.DeleteNetworkInterface(deleteRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete eni failed, reason: %v", logId, err) + return err + } + + describeRequest := vpc.NewDescribeNetworkInterfacesRequest() + describeRequest.NetworkInterfaceIds = []*string{&id} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(describeRequest.GetAction()) + + response, err := client.DescribeNetworkInterfaces(describeRequest) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + for _, eni := range response.Response.NetworkInterfaceSet { + if eni.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.NetworkInterfaceId == id { + err := errors.New("eni still exists") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) AttachEniToCvm(ctx context.Context, eniId, cvmId string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + attachRequest := vpc.NewAttachNetworkInterfaceRequest() + attachRequest.NetworkInterfaceId = &eniId + attachRequest.InstanceId = &cvmId + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(attachRequest.GetAction()) + + if _, err := client.AttachNetworkInterface(attachRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, attachRequest.GetAction(), attachRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s attach eni to instance failed, reason: %v", logId, err) + return err + } + + describeRequest := vpc.NewDescribeNetworkInterfacesRequest() + describeRequest.NetworkInterfaceIds = []*string{&eniId} + + if err := resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(describeRequest.GetAction()) + + response, err := client.DescribeNetworkInterfaces(describeRequest) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + var eni *vpc.NetworkInterface + for _, e := range response.Response.NetworkInterfaceSet { + if e.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *e.NetworkInterfaceId == eniId { + eni = e + break + } + } + + if eni == nil { + err := fmt.Errorf("api[%s] eni not found", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.Attachment == nil { + err := fmt.Errorf("api[%s] eni attachment is not ready", describeRequest.GetAction()) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + if eni.Attachment.InstanceId == nil { + err := fmt.Errorf("api[%s] eni attach instance id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.Attachment.InstanceId != cvmId { + err := fmt.Errorf("api[%s] eni attach instance id is not right", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.State == nil { + err := fmt.Errorf("api[%s] eni state is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.State != ENI_STATE_AVAILABLE { + err := errors.New("eni is not ready") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s attach eni to instance failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DetachEniFromCvm(ctx context.Context, eniId, cvmId string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewDetachNetworkInterfaceRequest() + request.NetworkInterfaceId = &eniId + request.InstanceId = &cvmId + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.DetachNetworkInterface(request); err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + switch sdkError.Code { + case "UnsupportedOperation.InvalidState": + return resource.RetryableError(errors.New("cvm may still bind eni")) + + case "ResourceNotFound": + // eni or cvm doesn't exist + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s detach eni from instance failed, reason: %v", logId, err) + return err + } + + if err := waitEniDetach(ctx, eniId, client); err != nil { + log.Printf("[CRITAL]%s detach eni from instance failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) ModifyEniPrimaryIpv4Desc(ctx context.Context, id, ip string, desc *string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewModifyPrivateIpAddressesAttributeRequest() + request.NetworkInterfaceId = &id + request.PrivateIpAddresses = []*vpc.PrivateIpAddressSpecification{ + { + PrivateIpAddress: &ip, + Description: desc, + }, + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.ModifyPrivateIpAddressesAttribute(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify eni primary ipv4 description failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, []string{ip}, nil); err != nil { + log.Printf("[CRITAL]%s modify eni primary ipv4 description failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DescribeEniByFilters( + ctx context.Context, + vpcId, subnetId, cvmId, sgId, name, desc, ipv4 *string, + tags map[string]string, +) (enis []*vpc.NetworkInterface, err error) { + return me.describeEnis(ctx, nil, vpcId, subnetId, nil, cvmId, sgId, name, desc, ipv4, tags) +} + +func (me *VpcService) DescribeHaVipByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.HaVip, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeHaVipsRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.HaVip, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeHaVips(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.HaVipSet) < 1 { + break + } + instances = append(instances, response.Response.HaVipSet...) + if len(response.Response.HaVipSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DescribeHaVipEipById(ctx context.Context, haVipEipAttachmentId string) (eip string, haVip string, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + items := strings.Split(haVipEipAttachmentId, "#") + if len(items) != 2 { + errRet = fmt.Errorf("decode HA VIP EIP attachment ID error %s", haVipEipAttachmentId) + return + } + haVipId := items[0] + addressIp := items[1] + + request := vpc.NewDescribeHaVipsRequest() + request.HaVipIds = []*string{&haVipId} + eip = "" + haVip = "" + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if result, err := client.DescribeHaVips(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } else { + length := len(result.Response.HaVipSet) + if length != 1 { + if length == 0 { + return nil + } else { + err = fmt.Errorf("query havip %s eip %s failed, the SDK returns %d HaVips", haVipId, addressIp, length) + return resource.NonRetryableError(err) + } + } else { + eip = *result.Response.HaVipSet[0].AddressIp + if addressIp != eip { + return nil + } + has = true + haVip = haVipId + } + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s describe HA VIP attachment failed, reason: %v", logId, err) + errRet = err + } + return eip, haVip, has, errRet +} + +func (me *VpcService) DeleteHaVip(ctx context.Context, haVipId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteHaVipRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.HaVipId = &haVipId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteHaVip(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func waitEniReady(ctx context.Context, id string, client *vpc.Client, wantIpv4s []string, dropIpv4s []string) error { + logId := tccommon.GetLogId(ctx) + + wantCheckMap := make(map[string]bool, len(wantIpv4s)) + for _, ipv4 := range wantIpv4s { + wantCheckMap[ipv4] = false + } + + dropCheckMap := make(map[string]struct{}, len(dropIpv4s)) + for _, ipv4 := range dropIpv4s { + dropCheckMap[ipv4] = struct{}{} + } + + request := vpc.NewDescribeNetworkInterfacesRequest() + request.NetworkInterfaceIds = []*string{helper.String(id)} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.DescribeNetworkInterfaces(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + var eni *vpc.NetworkInterface + for _, networkInterface := range response.Response.NetworkInterfaceSet { + if networkInterface.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *networkInterface.NetworkInterfaceId == id { + eni = networkInterface + break + } + } + + if eni == nil { + err := fmt.Errorf("api[%s] eni not exist", request.GetAction()) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + if eni.State == nil { + err := fmt.Errorf("api[%s] eni state is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.State != ENI_STATE_AVAILABLE { + err := errors.New("eni is not available") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + for _, ipv4 := range eni.PrivateIpAddressSet { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + // check drop + if _, ok := dropCheckMap[*ipv4.PrivateIpAddress]; ok { + err := fmt.Errorf("api[%s] drop ip %s still exists", request.GetAction(), *ipv4.PrivateIpAddress) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + // check want + if _, ok := wantCheckMap[*ipv4.PrivateIpAddress]; ok { + wantCheckMap[*ipv4.PrivateIpAddress] = true + } + + if ipv4.State == nil { + err := fmt.Errorf("api[%s] eni ipv4 state is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *ipv4.State != ENI_IP_AVAILABLE { + err := errors.New("eni ipv4 is not available") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + for ipv4, checked := range wantCheckMap { + if !checked { + err := fmt.Errorf("api[%s] ipv4 %s is no ready", request.GetAction(), ipv4) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s eni is not available failed, reason: %v", logId, err) + return err + } + + return nil +} + +func flattenVpnSPDList(spd []*vpc.SecurityPolicyDatabase) (mapping []*map[string]interface{}) { + mapping = make([]*map[string]interface{}, 0, len(spd)) + for _, spg := range spd { + item := make(map[string]interface{}) + item["local_cidr_block"] = spg.LocalCidrBlock + item["remote_cidr_block"] = spg.RemoteCidrBlock + mapping = append(mapping, &item) + } + return +} + +func waitEniDetach(ctx context.Context, id string, client *vpc.Client) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkInterfacesRequest() + request.NetworkInterfaceIds = []*string{helper.String(id)} + + return resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.DescribeNetworkInterfaces(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok && sdkError.Code == "ResourceNotFound" { + return nil + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + enis := response.Response.NetworkInterfaceSet + + if len(enis) == 0 { + return nil + } + + eni := enis[0] + + if eni.Attachment == nil { + return nil + } + + if eni.Attachment.InstanceId != nil && *eni.Attachment.InstanceId != "" { + return resource.RetryableError(fmt.Errorf("eni %s still bind in cvm %s", id, *eni.Attachment.InstanceId)) + } + + if eni.State == nil { + return resource.NonRetryableError(fmt.Errorf("eni %s state is nil", id)) + } + + if *eni.State != ENI_STATE_AVAILABLE { + return resource.RetryableError(errors.New("eni is not available")) + } + + return nil + }) +} + +// deal acl +func parseACLRule(str string) (liteRule VpcACLRule, err error) { + split := strings.Split(str, "#") + if len(split) != 4 { + err = fmt.Errorf("invalid acl rule %s", str) + return + } + + liteRule.action, liteRule.cidrIp, liteRule.port, liteRule.protocol = split[0], split[1], split[2], split[3] + + switch liteRule.action { + default: + err = fmt.Errorf("invalid action %s, allow action is `ACCEPT` or `DROP`", liteRule.action) + return + case "ACCEPT", "DROP": + } + + if net.ParseIP(liteRule.cidrIp) == nil { + if _, _, err = net.ParseCIDR(liteRule.cidrIp); err != nil { + err = fmt.Errorf("invalid cidr_ip %s, allow cidr_ip format is `8.8.8.8` or `10.0.1.0/24`", liteRule.cidrIp) + return + } + } + + if liteRule.port != "ALL" && !regexp.MustCompile(`^(\d{1,5},)*\d{1,5}$|^\d{1,5}-\d{1,5}$`).MatchString(liteRule.port) { + err = fmt.Errorf("invalid port %s, allow port format is `ALL`, `53`, `80,443` or `80-90`", liteRule.port) + return + } + + switch liteRule.protocol { + default: + err = fmt.Errorf("invalid protocol %s, allow protocol is `ALL`, `TCP`, `UDP` or `ICMP`", liteRule.protocol) + return + + case "ALL", "ICMP": + if liteRule.port != "ALL" { + err = fmt.Errorf("when protocol is %s, port must be ALL", liteRule.protocol) + return + } + + // when protocol is ALL or ICMP, port should be "" to avoid sdk error + liteRule.port = "" + + case "TCP", "UDP": + } + + return +} + +func (me *VpcService) CreateVpcNetworkAcl(ctx context.Context, vpcID string, name string, tags map[string]string) (aclID string, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewCreateNetworkAclRequest() + response *vpc.CreateNetworkAclResponse + err error + ) + + request.VpcId = &vpcID + request.NetworkAclName = &name + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err = me.client.UseVpcClient().CreateNetworkAcl(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + aclID = *response.Response.NetworkAcl.NetworkAclId + return +} + +func (me *VpcService) AttachRulesToACL(ctx context.Context, aclID string, ingressParm, egressParm []VpcACLRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + + if len(ingressParm) == 0 && len(egressParm) == 0 { + return + } + if errRet = me.ModifyNetWorkAclRules(ctx, aclID, ingressParm, egressParm); errRet != nil { + log.Printf("[CRITAL]%s attach rules to acl failed, reason: %v", logId, errRet) + } + return +} + +func (me *VpcService) ModifyNetWorkAclRules(ctx context.Context, aclID string, ingressParm, egressParm []VpcACLRule) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewModifyNetworkAclEntriesRequest() + err error + ingress []*vpc.NetworkAclEntry + egress []*vpc.NetworkAclEntry + ) + + for i := range ingressParm { + policy := &vpc.NetworkAclEntry{ + Protocol: &ingressParm[i].protocol, + CidrBlock: &ingressParm[i].cidrIp, + Action: &ingressParm[i].action, + } + + if ingressParm[i].port != "" { + policy.Port = &ingressParm[i].port + } + + ingress = append(ingress, policy) + } + + for i := range egressParm { + policy := &vpc.NetworkAclEntry{ + Protocol: &egressParm[i].protocol, + CidrBlock: &egressParm[i].cidrIp, + Action: &egressParm[i].action, + } + + if egressParm[i].port != "" { + policy.Port = &egressParm[i].port + } + + egress = append(egress, policy) + } + + request.NetworkAclId = &aclID + request.NetworkAclEntrySet = &vpc.NetworkAclEntrySet{ + Ingress: ingress, + Egress: egress, + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().ModifyNetworkAclEntries(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) DescribeNetWorkByACLID(ctx context.Context, aclID string) (info *vpc.NetworkAcl, has int, errRet error) { + results, err := me.DescribeNetWorkAcls(ctx, aclID, "", "") + if err != nil { + errRet = err + return + } + + has = len(results) + if has == 0 { + return + } + + info = results[0] + return +} + +func (me *VpcService) DeleteAcl(ctx context.Context, aclID string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + err error + networkAcls []*vpc.NetworkAcl + request = vpc.NewDeleteNetworkAclRequest() + ) + + // Disassociate Network Acl Subnets + networkAcls, err = me.DescribeNetWorkAcls(ctx, aclID, "", "") + if err != nil { + errRet = err + return + } + + if len(networkAcls) > 0 { + subnets := networkAcls[0].SubnetSet + if len(subnets) > 0 { + requestSubnet := vpc.NewDisassociateNetworkAclSubnetsRequest() + requestSubnet.NetworkAclId = &aclID + + for i := range subnets { + requestSubnet.SubnetIds = append(requestSubnet.SubnetIds, subnets[i].SubnetId) + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DisassociateNetworkAclSubnets(requestSubnet) + if err != nil { + if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil + } + } + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + if err != nil { + errRet = err + return + } + } + } + + // delete acl + request.NetworkAclId = &aclID + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DeleteNetworkAcl(request) + + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err, tccommon.InternalError) + } + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil + } + return tccommon.RetryError(err, tccommon.InternalError) + } + + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) ModifyVpcNetworkAcl(ctx context.Context, id *string, name *string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + err error + request = vpc.NewModifyNetworkAclAttributeRequest() + ) + + request.NetworkAclId = id + request.NetworkAclName = name + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().ModifyNetworkAclAttribute(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err, tccommon.InternalError) + } + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return resource.NonRetryableError(err) + } + return tccommon.RetryError(err, tccommon.InternalError) + } + + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) AssociateAclSubnets(ctx context.Context, aclId string, subnetIds []string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewAssociateNetworkAclSubnetsRequest() + err error + subIds []*string + ) + + for _, i := range subnetIds { + subIds = append(subIds, &i) + } + + request.NetworkAclId = &aclId + request.SubnetIds = subIds + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().AssociateNetworkAclSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + return +} + +func (me *VpcService) DescribeNetWorkAcls(ctx context.Context, aclID, vpcID, name string) (info []*vpc.NetworkAcl, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkAclsRequest() + response *vpc.DescribeNetworkAclsResponse + err error + filters []*vpc.Filter + offset, pageSize uint64 = 0, 100 + ) + + if vpcID != "" { + filters = me.fillFilter(filters, "vpc-id", vpcID) + } + if aclID != "" { + filters = me.fillFilter(filters, "network-acl-id", aclID) + } + if name != "" { + filters = me.fillFilter(filters, "network-acl-name", name) + } + + if len(filters) > 0 { + request.Filters = filters + } + + request.Offset = &offset + request.Limit = &pageSize + for { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err = me.client.UseVpcClient().DescribeNetworkAcls(request) + if err != nil { + if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if ee.Code == VPCNotFound { + return nil + } + } + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + if response.Response == nil { + return + } + + info = append(info, response.Response.NetworkAclSet...) + if len(response.Response.NetworkAclSet) < int(pageSize) { + break + } + + offset += pageSize + } + + return +} + +func (me *VpcService) DescribeByAclId(ctx context.Context, attachmentAcl string) (has bool, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDisassociateNetworkAclSubnetsRequest() + aclId string + ) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + if attachmentAcl == "" { + errRet = fmt.Errorf("DisassociateNetworkAclSubnets can not invoke by empty routeTableId.") + return + } + + aclId = strings.Split(attachmentAcl, "#")[0] + + results, err := me.DescribeNetWorkAcls(ctx, aclId, "", "") + if err != nil { + errRet = err + return + } + if len(results) < 1 || len(results[0].SubnetSet) < 1 { + return + } + + has = true + return +} + +func (me *VpcService) DeleteAclAttachment(ctx context.Context, attachmentAcl string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDisassociateNetworkAclSubnetsRequest() + err error + ) + + if attachmentAcl == "" { + errRet = fmt.Errorf("DeleteRouteTable can not invoke by empty NetworkAclId.") + return + } + + items := strings.Split(attachmentAcl, "#") + request.NetworkAclId = &items[0] + request.SubnetIds = helper.Strings(items[1:]) + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DisassociateNetworkAclSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + return +} + +func (me *VpcService) DescribeVpngwById(ctx context.Context, vpngwId string) (has bool, gateway *vpc.VpnGateway, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaysRequest() + response *vpc.DescribeVpnGatewaysResponse + ) + request.VpnGatewayIds = []*string{&vpngwId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGateways(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.VpnGatewaySet) < 1 { + has = false + return + } + + gateway = response.Response.VpnGatewaySet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.VpnGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaysRequest() + ) + request.Filters = make([]*vpc.FilterObject, 0, len(filters)) + for k, v := range filters { + filter := vpc.FilterObject{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.VpnGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpnGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.VpnGatewaySet...) + if len(response.Response.VpnGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGateway(ctx context.Context, vpnGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteVpnGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeCustomerGatewayByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.CustomerGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCustomerGatewaysRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.CustomerGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeCustomerGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CustomerGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.CustomerGatewaySet...) + if len(response.Response.CustomerGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteCustomerGateway(ctx context.Context, customerGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteCustomerGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.CustomerGatewayId = &customerGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteCustomerGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) CreateAddressTemplate(ctx context.Context, name string, addresses []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateAddressTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateName = &name + request.Addresses = make([]*string, len(addresses)) + for i, v := range addresses { + request.Addresses[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAddressTemplate(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.AddressTemplate == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.AddressTemplate.AddressTemplateId + return +} + +func (me *VpcService) DescribeAddressTemplateById(ctx context.Context, templateId string) (template *vpc.AddressTemplate, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("address-template-id"), Values: []*string{&templateId}} + templates, err := me.DescribeAddressTemplates(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeAddressTemplates(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.AddressTemplate, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressTemplatesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddressTemplates(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.AddressTemplateSet...) + if len(response.Response.AddressTemplateSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) ModifyAddressTemplate(ctx context.Context, templateId string, name string, addresses []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressTemplateAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateId = &templateId + request.AddressTemplateName = &name + request.Addresses = make([]*string, len(addresses)) + for i, v := range addresses { + request.Addresses[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyAddressTemplateAttribute(request) + return err +} + +func (me *VpcService) DeleteAddressTemplate(ctx context.Context, templateId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteAddressTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.AddressTemplateId = &templateId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteAddressTemplate(request) + return err +} + +func (me *VpcService) CreateAddressTemplateGroup(ctx context.Context, name string, addressTemplate []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateAddressTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateGroupName = &name + request.AddressTemplateIds = make([]*string, len(addressTemplate)) + for i, v := range addressTemplate { + request.AddressTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAddressTemplateGroup(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.AddressTemplateGroup == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.AddressTemplateGroup.AddressTemplateGroupId + return +} + +func (me *VpcService) ModifyAddressTemplateGroup(ctx context.Context, templateGroupId string, name string, templateIds []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressTemplateGroupAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateGroupId = &templateGroupId + request.AddressTemplateGroupName = &name + request.AddressTemplateIds = make([]*string, len(templateIds)) + for i, v := range templateIds { + request.AddressTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyAddressTemplateGroupAttribute(request) + return err +} + +func (me *VpcService) DescribeAddressTemplateGroupById(ctx context.Context, templateGroupId string) (templateGroup *vpc.AddressTemplateGroup, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("address-template-group-id"), Values: []*string{&templateGroupId}} + templateGroups, err := me.DescribeAddressTemplateGroups(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templateGroups) == 0 { + return + } + if len(templateGroups) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one template group, instanceId %s", templateGroupId) + } + + has = true + templateGroup = templateGroups[0] + return +} + +func (me *VpcService) DescribeAddressTemplateGroups(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.AddressTemplateGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressTemplateGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddressTemplateGroups(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.AddressTemplateGroupSet...) + if len(response.Response.AddressTemplateGroupSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) DeleteAddressTemplateGroup(ctx context.Context, templateGroupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteAddressTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.AddressTemplateGroupId = &templateGroupId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteAddressTemplateGroup(request) + return err +} + +func (me *VpcService) CreateServiceTemplate(ctx context.Context, name string, services []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateServiceTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateName = &name + request.Services = make([]*string, len(services)) + for i, v := range services { + request.Services[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateServiceTemplate(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.ServiceTemplate == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.ServiceTemplate.ServiceTemplateId + return +} + +func (me *VpcService) ModifyServiceTemplate(ctx context.Context, templateId string, name string, services []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyServiceTemplateAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateId = &templateId + request.ServiceTemplateName = &name + request.Services = make([]*string, len(services)) + for i, v := range services { + request.Services[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyServiceTemplateAttribute(request) + return err +} + +func (me *VpcService) DescribeServiceTemplateById(ctx context.Context, templateId string) (template *vpc.ServiceTemplate, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("service-template-id"), Values: []*string{&templateId}} + templates, err := me.DescribeServiceTemplates(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeServiceTemplates(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.ServiceTemplate, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeServiceTemplatesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeServiceTemplates(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.ServiceTemplateSet...) + if len(response.Response.ServiceTemplateSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) DeleteServiceTemplate(ctx context.Context, templateId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteServiceTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.ServiceTemplateId = &templateId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteServiceTemplate(request) + return err +} + +func (me *VpcService) CreateServiceTemplateGroup(ctx context.Context, name string, serviceTemplate []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateServiceTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateGroupName = &name + request.ServiceTemplateIds = make([]*string, len(serviceTemplate)) + for i, v := range serviceTemplate { + request.ServiceTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateServiceTemplateGroup(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.ServiceTemplateGroup == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.ServiceTemplateGroup.ServiceTemplateGroupId + return +} + +func (me *VpcService) DescribeServiceTemplateGroupById(ctx context.Context, templateGroupId string) (template *vpc.ServiceTemplateGroup, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("service-template-group-id"), Values: []*string{&templateGroupId}} + templates, err := me.DescribeServiceTemplateGroups(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateGroupId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeServiceTemplateGroups(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.ServiceTemplateGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeServiceTemplateGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeServiceTemplateGroups(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.ServiceTemplateGroupSet...) + if len(response.Response.ServiceTemplateGroupSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) ModifyServiceTemplateGroup(ctx context.Context, serviceGroupId string, name string, templateIds []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyServiceTemplateGroupAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateGroupId = &serviceGroupId + request.ServiceTemplateGroupName = &name + request.ServiceTemplateIds = make([]*string, len(templateIds)) + for i, v := range templateIds { + request.ServiceTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyServiceTemplateGroupAttribute(request) + return err +} + +func (me *VpcService) DeleteServiceTemplateGroup(ctx context.Context, templateGroupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteServiceTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.ServiceTemplateGroupId = &templateGroupId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteServiceTemplateGroup(request) + return err +} + +func (me *VpcService) CreateVpnGatewayRoute(ctx context.Context, vpnGatewayId string, vpnGwRoutes []*vpc.VpnGatewayRoute) (errRet error, routes []*vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.Routes = vpnGwRoutes + + var response *vpc.CreateVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().CreateVpnGatewayRoutes(request) + if errRet != nil { + log.Printf("[CRITAL]%s create vpn gateway route failed, reason: %v", logId, errRet) + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil || response.Response.Routes == nil || len(response.Response.Routes) == 0 { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %+v, %s", response, request.GetAction()) + } else { + routes = response.Response.Routes + } + return +} + +func (me *VpcService) ModifyVpnGatewayRoute(ctx context.Context, vpnGatewayId, routeId, status string) (errRet error, routes *vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.Routes = []*vpc.VpnGatewayRouteModify{{ + RouteId: &routeId, + Status: &status, + }} + + var response *vpc.ModifyVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().ModifyVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil || response.Response.Routes == nil || len(response.Response.Routes) == 0 { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } else { + routes = response.Response.Routes[0] + } + return +} + +func (me *VpcService) DeleteVpnGatewayRoutes(ctx context.Context, vpnGatewayId string, routeIds []*string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.RouteIds = routeIds + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeVpnGatewayRoutes(ctx context.Context, vpnGatewayId string, filters []*vpc.Filter) (errRet error, result []*vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + if len(filters) > 0 { + request.Filters = filters + } + + offset := int64(0) + limit := int64(VPN_DESCRIBE_LIMIT) + for { + request.Offset = &offset + request.Limit = &limit + var response *vpc.DescribeVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().DescribeVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil { + return fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()), nil + } else if len(response.Response.Routes) > 0 { + result = append(result, response.Response.Routes...) + } else { + return + } + offset = offset + limit + } +} + +func (me *VpcService) DescribeVpcTaskResult(ctx context.Context, taskId *string) (err error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpcTaskResultRequest() + defer func() { + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), err.Error()) + } + }() + request.TaskId = taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpcTaskResult(request) + if err != nil { + return tccommon.RetryError(err) + } + if response.Response.Status != nil && *response.Response.Status == VPN_TASK_STATUS_RUNNING { + return resource.RetryableError(errors.New("VPN task is running")) + } + return nil + }) + if err != nil { + return err + } + return +} + +func (me *VpcService) DescribeTaskResult(ctx context.Context, taskId *uint64) (result *vpc.DescribeTaskResultResponse, err error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeTaskResultRequest() + defer func() { + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), err.Error()) + } + }() + request.TaskId = taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeTaskResult(request) + if err != nil { + return tccommon.RetryError(err) + } + result = response + return nil + }) + if err != nil { + return nil, err + } + return +} + +func (me *VpcService) DescribeVpnSslServerById(ctx context.Context, sslId string) (has bool, gateway *vpc.SslVpnSever, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslServersRequest() + response *vpc.DescribeVpnGatewaySslServersResponse + ) + request.SslVpnServerIds = []*string{&sslId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGatewaySslServers(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.SslVpnSeverSet) < 1 { + has = false + return + } + + gateway = response.Response.SslVpnSeverSet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwSslServerByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.SslVpnSever, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslServersRequest() + ) + request.Filters = make([]*vpc.FilterObject, 0, len(filters)) + for k, v := range filters { + filter := vpc.FilterObject{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.SslVpnSever, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGatewaySslServers(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SslVpnSeverSet) < 1 { + break + } + instances = append(instances, response.Response.SslVpnSeverSet...) + if len(response.Response.SslVpnSeverSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGatewaySslServer(ctx context.Context, SslServerId string) (taskId uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewaySslServerRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SslVpnServerId = &SslServerId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslServer(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + taskId = *response.Response.TaskId + return nil + }) + return +} + +func (me *VpcService) DescribeVpnSslClientById(ctx context.Context, sslId string) (has bool, gateway *vpc.SslVpnClient, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslClientsRequest() + response *vpc.DescribeVpnGatewaySslClientsResponse + ) + request.SslVpnClientIds = []*string{&sslId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGatewaySslClients(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.SslVpnClientSet) < 1 { + has = false + return + } + + gateway = response.Response.SslVpnClientSet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwSslClientByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.SslVpnClient, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslClientsRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.SslVpnClient, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGatewaySslClients(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SslVpnClientSet) < 1 { + break + } + instances = append(instances, response.Response.SslVpnClientSet...) + if len(response.Response.SslVpnClientSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGatewaySslClient(ctx context.Context, SslClientId string) (taskId *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewaySslClientRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SslVpnClientId = &SslClientId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslClient(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + taskId = response.Response.TaskId + return nil + }) + return +} + +func (me *VpcService) CreateNatGatewaySnat(ctx context.Context, natGatewayId string, snat *vpc.SourceIpTranslationNatRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.SourceIpTranslationNatRules = []*vpc.SourceIpTranslationNatRule{snat} + + var response *vpc.CreateNatGatewaySourceIpTranslationNatRuleResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().CreateNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + log.Printf("[CRITAL]%s create nat gateway source ip translation nat rule failed, reason: %v", logId, errRet) + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %+v, %s", response, request.GetAction()) + } + return +} + +func (me *VpcService) ModifyNatGatewaySnat(ctx context.Context, natGatewayId string, snat *vpc.SourceIpTranslationNatRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.SourceIpTranslationNatRule = snat + + var response *vpc.ModifyNatGatewaySourceIpTranslationNatRuleResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().ModifyNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + return +} + +func (me *VpcService) DeleteNatGatewaySnat(ctx context.Context, natGatewayId string, snatId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.NatGatewaySnatIds = []*string{&snatId} + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeNatGatewaySnats(ctx context.Context, natGatewayId string, filters []*vpc.Filter) (errRet error, result []*vpc.SourceIpTranslationNatRule) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeNatGatewaySourceIpTranslationNatRulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + if len(filters) > 0 { + request.Filters = filters + } + + offset := int64(0) + limit := int64(VPN_DESCRIBE_LIMIT) + for { + request.Offset = &offset + request.Limit = &limit + var response *vpc.DescribeNatGatewaySourceIpTranslationNatRulesResponse + errRet = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().DescribeNatGatewaySourceIpTranslationNatRules(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil { + return fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()), nil + } else if len(response.Response.SourceIpTranslationNatRuleSet) > 0 { + result = append(result, response.Response.SourceIpTranslationNatRuleSet...) + } else { + return + } + offset = offset + limit + } +} + +func (me *VpcService) DescribeAssistantCidr(ctx context.Context, vpcId string) (info []*vpc.AssistantCidr, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAssistantCidrRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcIds = []*string{&vpcId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.AssistantCidrSet + + return +} + +// CheckAssistantCidr used for check if cidr conflict +func (me *VpcService) CheckAssistantCidr(ctx context.Context, request *vpc.CheckAssistantCidrRequest) (info []*vpc.ConflictSource, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CheckAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.ConflictSourceSet + + return +} + +func (me *VpcService) CreateAssistantCidr(ctx context.Context, request *vpc.CreateAssistantCidrRequest) (info []*vpc.AssistantCidr, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.AssistantCidrSet + + return +} + +func (me *VpcService) ModifyAssistantCidr(ctx context.Context, request *vpc.ModifyAssistantCidrRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteAssistantCidr(ctx context.Context, request *vpc.DeleteAssistantCidrRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackage(ctx context.Context, bandwidthPackageId string) (resource *vpc.BandwidthPackage, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackagesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.BandwidthPackageIds = []*string{&bandwidthPackageId} + //request.Filters = append( + // request.Filters, + // &bwp.Filter{ + // Name: helper.String("bandwidth-package_id"), + // Values: []*string{&bandwidthPackageId}, + // }, + //) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackages(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil && len(response.Response.BandwidthPackageSet) > 0 { + resource = response.Response.BandwidthPackageSet[0] + } + + return +} + +func (me *VpcService) DeleteVpcBandwidthPackageById(ctx context.Context, bandwidthPackageId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteBandwidthPackageRequest() + + request.BandwidthPackageId = &bandwidthPackageId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteBandwidthPackage(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageAttachment(ctx context.Context, bandwidthPackageId, resourceId string) (bandwidthPackageResources *vpc.Resource, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageResourcesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.BandwidthPackageId = &bandwidthPackageId + request.Filters = append( + request.Filters, + &vpc.Filter{ + Name: helper.String("resource-id"), + Values: []*string{&resourceId}, + }, + ) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackageResources(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.ResourceSet) < 1 { + return + } + bandwidthPackageResources = response.Response.ResourceSet[0] + + return + +} + +func (me *VpcService) DeleteVpcBandwidthPackageAttachmentById(ctx context.Context, bandwidthPackageId, resourceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewRemoveBandwidthPackageResourcesRequest() + + if strings.HasPrefix(resourceId, "eip") { + request.ResourceType = helper.String("Address") + } else { + request.ResourceType = helper.String("LoadBalance") + } + + request.BandwidthPackageId = &bandwidthPackageId + request.ResourceIds = []*string{&resourceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().RemoveBandwidthPackageResources(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeFlowLogs(ctx context.Context, request *vpc.DescribeFlowLogsRequest) (result []*vpc.FlowLog, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeFlowLogs(request) + + if err != nil { + errRet = err + return + } + + result = response.Response.FlowLog + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcFlowLogById(ctx context.Context, flowLogId, vpcId string) (FlowLog *vpc.FlowLog, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeFlowLogRequest() + request.FlowLogId = &flowLogId + + if vpcId != "" { + request.VpcId = &vpcId + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeFlowLog(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.FlowLog) < 1 { + return + } + + FlowLog = response.Response.FlowLog[0] + return +} + +func (me *VpcService) DeleteVpcFlowLogById(ctx context.Context, flowLogId, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteFlowLogRequest() + request.FlowLogId = &flowLogId + if vpcId != "" { + request.VpcId = &vpcId + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteFlowLog(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointServiceById(ctx context.Context, endPointServiceId string) (endPointService *vpc.EndPointService, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointServiceRequest() + request.EndPointServiceIds = []*string{&endPointServiceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.EndPointService, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPointService(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.EndPointServiceSet) < 1 { + break + } + instances = append(instances, response.Response.EndPointServiceSet...) + if len(response.Response.EndPointServiceSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPointService = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointServiceById(ctx context.Context, endPointServiceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointServiceRequest() + request.EndPointServiceId = &endPointServiceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPointService(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointById(ctx context.Context, endPointId string) (endPoint *vpc.EndPoint, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointRequest() + request.EndPointId = []*string{&endPointId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.EndPoint, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPoint(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.EndPointSet) < 1 { + break + } + instances = append(instances, response.Response.EndPointSet...) + if len(response.Response.EndPointSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPoint = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointById(ctx context.Context, endPointId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointRequest() + request.EndPointId = &endPointId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPoint(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointServiceWhiteListById(ctx context.Context, userUin string, endPointServiceId string) (endPointServiceWhiteList *vpc.VpcEndPointServiceUser, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointServiceWhiteListRequest() + + request.Filters = make([]*vpc.Filter, 0) + if userUin != "" { + filter := &vpc.Filter{ + Name: helper.String("user-uin"), + Values: []*string{&userUin}, + } + request.Filters = append(request.Filters, filter) + } + if endPointServiceId != "" { + filter := &vpc.Filter{ + Name: helper.String("end-point-service-id"), + Values: []*string{&endPointServiceId}, + } + request.Filters = append(request.Filters, filter) + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.VpcEndPointServiceUser, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPointServiceWhiteList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpcEndpointServiceUserSet) < 1 { + break + } + instances = append(instances, response.Response.VpcEndpointServiceUserSet...) + if len(response.Response.VpcEndpointServiceUserSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPointServiceWhiteList = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointServiceWhiteListById(ctx context.Context, userUin string, endPointServiceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointServiceWhiteListRequest() + request.UserUin = []*string{&userUin} + request.EndPointServiceId = &endPointServiceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPointServiceWhiteList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageByEip(ctx context.Context, eipId string) (resource *vpc.BandwidthPackage, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackagesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.Filters = append( + request.Filters, + &vpc.Filter{ + Name: helper.String("resource.resource-id"), + Values: []*string{&eipId}, + }, + ) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackages(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil && len(response.Response.BandwidthPackageSet) > 0 { + resource = response.Response.BandwidthPackageSet[0] + } + + return +} + +func (me *VpcService) DescribeVpcCcnRoutesById(ctx context.Context, ccnId string, routeId string) (ccnRoutes *vpc.CcnRoute, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeCcnRoutesRequest() + request.CcnId = &ccnId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCcnRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + for _, route := range response.Response.RouteSet { + if *route.RouteId == routeId { + ccnRoutes = route + return + } + } + + return +} + +func (me *VpcService) DescribeCcnCrossBorderComplianceByFilter(ctx context.Context, param map[string]interface{}) (crossBorderCompliance []*vpc.CrossBorderCompliance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderComplianceRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "service_provider" { + request.ServiceProvider = v.(*string) + } + if k == "compliance_id" { + if *v.(*uint64) != 0 { + request.ComplianceId = v.(*uint64) + } + } + if k == "company" { + request.Company = v.(*string) + } + if k == "uniform_social_credit_code" { + request.UniformSocialCreditCode = v.(*string) + } + if k == "legal_person" { + request.LegalPerson = v.(*string) + } + if k == "issuing_authority" { + request.IssuingAuthority = v.(*string) + } + if k == "business_address" { + request.BusinessAddress = v.(*string) + } + if k == "post_code" { + if *v.(*uint64) != 0 { + request.PostCode = v.(*uint64) + } + } + if k == "manager" { + request.Manager = v.(*string) + } + if k == "manager_id" { + request.ManagerId = v.(*string) + } + if k == "manager_address" { + request.ManagerAddress = v.(*string) + } + if k == "manager_telephone" { + request.ManagerTelephone = v.(*string) + } + if k == "email" { + request.Email = v.(*string) + } + if k == "service_start_date" { + request.ServiceStartDate = v.(*string) + } + if k == "service_end_date" { + request.ServiceEndDate = v.(*string) + } + if k == "state" { + request.State = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeCrossBorderCompliance(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CrossBorderComplianceSet) < 1 { + break + } + crossBorderCompliance = append(crossBorderCompliance, response.Response.CrossBorderComplianceSet...) + if len(response.Response.CrossBorderComplianceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeTenantCcnByFilter(ctx context.Context, param map[string]interface{}) (tenantCcn []*vpc.CcnInstanceInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeTenantCcnsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.Filters = make([]*vpc.Filter, 0, len(param)) + for k, v := range param { + filter := &vpc.Filter{ + Name: helper.String(k), + Values: v.([]*string), + } + request.Filters = append(request.Filters, filter) + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeTenantCcns(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CcnSet) < 1 { + break + } + tenantCcn = append(tenantCcn, response.Response.CcnSet...) + if len(response.Response.CcnSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeCcnCrossBorderFlowMonitorByFilter(ctx context.Context, param map[string]interface{}) (crossBorderFlowMonitor []*vpc.CrossBorderFlowMonitorData, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderFlowMonitorRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "source_region" { + request.SourceRegion = v.(*string) + } + if k == "destination_region" { + request.DestinationRegion = v.(*string) + } + if k == "ccn_id" { + request.CcnId = v.(*string) + } + if k == "ccn_uin" { + request.CcnUin = v.(*string) + } + if k == "period" { + if *v.(*int64) != 0 { + request.Period = v.(*int64) + } + } + if k == "start_time" { + request.StartTime = v.(*string) + } + if k == "end_time" { + request.EndTime = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCrossBorderFlowMonitor(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CrossBorderFlowMonitorData) < 1 { + return + } + + crossBorderFlowMonitor = response.Response.CrossBorderFlowMonitorData + + return +} + +func (me *VpcService) DescribeVpnCustomerGatewayVendors(ctx context.Context) (vpnCustomerGatewayVendors []*vpc.CustomerGatewayVendor, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCustomerGatewayVendorsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCustomerGatewayVendors(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CustomerGatewayVendorSet) < 1 { + return + } + + vpnCustomerGatewayVendors = response.Response.CustomerGatewayVendorSet + return +} + +func (me *VpcService) DescribeVpcVpnGatewayCcnRoutesById(ctx context.Context, vpnGatewayId string, routeId string) (vpnGatewayCcnRoutes *vpc.VpngwCcnRoutes, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpnGatewayCcnRoutesRequest() + request.VpnGatewayId = &vpnGatewayId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpnGatewayCcnRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.RouteSet) < 1 { + return + } + + for _, route := range response.Response.RouteSet { + if *route.RouteId == routeId { + vpnGatewayCcnRoutes = route + break + } + } + return +} + +func (me *VpcService) DescribeVpcIpv6AddressById(ctx context.Context, ip6AddressId string) (ipv6Address *vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeIp6AddressesRequest() + request.Ip6AddressIds = []*string{&ip6AddressId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeIp6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AddressSet) < 1 { + return + } + + ipv6Address = response.Response.AddressSet[0] + return +} + +func (me *VpcService) DeleteVpcIpv6AddressById(ctx context.Context, ip6AddressId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewReleaseIp6AddressesBandwidthRequest() + request.Ip6AddressIds = []*string{&ip6AddressId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().ReleaseIp6AddressesBandwidth(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) VpcIpv6AddressStateRefreshFunc(taskId string, failStates []string) resource.StateRefreshFunc { + return func() (interface{}, string, error) { + ctx := tccommon.ContextNil + + taskId := helper.StrToUint64Point(taskId) + + object, err := me.DescribeTaskResult(ctx, taskId) + + if err != nil { + return nil, "", err + } + + return object, helper.PString(object.Response.Result), nil + } +} + +func (me *VpcService) DescribeVpcCcnRegionBandwidthLimitsByFilter(ctx context.Context, param map[string]interface{}) (CcnRegionBandwidthLimits []*vpc.CcnBandwidth, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderCcnRegionBandwidthLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeCrossBorderCcnRegionBandwidthLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CcnBandwidthSet) < 1 { + break + } + CcnRegionBandwidthLimits = append(CcnRegionBandwidthLimits, response.Response.CcnBandwidthSet...) + if len(response.Response.CcnBandwidthSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeNatDcRouteByFilter(ctx context.Context, param map[string]interface{}) (natDcRoute []*vpc.NatDirectConnectGatewayRoute, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNatGatewayDirectConnectGatewayRouteRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "NatGatewayId" { + request.NatGatewayId = v.(*string) + } + if k == "VpcId" { + request.VpcId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeNatGatewayDirectConnectGatewayRoute(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NatDirectConnectGatewayRouteSet) < 1 { + break + } + natDcRoute = append(natDcRoute, response.Response.NatDirectConnectGatewayRouteSet...) + if len(response.Response.NatDirectConnectGatewayRouteSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeEipAddressQuota(ctx context.Context) (addressQuota []*vpc.Quota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeAddressQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeAddressQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + addressQuota = append(addressQuota, response.Response.QuotaSet...) + + return +} + +func (me *VpcService) DescribeEipNetworkAccountType(ctx context.Context) (networkAccountType *string, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkAccountTypeRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkAccountType(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + networkAccountType = response.Response.NetworkAccountType + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageQuota(ctx context.Context) (bandwidthPackageQuota []*vpc.Quota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeBandwidthPackageQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + bandwidthPackageQuota = append(bandwidthPackageQuota, response.Response.QuotaSet...) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageBillUsageByFilter(ctx context.Context, param map[string]interface{}) (bandwidthPackageBillUsage []*vpc.BandwidthPackageBillBandwidth, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageBillUsageRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "BandwidthPackageId" { + request.BandwidthPackageId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeBandwidthPackageBillUsage(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + bandwidthPackageBillUsage = append(bandwidthPackageBillUsage, response.Response.BandwidthPackageBillBandwidthSet...) + + return +} + +func (me *VpcService) DescribeVpcTrafficPackageById(ctx context.Context, trafficPackageId string) (TrafficPackage *vpc.TrafficPackage, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeTrafficPackagesRequest() + request.TrafficPackageIds = []*string{&trafficPackageId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeTrafficPackages(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.TrafficPackageSet) < 1 { + return + } + + TrafficPackage = response.Response.TrafficPackageSet[0] + return +} + +func (me *VpcService) DeleteVpcTrafficPackageById(ctx context.Context, trafficPackageId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteTrafficPackagesRequest() + request.TrafficPackageIds = []*string{&trafficPackageId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteTrafficPackages(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcSnapshotPoliciesById(ctx context.Context, snapshotPolicyId string) (snapshotPolices []*vpc.SnapshotPolicy, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSnapshotPoliciesRequest() + request.SnapshotPolicyIds = []*string{&snapshotPolicyId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSnapshotPolicies(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + snapshotPolices = response.Response.SnapshotPolicySet + return +} + +func (me *VpcService) DeleteVpcSnapshotPoliciesById(ctx context.Context, snapshotPolicyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSnapshotPoliciesRequest() + request.SnapshotPolicyIds = []*string{&snapshotPolicyId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteSnapshotPolicies(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcSnapshotPolicyAttachmentById(ctx context.Context, snapshotPolicyId string) (snapshotPolicyAttachment []*vpc.SnapshotInstance, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSnapshotAttachedInstancesRequest() + request.SnapshotPolicyId = &snapshotPolicyId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSnapshotAttachedInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.InstanceSet) < 1 { + return + } + + snapshotPolicyAttachment = response.Response.InstanceSet + return +} + +func (me *VpcService) DeleteVpcSnapshotPolicyAttachmentById(ctx context.Context, snapshotPolicyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDetachSnapshotInstancesRequest() + request.SnapshotPolicyId = &snapshotPolicyId + + snapshotInstace, err := me.DescribeVpcSnapshotPolicyAttachmentById(ctx, snapshotPolicyId) + if err != nil { + errRet = err + return + } + request.Instances = snapshotInstace + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DetachSnapshotInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcNetDetectById(ctx context.Context, netDetectId string) (netDetect *vpc.NetDetect, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetDetectsRequest() + request.NetDetectIds = []*string{&netDetectId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetDetects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NetDetectSet) < 1 { + return + } + + netDetect = response.Response.NetDetectSet[0] + return +} + +func (me *VpcService) DeleteVpcNetDetectById(ctx context.Context, netDetectId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteNetDetectRequest() + request.NetDetectId = &netDetectId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteNetDetect(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcClassicLinkAttachmentById(ctx context.Context, vpcId string, instanceId string) (classicLinkAttachment *vpc.ClassicLinkInstance, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeClassicLinkInstancesRequest() + filter := vpc.FilterObject{ + Name: helper.String("vpc-id"), + Values: []*string{&vpcId}, + } + request.Filters = append(request.Filters, &filter) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.ClassicLinkInstance, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeClassicLinkInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.ClassicLinkInstanceSet) < 1 { + break + } + instances = append(instances, response.Response.ClassicLinkInstanceSet...) + if len(response.Response.ClassicLinkInstanceSet) < int(limit) { + break + } + offset += limit + } + + if len(instances) < 1 { + return + } + + for _, instance := range instances { + if *instance.InstanceId == instanceId { + classicLinkAttachment = instance + } + } + + return +} + +func (me *VpcService) DeleteVpcClassicLinkAttachmentById(ctx context.Context, vpcId string, instanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDetachClassicLinkVpcRequest() + request.VpcId = &vpcId + request.InstanceIds = []*string{&instanceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DetachClassicLinkVpc(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcDhcpIpById(ctx context.Context, dhcpIpId string) (dhcpIp *vpc.DhcpIp, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeDhcpIpsRequest() + request.DhcpIpIds = []*string{&dhcpIpId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeDhcpIps(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.DhcpIpSet) < 1 { + return + } + + dhcpIp = response.Response.DhcpIpSet[0] + return +} + +func (me *VpcService) DeleteVpcDhcpIpById(ctx context.Context, dhcpIpId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteDhcpIpRequest() + request.DhcpIpId = &dhcpIpId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteDhcpIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcDhcpAssociateAddressById(ctx context.Context, dhcpIpId string, addressIp string) (dhcpAssociateAddress *vpc.DhcpIp, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeDhcpIpsRequest() + request.DhcpIpIds = []*string{&dhcpIpId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeDhcpIps(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.DhcpIpSet) < 1 { + return + } + + dhcpIp := response.Response.DhcpIpSet[0] + if *dhcpIp.AddressIp != addressIp { + return + } + dhcpAssociateAddress = dhcpIp + + return +} + +func (me *VpcService) DeleteVpcDhcpAssociateAddressById(ctx context.Context, dhcpIpId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDisassociateDhcpIpWithAddressIpRequest() + request.DhcpIpId = &dhcpIpId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DisassociateDhcpIpWithAddressIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcById(ctx context.Context, vpcId string) (instance *vpc.Vpc, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcsRequest() + request.VpcIds = []*string{&vpcId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.Vpc, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeVpcs(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpcSet) < 1 { + break + } + instances = append(instances, response.Response.VpcSet...) + if len(response.Response.VpcSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + instance = instances[0] + return +} + +func (me *VpcService) DeleteVpcIpv6CidrBlockById(ctx context.Context, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6CidrBlockRequest() + request.VpcId = &vpcId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6CidrBlock(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeSubnetById(ctx context.Context, subnetId string) (instance *vpc.Subnet, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSubnetsRequest() + request.SubnetIds = []*string{&subnetId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.Subnet, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeSubnets(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SubnetSet) < 1 { + break + } + instances = append(instances, response.Response.SubnetSet...) + if len(response.Response.SubnetSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + instance = instances[0] + return +} + +func (me *VpcService) DeleteVpcIpv6SubnetCidrBlockById(ctx context.Context, vpcId string, subnetId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6SubnetCidrBlockRequest() + request.VpcId = &vpcId + + ipv6SubnetCidrBlock := vpc.Ipv6SubnetCidrBlock{} + ipv6SubnetCidrBlock.SubnetId = &subnetId + request.Ipv6SubnetCidrBlocks = append(request.Ipv6SubnetCidrBlocks, &ipv6SubnetCidrBlock) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6SubnetCidrBlock(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcIpv6EniAddressById(ctx context.Context, vpcId string, ipv6Address string) (ipv6EniAddress *vpc.VpcIpv6Address, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcIpv6AddressesRequest() + request.VpcId = &vpcId + request.Ipv6Addresses = []*string{&ipv6Address} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcIpv6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.Ipv6AddressSet) < 1 { + return + } + + ipv6EniAddress = response.Response.Ipv6AddressSet[0] + return +} + +func (me *VpcService) DeleteVpcIpv6EniAddressById(ctx context.Context, networkInterfaceId string, ipv6Address string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6AddressesRequest() + request.NetworkInterfaceId = &networkInterfaceId + address := vpc.Ipv6Address{} + address.Address = &ipv6Address + request.Ipv6Addresses = append(request.Ipv6Addresses, &address) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcLocalGatewayById(ctx context.Context, localGatewayId string) (localGateway *vpc.LocalGateway, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeLocalGatewayRequest() + + filter := vpc.Filter{ + Name: helper.String("local-gateway-id"), + Values: []*string{&localGatewayId}, + } + + request.Filters = append(request.Filters, &filter) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeLocalGateway(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.LocalGatewaySet) < 1 { + return + } + + localGateway = response.Response.LocalGatewaySet[0] + return +} + +func (me *VpcService) DeleteVpcLocalGatewayById(ctx context.Context, cdcId string, localGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteLocalGatewayRequest() + request.CdcId = &cdcId + request.LocalGatewayId = &localGatewayId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteLocalGateway(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcAccountAttributes(ctx context.Context) (accountAttributes []*vpc.AccountAttribute, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeAccountAttributesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeAccountAttributes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + accountAttributes = response.Response.AccountAttributeSet + + return +} + +func (me *VpcService) DescribeVpcClassicLinkInstancesByFilter(ctx context.Context, param map[string]interface{}) (classicLinkInstances []*vpc.ClassicLinkInstance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeClassicLinkInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Filters" { + request.Filters = v.([]*vpc.FilterObject) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeClassicLinkInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.ClassicLinkInstanceSet) < 1 { + break + } + classicLinkInstances = append(classicLinkInstances, response.Response.ClassicLinkInstanceSet...) + if len(response.Response.ClassicLinkInstanceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcGatewayFlowMonitorDetailByFilter(ctx context.Context, param map[string]interface{}) (GatewayFlowMonitorDetail []*vpc.GatewayFlowMonitorDetail, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeGatewayFlowMonitorDetailRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "TimePoint" { + request.TimePoint = v.(*string) + } + if k == "VpnId" { + request.VpnId = v.(*string) + } + if k == "DirectConnectGatewayId" { + request.DirectConnectGatewayId = v.(*string) + } + if k == "PeeringConnectionId" { + request.PeeringConnectionId = v.(*string) + } + if k == "NatId" { + request.NatId = v.(*string) + } + if k == "OrderField" { + request.OrderField = v.(*string) + } + if k == "OrderDirection" { + request.OrderDirection = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeGatewayFlowMonitorDetail(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.GatewayFlowMonitorDetailSet) < 1 { + break + } + GatewayFlowMonitorDetail = append(GatewayFlowMonitorDetail, response.Response.GatewayFlowMonitorDetailSet...) + if len(response.Response.GatewayFlowMonitorDetailSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcGatewayFlowQosByFilter(ctx context.Context, param map[string]interface{}) (GatewayFlowQos []*vpc.GatewayQos, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeGatewayFlowQosRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "GatewayId" { + request.GatewayId = v.(*string) + } + if k == "IpAddresses" { + request.IpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeGatewayFlowQos(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.GatewayQosSet) < 1 { + break + } + GatewayFlowQos = append(GatewayFlowQos, response.Response.GatewayQosSet...) + if len(response.Response.GatewayQosSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcCvmInstancesByFilter(ctx context.Context, param map[string]interface{}) (CvmInstances []*vpc.CvmInstance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.InstanceSet) < 1 { + break + } + CvmInstances = append(CvmInstances, response.Response.InstanceSet...) + if len(response.Response.InstanceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcNetDetectStatesByFilter(ctx context.Context, param map[string]interface{}) (NetDetectStates []*vpc.NetDetectState, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetDetectStatesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "NetDetectIds" { + request.NetDetectIds = v.([]*string) + } + if k == "Filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeNetDetectStates(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NetDetectStateSet) < 1 { + break + } + NetDetectStates = append(NetDetectStates, response.Response.NetDetectStateSet...) + if len(response.Response.NetDetectStateSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcNetworkInterfaceLimit(ctx context.Context, param map[string]interface{}) (networkInterfaceLimit *vpc.DescribeNetworkInterfaceLimitResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkInterfaceLimitRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkInterfaceLimit(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + networkInterfaceLimit = response.Response + + return +} + +func (me *VpcService) DescribeVpcPrivateIpAddresses(ctx context.Context, param map[string]interface{}) (PrivateIpAddresses []*vpc.VpcPrivateIpAddress, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcPrivateIpAddressesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "PrivateIpAddresses" { + request.PrivateIpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcPrivateIpAddresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + PrivateIpAddresses = response.Response.VpcPrivateIpAddressSet + + return +} + +func (me *VpcService) DescribeVpcProductQuota(ctx context.Context, param map[string]interface{}) (ProductQuota []*vpc.ProductQuota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeProductQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Product" { + request.Product = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeProductQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ProductQuota = response.Response.ProductQuotaSet + + return +} + +func (me *VpcService) DescribeVpcResourceDashboard(ctx context.Context, param map[string]interface{}) (ResourceDashboard []*vpc.ResourceDashboard, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcResourceDashboardRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcIds" { + request.VpcIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcResourceDashboard(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ResourceDashboard = response.Response.ResourceDashboardSet + + return +} + +func (me *VpcService) DescribeVpcRouteConflicts(ctx context.Context, param map[string]interface{}) (routeConflicts []*vpc.RouteConflict, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeRouteConflictsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "RouteTableId" { + request.RouteTableId = v.(*string) + } + if k == "DestinationCidrBlocks" { + request.DestinationCidrBlocks = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteConflicts(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + routeConflicts = response.Response.RouteConflictSet + + return +} + +func (me *VpcService) DescribeVpcSecurityGroupLimits(ctx context.Context, param map[string]interface{}) (securityGroupLimit *vpc.SecurityGroupLimitSet, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSecurityGroupLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + securityGroupLimit = response.Response.SecurityGroupLimitSet + + return +} + +func (me *VpcService) DescribeVpcSecurityGroupReferences(ctx context.Context, param map[string]interface{}) (securityGroupReferences []*vpc.ReferredSecurityGroup, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSecurityGroupReferencesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SecurityGroupIds" { + request.SecurityGroupIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupReferences(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + securityGroupReferences = response.Response.ReferredSecurityGroupSet + + return +} + +func (me *VpcService) DescribeVpcSgSnapshotFileContent(ctx context.Context, param map[string]interface{}) (sgSnapshotFileContent *vpc.DescribeSgSnapshotFileContentResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSgSnapshotFileContentRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SnapshotPolicyId" { + request.SnapshotPolicyId = v.(*string) + } + if k == "SnapshotFileId" { + request.SnapshotFileId = v.(*string) + } + if k == "SecurityGroupId" { + request.SecurityGroupId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSgSnapshotFileContent(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + sgSnapshotFileContent = response.Response + + return +} + +func (me *VpcService) DescribeVpcSnapshotFilesByFilter(ctx context.Context, param map[string]interface{}) (SnapshotFiles []*vpc.SnapshotFileInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSnapshotFilesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "BusinessType" { + request.BusinessType = v.(*string) + } + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + if k == "StartDate" { + request.StartDate = v.(*string) + } + if k == "EndDate" { + request.EndDate = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeSnapshotFiles(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SnapshotFileSet) < 1 { + break + } + SnapshotFiles = append(SnapshotFiles, response.Response.SnapshotFileSet...) + if len(response.Response.SnapshotFileSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcSubnetResourceDashboardByFilter(ctx context.Context, param map[string]interface{}) (subnetResourceDashboard []*vpc.ResourceStatistics, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSubnetResourceDashboardRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SubnetIds" { + request.SubnetIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSubnetResourceDashboard(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + subnetResourceDashboard = response.Response.ResourceStatisticsSet + + return +} + +func (me *VpcService) DescribeVpcTemplateLimits(ctx context.Context) (templateLimit *vpc.TemplateLimit, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeTemplateLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeTemplateLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + templateLimit = response.Response.TemplateLimit + + return +} + +func (me *VpcService) DescribeVpcUsedIpAddressByFilter(ctx context.Context, param map[string]interface{}) (UsedIpAddress []*vpc.IpAddressStates, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeUsedIpAddressRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "SubnetId" { + request.SubnetId = v.(*string) + } + if k == "IpAddresses" { + request.IpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeUsedIpAddress(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.IpAddressStates) < 1 { + break + } + UsedIpAddress = append(UsedIpAddress, response.Response.IpAddressStates...) + if len(response.Response.IpAddressStates) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcLimitsByFilter(ctx context.Context, param map[string]interface{}) (limits []*vpc.VpcLimit, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "LimitTypes" { + request.LimitTypes = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + limits = response.Response.VpcLimitSet + + return +} + +func (me *VpcService) DescribeVpcNetworkAclQuintupleById(ctx context.Context, networkAclId string) (networkAclQuintuples []*vpc.NetworkAclQuintupleEntry, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkAclQuintupleEntriesRequest() + request.NetworkAclId = &networkAclId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkAclQuintupleEntries(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NetworkAclQuintupleSet) < 1 { + return + } + + networkAclQuintuples = response.Response.NetworkAclQuintupleSet + return +} + +func (me *VpcService) DeleteVpcNetworkAclQuintupleById(ctx context.Context, networkAclId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteNetworkAclQuintupleEntriesRequest() + request.NetworkAclId = &networkAclId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteNetworkAclQuintupleEntries(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteVpcEniSgAttachmentById(ctx context.Context, networkInterfaceId string, securityGroupIds []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDisassociateNetworkInterfaceSecurityGroupsRequest() + request.NetworkInterfaceIds = []*string{&networkInterfaceId} + request.SecurityGroupIds = common.StringPtrs(securityGroupIds) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DisassociateNetworkInterfaceSecurityGroups(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcNetDetectStateCheck(ctx context.Context, param map[string]interface{}) (netDetectStateCheck []*vpc.NetDetectIpState, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewCheckNetDetectStateRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "DetectDestinationIp" { + request.DetectDestinationIp = v.([]*string) + } + if k == "NextHopType" { + request.NextHopType = v.(*string) + } + if k == "NextHopDestination" { + request.NextHopDestination = v.(*string) + } + if k == "NetDetectId" { + request.NetDetectId = v.(*string) + } + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "SubnetId" { + request.SubnetId = v.(*string) + } + if k == "NetDetectName" { + request.NetDetectName = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().CheckNetDetectState(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + netDetectStateCheck = response.Response.NetDetectIpStateSet + + return +} + +func (me *VpcService) DescribeVpcNotifyRoutesById(ctx context.Context, routeTableId string, routeItemId string) (notifyRoute *vpc.Route, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeRouteTablesRequest() + request.RouteTableIds = []*string{&routeTableId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteTables(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.RouteTableSet) < 1 { + return + } + + for _, routeTable := range response.Response.RouteTableSet { + for _, route := range routeTable.RouteSet { + if *route.RouteItemId == routeItemId { + notifyRoute = route + break + } + } + } + return +} + +func (me *VpcService) DeleteVpcNotifyRoutesById(ctx context.Context, routeTableId string, routeItemId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewWithdrawNotifyRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteItemIds = []*string{&routeItemId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().WithdrawNotifyRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpnDefaultHealthCheckIp(ctx context.Context, param map[string]interface{}) (defaultHealthCheck *vpc.GenerateVpnConnectionDefaultHealthCheckIpResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewGenerateVpnConnectionDefaultHealthCheckIpRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpnGatewayId" { + request.VpnGatewayId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().GenerateVpnConnectionDefaultHealthCheckIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + defaultHealthCheck = response.Response + + return +} +func (me *VpcService) DescribeVpcPeerConnectManagerById(ctx context.Context, peeringConnectionId string) (PeerConnectManager *vpc.PeerConnection, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcPeeringConnectionsRequest() + request.PeeringConnectionIds = []*string{&peeringConnectionId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcPeeringConnections(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.PeerConnectionSet) < 1 { + return + } + + PeerConnectManager = response.Response.PeerConnectionSet[0] + return +} +func (me *VpcService) DeleteVpcPeerConnectManagerById(ctx context.Context, peeringConnectionId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcPeeringConnectionRequest() + request.PeeringConnectionId = &peeringConnectionId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcPeeringConnection(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteVpcPeerConnectAccecptOrRejectById(ctx context.Context, peeringConnectionId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewRejectVpcPeeringConnectionRequest() + request.PeeringConnectionId = &peeringConnectionId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().RejectVpcPeeringConnection(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/data_source_tc_postgresql_backup_download_urls.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_backup_download_urls.go similarity index 87% rename from tencentcloud/data_source_tc_postgresql_backup_download_urls.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_backup_download_urls.go index 1798a6c9df..42d08e9c4d 100644 --- a/tencentcloud/data_source_tc_postgresql_backup_download_urls.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_backup_download_urls.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlBackupDownloadUrls() *schema.Resource { +func DataSourceTencentCloudPostgresqlBackupDownloadUrls() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlBackupDownloadUrlsRead, Schema: map[string]*schema.Schema{ @@ -95,13 +98,13 @@ func dataSourceTencentCloudPostgresqlBackupDownloadUrls() *schema.Resource { } func dataSourceTencentCloudPostgresqlBackupDownloadUrlsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_backup_download_urls.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_backup_download_urls.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var id string - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("db_instance_id"); ok { @@ -143,13 +146,13 @@ func dataSourceTencentCloudPostgresqlBackupDownloadUrlsRead(d *schema.ResourceDa paramMap["BackupDownloadRestriction"] = &backupDownloadRestriction } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var backupDownloadURL *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlBackupDownloadUrlsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } backupDownloadURL = result return nil @@ -165,7 +168,7 @@ func dataSourceTencentCloudPostgresqlBackupDownloadUrlsRead(d *schema.ResourceDa d.SetId(helper.DataResourceIdHash(id)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), backupDownloadURL); e != nil { + if e := tccommon.WriteToFile(output.(string), backupDownloadURL); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_backup_download_urls_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_backup_download_urls_test.go similarity index 85% rename from tencentcloud/data_source_tc_postgresql_backup_download_urls_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_backup_download_urls_test.go index 2ca5aa01ee..0addd23ec9 100644 --- a/tencentcloud/data_source_tc_postgresql_backup_download_urls_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_backup_download_urls_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -14,19 +16,19 @@ func TestAccTencentCloudPostgresqlBackupDownloadUrlsDataSource_basic(t *testing. resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, // Config: fmt.Sprintf(testAccPostgresqlBackupDownloadUrlsDataSource, startTime, endTime), Config: testAccPostgresqlBackupDownloadUrlsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_backup_download_urls.backup_download_urls"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_backup_download_urls.backup_download_urls"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_backup_download_urls.backup_download_urls", "db_instance_id"), resource.TestCheckResourceAttr("data.tencentcloud_postgresql_backup_download_urls.backup_download_urls", "backup_type", "LogBackup"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_backup_download_urls.backup_download_urls", "backup_id"), @@ -44,7 +46,7 @@ func TestAccTencentCloudPostgresqlBackupDownloadUrlsDataSource_basic(t *testing. }) } -const testAccPostgresqlBackupDownloadUrlsDataSource = OperationPresetPGSQL + defaultVpcSubnets + ` +const testAccPostgresqlBackupDownloadUrlsDataSource = tcacctest.OperationPresetPGSQL + tcacctest.DefaultVpcSubnets + ` data "tencentcloud_postgresql_log_backups" "log_backups" { min_finish_time = "" max_finish_time = "" diff --git a/tencentcloud/data_source_tc_postgresql_base_backups.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_base_backups.go similarity index 90% rename from tencentcloud/data_source_tc_postgresql_base_backups.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_base_backups.go index e10b3d01c1..c6020cf3c9 100644 --- a/tencentcloud/data_source_tc_postgresql_base_backups.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_base_backups.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlBaseBackups() *schema.Resource { +func DataSourceTencentCloudPostgresqlBaseBackups() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlBaseBackupsRead, Schema: map[string]*schema.Schema{ @@ -130,12 +133,12 @@ func dataSourceTencentCloudPostgresqlBaseBackups() *schema.Resource { } func dataSourceTencentCloudPostgresqlBaseBackupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_base_backups.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_base_backups.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("min_finish_time"); ok { @@ -174,14 +177,14 @@ func dataSourceTencentCloudPostgresqlBaseBackupsRead(d *schema.ResourceData, met paramMap["OrderByType"] = helper.String(v.(string)) } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var baseBackupSet []*postgresql.BaseBackup - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlBaseBackupsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } baseBackupSet = result return nil @@ -247,7 +250,7 @@ func dataSourceTencentCloudPostgresqlBaseBackupsRead(d *schema.ResourceData, met d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_base_backups_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_base_backups_test.go similarity index 89% rename from tencentcloud/data_source_tc_postgresql_base_backups_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_base_backups_test.go index 8c5218d461..2796e593e8 100644 --- a/tencentcloud/data_source_tc_postgresql_base_backups_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_base_backups_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package postgresql_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,19 +19,19 @@ func TestAccTencentCloudPostgresqlBaseBackupsDataSource_basic(t *testing.T) { endTime := time.Now().AddDate(0, 0, 1).In(loc).Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) - testAccStepSetRegion(t, "ap-chengdu") + tcacctest.AccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-chengdu") }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccPostgresqlBaseBackupsDataSource_bytime, startTime, endTime), PreConfig: func() { - testAccStepSetRegion(t, "ap-chengdu") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-chengdu") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccPostgresqlBaseBackupsObject), + tcacctest.AccCheckTencentCloudDataSourceID(testAccPostgresqlBaseBackupsObject), resource.TestCheckResourceAttr(testAccPostgresqlBaseBackupsObject, "min_finish_time", startTime), resource.TestCheckResourceAttr(testAccPostgresqlBaseBackupsObject, "max_finish_time", endTime), resource.TestCheckResourceAttr(testAccPostgresqlBaseBackupsObject, "order_by", "StartTime"), @@ -50,11 +52,11 @@ func TestAccTencentCloudPostgresqlBaseBackupsDataSource_basic(t *testing.T) { { Config: testAccPostgresqlBaseBackupsDataSource_byMasterId, PreConfig: func() { - testAccStepSetRegion(t, "ap-chengdu") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-chengdu") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccPostgresqlBaseBackupsObject), + tcacctest.AccCheckTencentCloudDataSourceID(testAccPostgresqlBaseBackupsObject), resource.TestCheckResourceAttr(testAccPostgresqlBaseBackupsObject, "filters.0.name", "db-instance-id"), resource.TestCheckResourceAttrSet(testAccPostgresqlBaseBackupsObject, "filters.0.values.#"), resource.TestCheckResourceAttr(testAccPostgresqlBaseBackupsObject, "order_by", "Size"), @@ -75,11 +77,11 @@ func TestAccTencentCloudPostgresqlBaseBackupsDataSource_basic(t *testing.T) { { Config: testAccPostgresqlBaseBackupsDataSource_byBackupId, PreConfig: func() { - testAccStepSetRegion(t, "ap-chengdu") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-chengdu") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccPostgresqlBaseBackupsObject), + tcacctest.AccCheckTencentCloudDataSourceID(testAccPostgresqlBaseBackupsObject), resource.TestCheckResourceAttr(testAccPostgresqlBaseBackupsObject, "filters.0.name", "base-backup-id"), resource.TestCheckResourceAttrSet(testAccPostgresqlBaseBackupsObject, "filters.0.values.#"), resource.TestCheckResourceAttr(testAccPostgresqlBaseBackupsObject, "order_by", "Size"), diff --git a/tencentcloud/data_source_tc_postgresql_db_instance_classes.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_classes.go similarity index 85% rename from tencentcloud/data_source_tc_postgresql_db_instance_classes.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_classes.go index 20ac716e88..68efeefab7 100644 --- a/tencentcloud/data_source_tc_postgresql_db_instance_classes.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_classes.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlDbInstanceClasses() *schema.Resource { +func DataSourceTencentCloudPostgresqlDbInstanceClasses() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlDbInstanceClassesRead, Schema: map[string]*schema.Schema{ @@ -81,12 +84,12 @@ func dataSourceTencentCloudPostgresqlDbInstanceClasses() *schema.Resource { } func dataSourceTencentCloudPostgresqlDbInstanceClassesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_db_instance_classes.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_db_instance_classes.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("zone"); ok { @@ -101,14 +104,14 @@ func dataSourceTencentCloudPostgresqlDbInstanceClassesRead(d *schema.ResourceDat paramMap["DBMajorVersion"] = helper.String(v.(string)) } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var classInfoSet []*postgresql.ClassInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlDbInstanceClassesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } classInfoSet = result return nil @@ -158,7 +161,7 @@ func dataSourceTencentCloudPostgresqlDbInstanceClassesRead(d *schema.ResourceDat d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_db_instance_classes_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_classes_test.go similarity index 82% rename from tencentcloud/data_source_tc_postgresql_db_instance_classes_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_classes_test.go index 8a3fb75058..457067cc56 100644 --- a/tencentcloud/data_source_tc_postgresql_db_instance_classes_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_classes_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,18 +12,18 @@ func TestAccTencentCloudPostgresqlDbInstanceClassesDataSource_basic(t *testing.T // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlDbInstanceClassesDataSource, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_db_instance_classes.db_instance_classes"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_db_instance_classes.db_instance_classes"), resource.TestCheckResourceAttr("data.tencentcloud_postgresql_db_instance_classes.db_instance_classes", "zone", "ap-guangzhou-7"), resource.TestCheckResourceAttr("data.tencentcloud_postgresql_db_instance_classes.db_instance_classes", "db_engine", "postgresql"), resource.TestCheckResourceAttr("data.tencentcloud_postgresql_db_instance_classes.db_instance_classes", "db_major_version", "13"), diff --git a/tencentcloud/data_source_tc_postgresql_db_instance_versions.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_versions.go similarity index 84% rename from tencentcloud/data_source_tc_postgresql_db_instance_versions.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_versions.go index 4a5c040b98..4a00cf070b 100644 --- a/tencentcloud/data_source_tc_postgresql_db_instance_versions.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_versions.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlDbInstanceVersions() *schema.Resource { +func DataSourceTencentCloudPostgresqlDbInstanceVersions() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlDbInstanceVersionsRead, Schema: map[string]*schema.Schema{ @@ -74,21 +77,21 @@ func dataSourceTencentCloudPostgresqlDbInstanceVersions() *schema.Resource { } func dataSourceTencentCloudPostgresqlDbInstanceVersionsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_db_instance_versions.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_db_instance_versions.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var versionSet []*postgresql.Version - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlDbInstanceVersionsByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } versionSet = result return nil @@ -142,7 +145,7 @@ func dataSourceTencentCloudPostgresqlDbInstanceVersionsRead(d *schema.ResourceDa d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_db_instance_versions_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_versions_test.go similarity index 78% rename from tencentcloud/data_source_tc_postgresql_db_instance_versions_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_versions_test.go index 08f015f455..81969bd85c 100644 --- a/tencentcloud/data_source_tc_postgresql_db_instance_versions_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_db_instance_versions_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,19 +12,19 @@ func TestAccTencentCloudPostgresqlDbInstanceVersionsDataSource_basic(t *testing. // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlDbInstanceVersionsDataSource, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_db_instance_versions.db_instance_versions"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_db_instance_versions.db_instance_versions"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_db_instance_versions.db_instance_versions", "version_set.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_db_instance_versions.db_instance_versions", "version_set.0.db_engine"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_db_instance_versions.db_instance_versions", "version_set.0.db_version"), diff --git a/tencentcloud/data_source_tc_postgresql_default_parameters.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_default_parameters.go similarity index 95% rename from tencentcloud/data_source_tc_postgresql_default_parameters.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_default_parameters.go index 99b66d6cd1..7d8e716106 100644 --- a/tencentcloud/data_source_tc_postgresql_default_parameters.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_default_parameters.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlDefaultParameters() *schema.Resource { +func DataSourceTencentCloudPostgresqlDefaultParameters() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlDefaultParametersRead, Schema: map[string]*schema.Schema{ @@ -232,12 +235,12 @@ func dataSourceTencentCloudPostgresqlDefaultParameters() *schema.Resource { } func dataSourceTencentCloudPostgresqlDefaultParametersRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_default_parameters.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_default_parameters.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("db_major_version"); ok { @@ -248,14 +251,14 @@ func dataSourceTencentCloudPostgresqlDefaultParametersRead(d *schema.ResourceDat paramMap["DBEngine"] = helper.String(v.(string)) } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var paramInfoSet []*postgresql.ParamInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlDefaultParametersByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } paramInfoSet = result return nil @@ -431,7 +434,7 @@ func dataSourceTencentCloudPostgresqlDefaultParametersRead(d *schema.ResourceDat d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_default_parameters_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_default_parameters_test.go similarity index 91% rename from tencentcloud/data_source_tc_postgresql_default_parameters_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_default_parameters_test.go index 7e44c35b0c..d9c8bac849 100644 --- a/tencentcloud/data_source_tc_postgresql_default_parameters_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_default_parameters_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,19 +12,19 @@ func TestAccTencentCloudPostgresqlDefaultParametersDataSource_basic(t *testing.T // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlDefaultParametersDataSource, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_default_parameters.default_parameters"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_default_parameters.default_parameters"), resource.TestCheckResourceAttr("data.tencentcloud_postgresql_default_parameters.default_parameters", "db_major_version", "13"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_default_parameters.default_parameters", "db_engine"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_default_parameters.default_parameters", "param_info_set.#"), @@ -65,7 +67,7 @@ func TestAccTencentCloudPostgresqlDefaultParametersDataSource_basic(t *testing.T }) } -const testAccPostgresqlDefaultParametersDataSource = CommonPresetPGSQL + ` +const testAccPostgresqlDefaultParametersDataSource = tcacctest.CommonPresetPGSQL + ` data "tencentcloud_postgresql_default_parameters" "default_parameters" { db_major_version = "13" diff --git a/tencentcloud/data_source_tc_postgresql_instances.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_instances.go similarity index 92% rename from tencentcloud/data_source_tc_postgresql_instances.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_instances.go index af808326e3..5560894a8c 100644 --- a/tencentcloud/data_source_tc_postgresql_instances.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_instances.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlInstances() *schema.Resource { +func DataSourceTencentCloudPostgresqlInstances() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlInstanceRead, Schema: map[string]*schema.Schema{ @@ -147,12 +150,12 @@ func dataSourceTencentCloudPostgresqlInstances() *schema.Resource { } func dataSourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_instances.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_instances.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} filter := make([]*postgresql.Filter, 0) if v, ok := d.GetOk("name"); ok { @@ -176,7 +179,7 @@ func dataSourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta i ids := make([]string, 0, len(instanceList)) list := make([]map[string]interface{}, 0, len(instanceList)) - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} for _, v := range instanceList { @@ -245,7 +248,7 @@ func dataSourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta i output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_postgresql_instances_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_instances_test.go similarity index 79% rename from tencentcloud/data_source_tc_postgresql_instances_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_instances_test.go index ac40672c66..b853fd197c 100644 --- a/tencentcloud/data_source_tc_postgresql_instances_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_instances_test.go @@ -1,14 +1,18 @@ -package tencentcloud +package postgresql_test import ( "context" "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + svcclb "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/clb" ) var testDataPostgresqlInstancesName = "data.tencentcloud_postgresql_instances.id_test" @@ -17,17 +21,17 @@ func TestAccTencentCloudPostgresqlInstancesDataSource(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckLBDestroy, Steps: []resource.TestStep{ { Config: testAccTencentCloudDataPostgresqlInstanceBasic, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(testDataPostgresqlInstancesName, "instance_list.#", "1"), @@ -52,9 +56,7 @@ func testAccCheckLBDestroy(s *terraform.State) error { logId := tccommon.GetLogId(tccommon.ContextNil) ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - clbService := ClbService{ - client: testAccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn(), - } + clbService := svcclb.NewClbService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_lb" { continue @@ -68,7 +70,7 @@ func testAccCheckLBDestroy(s *terraform.State) error { return nil } -const testAccTencentCloudDataPostgresqlInstanceBasic = CommonPresetPGSQL + ` +const testAccTencentCloudDataPostgresqlInstanceBasic = tcacctest.CommonPresetPGSQL + ` data "tencentcloud_postgresql_instances" "id_test"{ id = local.pgsql_id diff --git a/tencentcloud/data_source_tc_postgresql_log_backups.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_log_backups.go similarity index 90% rename from tencentcloud/data_source_tc_postgresql_log_backups.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_log_backups.go index d92b2a01e2..6dee080445 100644 --- a/tencentcloud/data_source_tc_postgresql_log_backups.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_log_backups.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlLogBackups() *schema.Resource { +func DataSourceTencentCloudPostgresqlLogBackups() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlLogBackupsRead, Schema: map[string]*schema.Schema{ @@ -130,12 +133,12 @@ func dataSourceTencentCloudPostgresqlLogBackups() *schema.Resource { } func dataSourceTencentCloudPostgresqlLogBackupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_log_backups.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_log_backups.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("min_finish_time"); ok { @@ -174,14 +177,14 @@ func dataSourceTencentCloudPostgresqlLogBackupsRead(d *schema.ResourceData, meta paramMap["OrderByType"] = helper.String(v.(string)) } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var logBackupSet []*postgresql.LogBackup - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlLogBackupsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } logBackupSet = result return nil @@ -247,7 +250,7 @@ func dataSourceTencentCloudPostgresqlLogBackupsRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_log_backups_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_log_backups_test.go similarity index 85% rename from tencentcloud/data_source_tc_postgresql_log_backups_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_log_backups_test.go index 741955ba53..c74a493a73 100644 --- a/tencentcloud/data_source_tc_postgresql_log_backups_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_log_backups_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package postgresql_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,19 +17,19 @@ func TestAccTencentCloudPostgresqlLogBackupsDataSource_basic(t *testing.T) { endTime := time.Now().AddDate(0, 0, 1).In(loc).Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccPostgresqlLogBackupsDataSource, startTime, endTime), PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_log_backups.log_backups"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_log_backups.log_backups"), resource.TestCheckResourceAttr("data.tencentcloud_postgresql_log_backups.log_backups", "min_finish_time", startTime), resource.TestCheckResourceAttr("data.tencentcloud_postgresql_log_backups.log_backups", "max_finish_time", endTime), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_log_backups.log_backups", "filters.#"), @@ -52,7 +54,7 @@ func TestAccTencentCloudPostgresqlLogBackupsDataSource_basic(t *testing.T) { }) } -const testAccPostgresqlLogBackupsDataSource = OperationPresetPGSQL + ` +const testAccPostgresqlLogBackupsDataSource = tcacctest.OperationPresetPGSQL + ` data "tencentcloud_postgresql_log_backups" "log_backups" { min_finish_time = "%s" diff --git a/tencentcloud/data_source_tc_postgresql_parameter_templates.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_parameter_templates.go similarity index 87% rename from tencentcloud/data_source_tc_postgresql_parameter_templates.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_parameter_templates.go index 8d55a29b24..c10dcb24fa 100644 --- a/tencentcloud/data_source_tc_postgresql_parameter_templates.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_parameter_templates.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlParameterTemplates() *schema.Resource { +func DataSourceTencentCloudPostgresqlParameterTemplates() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlParameterTemplatesRead, Schema: map[string]*schema.Schema{ @@ -93,12 +96,12 @@ func dataSourceTencentCloudPostgresqlParameterTemplates() *schema.Resource { } func dataSourceTencentCloudPostgresqlParameterTemplatesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_parameter_templates.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_parameter_templates.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("filters"); ok { @@ -129,14 +132,14 @@ func dataSourceTencentCloudPostgresqlParameterTemplatesRead(d *schema.ResourceDa paramMap["OrderByType"] = helper.String(v.(string)) } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var parameterTemplateSet []*postgresql.ParameterTemplate - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlParameterTemplatesByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } parameterTemplateSet = result return nil @@ -181,7 +184,7 @@ func dataSourceTencentCloudPostgresqlParameterTemplatesRead(d *schema.ResourceDa d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_parameter_templates_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_parameter_templates_test.go similarity index 78% rename from tencentcloud/data_source_tc_postgresql_parameter_templates_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_parameter_templates_test.go index fdf8c6f42d..2a86c4c04a 100644 --- a/tencentcloud/data_source_tc_postgresql_parameter_templates_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_parameter_templates_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,19 +12,19 @@ func TestAccTencentCloudPostgresqlParameterTemplatesDataSource_basic(t *testing. // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlParameterTemplatesDataSource, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_parameter_templates.parameter_templates"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_parameter_templates.parameter_templates"), resource.TestCheckResourceAttr("data.tencentcloud_postgresql_parameter_templates.parameter_templates", "filters.#", "2"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_parameter_templates.parameter_templates", "list.#"), resource.TestCheckResourceAttr("data.tencentcloud_postgresql_parameter_templates.parameter_templates", "list.#", "1"), diff --git a/tencentcloud/data_source_tc_postgresql_readonly_groups.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_readonly_groups.go similarity index 98% rename from tencentcloud/data_source_tc_postgresql_readonly_groups.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_readonly_groups.go index 67710a01ef..d3b0587a10 100644 --- a/tencentcloud/data_source_tc_postgresql_readonly_groups.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_readonly_groups.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlReadonlyGroups() *schema.Resource { +func DataSourceTencentCloudPostgresqlReadonlyGroups() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlReadonlyGroupsRead, Schema: map[string]*schema.Schema{ @@ -561,12 +564,12 @@ func dataSourceTencentCloudPostgresqlReadonlyGroups() *schema.Resource { } func dataSourceTencentCloudPostgresqlReadonlyGroupsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_readonly_groups.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_readonly_groups.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("filters"); ok { @@ -597,14 +600,14 @@ func dataSourceTencentCloudPostgresqlReadonlyGroupsRead(d *schema.ResourceData, paramMap["OrderByType"] = helper.String(v.(string)) } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var readOnlyGroupList []*postgresql.ReadOnlyGroup - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlReadonlyGroupsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } readOnlyGroupList = result return nil @@ -1051,7 +1054,7 @@ func dataSourceTencentCloudPostgresqlReadonlyGroupsRead(d *schema.ResourceData, d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_readonly_groups_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_readonly_groups_test.go similarity index 88% rename from tencentcloud/data_source_tc_postgresql_readonly_groups_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_readonly_groups_test.go index a5de98bee2..f116f6a85e 100644 --- a/tencentcloud/data_source_tc_postgresql_readonly_groups_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_readonly_groups_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,15 +14,15 @@ func TestAccTencentCloudPostgresqlReadonlyGroupsDataSource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlReadonlyGroupsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccPostgresqlReadonlyGroupsObject), + tcacctest.AccCheckTencentCloudDataSourceID(testAccPostgresqlReadonlyGroupsObject), resource.TestCheckResourceAttr(testAccPostgresqlReadonlyGroupsObject, "order_by", "CreateTime"), resource.TestCheckResourceAttr(testAccPostgresqlReadonlyGroupsObject, "order_by_type", "asc"), resource.TestCheckResourceAttrSet(testAccPostgresqlReadonlyGroupsObject, "filters.#"), @@ -44,7 +46,7 @@ func TestAccTencentCloudPostgresqlReadonlyGroupsDataSource_basic(t *testing.T) { }) } -const testAccPostgresqlReadonlyGroupsDataSource = CommonPresetPGSQL + ` +const testAccPostgresqlReadonlyGroupsDataSource = tcacctest.CommonPresetPGSQL + ` resource "tencentcloud_postgresql_readonly_group" "group" { master_db_instance_id = local.pgsql_id diff --git a/tencentcloud/data_source_tc_postgresql_recovery_time.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_recovery_time.go similarity index 73% rename from tencentcloud/data_source_tc_postgresql_recovery_time.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_recovery_time.go index 0b1a9dd782..c805215585 100644 --- a/tencentcloud/data_source_tc_postgresql_recovery_time.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_recovery_time.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlRecoveryTime() *schema.Resource { +func DataSourceTencentCloudPostgresqlRecoveryTime() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlRecoveryTimeRead, Schema: map[string]*schema.Schema{ @@ -41,12 +44,12 @@ func dataSourceTencentCloudPostgresqlRecoveryTime() *schema.Resource { } func dataSourceTencentCloudPostgresqlRecoveryTimeRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_recovery_time.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_recovery_time.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( result *postgresql.DescribeAvailableRecoveryTimeResponseParams e error @@ -59,12 +62,12 @@ func dataSourceTencentCloudPostgresqlRecoveryTimeRead(d *schema.ResourceData, me dbInstanceId = v.(string) } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e = service.DescribePostgresqlRecoveryTimeByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -84,7 +87,7 @@ func dataSourceTencentCloudPostgresqlRecoveryTimeRead(d *schema.ResourceData, me output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_recovery_time_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_recovery_time_test.go similarity index 64% rename from tencentcloud/data_source_tc_postgresql_recovery_time_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_recovery_time_test.go index 74eb8fe64f..30e7cf6008 100644 --- a/tencentcloud/data_source_tc_postgresql_recovery_time_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_recovery_time_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,19 +14,19 @@ func TestAccTencentCloudPostgresqlRecoveryTimeDataSource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlRecoveryTimeDataSource, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID(testAccPostgresqlrecoverytimeObject), + tcacctest.AccCheckTencentCloudDataSourceID(testAccPostgresqlrecoverytimeObject), resource.TestCheckResourceAttrSet(testAccPostgresqlrecoverytimeObject, "db_instance_id"), resource.TestCheckResourceAttrSet(testAccPostgresqlrecoverytimeObject, "recovery_begin_time"), resource.TestCheckResourceAttrSet(testAccPostgresqlrecoverytimeObject, "recovery_end_time"), @@ -34,7 +36,7 @@ func TestAccTencentCloudPostgresqlRecoveryTimeDataSource_basic(t *testing.T) { }) } -const testAccPostgresqlRecoveryTimeDataSource = CommonPresetPGSQL + ` +const testAccPostgresqlRecoveryTimeDataSource = tcacctest.CommonPresetPGSQL + ` data "tencentcloud_postgresql_recovery_time" "recovery_time" { db_instance_id = local.pgsql_id diff --git a/tencentcloud/data_source_tc_postgresql_regions.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_regions.go similarity index 81% rename from tencentcloud/data_source_tc_postgresql_regions.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_regions.go index af78f31a8e..93b0955742 100644 --- a/tencentcloud/data_source_tc_postgresql_regions.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_regions.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlRegions() *schema.Resource { +func DataSourceTencentCloudPostgresqlRegions() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlRegionsRead, Schema: map[string]*schema.Schema{ @@ -58,21 +61,21 @@ func dataSourceTencentCloudPostgresqlRegions() *schema.Resource { } func dataSourceTencentCloudPostgresqlRegionsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_regions.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_regions.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var regionSet []*postgresql.RegionInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlRegionsByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } regionSet = result return nil @@ -118,7 +121,7 @@ func dataSourceTencentCloudPostgresqlRegionsRead(d *schema.ResourceData, meta in d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_regions_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_regions_test.go similarity index 72% rename from tencentcloud/data_source_tc_postgresql_regions_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_regions_test.go index 196eebec6f..82f7b01631 100644 --- a/tencentcloud/data_source_tc_postgresql_regions_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_regions_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,19 +12,19 @@ func TestAccTencentCloudPostgresqlRegionsDataSource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlRegionsDataSource, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_regions.regions"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_regions.regions"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_regions.regions", "region_set.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_regions.regions", "region_set.0.region"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_regions.regions", "region_set.0.region_name"), diff --git a/tencentcloud/data_source_tc_postgresql_specinfos.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_specinfos.go similarity index 86% rename from tencentcloud/data_source_tc_postgresql_specinfos.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_specinfos.go index 90129f8450..00dfc1785c 100644 --- a/tencentcloud/data_source_tc_postgresql_specinfos.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_specinfos.go @@ -1,13 +1,15 @@ -package tencentcloud +package postgresql import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func dataSourceTencentCloudPostgresqlSpecinfos() *schema.Resource { +func DataSourceTencentCloudPostgresqlSpecinfos() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlSpecinfosRead, Schema: map[string]*schema.Schema{ @@ -75,13 +77,13 @@ func dataSourceTencentCloudPostgresqlSpecinfos() *schema.Resource { } func dataSourceTencentCloudPostgresqlSpecinfosRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_specinfos.read")() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_specinfos.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := PostgresqlService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } zone := d.Get("availability_zone").(string) @@ -115,7 +117,7 @@ func dataSourceTencentCloudPostgresqlSpecinfosRead(d *schema.ResourceData, meta output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_postgresql_specinfos_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_specinfos_test.go similarity index 77% rename from tencentcloud/data_source_tc_postgresql_specinfos_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_specinfos_test.go index 43f15940cd..cba0def497 100644 --- a/tencentcloud/data_source_tc_postgresql_specinfos_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_specinfos_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,19 +12,19 @@ func TestAccTencentCloudPostgresqlSpecinfosDataSource(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccTencentCloudPostgresqlSpecinfosConfigBasic, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_specinfos.foo"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_specinfos.foo"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_specinfos.foo", "list.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_specinfos.foo", "list.0.id"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_specinfos.foo", "list.0.memory"), diff --git a/tencentcloud/data_source_tc_postgresql_xlogs.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_xlogs.go similarity index 87% rename from tencentcloud/data_source_tc_postgresql_xlogs.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_xlogs.go index 9116d21d83..1be8bb49d9 100644 --- a/tencentcloud/data_source_tc_postgresql_xlogs.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_xlogs.go @@ -1,16 +1,19 @@ -package tencentcloud +package postgresql import ( "context" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func datasourceTencentCloudPostgresqlXlogs() *schema.Resource { +func DataSourceTencentCloudPostgresqlXlogs() *schema.Resource { return &schema.Resource{ Read: datasourceTencentCloudPostgresqlXlogsRead, Importer: &schema.ResourceImporter{ @@ -81,12 +84,12 @@ func datasourceTencentCloudPostgresqlXlogs() *schema.Resource { } func datasourceTencentCloudPostgresqlXlogsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("datasource.tencentcloud_postgresql_xlogs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("datasource.tencentcloud_postgresql_xlogs.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - client := meta.(*TencentCloudClient).apiV3Conn + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() service := PostgresqlService{client} request := postgresql.NewDescribeDBXlogsRequest() @@ -141,7 +144,7 @@ func datasourceTencentCloudPostgresqlXlogsRead(d *schema.ResourceData, meta inte } if output, ok := d.GetOk("result_output_file"); ok { - return writeToFile(output.(string), list) + return tccommon.WriteToFile(output.(string), list) } return nil diff --git a/tencentcloud/data_source_tc_postgresql_xlogs_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_xlogs_test.go similarity index 74% rename from tencentcloud/data_source_tc_postgresql_xlogs_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_xlogs_test.go index b8191b0ad5..d6ba1d448d 100644 --- a/tencentcloud/data_source_tc_postgresql_xlogs_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_xlogs_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package postgresql_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,16 +17,16 @@ func TestAccTencentCloudPostgresqlXlogsDataSource(t *testing.T) { endTime := time.Now().Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourcePostgresqlXlogsBasic(startTime, endTime), PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.tencentcloud_postgresql_xlogs.foo", "start_time", startTime), @@ -48,5 +50,5 @@ data "tencentcloud_postgresql_xlogs" "foo" { data "tencentcloud_postgresql_xlogs" "bar" { instance_id = local.pgsql_id } -`, CommonPresetPGSQL, startTime, endTime) +`, tcacctest.CommonPresetPGSQL, startTime, endTime) } diff --git a/tencentcloud/data_source_tc_postgresql_zones.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_zones.go similarity index 82% rename from tencentcloud/data_source_tc_postgresql_zones.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_zones.go index 584f2e6aae..9393c69e10 100644 --- a/tencentcloud/data_source_tc_postgresql_zones.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_zones.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPostgresqlZones() *schema.Resource { +func DataSourceTencentCloudPostgresqlZones() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPostgresqlZonesRead, Schema: map[string]*schema.Schema{ @@ -66,21 +69,21 @@ func dataSourceTencentCloudPostgresqlZones() *schema.Resource { } func dataSourceTencentCloudPostgresqlZonesRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_postgresql_zones.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_postgresql_zones.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var zoneSet []*postgresql.ZoneInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePostgresqlZonesByFilter(ctx) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } zoneSet = result return nil @@ -130,7 +133,7 @@ func dataSourceTencentCloudPostgresqlZonesRead(d *schema.ResourceData, meta inte d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_postgresql_zones_test.go b/tencentcloud/services/postgresql/data_source_tc_postgresql_zones_test.go similarity index 74% rename from tencentcloud/data_source_tc_postgresql_zones_test.go rename to tencentcloud/services/postgresql/data_source_tc_postgresql_zones_test.go index 8f3923f35f..82674b5a0a 100644 --- a/tencentcloud/data_source_tc_postgresql_zones_test.go +++ b/tencentcloud/services/postgresql/data_source_tc_postgresql_zones_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,19 +12,19 @@ func TestAccTencentCloudPostgresqlZonesDataSource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlZonesDataSource, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_zones.zones"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_postgresql_zones.zones"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_zones.zones", "zone_set.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_zones.zones", "zone_set.0.zone"), resource.TestCheckResourceAttrSet("data.tencentcloud_postgresql_zones.zones", "zone_set.0.zone_name"), diff --git a/tencentcloud/services/postgresql/extension_postgresql.go b/tencentcloud/services/postgresql/extension_postgresql.go new file mode 100644 index 0000000000..8f914ccb33 --- /dev/null +++ b/tencentcloud/services/postgresql/extension_postgresql.go @@ -0,0 +1,57 @@ +package postgresql + +const ( + POSTGRESQL_PAYTYPE_PREPAID = "prepaid" + POSTGRESQL_PAYTYPE_POSTPAID = "postpaid" +) + +const ( + COMMON_PAYTYPE_PREPAID = "PREPAID" + COMMON_PAYTYPE_POSTPAID = "POSTPAID_BY_HOUR" +) + +var POSTGRESQL_PAYTYPE = []string{COMMON_PAYTYPE_POSTPAID} + +const ( + POSTGRESQL_DB_VERSION_9_3_5 = "9.3.5" + POSTGRESQL_DB_VERSION_9_5_4 = "9.5.4" + POSTGRESQL_DB_VERSION_10_4 = "10.4" +) + +const ( + POSTGRESQL_KERNEL_UPGRADE_IMMEDIATELY = 0 + POSTGRESQL_KERNEL_UPGRADE_SPECIFIED_TIME = 1 + POSTGRESQL_KERNEL_UPGRADE_MAINTAIN_WINDOW = 2 +) + +var POSTSQL_DB_VERSION = []string{POSTGRESQL_DB_VERSION_9_3_5, POSTGRESQL_DB_VERSION_9_5_4, POSTGRESQL_DB_VERSION_10_4} + +const ( + POSTGRESQL_DB_CHARSET_UTF8 = "UTF8" + POSTGRESQL_DB_CHARSET_LATIN1 = "LATIN1" +) + +var POSTGRESQL_DB_CHARSET = []string{POSTGRESQL_DB_CHARSET_UTF8, POSTGRESQL_DB_CHARSET_LATIN1} + +const ( + POSTGRESQL_STAUTS_RUNNING = "running" + POSTGRESQL_STAUTS_ISOLATED = "isolated" +) + +var POSTGRESQL_RETRYABLE_STATUS = []string{ + "initing", + "expanding", + "switching", + // deployment changing not exposed at response struct but actually exists + "deployment changing", +} + +const ( + SYNC_MODE_SEMI = "Semi-sync" + SYNC_MODE_ASYNC = "Async" +) + +var SYNC_MODE = []string{ + SYNC_MODE_SEMI, + SYNC_MODE_ASYNC, +} diff --git a/tencentcloud/services/postgresql/extension_redis.go b/tencentcloud/services/postgresql/extension_redis.go new file mode 100644 index 0000000000..959fcf7084 --- /dev/null +++ b/tencentcloud/services/postgresql/extension_redis.go @@ -0,0 +1,95 @@ +package postgresql + +// redis version https://cloud.tencent.com/document/api/239/20022#ProductConf +const ( + REDIS_VERSION_MASTER_SLAVE_REDIS = 2 + REDIS_VERSION_MASTER_SLAVE_CKV = 3 + REDIS_VERSION_CLUSTER_CKV = 4 + REDIS_VERSION_STANDALONE_REDIS = 5 + REDIS_VERSION_MASTER_SLAVE_REDIS4 = 6 + REDIS_VERSION_CLUSTER_REDIS = 7 + REDIS_VERSION_MASTER_SLAVE_REDIS5 = 8 + REDIS_VERSION_CLUSTER_REDIS5 = 9 +) + +var REDIS_NAMES = map[int64]string{ + REDIS_VERSION_MASTER_SLAVE_REDIS: "master_slave_redis", + REDIS_VERSION_MASTER_SLAVE_CKV: "master_slave_ckv", + REDIS_VERSION_CLUSTER_REDIS: "cluster_redis", + REDIS_VERSION_CLUSTER_CKV: "cluster_ckv", + REDIS_VERSION_STANDALONE_REDIS: "standalone_redis", + REDIS_VERSION_MASTER_SLAVE_REDIS4: "master_slave_redis4.0", + REDIS_VERSION_MASTER_SLAVE_REDIS5: "master_slave_redis5.0", + REDIS_VERSION_CLUSTER_REDIS5: "cluster_redis5.0", +} + +// redis status https://cloud.tencent.com/document/product/239/20018 +const ( + REDIS_STATUS_INIT = 0 + REDIS_STATUS_PROCESSING = 1 + REDIS_STATUS_ONLINE = 2 + REDIS_STATUS_ISOLATE = -2 + REDIS_STATUS_TODELETE = -3 +) + +var REDIS_STATUS = map[int64]string{ + REDIS_STATUS_INIT: "init", + REDIS_STATUS_PROCESSING: "processing", + REDIS_STATUS_ONLINE: "online", + REDIS_STATUS_ISOLATE: "isolate", + REDIS_STATUS_TODELETE: "todelete", +} + +/* +https://cloud.tencent.com/document/api/239/20022#TradeDealDetail +Order status +1: unpaid +2: paid, not shipped +3: in shipment +4: successfully +5: shipped failed +6: refunded +7: closed order +8: expired +9: order no longer valid +10: product no longer valid +11: payment refused +12: in payment +*/ +const ( + REDIS_ORDER_SUCCESS_DELIVERY = 4 + REDIS_ORDER_PAYMENT = 12 +) + +// https://cloud.tencent.com/document/api/239/30601 +const ( + REDIS_TASK_PREPARING = "preparing" + REDIS_TASK_RUNNING = "running" + REDIS_TASK_SUCCEED = "succeed" + REDIS_TASK_FAILED = "failed" + REDIS_TASK_ERROR = "error" +) + +// sdk redis not found error +const RedisInstanceNotFound = "ResourceNotFound.InstanceNotExists" + +const ( + REDIS_CHARGE_TYPE_POSTPAID = "POSTPAID" + REDIS_CHARGE_TYPE_PREPAID = "PREPAID" +) + +var REDIS_CHARGE_TYPE_ID = map[string]int64{ + REDIS_CHARGE_TYPE_POSTPAID: 0, + REDIS_CHARGE_TYPE_PREPAID: 1, +} + +var REDIS_CHARGE_TYPE_NAME = map[int64]string{ + 0: REDIS_CHARGE_TYPE_POSTPAID, + 1: REDIS_CHARGE_TYPE_PREPAID, +} + +var REDIS_PREPAID_PERIOD = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36} + +var REDIS_MODIFY_NETWORK_CONFIG = []string{"changeVip", "changeVpc", "changeBaseToVpc", "changeVPort"} + +var REDIS_RECYCLE_TIME = []int{0, 1, 2, 3, 7, 15} diff --git a/tencentcloud/services/postgresql/extension_tags.go b/tencentcloud/services/postgresql/extension_tags.go new file mode 100644 index 0000000000..6260ebb0fb --- /dev/null +++ b/tencentcloud/services/postgresql/extension_tags.go @@ -0,0 +1,3 @@ +package postgresql + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/services/postgresql/extension_vpc.go b/tencentcloud/services/postgresql/extension_vpc.go new file mode 100644 index 0000000000..8fa91d7c75 --- /dev/null +++ b/tencentcloud/services/postgresql/extension_vpc.go @@ -0,0 +1,327 @@ +package postgresql + +/* +all gate way types +https://cloud.tencent.com/document/api/215/15824#Route +*/ +const GATE_WAY_TYPE_CVM = "CVM" +const GATE_WAY_TYPE_VPN = "VPN" +const GATE_WAY_TYPE_DIRECTCONNECT = "DIRECTCONNECT" +const GATE_WAY_TYPE_PEERCONNECTION = "PEERCONNECTION" +const GATE_WAY_TYPE_SSLVPN = "SSLVPN" +const GATE_WAY_TYPE_HAVIP = "HAVIP" +const GATE_WAY_TYPE_NAT = "NAT" +const GATE_WAY_TYPE_NORMAL_CVM = "NORMAL_CVM" +const GATE_WAY_TYPE_EIP = "EIP" +const GATE_WAY_TYPE_CCN = "CCN" +const GATE_WAY_TYPE_LOCAL_GATEWAY = "LOCAL_GATEWAY" + +var ALL_GATE_WAY_TYPES = []string{ + GATE_WAY_TYPE_CVM, + GATE_WAY_TYPE_VPN, + GATE_WAY_TYPE_DIRECTCONNECT, + GATE_WAY_TYPE_PEERCONNECTION, + GATE_WAY_TYPE_SSLVPN, + GATE_WAY_TYPE_HAVIP, + GATE_WAY_TYPE_NAT, + GATE_WAY_TYPE_NORMAL_CVM, + GATE_WAY_TYPE_EIP, + GATE_WAY_TYPE_CCN, + GATE_WAY_TYPE_LOCAL_GATEWAY, +} + +const VPC_SERVICE_TYPE = "vpc" + +/* +EIP +*/ +const ( + EIP_STATUS_CREATING = "CREATING" + EIP_STATUS_BINDING = "BINDING" + EIP_STATUS_BIND = "BIND" + EIP_STATUS_UNBINDING = "UNBINDING" + EIP_STATUS_UNBIND = "UNBIND" + EIP_STATUS_OFFLINING = "OFFLINING" + EIP_STATUS_BIND_ENI = "BIND_ENI" + + EIP_TYPE_EIP = "EIP" + EIP_TYPE_ANYCAST = "AnycastEIP" + EIP_TYPE_HIGH_QUALITY = "HighQualityEIP" + EIP_TYPE_ANTI_DDOS = "AntiDDoSEIP" + + EIP_ANYCAST_ZONE_GLOBAL = "ANYCAST_ZONE_GLOBAL" + EIP_ANYCAST_ZONE_OVERSEAS = "ANYCAST_ZONE_OVERSEAS" + + EIP_INTERNET_PROVIDER_BGP = "BGP" + EIP_INTERNET_PROVIDER_CMCC = "CMCC" + EIP_INTERNET_PROVIDER_CTCC = "CTCC" + EIP_INTERNET_PROVIDER_CUCC = "CUCC" + + EIP_RESOURCE_TYPE = "eip" + + EIP_TASK_STATUS_SUCCESS = "SUCCESS" + EIP_TASK_STATUS_RUNNING = "RUNNING" + EIP_TASK_STATUS_FAILED = "FAILED" +) + +var EIP_INTERNET_PROVIDER = []string{ + EIP_INTERNET_PROVIDER_BGP, + EIP_INTERNET_PROVIDER_CMCC, + EIP_INTERNET_PROVIDER_CTCC, + EIP_INTERNET_PROVIDER_CUCC, +} + +var EIP_TYPE = []string{ + EIP_TYPE_EIP, + EIP_TYPE_ANYCAST, + EIP_TYPE_HIGH_QUALITY, + EIP_TYPE_ANTI_DDOS, +} + +var EIP_ANYCAST_ZONE = []string{ + EIP_ANYCAST_ZONE_GLOBAL, + EIP_ANYCAST_ZONE_OVERSEAS, +} + +var EIP_AVAILABLE_PERIOD = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36} + +// ENI +const ( + ENI_DESCRIBE_LIMIT = 100 +) + +const ( + ENI_STATE_PENDING = "PENDING" + ENI_STATE_AVAILABLE = "AVAILABLE" + ENI_STATE_ATTACHING = "ATTACHING" + ENI_STATE_DETACHING = "DETACHING" + ENI_STATE_DELETING = "DELETING" +) + +const ( + ENI_IP_PENDING = "PENDING" + ENI_IP_AVAILABLE = "AVAILABLE" + ENI_IP_ATTACHING = "ATTACHING" + ENI_IP_DETACHING = "DETACHING" + ENI_IP_DELETING = "DELETING" +) + +/* +NAT +*/ + +const ( + NAT_DESCRIBE_LIMIT = 100 + NAT_EIP_MAX_LIMIT = 10 +) + +const ( + NAT_FAILED_STATE = "FAILED" +) + +const ( + NAT_GATEWAY_TYPE_SUBNET = "SUBNET" + NAT_GATEWAY_TYPE_NETWORK_INTERFACE = "NETWORKINTERFACE" +) + +/* +VPN +*/ + +const ( + VPN_DESCRIBE_LIMIT = 100 +) + +const ( + VPN_TASK_STATUS_SUCCESS = "SUCCESS" + VPN_TASK_STATUS_RUNNING = "RUNNING" + VPN_TASK_STATUS_FAILED = "FAILED" +) + +const ( + VPN_STATE_PENDING = "PENDING" + VPN_STATE_DELETING = "DELETING" + VPN_STATE_AVAILABLE = "AVAILABLE" +) + +var VPN_STATE = []string{ + VPN_STATE_PENDING, + VPN_STATE_DELETING, + VPN_STATE_AVAILABLE, +} + +const ( + VPN_PERIOD_PREPAID_RENEW_FLAG_AUTO_NOTIFY = "NOTIFY_AND_AUTO_RENEW" + VPN_PERIOD_PREPAID_RENEW_FLAG_NOT = "NOTIFY_AND_MANUAL_RENEW" +) + +var VPN_PERIOD_PREPAID_RENEW_FLAG = []string{ + VPN_PERIOD_PREPAID_RENEW_FLAG_AUTO_NOTIFY, + VPN_PERIOD_PREPAID_RENEW_FLAG_NOT, +} + +const ( + VPN_CHARGE_TYPE_PREPAID = "PREPAID" + VPN_CHARGE_TYPE_POSTPAID_BY_HOUR = "POSTPAID_BY_HOUR" +) + +var VPN_CHARGE_TYPE = []string{ + VPN_CHARGE_TYPE_PREPAID, + VPN_CHARGE_TYPE_POSTPAID_BY_HOUR, +} + +const ( + VPN_PURCHASE_PLAN_PRE_POST = "PREPAID_TO_POSTPAID" +) + +var VPN_PURCHASE_PLAN = []string{ + VPN_PURCHASE_PLAN_PRE_POST, +} + +const ( + VPN_RESTRICT_STATE_NORMAL = "NORMAL" + VPN_RESTRICT_STATE_ISOLATE = "PRETECIVELY_ISOLATED" +) + +var VPN_RESTRICT_STATE = []string{ + VPN_RESTRICT_STATE_NORMAL, + VPN_RESTRICT_STATE_ISOLATE, +} + +const ( + VPN_IKE_PROPO_ENCRY_ALGORITHM_3DESCBC = "3DES-CBC" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC128 = "AES-CBC-128" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC192 = "AES-CBS-192`" + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC256 = "AES-CBC-256" + VPN_IKE_PROPO_ENCRY_ALGORITHM_DESCBC = "DES-CBC" +) + +var VPN_IKE_PROPO_ENCRY_ALGORITHM = []string{ + VPN_IKE_PROPO_ENCRY_ALGORITHM_3DESCBC, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC128, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC192, + VPN_IKE_PROPO_ENCRY_ALGORITHM_AESCBC256, + VPN_IKE_PROPO_ENCRY_ALGORITHM_DESCBC, +} + +const ( + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA = "SHA" + VPN_IKE_PROPO_AUTHEN_ALGORITHM_MD5 = "MD5" + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA256 = "SHA-256" +) + +var VPN_IKE_PROPO_AUTHEN_ALGORITHM = []string{ + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA, + VPN_IKE_PROPO_AUTHEN_ALGORITHM_MD5, + VPN_IKE_PROPO_AUTHEN_ALGORITHM_SHA256, +} + +const ( + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA1 = "SHA1" + VPN_IPSEC_INTEGRITY_ALGORITHM_MD5 = "MD5" + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA256 = "SHA-256" +) + +var VPN_IPSEC_INTEGRITY_ALGORITHM = []string{ + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA1, + VPN_IPSEC_INTEGRITY_ALGORITHM_MD5, + VPN_IPSEC_INTEGRITY_ALGORITHM_SHA256, +} + +const ( + VPN_IKE_EXCHANGE_MODE_AGGRESSIVE = "AGGRESSIVE" + VPN_IKE_EXCHANGE_MODE_MAIN = "MAIN" +) + +var VPN_IKE_EXCHANGE_MODE = []string{ + VPN_IKE_EXCHANGE_MODE_AGGRESSIVE, + VPN_IKE_EXCHANGE_MODE_MAIN, +} + +const ( + VPN_IKE_IDENTITY_ADDRESS = "ADDRESS" + VPN_IKE_IDENTITY_FQDN = "FQDN" +) + +var VPN_IKE_IDENTITY = []string{ + VPN_IKE_IDENTITY_ADDRESS, + VPN_IKE_IDENTITY_FQDN, +} + +const ( + VPN_IKE_DH_GROUP_NAME_GROUP1 = "GROUP1" + VPN_IKE_DH_GROUP_NAME_GROUP2 = "GROUP2" + VPN_IKE_DH_GROUP_NAME_GROUP5 = "GROUP5" + VPN_IKE_DH_GROUP_NAME_GROUP14 = "GROUP14" + VPN_IKE_DH_GROUP_NAME_GROUP24 = "GROUP24" +) + +var VPN_IKE_DH_GROUP_NAME = []string{ + VPN_IKE_DH_GROUP_NAME_GROUP1, + VPN_IKE_DH_GROUP_NAME_GROUP2, + VPN_IKE_DH_GROUP_NAME_GROUP5, + VPN_IKE_DH_GROUP_NAME_GROUP14, + VPN_IKE_DH_GROUP_NAME_GROUP24, +} + +const ( + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP1 = "DH-GROUP1" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP2 = "DH-GROUP2" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP5 = "DH-GROUP5" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP14 = "DH-GROUP14" + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP24 = "DH-GROUP24" + VPN_IPSEC_PFS_DH_GROUP_NAME_NULL = "NULL" +) + +var VPN_IPSEC_PFS_DH_GROUP_NAME = []string{ + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP1, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP2, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP5, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP14, + VPN_IPSEC_PFS_DH_GROUP_NAME_GROUP24, + VPN_IPSEC_PFS_DH_GROUP_NAME_NULL, +} + +const ( + VPN_IPSEC_ENCRY_ALGORITHM_3DESCBC = "3DES-CBC" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC128 = "AES-CBC-128" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC192 = "AES-CBS-192`" + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC256 = "AES-CBC-256" + VPN_IPSEC_ENCRY_ALGORITHM_DESCBC = "DES-CBC" + VPN_IPSEC_ENCRY_ALGORITHM_NULL = "NULL" +) + +var VPN_IPSEC_ENCRY_ALGORITHM = []string{ + VPN_IPSEC_ENCRY_ALGORITHM_3DESCBC, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC128, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC192, + VPN_IPSEC_ENCRY_ALGORITHM_AESCBC256, + VPN_IPSEC_ENCRY_ALGORITHM_DESCBC, + VPN_IPSEC_ENCRY_ALGORITHM_NULL, +} + +/* +HAVIP +*/ + +const ( + HAVIP_DESCRIBE_LIMIT = 100 +) + +/* +COMMON +*/ +const ( + VPCNotFound = "ResourceNotFound" + VPCUnsupportedOperation = "UnsupportedOperation" +) + +const ( + DPD_ACTION_CLEAR = "clear" + DPD_ACTION_RESTART = "restart" +) + +var DPD_ACTIONS = []string{ + DPD_ACTION_CLEAR, + DPD_ACTION_RESTART, +} diff --git a/tencentcloud/resource_tc_postgresql_backup_download_restriction_config.go b/tencentcloud/services/postgresql/resource_tc_postgresql_backup_download_restriction_config.go similarity index 80% rename from tencentcloud/resource_tc_postgresql_backup_download_restriction_config.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_backup_download_restriction_config.go index 5342d90690..864771cc07 100644 --- a/tencentcloud/resource_tc_postgresql_backup_download_restriction_config.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_backup_download_restriction_config.go @@ -1,16 +1,19 @@ -package tencentcloud +package postgresql import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfig() *schema.Resource { +func ResourceTencentCloudPostgresqlBackupDownloadRestrictionConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigCreate, Read: resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigRead, @@ -60,8 +63,8 @@ func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfig() *schema.Res } func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_backup_download_restriction_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_backup_download_restriction_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var resType string if v, ok := d.GetOk("restriction_type"); ok { @@ -74,14 +77,14 @@ func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigCreate(d *sche } func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_backup_download_restriction_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_backup_download_restriction_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} resType := d.Id() @@ -120,10 +123,10 @@ func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigRead(d *schema } func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_backup_download_restriction_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_backup_download_restriction_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := postgresql.NewModifyBackupDownloadRestrictionRequest() @@ -172,10 +175,10 @@ func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigUpdate(d *sche } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyBackupDownloadRestriction(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyBackupDownloadRestriction(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -190,8 +193,8 @@ func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigUpdate(d *sche } func resourceTencentCloudPostgresqlBackupDownloadRestrictionConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_backup_download_restriction_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_backup_download_restriction_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_backup_download_restriction_config_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_backup_download_restriction_config_test.go similarity index 83% rename from tencentcloud/resource_tc_postgresql_backup_download_restriction_config_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_backup_download_restriction_config_test.go index 19fe41a6d6..38ef7af167 100644 --- a/tencentcloud/resource_tc_postgresql_backup_download_restriction_config_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_backup_download_restriction_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,16 +13,16 @@ const TestAccPostgresqlBackupDownloadRestrictionObject = "tencentcloud_postgresq func TestAccTencentCloudPostgresqlBackupDownloadRestrictionConfigResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlBackupDownloadRestrictionConfig_NONE, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(TestAccPostgresqlBackupDownloadRestrictionObject, "id"), @@ -39,16 +41,16 @@ func TestAccTencentCloudPostgresqlBackupDownloadRestrictionConfigResource_basic( func TestAccTencentCloudPostgresqlBackupDownloadRestrictionConfigResource_CUSTOMIZE(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlBackupDownloadRestrictionConfig_CUSTOMIZE_ALLOW, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(TestAccPostgresqlBackupDownloadRestrictionObject, "id"), @@ -62,8 +64,8 @@ func TestAccTencentCloudPostgresqlBackupDownloadRestrictionConfigResource_CUSTOM { Config: testAccPostgresqlBackupDownloadRestrictionConfig_CUSTOMIZE_DENY, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(TestAccPostgresqlBackupDownloadRestrictionObject, "id"), @@ -86,16 +88,16 @@ func TestAccTencentCloudPostgresqlBackupDownloadRestrictionConfigResource_CUSTOM func TestAccTencentCloudPostgresqlBackupDownloadRestrictionConfigResource_INTRANET(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlBackupDownloadRestrictionConfig_INTRANET, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(TestAccPostgresqlBackupDownloadRestrictionObject, "id"), @@ -119,7 +121,7 @@ resource "tencentcloud_postgresql_backup_download_restriction_config" "backup_do ` -const testAccPostgresqlBackupDownloadRestrictionConfig_CUSTOMIZE_ALLOW = defaultVpcVariable + ` +const testAccPostgresqlBackupDownloadRestrictionConfig_CUSTOMIZE_ALLOW = tcacctest.DefaultVpcVariable + ` resource "tencentcloud_vpc" "pg_vpc1" { name = var.instance_name cidr_block = var.vpc_cidr @@ -140,7 +142,7 @@ resource "tencentcloud_postgresql_backup_download_restriction_config" "backup_do ` -const testAccPostgresqlBackupDownloadRestrictionConfig_CUSTOMIZE_DENY = defaultVpcVariable + ` +const testAccPostgresqlBackupDownloadRestrictionConfig_CUSTOMIZE_DENY = tcacctest.DefaultVpcVariable + ` resource "tencentcloud_vpc" "pg_vpc1" { name = var.instance_name cidr_block = var.vpc_cidr diff --git a/tencentcloud/resource_tc_postgresql_backup_plan_config.go b/tencentcloud/services/postgresql/resource_tc_postgresql_backup_plan_config.go similarity index 80% rename from tencentcloud/resource_tc_postgresql_backup_plan_config.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_backup_plan_config.go index eedb3180be..88c75c9d0e 100644 --- a/tencentcloud/resource_tc_postgresql_backup_plan_config.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_backup_plan_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql import ( "context" @@ -6,13 +6,16 @@ import ( "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgres "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlBackupPlanConfig() *schema.Resource { +func ResourceTencentCloudPostgresqlBackupPlanConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlBackupPlanConfigCreate, Read: resourceTencentCloudPostgresqlBackupPlanConfigRead, @@ -59,8 +62,8 @@ func resourceTencentCloudPostgresqlBackupPlanConfig() *schema.Resource { } func resourceTencentCloudPostgresqlBackupPlanConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_backup_plan_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_backup_plan_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var dBInstanceId string if v, ok := d.GetOk("db_instance_id"); ok { @@ -73,14 +76,14 @@ func resourceTencentCloudPostgresqlBackupPlanConfigCreate(d *schema.ResourceData } func resourceTencentCloudPostgresqlBackupPlanConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_backup_plan_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_backup_plan_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} dBInstanceId := d.Id() @@ -123,10 +126,10 @@ func resourceTencentCloudPostgresqlBackupPlanConfigRead(d *schema.ResourceData, } func resourceTencentCloudPostgresqlBackupPlanConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_backup_plan_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_backup_plan_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgres.NewModifyBackupPlanRequest() @@ -168,10 +171,10 @@ func resourceTencentCloudPostgresqlBackupPlanConfigUpdate(d *schema.ResourceData } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyBackupPlan(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyBackupPlan(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -186,8 +189,8 @@ func resourceTencentCloudPostgresqlBackupPlanConfigUpdate(d *schema.ResourceData } func resourceTencentCloudPostgresqlBackupPlanConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_backup_plan_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_backup_plan_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_backup_plan_config_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_backup_plan_config_test.go similarity index 81% rename from tencentcloud/resource_tc_postgresql_backup_plan_config_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_backup_plan_config_test.go index 5a072f499b..f425109db0 100644 --- a/tencentcloud/resource_tc_postgresql_backup_plan_config_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_backup_plan_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,16 +14,16 @@ func TestAccTencentCloudPostgresqlBackupPlanConfigResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresBackupPlanConfig, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(testAccPostgresqlBackupPlanConfigObject, "id"), @@ -44,7 +46,7 @@ func TestAccTencentCloudPostgresqlBackupPlanConfigResource_basic(t *testing.T) { }) } -const testAccPostgresBackupPlanConfig = CommonPresetPGSQL + ` +const testAccPostgresBackupPlanConfig = tcacctest.CommonPresetPGSQL + ` resource "tencentcloud_postgresql_backup_plan_config" "backup_plan_config" { db_instance_id = local.pgsql_id diff --git a/tencentcloud/resource_tc_postgresql_base_backup.go b/tencentcloud/services/postgresql/resource_tc_postgresql_base_backup.go similarity index 67% rename from tencentcloud/resource_tc_postgresql_base_backup.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_base_backup.go index f0a46f6fff..2ec1a85680 100644 --- a/tencentcloud/resource_tc_postgresql_base_backup.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_base_backup.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlBaseBackup() *schema.Resource { +func ResourceTencentCloudPostgresqlBaseBackup() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlBaseBackupCreate, Read: resourceTencentCloudPostgresqlBaseBackupRead, @@ -48,10 +51,10 @@ func resourceTencentCloudPostgresqlBaseBackup() *schema.Resource { } func resourceTencentCloudPostgresqlBaseBackupCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_base_backup.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_base_backup.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewCreateBaseBackupRequest() @@ -64,10 +67,10 @@ func resourceTencentCloudPostgresqlBaseBackupCreate(d *schema.ResourceData, meta dBInstanceId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().CreateBaseBackup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().CreateBaseBackup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -81,12 +84,12 @@ func resourceTencentCloudPostgresqlBaseBackupCreate(d *schema.ResourceData, meta baseBackupId = *response.Response.BaseBackupId - d.SetId(strings.Join([]string{dBInstanceId, baseBackupId}, FILED_SP)) + d.SetId(strings.Join([]string{dBInstanceId, baseBackupId}, tccommon.FILED_SP)) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region resourceName := fmt.Sprintf("qcs::postgres:%s:uin/:dbInstanceId/%s", region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err @@ -97,16 +100,16 @@ func resourceTencentCloudPostgresqlBaseBackupCreate(d *schema.ResourceData, meta } func resourceTencentCloudPostgresqlBaseBackupRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_base_backup.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_base_backup.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -132,7 +135,7 @@ func resourceTencentCloudPostgresqlBaseBackupRead(d *schema.ResourceData, meta i _ = d.Set("new_expire_time", BaseBackup.ExpireTime) } - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "postgres", "dbInstanceId", tcClient.Region, d.Id()) if err != nil { @@ -144,14 +147,14 @@ func resourceTencentCloudPostgresqlBaseBackupRead(d *schema.ResourceData, meta i } func resourceTencentCloudPostgresqlBaseBackupUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_base_backup.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_base_backup.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := postgresql.NewModifyBaseBackupExpireTimeRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -175,10 +178,10 @@ func resourceTencentCloudPostgresqlBaseBackupUpdate(d *schema.ResourceData, meta } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyBaseBackupExpireTime(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyBaseBackupExpireTime(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -190,12 +193,12 @@ func resourceTencentCloudPostgresqlBaseBackupUpdate(d *schema.ResourceData, meta } if d.HasChange("tags") { - ctx := context.WithValue(context.TODO(), logIdKey, logId) - tcClient := meta.(*TencentCloudClient).apiV3Conn + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("postgres", "dbInstanceId", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("postgres", "dbInstanceId", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -205,14 +208,14 @@ func resourceTencentCloudPostgresqlBaseBackupUpdate(d *schema.ResourceData, meta } func resourceTencentCloudPostgresqlBaseBackupDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_base_backup.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_base_backup.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_postgresql_base_backup_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_base_backup_test.go similarity index 84% rename from tencentcloud/resource_tc_postgresql_base_backup_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_base_backup_test.go index 4ac2847413..f4cefb71d9 100644 --- a/tencentcloud/resource_tc_postgresql_base_backup_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_base_backup_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package postgresql_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -15,16 +17,16 @@ func TestAccTencentCloudPostgresqlBaseBackupResource_basic(t *testing.T) { newExpireTime := time.Now().AddDate(0, 0, +1).Format("2006-01-02 15:04:05") resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) - testAccStepSetRegion(t, "ap-chengdu") + tcacctest.AccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-chengdu") }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlBaseBackup, PreConfig: func() { - testAccStepSetRegion(t, "ap-chengdu") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-chengdu") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(testAccPostgresqlBaseBackupObject, "id"), @@ -35,8 +37,8 @@ func TestAccTencentCloudPostgresqlBaseBackupResource_basic(t *testing.T) { { Config: fmt.Sprintf(testAccPostgresqlBaseBackup_update, newExpireTime), PreConfig: func() { - testAccStepSetRegion(t, "ap-chengdu") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-chengdu") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(testAccPostgresqlBaseBackupObject, "id"), diff --git a/tencentcloud/resource_tc_postgresql_delete_log_backup_operation.go b/tencentcloud/services/postgresql/resource_tc_postgresql_delete_log_backup_operation.go similarity index 68% rename from tencentcloud/resource_tc_postgresql_delete_log_backup_operation.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_delete_log_backup_operation.go index fe41343755..922e6beb84 100644 --- a/tencentcloud/resource_tc_postgresql_delete_log_backup_operation.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_delete_log_backup_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package postgresql import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlDeleteLogBackupOperation() *schema.Resource { +func ResourceTencentCloudPostgresqlDeleteLogBackupOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlDeleteLogBackupOperationCreate, Read: resourceTencentCloudPostgresqlDeleteLogBackupOperationRead, @@ -34,10 +37,10 @@ func resourceTencentCloudPostgresqlDeleteLogBackupOperation() *schema.Resource { } func resourceTencentCloudPostgresqlDeleteLogBackupOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_delete_log_backup_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_delete_log_backup_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewDeleteLogBackupRequest() @@ -55,10 +58,10 @@ func resourceTencentCloudPostgresqlDeleteLogBackupOperationCreate(d *schema.Reso logBackupId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().DeleteLogBackup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().DeleteLogBackup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -69,21 +72,21 @@ func resourceTencentCloudPostgresqlDeleteLogBackupOperationCreate(d *schema.Reso return err } - d.SetId(strings.Join([]string{dBInstanceId, logBackupId}, FILED_SP)) + d.SetId(strings.Join([]string{dBInstanceId, logBackupId}, tccommon.FILED_SP)) return resourceTencentCloudPostgresqlDeleteLogBackupOperationRead(d, meta) } func resourceTencentCloudPostgresqlDeleteLogBackupOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_delete_log_backup_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_delete_log_backup_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPostgresqlDeleteLogBackupOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_delete_log_backup_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_delete_log_backup_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_delete_log_backup_operation_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_delete_log_backup_operation_test.go similarity index 73% rename from tencentcloud/resource_tc_postgresql_delete_log_backup_operation_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_delete_log_backup_operation_test.go index 641c5103e9..4294fdc04e 100644 --- a/tencentcloud/resource_tc_postgresql_delete_log_backup_operation_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_delete_log_backup_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,16 +12,16 @@ func TestAccTencentCloudNeedFixPostgresqlDeleteLogBackupOperationResource_basic( // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlDeleteLogBackupOperation, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_postgresql_delete_log_backup_operation.delete_log_backup_operation", "id"), @@ -31,7 +33,7 @@ func TestAccTencentCloudNeedFixPostgresqlDeleteLogBackupOperationResource_basic( }) } -const testAccPostgresqlDeleteLogBackupOperation = CommonPresetPGSQL + ` +const testAccPostgresqlDeleteLogBackupOperation = tcacctest.CommonPresetPGSQL + ` resource "tencentcloud_postgresql_delete_log_backup_operation" "delete_log_backup_operation" { db_instance_id = local.pgsql_id diff --git a/tencentcloud/resource_tc_postgresql_disisolate_db_instance_operation.go b/tencentcloud/services/postgresql/resource_tc_postgresql_disisolate_db_instance_operation.go similarity index 74% rename from tencentcloud/resource_tc_postgresql_disisolate_db_instance_operation.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_disisolate_db_instance_operation.go index e5c03a276d..a2de13a94f 100644 --- a/tencentcloud/resource_tc_postgresql_disisolate_db_instance_operation.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_disisolate_db_instance_operation.go @@ -1,17 +1,20 @@ -package tencentcloud +package postgresql import ( "log" "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlDisisolateDbInstanceOperation() *schema.Resource { +func ResourceTencentCloudPostgresqlDisisolateDbInstanceOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlDisisolateDbInstanceOperationCreate, Read: resourceTencentCloudPostgresqlDisisolateDbInstanceOperationRead, @@ -55,10 +58,10 @@ func resourceTencentCloudPostgresqlDisisolateDbInstanceOperation() *schema.Resou } func resourceTencentCloudPostgresqlDisisolateDbInstanceOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_disisolate_db_instance_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_disisolate_db_instance_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewDisIsolateDBInstancesRequest() @@ -95,10 +98,10 @@ func resourceTencentCloudPostgresqlDisisolateDbInstanceOperationCreate(d *schema } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().DisIsolateDBInstances(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().DisIsolateDBInstances(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -109,11 +112,11 @@ func resourceTencentCloudPostgresqlDisisolateDbInstanceOperationCreate(d *schema return err } - d.SetId(strings.Join(ids, FILED_SP)) + d.SetId(strings.Join(ids, tccommon.FILED_SP)) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"running"}, 10*readRetryTimeout, 10*time.Second, service.PostgresqlDbInstanceOperationStateRefreshFunc(firstInstanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"running"}, 10*tccommon.ReadRetryTimeout, 10*time.Second, service.PostgresqlDbInstanceOperationStateRefreshFunc(firstInstanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -123,15 +126,15 @@ func resourceTencentCloudPostgresqlDisisolateDbInstanceOperationCreate(d *schema } func resourceTencentCloudPostgresqlDisisolateDbInstanceOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_disisolate_db_instance_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_disisolate_db_instance_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPostgresqlDisisolateDbInstanceOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_disisolate_db_instance_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_disisolate_db_instance_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_instance.go b/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go similarity index 85% rename from tencentcloud/resource_tc_postgresql_instance.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_instance.go index 995fe85258..078a4e77af 100644 --- a/tencentcloud/resource_tc_postgresql_instance.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_instance.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql import ( "context" @@ -9,15 +9,18 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlInstance() *schema.Resource { +func ResourceTencentCloudPostgresqlInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlInstanceCreate, Read: resourceTencentCloudPostgresqlInstanceRead, @@ -31,7 +34,7 @@ func resourceTencentCloudPostgresqlInstance() *schema.Resource { "name": { Type: schema.TypeString, Required: true, - ValidateFunc: validateStringLengthInRange(1, 60), + ValidateFunc: tccommon.ValidateStringLengthInRange(1, 60), Description: "Name of the postgresql instance.", }, "charge_type": { @@ -160,7 +163,7 @@ func resourceTencentCloudPostgresqlInstance() *schema.Resource { Type: schema.TypeString, Required: true, Sensitive: true, - ValidateFunc: validateMysqlPassword, + ValidateFunc: tccommon.ValidateMysqlPassword, Description: "Password of root account. This parameter can be specified when you purchase master instances, but it should be ignored when you purchase read-only instances or disaster recovery instances.", }, "charset": { @@ -168,7 +171,7 @@ func resourceTencentCloudPostgresqlInstance() *schema.Resource { Optional: true, Default: POSTGRESQL_DB_CHARSET_UTF8, ForceNew: true, - ValidateFunc: validateAllowedStringValue(POSTGRESQL_DB_CHARSET), + ValidateFunc: tccommon.ValidateAllowedStringValue(POSTGRESQL_DB_CHARSET), Description: "Charset of the root account. Valid values are `UTF8`,`LATIN1`.", }, "need_support_tde": { @@ -299,12 +302,12 @@ func resourceTencentCloudPostgresqlInstance() *schema.Resource { } func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_instance.create")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_instance.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) //internal version: replace clientCreate begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} //internal version: replace clientCreate end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. var ( @@ -384,19 +387,19 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i } // get specCode with engine_version and memory - outErr = resource.Retry(readRetryTimeout*5, func() *resource.RetryError { + outErr = resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError { speccodes, inErr := postgresqlService.DescribeSpecinfos(ctx, zone) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } for _, info := range speccodes { - if !IsContains(allowVersion, *info.Version) { + if !tccommon.IsContains(allowVersion, *info.Version) { allowVersion = append(allowVersion, *info.Version) } if *info.Version == dbVersion { specVersion = *info.Version memoryString := fmt.Sprintf("%d", int(*info.Memory)/1024) - if !IsContains(allowMemory, memoryString) { + if !tccommon.IsContains(allowMemory, memoryString) { allowMemory = append(allowMemory, memoryString) } if int(*info.Memory)/1024 == memory { @@ -441,7 +444,7 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i } } - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { instanceId, inErr = postgresqlService.CreatePostgresqlInstance(ctx, name, dbVersion, @@ -470,7 +473,7 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i if inErr != nil { //internal version: replace bpass begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. //internal version: replace bpass end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -484,10 +487,10 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i //internal version: replace setTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. // check creation done - err := resource.Retry(20*readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(20*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, has, err := postgresqlService.DescribePostgresqlInstanceById(ctx, instanceId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if !has { @@ -517,10 +520,10 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i } if public_access_switch { - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.ModifyPublicService(ctx, true, instanceId) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -535,10 +538,10 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i return checkErr } // set name - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr := postgresqlService.ModifyPostgresqlInstanceName(ctx, instanceId, name) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -554,9 +557,9 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i //internal version: replace null begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} - resourceName := BuildTagResourceName("postgres", "DBInstanceId", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("postgres", "DBInstanceId", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err } @@ -573,10 +576,10 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i } if len(paramEntrys) != 0 { - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr := postgresqlService.ModifyPgParams(ctx, instanceId, paramEntrys) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -604,10 +607,10 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i if v, ok := plan["backup_period"].([]interface{}); ok && len(v) > 0 { request.BackupPeriod = helper.InterfacesStringsPoint(v) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { err := postgresqlService.ModifyBackupPlan(ctx, request) if err != nil { - return retryError(err, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) + return tccommon.RetryError(err, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) } return nil }) @@ -620,12 +623,12 @@ func resourceTencentCloudPostgresqlInstanceCreate(d *schema.ResourceData, meta i } func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_instance.update")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_instance.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) //internal version: replace clientUpdate begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} //internal version: replace clientUpdate end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. instanceId := d.Id() d.Partial(true) @@ -693,10 +696,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i request.AutoRenewFlag = helper.IntInt64(autoRenew) request.AutoVoucher = helper.IntInt64(autoVoucher) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyDBInstanceChargeType(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyDBInstanceChargeType(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -708,8 +711,8 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i } // wait unit charge type changing operation of instance done - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} - conf := BuildStateChangeConf([]string{}, []string{"running"}, 2*readRetryTimeout, time.Second, service.PostgresqlDBInstanceStateRefreshFunc(instanceId, []string{})) + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + conf := tccommon.BuildStateChangeConf([]string{}, []string{"running"}, 2*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlDBInstanceStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -752,10 +755,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i // ip assigned by system request.IsAssignVip = helper.Bool(false) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().CreateDBInstanceNetworkAccess(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().CreateDBInstanceNetworkAccess(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -766,9 +769,9 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i return err } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} // wait for new network enabled - conf := BuildStateChangeConf([]string{}, []string{"opened"}, 3*readRetryTimeout, time.Second, service.PostgresqlDBInstanceNetworkAccessStateRefreshFunc(instanceId, vpcNew, subnetNew, vipOld, "", []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"opened"}, 3*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlDBInstanceNetworkAccessStateRefreshFunc(instanceId, vpcNew, subnetNew, vipOld, "", []string{})) if object, e := conf.WaitForState(); e != nil { return e } else { @@ -778,7 +781,7 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i } // wait unit network changing operation of instance done - conf = BuildStateChangeConf([]string{}, []string{"running"}, 3*readRetryTimeout, time.Second, service.PostgresqlDBInstanceStateRefreshFunc(instanceId, []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"running"}, 3*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlDBInstanceStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -792,13 +795,13 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i } // wait for old network removed - conf = BuildStateChangeConf([]string{}, []string{"closed"}, 3*readRetryTimeout, time.Second, service.PostgresqlDBInstanceNetworkAccessStateRefreshFunc(instanceId, vpcOld, subnetOld, vipNew, vipOld, []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"closed"}, 3*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlDBInstanceNetworkAccessStateRefreshFunc(instanceId, vpcOld, subnetOld, vipNew, vipOld, []string{})) if _, e := conf.WaitForState(); e != nil { return e } // wait unit network changing operation of instance done - conf = BuildStateChangeConf([]string{}, []string{"running"}, 3*readRetryTimeout, time.Second, service.PostgresqlDBInstanceStateRefreshFunc(instanceId, []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"running"}, 3*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlDBInstanceStateRefreshFunc(instanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -810,10 +813,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i // update name if d.HasChange("name") { name := d.Get("name").(string) - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.ModifyPostgresqlInstanceName(ctx, instanceId, name) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -832,10 +835,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i if d.HasChange("memory") || d.HasChange("storage") { memory := d.Get("memory").(int) storage := d.Get("storage").(int) - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.UpgradePostgresqlInstance(ctx, instanceId, memory, storage) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -846,7 +849,7 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i _ = resource.Retry(time.Second*10, func() *resource.RetryError { instance, _, err := postgresqlService.DescribePostgresqlInstanceById(ctx, instanceId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if *instance.DBInstanceStatus == POSTGRESQL_STAUTS_RUNNING { return resource.RetryableError(fmt.Errorf("waiting for upgrade status change")) @@ -865,10 +868,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i // update project id if d.HasChange("project_id") { projectId := d.Get("project_id").(int) - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.ModifyPostgresqlInstanceProjectId(ctx, instanceId, projectId) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -890,10 +893,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i if v, ok := d.GetOkExists("public_access_switch"); ok { public_access_switch = v.(bool) } - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.ModifyPublicService(ctx, public_access_switch, instanceId) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -911,10 +914,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i // update root password if d.HasChange("root_password") { // to avoid other updating process conflicts with updating password, set the password updating with the last step, there is no way to figure out whether changing password is done - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.SetPostgresqlInstanceRootPassword(ctx, instanceId, d.Get("root_password").(string)) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -932,7 +935,7 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i if d.HasChange("security_groups") { // Only redis service support modify Generic DB instance security groups - service := RedisService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RedisService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ids := d.Get("security_groups").(*schema.Set).List() var sgIds []*string for _, id := range ids { @@ -990,9 +993,9 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i }) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { if err := postgresqlService.ModifyDBInstanceDeployment(ctx, request); err != nil { - return retryError(err, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) + return tccommon.RetryError(err, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) } return nil }) @@ -1001,12 +1004,12 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i return err } - err = resource.Retry(readRetryTimeout*10, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout*10, func() *resource.RetryError { instance, _, err := postgresqlService.DescribePostgresqlInstanceById(ctx, d.Id()) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } - if IsContains(POSTGRESQL_RETRYABLE_STATUS, *instance.DBInstanceStatus) { + if tccommon.IsContains(POSTGRESQL_RETRYABLE_STATUS, *instance.DBInstanceStatus) { return resource.RetryableError(fmt.Errorf("instance status is %s, retrying", *instance.DBInstanceStatus)) } return nil @@ -1035,8 +1038,8 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i switchTag := POSTGRESQL_KERNEL_UPGRADE_IMMEDIATELY upgradeRequest.SwitchTag = helper.IntUint64(switchTag) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().UpgradeDBInstanceKernelVersion(upgradeRequest) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().UpgradeDBInstanceKernelVersion(upgradeRequest) if e != nil { tcErr := e.(*sdkErrors.TencentCloudSDKError) @@ -1044,7 +1047,7 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i // upgrade version invalid. return resource.NonRetryableError(fmt.Errorf("Upgrade kernel version failed: %v", e.Error())) } - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, upgradeRequest.GetAction(), upgradeRequest.ToJsonString(), result.ToJsonString()) } @@ -1058,7 +1061,7 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i // only wait for immediately upgrade mode - conf := BuildStateChangeConf([]string{}, []string{"running", "isolated", "offline"}, 10*readRetryTimeout, time.Second, postgresqlService.PostgresqlUpgradeKernelVersionRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"running", "isolated", "offline"}, 10*tccommon.ReadRetryTimeout, time.Second, postgresqlService.PostgresqlUpgradeKernelVersionRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -1072,10 +1075,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{})) //internal version: replace null begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} //internal version: replace null end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. - resourceName := BuildTagResourceName("postgres", "DBInstanceId", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("postgres", "DBInstanceId", tcClient.Region, d.Id()) err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags) if err != nil { return err @@ -1102,10 +1105,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i return fmt.Errorf("Not support change params contact with data transparent encryption.") } if len(paramEntrys) != 0 { - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr := postgresqlService.ModifyPgParams(ctx, instanceId, paramEntrys) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -1122,10 +1125,10 @@ func resourceTencentCloudPostgresqlInstanceUpdate(d *schema.ResourceData, meta i } func resourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_instance.read")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_instance.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( instance *postgresql.DBInstance @@ -1134,17 +1137,17 @@ func resourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta int inErr error ) // Check if import - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} - outErr = resource.Retry(readRetryTimeout, func() *resource.RetryError { + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + outErr = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, has, inErr = postgresqlService.DescribePostgresqlInstanceById(ctx, d.Id()) if inErr != nil { ee, ok := inErr.(*sdkErrors.TencentCloudSDKError) if ok && (ee.GetCode() == "ResourceNotFound.InstanceNotFoundError" || ee.GetCode() == "InvalidParameter") { return nil } - return retryError(inErr) + return tccommon.RetryError(inErr) } - if instance != nil && IsContains(POSTGRESQL_RETRYABLE_STATUS, *instance.DBInstanceStatus) { + if instance != nil && tccommon.IsContains(POSTGRESQL_RETRYABLE_STATUS, *instance.DBInstanceStatus) { return resource.RetryableError(fmt.Errorf("instance %s is %s, retrying", *instance.DBInstanceId, *instance.DBInstanceStatus)) } return nil @@ -1213,7 +1216,7 @@ func resourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta int // security groups // Only redis service support modify Generic DB instance security groups - redisService := RedisService{client: meta.(*TencentCloudClient).apiV3Conn} + redisService := RedisService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} sg, err := redisService.DescribeDBSecurityGroups(ctx, "postgres", d.Id()) if err != nil { return err @@ -1293,7 +1296,7 @@ func resourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta int // ignore spec_code // qcs::postgres:ap-guangzhou:uin/123435236:DBInstanceId/postgres-xxx - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "postgres", "DBInstanceId", tcClient.Region, d.Id()) if err != nil { @@ -1347,14 +1350,14 @@ func resourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta int // pg params var parmas map[string]string - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { parmas, inErr = postgresqlService.DescribePgParams(ctx, d.Id()) if inErr != nil { ee, ok := inErr.(*sdkErrors.TencentCloudSDKError) if ok && ee.GetCode() == "ResourceNotFound.InstanceNotFoundError" { return nil } - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -1376,18 +1379,18 @@ func resourceTencentCloudPostgresqlInstanceRead(d *schema.ResourceData, meta int } func resourceTencentCLoudPostgresqlInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_instance.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_instance.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var outErr, inErr error var has bool - outErr = resource.Retry(readRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, inErr = postgresqlService.DescribePostgresqlInstanceById(ctx, d.Id()) if inErr != nil { // ResourceNotFound.InstanceNotFoundError @@ -1395,7 +1398,7 @@ func resourceTencentCLoudPostgresqlInstanceDelete(d *schema.ResourceData, meta i if ok && ee.GetCode() == "ResourceNotFound.InstanceNotFoundError" { return nil } - return retryError(inErr, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) + return tccommon.RetryError(inErr, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) } return nil }) @@ -1414,10 +1417,10 @@ func resourceTencentCLoudPostgresqlInstanceDelete(d *schema.ResourceData, meta i } // Wait for status to isolated - _ = resource.Retry(readRetryTimeout*5, func() *resource.RetryError { + _ = resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError { instance, _, err := postgresqlService.DescribePostgresqlInstanceById(ctx, instanceId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if *instance.DBInstanceStatus == POSTGRESQL_STAUTS_ISOLATED { @@ -1429,7 +1432,7 @@ func resourceTencentCLoudPostgresqlInstanceDelete(d *schema.ResourceData, meta i outErr = postgresqlService.DeletePostgresqlInstance(ctx, instanceId) if outErr != nil { - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.DeletePostgresqlInstance(ctx, instanceId) if inErr != nil { // ResourceNotFound.InstanceNotFoundError @@ -1437,7 +1440,7 @@ func resourceTencentCLoudPostgresqlInstanceDelete(d *schema.ResourceData, meta i if ok && ee.GetCode() == "ResourceNotFound.InstanceNotFoundError" { return nil } - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -1447,7 +1450,7 @@ func resourceTencentCLoudPostgresqlInstanceDelete(d *schema.ResourceData, meta i return outErr } - outErr = resource.Retry(readRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { _, has, inErr = postgresqlService.DescribePostgresqlInstanceById(ctx, d.Id()) if inErr != nil { // ResourceNotFound.InstanceNotFoundError @@ -1455,7 +1458,7 @@ func resourceTencentCLoudPostgresqlInstanceDelete(d *schema.ResourceData, meta i if ok && ee.GetCode() == "ResourceNotFound.InstanceNotFoundError" { return nil } - return retryError(inErr) + return tccommon.RetryError(inErr) } if has { inErr = fmt.Errorf("delete postgresql instance %s fail, instance still exists from SDK DescribePostgresqlInstanceById", instanceId) diff --git a/tencentcloud/resource_tc_postgresql_instance_ha_config.go b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_ha_config.go similarity index 81% rename from tencentcloud/resource_tc_postgresql_instance_ha_config.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_instance_ha_config.go index 0bb6aa0a18..f813b20dc7 100644 --- a/tencentcloud/resource_tc_postgresql_instance_ha_config.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_ha_config.go @@ -1,9 +1,11 @@ -package tencentcloud +package postgresql import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" @@ -12,7 +14,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) -func resourceTencentCloudPostgresqlInstanceHAConfig() *schema.Resource { +func ResourceTencentCloudPostgresqlInstanceHAConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlInstanceHAConfigCreate, Read: resourceTencentCloudPostgresqlInstanceHAConfigRead, @@ -30,19 +32,19 @@ func resourceTencentCloudPostgresqlInstanceHAConfig() *schema.Resource { "sync_mode": { Type: schema.TypeString, Required: true, - ValidateFunc: validateAllowedStringValue(SYNC_MODE), + ValidateFunc: tccommon.ValidateAllowedStringValue(SYNC_MODE), Description: "Master slave synchronization method, Semi-sync: Semi synchronous; Async: Asynchronous. Main instance default value: Semi-sync, Read-only instance default value: Async.", }, "max_standby_latency": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(1073741824, 322122547200), + ValidateFunc: tccommon.ValidateIntegerInRange(1073741824, 322122547200), Description: "Maximum latency data volume for highly available backup machines. When the delay data amount of the backup node is less than or equal to this value, and the delay time of the backup node is less than or equal to MaxStandbyLag, it can switch to the main node. Unit: byte; Parameter range: [1073741824, 322122547200].", }, "max_standby_lag": { Type: schema.TypeInt, Required: true, - ValidateFunc: validateIntegerInRange(5, 10), + ValidateFunc: tccommon.ValidateIntegerInRange(5, 10), Description: "Maximum latency of highly available backup machines. When the delay time of the backup node is less than or equal to this value, and the amount of delay data of the backup node is less than or equal to MaxStandbyLatency, the primary node can be switched. Unit: s; Parameter range: [5, 10].", }, "max_sync_standby_latency": { @@ -60,8 +62,8 @@ func resourceTencentCloudPostgresqlInstanceHAConfig() *schema.Resource { } func resourceTencentCloudPostgresqlInstanceHAConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_instance_ha_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_instance_ha_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string @@ -75,13 +77,13 @@ func resourceTencentCloudPostgresqlInstanceHAConfigCreate(d *schema.ResourceData } func resourceTencentCloudPostgresqlInstanceHAConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_instance_ha_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_instance_ha_config.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId = d.Id() ) @@ -122,11 +124,11 @@ func resourceTencentCloudPostgresqlInstanceHAConfigRead(d *schema.ResourceData, } func resourceTencentCloudPostgresqlInstanceHAConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_instance_ha_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_instance_ha_config.update")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = postgresql.NewModifyDBInstanceHAConfigRequest() instanceId = d.Id() syncMode = d.Get("sync_mode").(string) @@ -146,10 +148,10 @@ func resourceTencentCloudPostgresqlInstanceHAConfigUpdate(d *schema.ResourceData request.MaxSyncStandbyLag = helper.IntUint64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyDBInstanceHAConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyDBInstanceHAConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -166,8 +168,8 @@ func resourceTencentCloudPostgresqlInstanceHAConfigUpdate(d *schema.ResourceData } func resourceTencentCloudPostgresqlInstanceHAConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_instance_ha_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_instance_ha_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_instance_ha_config_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_ha_config_test.go similarity index 93% rename from tencentcloud/resource_tc_postgresql_instance_ha_config_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_instance_ha_config_test.go index cac3d2a124..d1c7e6f5cf 100644 --- a/tencentcloud/resource_tc_postgresql_instance_ha_config_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_ha_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ import ( func TestAccTencentCloudPostgresqlInstanceHAConfigResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlInstanceHAConfig, diff --git a/tencentcloud/resource_tc_postgresql_instance_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go similarity index 86% rename from tencentcloud/resource_tc_postgresql_instance_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go index 34e66b91d1..4e16b93dc5 100644 --- a/tencentcloud/resource_tc_postgresql_instance_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_instance_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql_test import ( "context" @@ -7,6 +7,10 @@ import ( "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcpostgresql "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/postgresql" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" @@ -19,12 +23,12 @@ func init() { resource.AddTestSweepers(testPostgresqlInstanceResourceName, &resource.Sweeper{ Name: testPostgresqlInstanceResourceName, F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - client := cli.(*TencentCloudClient).apiV3Conn - postgresqlService := PostgresqlService{client: client} - vpcService := VpcService{client: client} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + client := cli.(tccommon.ProviderMeta).GetAPIV3Conn() + postgresqlService := svcpostgresql.NewPostgresqlService(client) + vpcService := svcpostgresql.NewVpcService(client) instances, err := postgresqlService.DescribePostgresqlInstances(ctx, nil) if err != nil { @@ -39,15 +43,15 @@ func init() { vpcId := *v.VpcId now := time.Now() - createTime := stringTotime(*v.CreateTime) + createTime := tccommon.StringToTime(*v.CreateTime) interval := now.Sub(createTime).Minutes() - if strings.HasPrefix(name, keepResource) || strings.HasPrefix(name, defaultResource) { + if strings.HasPrefix(name, tcacctest.KeepResource) || strings.HasPrefix(name, tcacctest.DefaultResource) { continue } // less than 30 minute, not delete - if needProtect == 1 && int64(interval) < 30 { + if tccommon.NeedProtect == 1 && int64(interval) < 30 { continue } // isolate @@ -56,10 +60,10 @@ func init() { continue } // describe status - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, has, err := postgresqlService.DescribePostgresqlInstanceById(ctx, id) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if !has { return resource.NonRetryableError(fmt.Errorf("instance %s removed", id)) @@ -92,16 +96,16 @@ func TestAccTencentCloudPostgresqlInstanceResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) - testAccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckPostgresqlInstanceDestroy, Steps: []resource.TestStep{ { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlInstance, Check: resource.ComposeTestCheckFunc( @@ -139,8 +143,8 @@ func TestAccTencentCloudPostgresqlInstanceResource_basic(t *testing.T) { }, { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlInstanceOpenPublic, Check: resource.ComposeTestCheckFunc( @@ -156,8 +160,8 @@ func TestAccTencentCloudPostgresqlInstanceResource_basic(t *testing.T) { }, { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlInstanceUpdate, Check: resource.ComposeTestCheckFunc( @@ -183,8 +187,8 @@ func TestAccTencentCloudPostgresqlInstanceResource_basic(t *testing.T) { }, { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlInstanceUpgradeKernelVersion, Check: resource.ComposeTestCheckFunc( @@ -214,14 +218,14 @@ func TestAccTencentCloudPostgresqlInstanceResource_basic(t *testing.T) { func TestAccTencentCloudPostgresqlInstanceResource_prepaid(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckPostgresqlInstanceDestroy, Steps: []resource.TestStep{ { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccPostgresqlInstancePrepaid, Check: resource.ComposeTestCheckFunc( @@ -254,14 +258,14 @@ func TestAccTencentCloudPostgresqlInstanceResource_prepaid(t *testing.T) { func TestAccTencentCloudPostgresqlInstanceResource_postpaid_to_prepaid(t *testing.T) { resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckPostgresqlInstanceDestroy, Steps: []resource.TestStep{ { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccPostgresqlInstancePostpaid, Check: resource.ComposeTestCheckFunc( @@ -274,8 +278,8 @@ func TestAccTencentCloudPostgresqlInstanceResource_postpaid_to_prepaid(t *testin }, { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_PREPAY) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_PREPAY) }, Config: testAccPostgresqlInstancePostpaid_to_Prepaid, Check: resource.ComposeTestCheckFunc( @@ -300,16 +304,16 @@ func TestAccTencentCloudPostgresqlInstanceResource_MAZ(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) - testAccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckPostgresqlInstanceDestroy, Steps: []resource.TestStep{ { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlMAZInstance, Check: resource.ComposeTestCheckFunc( @@ -329,8 +333,8 @@ func TestAccTencentCloudPostgresqlInstanceResource_MAZ(t *testing.T) { { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccStepPreConfigSetTempAKSK(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccStepPreConfigSetTempAKSK(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlMAZInstanceUpdate, Check: resource.ComposeTestCheckFunc( @@ -349,10 +353,10 @@ func testAccCheckPostgresqlInstanceDestroy(s *terraform.State) error { if rs.Type != testPostgresqlInstanceResourceName { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcpostgresql.NewPostgresqlService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribePostgresqlInstanceById(ctx, rs.Primary.ID) @@ -379,10 +383,10 @@ func testAccCheckPostgresqlInstanceExists(n string) resource.TestCheckFunc { if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcpostgresql.NewPostgresqlService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) _, has, err := service.DescribePostgresqlInstanceById(ctx, rs.Primary.ID) if err != nil { @@ -399,13 +403,13 @@ func testAccCheckPostgresqlInstanceExists(n string) resource.TestCheckFunc { } } -const testAccPostgresqlInstanceBasic = defaultSecurityGroupData + ` +const testAccPostgresqlInstanceBasic = tcacctest.DefaultSecurityGroupData + ` data "tencentcloud_availability_zones_by_product" "zone" { product = "postgres" } ` -const testAccPostgresqlInstance string = testAccPostgresqlInstanceBasic + defaultVpcSubnets + ` +const testAccPostgresqlInstance string = testAccPostgresqlInstanceBasic + tcacctest.DefaultVpcSubnets + ` resource "tencentcloud_postgresql_instance" "test" { name = "tf_postsql_instance" availability_zone = data.tencentcloud_availability_zones_by_product.zone.zones[5].name @@ -434,7 +438,7 @@ resource "tencentcloud_postgresql_instance" "test" { } } ` -const testAccPostgresqlInstancePostpaid = defaultVpcSubnets + ` +const testAccPostgresqlInstancePostpaid = tcacctest.DefaultVpcSubnets + ` data "tencentcloud_availability_zones_by_product" "zone" { product = "postgres" } @@ -463,7 +467,7 @@ resource "tencentcloud_postgresql_instance" "test" { storage = 20 }` -const testAccPostgresqlInstancePostpaid_to_Prepaid = defaultVpcSubnets + ` +const testAccPostgresqlInstancePostpaid_to_Prepaid = tcacctest.DefaultVpcSubnets + ` data "tencentcloud_availability_zones_by_product" "zone" { product = "postgres" } @@ -492,7 +496,7 @@ resource "tencentcloud_postgresql_instance" "test" { storage = 20 }` -const testAccPostgresqlInstancePrepaid = defaultVpcSubnets + ` +const testAccPostgresqlInstancePrepaid = tcacctest.DefaultVpcSubnets + ` data "tencentcloud_availability_zones_by_product" "zone" { product = "postgres" } @@ -520,7 +524,7 @@ resource "tencentcloud_postgresql_instance" "test" { storage = 50 }` -const testAccPostgresqlInstanceOpenPublic string = testAccPostgresqlInstanceBasic + defaultVpcSubnets + ` +const testAccPostgresqlInstanceOpenPublic string = testAccPostgresqlInstanceBasic + tcacctest.DefaultVpcSubnets + ` resource "tencentcloud_postgresql_instance" "test" { name = "tf_postsql_instance_update" availability_zone = data.tencentcloud_availability_zones_by_product.zone.zones[5].name @@ -570,7 +574,7 @@ resource "tencentcloud_vpc" "vpc" { ` -const testAccPostgresqlInstanceUpdate string = testAccPGNewVpcSubnet + testAccPostgresqlInstanceBasic + defaultVpcSubnets + ` +const testAccPostgresqlInstanceUpdate string = testAccPGNewVpcSubnet + testAccPostgresqlInstanceBasic + tcacctest.DefaultVpcSubnets + ` resource "tencentcloud_postgresql_instance" "test" { name = "tf_postsql_instance_update" availability_zone = data.tencentcloud_availability_zones_by_product.zone.zones[5].name @@ -600,7 +604,7 @@ resource "tencentcloud_postgresql_instance" "test" { } ` -const testAccPostgresqlInstanceUpgradeKernelVersion string = testAccPGNewVpcSubnet + testAccPostgresqlInstanceBasic + defaultVpcSubnets + ` +const testAccPostgresqlInstanceUpgradeKernelVersion string = testAccPGNewVpcSubnet + testAccPostgresqlInstanceBasic + tcacctest.DefaultVpcSubnets + ` resource "tencentcloud_postgresql_instance" "test" { name = "tf_postsql_instance_update" availability_zone = data.tencentcloud_availability_zones_by_product.zone.zones[5].name diff --git a/tencentcloud/resource_tc_postgresql_isolate_db_instance_operation.go b/tencentcloud/services/postgresql/resource_tc_postgresql_isolate_db_instance_operation.go similarity index 65% rename from tencentcloud/resource_tc_postgresql_isolate_db_instance_operation.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_isolate_db_instance_operation.go index c9283c96a1..b98130f649 100644 --- a/tencentcloud/resource_tc_postgresql_isolate_db_instance_operation.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_isolate_db_instance_operation.go @@ -1,16 +1,18 @@ -package tencentcloud +package postgresql import ( "log" "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" ) -func resourceTencentCloudPostgresqlIsolateDbInstanceOperation() *schema.Resource { +func ResourceTencentCloudPostgresqlIsolateDbInstanceOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlIsolateDbInstanceOperationCreate, Read: resourceTencentCloudPostgresqlIsolateDbInstanceOperationRead, @@ -30,10 +32,10 @@ func resourceTencentCloudPostgresqlIsolateDbInstanceOperation() *schema.Resource } func resourceTencentCloudPostgresqlIsolateDbInstanceOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_isolate_db_instance_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_isolate_db_instance_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewIsolateDBInstancesRequest() @@ -52,10 +54,10 @@ func resourceTencentCloudPostgresqlIsolateDbInstanceOperationCreate(d *schema.Re firstInstanceId = dBInstanceIdSetSet[0].(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().IsolateDBInstances(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().IsolateDBInstances(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -66,11 +68,11 @@ func resourceTencentCloudPostgresqlIsolateDbInstanceOperationCreate(d *schema.Re return err } - d.SetId(strings.Join(ids, FILED_SP)) + d.SetId(strings.Join(ids, tccommon.FILED_SP)) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"isolated"}, 10*readRetryTimeout, 10*time.Second, service.PostgresqlDbInstanceOperationStateRefreshFunc(firstInstanceId, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"isolated"}, 10*tccommon.ReadRetryTimeout, 10*time.Second, service.PostgresqlDbInstanceOperationStateRefreshFunc(firstInstanceId, []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -80,15 +82,15 @@ func resourceTencentCloudPostgresqlIsolateDbInstanceOperationCreate(d *schema.Re } func resourceTencentCloudPostgresqlIsolateDbInstanceOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_isolate_db_instance_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_isolate_db_instance_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPostgresqlIsolateDbInstanceOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_isolate_db_instance_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_isolate_db_instance_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_modify_account_remark_operation.go b/tencentcloud/services/postgresql/resource_tc_postgresql_modify_account_remark_operation.go similarity index 72% rename from tencentcloud/resource_tc_postgresql_modify_account_remark_operation.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_modify_account_remark_operation.go index 384efd39de..a7e37d7338 100644 --- a/tencentcloud/resource_tc_postgresql_modify_account_remark_operation.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_modify_account_remark_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlModifyAccountRemarkOperation() *schema.Resource { +func ResourceTencentCloudPostgresqlModifyAccountRemarkOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlModifyAccountRemarkOperationCreate, Read: resourceTencentCloudPostgresqlModifyAccountRemarkOperationRead, @@ -40,10 +43,10 @@ func resourceTencentCloudPostgresqlModifyAccountRemarkOperation() *schema.Resour } func resourceTencentCloudPostgresqlModifyAccountRemarkOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_modify_account_remark_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_modify_account_remark_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewModifyAccountRemarkRequest() @@ -62,10 +65,10 @@ func resourceTencentCloudPostgresqlModifyAccountRemarkOperationCreate(d *schema. request.Remark = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyAccountRemark(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyAccountRemark(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -82,15 +85,15 @@ func resourceTencentCloudPostgresqlModifyAccountRemarkOperationCreate(d *schema. } func resourceTencentCloudPostgresqlModifyAccountRemarkOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_modify_account_remark_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_modify_account_remark_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPostgresqlModifyAccountRemarkOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_modify_account_remark_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_modify_account_remark_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_modify_account_remark_operation_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_modify_account_remark_operation_test.go similarity index 71% rename from tencentcloud/resource_tc_postgresql_modify_account_remark_operation_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_modify_account_remark_operation_test.go index 41e6f2b221..dd9f2908fb 100644 --- a/tencentcloud/resource_tc_postgresql_modify_account_remark_operation_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_modify_account_remark_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,16 +14,16 @@ func TestAccTencentCloudPostgresqlModifyAccountRemarkOperationResource_basic(t * // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlModifyAccountRemarkOperation, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(TestObjectPgModifyAccountRemark, "id"), @@ -34,7 +36,7 @@ func TestAccTencentCloudPostgresqlModifyAccountRemarkOperationResource_basic(t * }) } -const testAccPostgresqlModifyAccountRemarkOperation = OperationPresetPGSQL + ` +const testAccPostgresqlModifyAccountRemarkOperation = tcacctest.OperationPresetPGSQL + ` resource "tencentcloud_postgresql_modify_account_remark_operation" "modify_account_remark_operation" { db_instance_id = local.pgsql_id diff --git a/tencentcloud/resource_tc_postgresql_modify_switch_time_period_operation.go b/tencentcloud/services/postgresql/resource_tc_postgresql_modify_switch_time_period_operation.go similarity index 71% rename from tencentcloud/resource_tc_postgresql_modify_switch_time_period_operation.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_modify_switch_time_period_operation.go index 45d6d3cef0..cc680181e2 100644 --- a/tencentcloud/resource_tc_postgresql_modify_switch_time_period_operation.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_modify_switch_time_period_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlModifySwitchTimePeriodOperation() *schema.Resource { +func ResourceTencentCloudPostgresqlModifySwitchTimePeriodOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlModifySwitchTimePeriodOperationCreate, Read: resourceTencentCloudPostgresqlModifySwitchTimePeriodOperationRead, @@ -36,10 +39,10 @@ func resourceTencentCloudPostgresqlModifySwitchTimePeriodOperation() *schema.Res } func resourceTencentCloudPostgresqlModifySwitchTimePeriodOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_modify_switch_time_period_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_modify_switch_time_period_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewModifySwitchTimePeriodRequest() @@ -54,10 +57,10 @@ func resourceTencentCloudPostgresqlModifySwitchTimePeriodOperationCreate(d *sche request.SwitchTag = helper.IntUint64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifySwitchTimePeriod(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifySwitchTimePeriod(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -74,15 +77,15 @@ func resourceTencentCloudPostgresqlModifySwitchTimePeriodOperationCreate(d *sche } func resourceTencentCloudPostgresqlModifySwitchTimePeriodOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_modify_switch_time_period_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_modify_switch_time_period_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPostgresqlModifySwitchTimePeriodOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_modify_switch_time_period_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_modify_switch_time_period_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_modify_switch_time_period_operation_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_modify_switch_time_period_operation_test.go similarity index 72% rename from tencentcloud/resource_tc_postgresql_modify_switch_time_period_operation_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_modify_switch_time_period_operation_test.go index 8fc4629064..dec9c3b322 100644 --- a/tencentcloud/resource_tc_postgresql_modify_switch_time_period_operation_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_modify_switch_time_period_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -13,16 +15,16 @@ func TestAccTencentCloudNeedFixPostgresqlModifySwitchTimePeriodOperationResource // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlModifySwitchTimePeriodOperation, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(TestObjectPgModifySwitchTimePeriod, "id"), @@ -34,7 +36,7 @@ func TestAccTencentCloudNeedFixPostgresqlModifySwitchTimePeriodOperationResource }) } -const testAccPostgresqlModifySwitchTimePeriodOperation = OperationPresetPGSQL + ` +const testAccPostgresqlModifySwitchTimePeriodOperation = tcacctest.OperationPresetPGSQL + ` resource "tencentcloud_postgresql_modify_switch_time_period_operation" "modify_switch_time_period_operation" { db_instance_id = local.pgsql_id diff --git a/tencentcloud/resource_tc_postgresql_parameter_template.go b/tencentcloud/services/postgresql/resource_tc_postgresql_parameter_template.go similarity index 83% rename from tencentcloud/resource_tc_postgresql_parameter_template.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_parameter_template.go index 0b2d5847fc..9eafebd8d7 100644 --- a/tencentcloud/resource_tc_postgresql_parameter_template.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_parameter_template.go @@ -1,16 +1,19 @@ -package tencentcloud +package postgresql import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlParameterTemplate() *schema.Resource { +func ResourceTencentCloudPostgresqlParameterTemplate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlParameterTemplateCreate, Read: resourceTencentCloudPostgresqlParameterTemplateRead, @@ -77,10 +80,10 @@ func resourceTencentCloudPostgresqlParameterTemplate() *schema.Resource { } func resourceTencentCloudPostgresqlParameterTemplateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_parameter_template.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_parameter_template.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewCreateParameterTemplateRequest() @@ -104,7 +107,7 @@ func resourceTencentCloudPostgresqlParameterTemplateCreate(d *schema.ResourceDat request.TemplateDescription = helper.String(v.(string)) } - result, err := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().CreateParameterTemplate(request) + result, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().CreateParameterTemplate(request) if err != nil { log.Printf("[CRITAL]%s create postgresql ParameterTemplate failed, reason:%+v", logId, err) @@ -139,7 +142,7 @@ func resourceTencentCloudPostgresqlParameterTemplateCreate(d *schema.ResourceDat } if len(modifyRequest.ModifyParamEntrySet) > 0 || len(modifyRequest.DeleteParamSet) > 0 { - _, err = meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyParameterTemplate(modifyRequest) + _, err = meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyParameterTemplate(modifyRequest) if err != nil { log.Printf("[CRITAL]%s update postgresql ParameterTemplate in create method failed, reason:%+v", logId, err) return err @@ -152,14 +155,14 @@ func resourceTencentCloudPostgresqlParameterTemplateCreate(d *schema.ResourceDat } func resourceTencentCloudPostgresqlParameterTemplateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_parameter_template.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_parameter_template.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} templateId := d.Id() @@ -206,10 +209,10 @@ func resourceTencentCloudPostgresqlParameterTemplateRead(d *schema.ResourceData, } func resourceTencentCloudPostgresqlParameterTemplateUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_parameter_template.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_parameter_template.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := postgresql.NewModifyParameterTemplateRequest() @@ -263,7 +266,7 @@ func resourceTencentCloudPostgresqlParameterTemplateUpdate(d *schema.ResourceDat } } - _, err := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyParameterTemplate(request) + _, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyParameterTemplate(request) if err != nil { log.Printf("[CRITAL]%s update postgresql ParameterTemplate failed, reason:%+v", logId, err) @@ -274,13 +277,13 @@ func resourceTencentCloudPostgresqlParameterTemplateUpdate(d *schema.ResourceDat } func resourceTencentCloudPostgresqlParameterTemplateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_parameter_template.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_parameter_template.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} templateId := d.Id() if err := service.DeletePostgresqlParameterTemplateById(ctx, templateId); err != nil { diff --git a/tencentcloud/resource_tc_postgresql_parameter_template_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_parameter_template_test.go similarity index 81% rename from tencentcloud/resource_tc_postgresql_parameter_template_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_parameter_template_test.go index 567f8251c6..b387ab2ed0 100644 --- a/tencentcloud/resource_tc_postgresql_parameter_template_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_parameter_template_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql_test import ( "context" @@ -6,8 +6,13 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcpostgresql "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/postgresql" ) func init() { @@ -15,11 +20,11 @@ func init() { resource.AddTestSweepers("tencentcloud_postgresql_parameter_template", &resource.Sweeper{ Name: "tencentcloud_postgresql_parameter_template", F: func(r string) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - cli, _ := sharedClientForRegion(r) - client := cli.(*TencentCloudClient).apiV3Conn - postgresqlService := PostgresqlService{client: client} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + cli, _ := tcacctest.SharedClientForRegion(r) + client := cli.(tccommon.ProviderMeta).GetAPIV3Conn() + postgresqlService := svcpostgresql.NewPostgresqlService(client) temps, err := postgresqlService.DescribePostgresqlParameterTemplatesByFilter(ctx, map[string]interface{}{}) if err != nil { @@ -31,7 +36,7 @@ func init() { name := *v.TemplateName id := *v.TemplateId - if strings.HasPrefix(name, keepResource) || strings.HasPrefix(name, defaultResource) { + if strings.HasPrefix(name, tcacctest.KeepResource) || strings.HasPrefix(name, tcacctest.DefaultResource) { continue } @@ -51,17 +56,17 @@ func TestAccTencentCloudPostgresqlParameterTemplateResource_basic(t *testing.T) // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, CheckDestroy: testAccCheckPostgresqlParameterTemplateDestroy, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlParameterTemplate, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( testAccCheckPostgresqlParameterTemplateExists("tencentcloud_postgresql_parameter_template.parameter_template"), @@ -86,8 +91,8 @@ func TestAccTencentCloudPostgresqlParameterTemplateResource_basic(t *testing.T) { Config: testAccPostgresqlParameterTemplate_update_desc, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( testAccCheckPostgresqlParameterTemplateExists("tencentcloud_postgresql_parameter_template.parameter_template"), @@ -98,8 +103,8 @@ func TestAccTencentCloudPostgresqlParameterTemplateResource_basic(t *testing.T) { Config: testAccPostgresqlParameterTemplate_update_name, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( testAccCheckPostgresqlParameterTemplateExists("tencentcloud_postgresql_parameter_template.parameter_template"), @@ -110,8 +115,8 @@ func TestAccTencentCloudPostgresqlParameterTemplateResource_basic(t *testing.T) { Config: testAccPostgresqlParameterTemplate_update_multiple_attr, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( testAccCheckPostgresqlParameterTemplateExists("tencentcloud_postgresql_parameter_template.parameter_template"), @@ -145,10 +150,10 @@ func testAccCheckPostgresqlParameterTemplateDestroy(s *terraform.State) error { if rs.Type != "tencentcloud_postgresql_parameter_template" { continue } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcpostgresql.NewPostgresqlService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) ret, _ := service.DescribePostgresqlParameterTemplateById(ctx, rs.Primary.ID) @@ -165,10 +170,10 @@ func testAccCheckPostgresqlParameterTemplateExists(n string) resource.TestCheckF if !ok { return fmt.Errorf("resource %s is not found", n) } - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcpostgresql.NewPostgresqlService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) ret, err := service.DescribePostgresqlParameterTemplateById(ctx, rs.Primary.ID) if err != nil { diff --git a/tencentcloud/resource_tc_postgresql_readonly_attachment.go b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_attachment.go similarity index 68% rename from tencentcloud/resource_tc_postgresql_readonly_attachment.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_readonly_attachment.go index 524344022a..49aa55f6ae 100644 --- a/tencentcloud/resource_tc_postgresql_readonly_attachment.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_attachment.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlReadonlyAttachment() *schema.Resource { +func ResourceTencentCloudPostgresqlReadonlyAttachment() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlReadOnlyAttachmentCreate, Read: resourceTencentCloudPostgresqlReadOnlyAttachmentRead, @@ -40,9 +43,9 @@ func resourceTencentCloudPostgresqlReadonlyAttachment() *schema.Resource { } func resourceTencentCloudPostgresqlReadOnlyAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_attachment.create")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_attachment.create")() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewAddDBInstanceToReadOnlyGroupRequest() @@ -59,10 +62,10 @@ func resourceTencentCloudPostgresqlReadOnlyAttachmentCreate(d *schema.ResourceDa request.ReadOnlyGroupId = helper.String(groupId) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().AddDBInstanceToReadOnlyGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().AddDBInstanceToReadOnlyGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -79,12 +82,12 @@ func resourceTencentCloudPostgresqlReadOnlyAttachmentCreate(d *schema.ResourceDa } func resourceTencentCloudPostgresqlReadOnlyAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_attachment.read")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_attachment.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} _, err := postgresqlService.DescribePostgresqlReadOnlyGroupById(ctx, d.Id()) if err != nil { return err @@ -94,12 +97,12 @@ func resourceTencentCloudPostgresqlReadOnlyAttachmentRead(d *schema.ResourceData } func resourceTencentCLoudPostgresqlReadOnlyAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_attachment.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_attachment.delete")() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := postgresql.NewRemoveDBInstanceFromReadOnlyGroupRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -108,10 +111,10 @@ func resourceTencentCLoudPostgresqlReadOnlyAttachmentDelete(d *schema.ResourceDa request.ReadOnlyGroupId = helper.String(groupId) request.DBInstanceId = helper.String(dbInstanceId) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().RemoveDBInstanceFromReadOnlyGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().RemoveDBInstanceFromReadOnlyGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) diff --git a/tencentcloud/resource_tc_postgresql_readonly_group.go b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_group.go similarity index 75% rename from tencentcloud/resource_tc_postgresql_readonly_group.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_readonly_group.go index 9d79fbc409..4a2f417a27 100644 --- a/tencentcloud/resource_tc_postgresql_readonly_group.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_group.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql import ( "context" @@ -6,13 +6,16 @@ import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlReadonlyGroup() *schema.Resource { +func ResourceTencentCloudPostgresqlReadonlyGroup() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlReadOnlyGroupCreate, Read: resourceTencentCloudPostgresqlReadOnlyGroupRead, @@ -93,9 +96,9 @@ func resourceTencentCloudPostgresqlReadonlyGroup() *schema.Resource { } func resourceTencentCloudPostgresqlReadOnlyGroupCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_group.create")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_group.create")() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewCreateReadOnlyGroupRequest() @@ -147,10 +150,10 @@ func resourceTencentCloudPostgresqlReadOnlyGroupCreate(d *schema.ResourceData, m } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().CreateReadOnlyGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().CreateReadOnlyGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -164,13 +167,13 @@ func resourceTencentCloudPostgresqlReadOnlyGroupCreate(d *schema.ResourceData, m instanceId := *response.Response.ReadOnlyGroupId d.SetId(instanceId) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { groups, e := postgresqlService.DescribePostgresqlReadOnlyGroupById(ctx, msaterDbInstanceId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } var status string @@ -193,10 +196,10 @@ func resourceTencentCloudPostgresqlReadOnlyGroupCreate(d *schema.ResourceData, m } func resourceTencentCloudPostgresqlReadOnlyGroupRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_group.read")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_group.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) // for now, the id should be the master db instance id, cause the describe api only support this kind of filter. var id string @@ -204,7 +207,7 @@ func resourceTencentCloudPostgresqlReadOnlyGroupRead(d *schema.ResourceData, met id = v.(string) } - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} _, err := postgresqlService.DescribePostgresqlReadOnlyGroupById(ctx, id) if err != nil { return err @@ -214,10 +217,10 @@ func resourceTencentCloudPostgresqlReadOnlyGroupRead(d *schema.ResourceData, met } func resourceTencentCloudPostgresqlReadOnlyGroupUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_group.update")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_group.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request := postgresql.NewModifyReadOnlyGroupConfigRequest() request.ReadOnlyGroupId = helper.String(d.Id()) @@ -254,7 +257,7 @@ func resourceTencentCloudPostgresqlReadOnlyGroupUpdate(d *schema.ResourceData, m subnetNew = new.(string) } - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} // get the old ip before creating netInfos, err := service.DescribePostgresqlReadonlyGroupNetInfosById(ctx, msaterDbInstanceId, d.Id()) if err != nil { @@ -283,10 +286,10 @@ func resourceTencentCloudPostgresqlReadOnlyGroupUpdate(d *schema.ResourceData, m // ip assigned by system request.IsAssignVip = helper.Bool(false) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().CreateReadOnlyGroupNetworkAccess(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().CreateReadOnlyGroupNetworkAccess(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -298,7 +301,7 @@ func resourceTencentCloudPostgresqlReadOnlyGroupUpdate(d *schema.ResourceData, m } // wait for new network enabled - conf := BuildStateChangeConf([]string{}, []string{"opened"}, 3*readRetryTimeout, time.Second, service.PostgresqlReadonlyGroupNetworkAccessStateRefreshFunc(msaterDbInstanceId, d.Id(), vpcNew, subnetNew, vipOld, "", []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"opened"}, 3*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlReadonlyGroupNetworkAccessStateRefreshFunc(msaterDbInstanceId, d.Id(), vpcNew, subnetNew, vipOld, "", []string{})) if object, e := conf.WaitForState(); e != nil { return e @@ -312,7 +315,7 @@ func resourceTencentCloudPostgresqlReadOnlyGroupUpdate(d *schema.ResourceData, m logId, msaterDbInstanceId, d.Id(), vpcOld, vpcNew, subnetOld, subnetNew, vipOld, vipNew) // wait unit network changing operation of ro group done - conf = BuildStateChangeConf([]string{}, []string{"ok"}, 3*readRetryTimeout, time.Second, service.PostgresqlReadonlyGroupStateRefreshFunc(msaterDbInstanceId, d.Id(), []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"ok"}, 3*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlReadonlyGroupStateRefreshFunc(msaterDbInstanceId, d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -323,13 +326,13 @@ func resourceTencentCloudPostgresqlReadOnlyGroupUpdate(d *schema.ResourceData, m } // wait for old network removed - conf = BuildStateChangeConf([]string{}, []string{"closed"}, 3*readRetryTimeout, time.Second, service.PostgresqlReadonlyGroupNetworkAccessStateRefreshFunc(msaterDbInstanceId, d.Id(), vpcOld, subnetOld, vipNew, vipOld, []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"closed"}, 3*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlReadonlyGroupNetworkAccessStateRefreshFunc(msaterDbInstanceId, d.Id(), vpcOld, subnetOld, vipNew, vipOld, []string{})) if _, e := conf.WaitForState(); e != nil { return e } // wait unit network changing operation of ro group done - conf = BuildStateChangeConf([]string{}, []string{"ok"}, 3*readRetryTimeout, time.Second, service.PostgresqlReadonlyGroupStateRefreshFunc(msaterDbInstanceId, d.Id(), []string{})) + conf = tccommon.BuildStateChangeConf([]string{}, []string{"ok"}, 3*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlReadonlyGroupStateRefreshFunc(msaterDbInstanceId, d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -345,10 +348,10 @@ func resourceTencentCloudPostgresqlReadOnlyGroupUpdate(d *schema.ResourceData, m request.MaxReplayLatency = helper.IntUint64(d.Get("max_replay_latency").(int)) request.MinDelayEliminateReserve = helper.IntUint64(d.Get("min_delay_eliminate_reserve").(int)) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyReadOnlyGroupConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyReadOnlyGroupConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -363,18 +366,18 @@ func resourceTencentCloudPostgresqlReadOnlyGroupUpdate(d *schema.ResourceData, m } func resourceTencentCLoudPostgresqlReadOnlyGroupDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_group.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_group.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) groupId := d.Id() - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := postgresqlService.DeletePostgresqlReadOnlyGroupById(ctx, groupId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) diff --git a/tencentcloud/resource_tc_postgresql_readonly_group_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_group_test.go similarity index 82% rename from tencentcloud/resource_tc_postgresql_readonly_group_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_readonly_group_test.go index fa51edf884..7574023a9d 100644 --- a/tencentcloud/resource_tc_postgresql_readonly_group_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_group_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,15 +14,15 @@ func TestAccTencentCloudPostgresqlReadonlyGroupResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlReadonlyGroupInstance, Check: resource.ComposeTestCheckFunc( @@ -39,8 +41,8 @@ func TestAccTencentCloudPostgresqlReadonlyGroupResource_basic(t *testing.T) { }, { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlReadonlyGroupInstance_update, Check: resource.ComposeTestCheckFunc( @@ -55,7 +57,7 @@ func TestAccTencentCloudPostgresqlReadonlyGroupResource_basic(t *testing.T) { }) } -const testAccPostgresqlReadonlyGroupInstance string = CommonPresetPGSQL + defaultVpcSubnets + ` +const testAccPostgresqlReadonlyGroupInstance string = tcacctest.CommonPresetPGSQL + tcacctest.DefaultVpcSubnets + ` resource "tencentcloud_postgresql_readonly_group" "group" { master_db_instance_id = local.pgsql_id name = "tf_ro_group_test" @@ -70,7 +72,7 @@ resource "tencentcloud_postgresql_readonly_group" "group" { } ` -const testAccPostgresqlReadonlyGroupInstance_update string = CommonPresetPGSQL + defaultVpcSubnets + ` +const testAccPostgresqlReadonlyGroupInstance_update string = tcacctest.CommonPresetPGSQL + tcacctest.DefaultVpcSubnets + ` resource "tencentcloud_vpc" "vpc" { cidr_block = "172.18.111.0/24" name = "test-pg-rogroup-network-vpc" diff --git a/tencentcloud/resource_tc_postgresql_readonly_instance.go b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.go similarity index 81% rename from tencentcloud/resource_tc_postgresql_readonly_instance.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.go index 2980d7c303..53dcdd3998 100644 --- a/tencentcloud/resource_tc_postgresql_readonly_instance.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql import ( "context" @@ -7,14 +7,17 @@ import ( "strings" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlReadonlyInstance() *schema.Resource { +func ResourceTencentCloudPostgresqlReadonlyInstance() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlReadOnlyInstanceCreate, Read: resourceTencentCloudPostgresqlReadOnlyInstanceRead, @@ -90,7 +93,7 @@ func resourceTencentCloudPostgresqlReadonlyInstance() *schema.Resource { Optional: true, Default: COMMON_PAYTYPE_POSTPAID, ForceNew: true, - ValidateFunc: validateAllowedStringValue(POSTGRESQL_PAYTYPE), + ValidateFunc: tccommon.ValidateAllowedStringValue(POSTGRESQL_PAYTYPE), Description: "instance billing mode. Valid values: PREPAID (monthly subscription), POSTPAID_BY_HOUR (pay-as-you-go).", }, "period": { @@ -153,15 +156,15 @@ func resourceTencentCloudPostgresqlReadonlyInstance() *schema.Resource { } func resourceTencentCloudPostgresqlReadOnlyInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_instance.create")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_instance.create")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( request = postgresql.NewCreateReadOnlyDBInstanceRequest() response *postgresql.CreateReadOnlyDBInstanceResponse - postgresqlService = PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService = PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} zone string dbVersion string memory int @@ -235,19 +238,19 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceCreate(d *schema.ResourceData // get specCode with db_version and memory var allowVersion, allowMemory []string var specVersion, specCode string - err := resource.Retry(readRetryTimeout*5, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError { speccodes, inErr := postgresqlService.DescribeSpecinfos(ctx, zone) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } for _, info := range speccodes { - if !IsContains(allowVersion, *info.Version) { + if !tccommon.IsContains(allowVersion, *info.Version) { allowVersion = append(allowVersion, *info.Version) } if *info.Version == dbVersion { specVersion = *info.Version memoryString := fmt.Sprintf("%d", int(*info.Memory)/1024) - if !IsContains(allowMemory, memoryString) { + if !tccommon.IsContains(allowMemory, memoryString) { allowMemory = append(allowMemory, memoryString) } if int(*info.Memory)/1024 == memory { @@ -272,10 +275,10 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceCreate(d *schema.ResourceData request.InstanceCount = helper.IntUint64(1) request.Period = helper.IntUint64(1) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().CreateReadOnlyDBInstance(request) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().CreateReadOnlyDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -291,10 +294,10 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceCreate(d *schema.ResourceData d.SetId(instanceId) // check creation done - err = resource.Retry(5*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(5*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, has, err := postgresqlService.DescribePostgresqlInstanceById(ctx, instanceId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } else if has && *instance.DBInstanceStatus == "running" { return nil } else if !has { @@ -312,13 +315,13 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceCreate(d *schema.ResourceData } func resourceTencentCloudPostgresqlReadOnlyInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_instance.read")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_instance.read")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instance, has, err := postgresqlService.DescribePostgresqlInstanceById(ctx, instanceId) if err != nil { return err @@ -352,7 +355,7 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceRead(d *schema.ResourceData, // security groups // Only redis service support modify Generic DB instance security groups - redisService := RedisService{client: meta.(*TencentCloudClient).apiV3Conn} + redisService := RedisService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} sg, err := redisService.DescribeDBSecurityGroups(ctx, "postgres", d.Id()) if err != nil { return err @@ -384,12 +387,12 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceRead(d *schema.ResourceData, } func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_instance.update")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_instance.update")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() d.Partial(true) @@ -409,7 +412,7 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData roGroupIdOld string roGroupIdNew string request = postgresql.NewModifyDBInstanceReadOnlyGroupRequest() - service = PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service = PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) masterInstanceId = d.Get("master_db_instance_id").(string) @@ -425,10 +428,10 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData request.ReadOnlyGroupId = &roGroupIdOld request.NewReadOnlyGroupId = &roGroupIdNew - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyDBInstanceReadOnlyGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyDBInstanceReadOnlyGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -439,7 +442,7 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData return err } - conf := BuildStateChangeConf([]string{}, []string{"ok"}, 2*readRetryTimeout, time.Second, service.PostgresqlReadonlyGroupStateRefreshFunc(masterInstanceId, roGroupIdNew, []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"ok"}, 2*tccommon.ReadRetryTimeout, time.Second, service.PostgresqlReadonlyGroupStateRefreshFunc(masterInstanceId, roGroupIdNew, []string{})) if _, e := conf.WaitForState(); e != nil { return e } @@ -449,10 +452,10 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData // update name if d.HasChange("name") { name := d.Get("name").(string) - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.ModifyPostgresqlInstanceName(ctx, instanceId, name) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -471,10 +474,10 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData if d.HasChange("memory") || d.HasChange("storage") { memory := d.Get("memory").(int) storage := d.Get("storage").(int) - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.UpgradePostgresqlInstance(ctx, instanceId, memory, storage) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -492,10 +495,10 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData // update project id if d.HasChange("project_id") { projectId := d.Get("project_id").(int) - outErr = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + outErr = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { inErr = postgresqlService.ModifyPostgresqlInstanceProjectId(ctx, instanceId, projectId) if inErr != nil { - return retryError(inErr) + return tccommon.RetryError(inErr) } return nil }) @@ -514,7 +517,7 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData if d.HasChange("security_groups_ids") { // Only redis service support modify Generic DB instance security groups - service := RedisService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RedisService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ids := d.Get("security_groups_ids").(*schema.Set).List() var sgIds []*string for _, id := range ids { @@ -532,9 +535,9 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData // oldValue, newValue := d.GetChange("tags") // replaceTags, deleteTags := diffTags(oldValue.(map[string]interface{}), newValue.(map[string]interface{})) // - // tcClient := meta.(*TencentCloudClient).apiV3Conn + // tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() // tagService := &TagService{client: tcClient} - // resourceName := BuildTagResourceName("postgres", "DBInstanceId", tcClient.Region, d.Id()) + // resourceName := tccommon.BuildTagResourceName("postgres", "DBInstanceId", tcClient.Region, d.Id()) // err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags) // if err != nil { // return err @@ -548,19 +551,19 @@ func resourceTencentCloudPostgresqlReadOnlyInstanceUpdate(d *schema.ResourceData } func resourceTencentCLoudPostgresqlReadOnlyInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_readonly_instance.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_readonly_instance.delete")() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) instanceId := d.Id() - postgresqlService := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + postgresqlService := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} // isolate - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := postgresqlService.IsolatePostgresqlInstance(ctx, instanceId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -569,10 +572,10 @@ func resourceTencentCLoudPostgresqlReadOnlyInstanceDelete(d *schema.ResourceData } // Wait for status to isolated - _ = resource.Retry(readRetryTimeout*5, func() *resource.RetryError { + _ = resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError { instance, _, err := postgresqlService.DescribePostgresqlInstanceById(ctx, instanceId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if *instance.DBInstanceStatus == POSTGRESQL_STAUTS_ISOLATED { @@ -583,10 +586,10 @@ func resourceTencentCLoudPostgresqlReadOnlyInstanceDelete(d *schema.ResourceData }) // delete - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { e := postgresqlService.DeletePostgresqlInstance(ctx, instanceId) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) diff --git a/tencentcloud/resource_tc_postgresql_readonly_instance_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance_test.go similarity index 89% rename from tencentcloud/resource_tc_postgresql_readonly_instance_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance_test.go index c9c783c4da..2b767fa797 100644 --- a/tencentcloud/resource_tc_postgresql_readonly_instance_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_readonly_instance_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,15 +14,15 @@ func TestAccTencentCloudPostgresqlReadonlyInstanceResource_basic(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlReadonlyInstanceInstance_basic_without_rogroup, Check: resource.ComposeTestCheckFunc( @@ -42,8 +44,8 @@ func TestAccTencentCloudPostgresqlReadonlyInstanceResource_basic(t *testing.T) { }, { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlReadonlyInstanceInstance_basic_update_rogroup, Check: resource.ComposeTestCheckFunc( @@ -72,15 +74,15 @@ func TestAccTencentCloudPostgresqlReadonlyInstanceResource_update_ro_group(t *te // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlReadonlyInstanceInstance_with_rogroup, Check: resource.ComposeTestCheckFunc( @@ -102,8 +104,8 @@ func TestAccTencentCloudPostgresqlReadonlyInstanceResource_update_ro_group(t *te }, { PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Config: testAccPostgresqlReadonlyInstanceInstance_update_rogroup, Check: resource.ComposeTestCheckFunc( @@ -128,7 +130,7 @@ func TestAccTencentCloudPostgresqlReadonlyInstanceResource_update_ro_group(t *te }) } -const testAccPostgresqlReadonlyInstanceInstance_basic_without_rogroup string = OperationPresetPGSQL + defaultVpcSubnets + defaultSecurityGroupData + ` +const testAccPostgresqlReadonlyInstanceInstance_basic_without_rogroup string = tcacctest.OperationPresetPGSQL + tcacctest.DefaultVpcSubnets + tcacctest.DefaultSecurityGroupData + ` resource "tencentcloud_postgresql_readonly_instance" "instance" { auto_renew_flag = 0 db_version = "15.1" @@ -148,7 +150,7 @@ const testAccPostgresqlReadonlyInstanceInstance_basic_without_rogroup string = O } ` -const testAccPostgresqlReadonlyInstanceInstance_basic_update_rogroup string = OperationPresetPGSQL + defaultVpcSubnets + defaultSecurityGroupData + ` +const testAccPostgresqlReadonlyInstanceInstance_basic_update_rogroup string = tcacctest.OperationPresetPGSQL + tcacctest.DefaultVpcSubnets + tcacctest.DefaultSecurityGroupData + ` resource "tencentcloud_postgresql_readonly_instance" "instance" { auto_renew_flag = 0 db_version = "15.1" @@ -182,7 +184,7 @@ const testAccPostgresqlReadonlyInstanceInstance_basic_update_rogroup string = Op } ` -const testAccPostgresqlReadonlyInstanceInstance_with_rogroup string = OperationPresetPGSQL + defaultVpcSubnets + defaultSecurityGroupData + ` +const testAccPostgresqlReadonlyInstanceInstance_with_rogroup string = tcacctest.OperationPresetPGSQL + tcacctest.DefaultVpcSubnets + tcacctest.DefaultSecurityGroupData + ` resource "tencentcloud_postgresql_readonly_instance" "instance" { auto_renew_flag = 0 db_version = "15.1" @@ -203,7 +205,7 @@ const testAccPostgresqlReadonlyInstanceInstance_with_rogroup string = OperationP } ` -const testAccPostgresqlReadonlyInstanceInstance_update_rogroup string = OperationPresetPGSQL + defaultVpcSubnets + defaultSecurityGroupData + ` +const testAccPostgresqlReadonlyInstanceInstance_update_rogroup string = tcacctest.OperationPresetPGSQL + tcacctest.DefaultVpcSubnets + tcacctest.DefaultSecurityGroupData + ` resource "tencentcloud_postgresql_readonly_instance" "instance" { auto_renew_flag = 0 db_version = "15.1" diff --git a/tencentcloud/resource_tc_postgresql_rebalance_readonly_group_operation.go b/tencentcloud/services/postgresql/resource_tc_postgresql_rebalance_readonly_group_operation.go similarity index 67% rename from tencentcloud/resource_tc_postgresql_rebalance_readonly_group_operation.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_rebalance_readonly_group_operation.go index 892551e21a..4ec946b085 100644 --- a/tencentcloud/resource_tc_postgresql_rebalance_readonly_group_operation.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_rebalance_readonly_group_operation.go @@ -1,15 +1,18 @@ -package tencentcloud +package postgresql import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperation() *schema.Resource { +func ResourceTencentCloudPostgresqlRebalanceReadonlyGroupOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperationCreate, Read: resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperationRead, @@ -26,10 +29,10 @@ func resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperation() *schema.Res } func resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_rebalance_readonly_group_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_rebalance_readonly_group_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewRebalanceReadOnlyGroupRequest() @@ -40,10 +43,10 @@ func resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperationCreate(d *sche readOnlyGroupId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().RebalanceReadOnlyGroup(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().RebalanceReadOnlyGroup(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -60,15 +63,15 @@ func resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperationCreate(d *sche } func resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_rebalance_readonly_group_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_rebalance_readonly_group_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPostgresqlRebalanceReadonlyGroupOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_rebalance_readonly_group_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_rebalance_readonly_group_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_rebalance_readonly_group_operation_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_rebalance_readonly_group_operation_test.go similarity index 75% rename from tencentcloud/resource_tc_postgresql_rebalance_readonly_group_operation_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_rebalance_readonly_group_operation_test.go index a68ec00f16..fe12d3ac42 100644 --- a/tencentcloud/resource_tc_postgresql_rebalance_readonly_group_operation_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_rebalance_readonly_group_operation_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,16 +12,16 @@ func TestAccTencentCloudPostgresqlRebalanceReadonlyGroupOperationResource_basic( // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlRebalanceReadonlyGroupOperation, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet("tencentcloud_postgresql_rebalance_readonly_group_operation.rebalance_readonly_group_operation", "id"), @@ -30,7 +32,7 @@ func TestAccTencentCloudPostgresqlRebalanceReadonlyGroupOperationResource_basic( }) } -const testAccPostgresqlRebalanceReadonlyGroupOperation = CommonPresetPGSQL + ` +const testAccPostgresqlRebalanceReadonlyGroupOperation = tcacctest.CommonPresetPGSQL + ` resource "tencentcloud_postgresql_readonly_group" "group_rebalance" { master_db_instance_id = local.pgsql_id name = "test-pg-readonly-group-rebalance" diff --git a/tencentcloud/resource_tc_postgresql_renew_db_instance_operation.go b/tencentcloud/services/postgresql/resource_tc_postgresql_renew_db_instance_operation.go similarity index 72% rename from tencentcloud/resource_tc_postgresql_renew_db_instance_operation.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_renew_db_instance_operation.go index 5460995669..783bc8b196 100644 --- a/tencentcloud/resource_tc_postgresql_renew_db_instance_operation.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_renew_db_instance_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package postgresql import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlRenewDbInstanceOperation() *schema.Resource { +func ResourceTencentCloudPostgresqlRenewDbInstanceOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlRenewDbInstanceOperationCreate, Read: resourceTencentCloudPostgresqlRenewDbInstanceOperationRead, @@ -51,10 +54,10 @@ func resourceTencentCloudPostgresqlRenewDbInstanceOperation() *schema.Resource { } func resourceTencentCloudPostgresqlRenewDbInstanceOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_renew_db_instance_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_renew_db_instance_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewRenewInstanceRequest() @@ -83,10 +86,10 @@ func resourceTencentCloudPostgresqlRenewDbInstanceOperationCreate(d *schema.Reso } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().RenewInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().RenewInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -99,9 +102,9 @@ func resourceTencentCloudPostgresqlRenewDbInstanceOperationCreate(d *schema.Reso d.SetId(dBInstanceId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"running"}, 10*readRetryTimeout, 5*time.Second, service.PostgresqlDbInstanceOperationStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"running"}, 10*tccommon.ReadRetryTimeout, 5*time.Second, service.PostgresqlDbInstanceOperationStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -111,15 +114,15 @@ func resourceTencentCloudPostgresqlRenewDbInstanceOperationCreate(d *schema.Reso } func resourceTencentCloudPostgresqlRenewDbInstanceOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_renew_db_instance_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_renew_db_instance_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPostgresqlRenewDbInstanceOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_renew_db_instance_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_renew_db_instance_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_restart_db_instance_operation.go b/tencentcloud/services/postgresql/resource_tc_postgresql_restart_db_instance_operation.go similarity index 62% rename from tencentcloud/resource_tc_postgresql_restart_db_instance_operation.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_restart_db_instance_operation.go index 20d7f36084..1e10c4d75b 100644 --- a/tencentcloud/resource_tc_postgresql_restart_db_instance_operation.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_restart_db_instance_operation.go @@ -1,16 +1,19 @@ -package tencentcloud +package postgresql import ( "log" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlRestartDbInstanceOperation() *schema.Resource { +func ResourceTencentCloudPostgresqlRestartDbInstanceOperation() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlRestartDbInstanceOperationCreate, Read: resourceTencentCloudPostgresqlRestartDbInstanceOperationRead, @@ -27,10 +30,10 @@ func resourceTencentCloudPostgresqlRestartDbInstanceOperation() *schema.Resource } func resourceTencentCloudPostgresqlRestartDbInstanceOperationCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_restart_db_instance_operation.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_restart_db_instance_operation.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = postgresql.NewRestartDBInstanceRequest() @@ -41,10 +44,10 @@ func resourceTencentCloudPostgresqlRestartDbInstanceOperationCreate(d *schema.Re dBInstanceId = v.(string) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().RestartDBInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().RestartDBInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -57,9 +60,9 @@ func resourceTencentCloudPostgresqlRestartDbInstanceOperationCreate(d *schema.Re d.SetId(dBInstanceId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - conf := BuildStateChangeConf([]string{}, []string{"running"}, 2*readRetryTimeout, 10*time.Second, service.PostgresqlDbInstanceOperationStateRefreshFunc(d.Id(), []string{})) + conf := tccommon.BuildStateChangeConf([]string{}, []string{"running"}, 2*tccommon.ReadRetryTimeout, 10*time.Second, service.PostgresqlDbInstanceOperationStateRefreshFunc(d.Id(), []string{})) if _, e := conf.WaitForState(); e != nil { return e @@ -69,15 +72,15 @@ func resourceTencentCloudPostgresqlRestartDbInstanceOperationCreate(d *schema.Re } func resourceTencentCloudPostgresqlRestartDbInstanceOperationRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_restart_db_instance_operation.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_restart_db_instance_operation.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPostgresqlRestartDbInstanceOperationDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_restart_db_instance_operation.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_restart_db_instance_operation.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_security_group_config.go b/tencentcloud/services/postgresql/resource_tc_postgresql_security_group_config.go similarity index 73% rename from tencentcloud/resource_tc_postgresql_security_group_config.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_security_group_config.go index a7acf67b1a..acd5c3bbb2 100644 --- a/tencentcloud/resource_tc_postgresql_security_group_config.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_security_group_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPostgresqlSecurityGroupConfig() *schema.Resource { +func ResourceTencentCloudPostgresqlSecurityGroupConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPostgresqlSecurityGroupConfigCreate, Read: resourceTencentCloudPostgresqlSecurityGroupConfigRead, @@ -45,8 +48,8 @@ func resourceTencentCloudPostgresqlSecurityGroupConfig() *schema.Resource { } func resourceTencentCloudPostgresqlSecurityGroupConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_security_group_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_security_group_config.create")() + defer tccommon.InconsistentCheck(d, meta)() pgInstanceId := "" roGroupId := "" @@ -59,22 +62,22 @@ func resourceTencentCloudPostgresqlSecurityGroupConfigCreate(d *schema.ResourceD roGroupId = v.(string) } - d.SetId(strings.Join([]string{pgInstanceId, roGroupId}, FILED_SP)) + d.SetId(strings.Join([]string{pgInstanceId, roGroupId}, tccommon.FILED_SP)) return resourceTencentCloudPostgresqlSecurityGroupConfigUpdate(d, meta) } func resourceTencentCloudPostgresqlSecurityGroupConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_security_group_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_security_group_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PostgresqlService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PostgresqlService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -104,14 +107,14 @@ func resourceTencentCloudPostgresqlSecurityGroupConfigRead(d *schema.ResourceDat } func resourceTencentCloudPostgresqlSecurityGroupConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_security_group_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_security_group_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := postgresql.NewModifyDBInstanceSecurityGroupsRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -131,10 +134,10 @@ func resourceTencentCloudPostgresqlSecurityGroupConfigUpdate(d *schema.ResourceD } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePostgresqlClient().ModifyDBInstanceSecurityGroups(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePostgresqlClient().ModifyDBInstanceSecurityGroups(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -149,8 +152,8 @@ func resourceTencentCloudPostgresqlSecurityGroupConfigUpdate(d *schema.ResourceD } func resourceTencentCloudPostgresqlSecurityGroupConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_postgresql_security_group_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_postgresql_security_group_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_postgresql_security_group_config_test.go b/tencentcloud/services/postgresql/resource_tc_postgresql_security_group_config_test.go similarity index 72% rename from tencentcloud/resource_tc_postgresql_security_group_config_test.go rename to tencentcloud/services/postgresql/resource_tc_postgresql_security_group_config_test.go index 32c5983168..75a02f0032 100644 --- a/tencentcloud/resource_tc_postgresql_security_group_config_test.go +++ b/tencentcloud/services/postgresql/resource_tc_postgresql_security_group_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package postgresql_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -12,16 +14,16 @@ func TestAccTencentCloudPostgresqlSecurityGroupConfigResource_basic(t *testing.T // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlSecurityGroupConfig_ins, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(TestAccPostgresqlSecurityGroupConfigObject, "id"), @@ -37,16 +39,16 @@ func TestAccTencentCloudPostgresqlSecurityGroupConfigResource_ro(t *testing.T) { // t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheck(t) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPostgresqlSecurityGroupConfig_ro, PreConfig: func() { - testAccStepSetRegion(t, "ap-guangzhou") - testAccPreCheckCommon(t, ACCOUNT_TYPE_COMMON) + tcacctest.AccStepSetRegion(t, "ap-guangzhou") + tcacctest.AccPreCheckCommon(t, tcacctest.ACCOUNT_TYPE_COMMON) }, Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(TestAccPostgresqlSecurityGroupConfigObject, "id"), @@ -58,7 +60,7 @@ func TestAccTencentCloudPostgresqlSecurityGroupConfigResource_ro(t *testing.T) { }) } -const testAccPostgresqlSecurityGroupConfig_ins = CommonPresetPGSQL + defaultSecurityGroupData + ` +const testAccPostgresqlSecurityGroupConfig_ins = tcacctest.CommonPresetPGSQL + tcacctest.DefaultSecurityGroupData + ` resource "tencentcloud_postgresql_security_group_config" "security_group_config" { security_group_id_set = [local.sg_id, local.sg_id2] @@ -67,7 +69,7 @@ resource "tencentcloud_postgresql_security_group_config" "security_group_config" ` -const testAccPostgresqlSecurityGroupConfig_ro = CommonPresetPGSQL + defaultVpcSubnets + defaultSecurityGroupData + ` +const testAccPostgresqlSecurityGroupConfig_ro = tcacctest.CommonPresetPGSQL + tcacctest.DefaultVpcSubnets + tcacctest.DefaultSecurityGroupData + ` resource "tencentcloud_postgresql_readonly_group" "group" { master_db_instance_id = local.pgsql_id name = "tf_test_ro_sg" diff --git a/tencentcloud/service_tencentcloud_postgresql.go b/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go similarity index 92% rename from tencentcloud/service_tencentcloud_postgresql.go rename to tencentcloud/services/postgresql/service_tencentcloud_postgresql.go index e62144b9ba..81c2159eb2 100644 --- a/tencentcloud/service_tencentcloud_postgresql.go +++ b/tencentcloud/services/postgresql/service_tencentcloud_postgresql.go @@ -1,4 +1,4 @@ -package tencentcloud +package postgresql import ( "context" @@ -8,14 +8,21 @@ import ( "strconv" "time" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" postgresql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewPostgresqlService(client *connectivity.TencentCloudClient) PostgresqlService { + return PostgresqlService{client: client} +} + type PostgresqlService struct { client *connectivity.TencentCloudClient } @@ -29,7 +36,7 @@ func (me *PostgresqlService) CreatePostgresqlInstance( dbNodeSet []*postgresql.DBNode, needSupportTde int, kmsKeyId, kmsRegion string, autoVoucher int, voucherIds []*string, ) (instanceId string, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewCreateInstancesRequest() defer func() { if errRet != nil { @@ -121,7 +128,7 @@ func (me *PostgresqlService) CreatePostgresqlInstance( } func (me *PostgresqlService) DescribeOrders(ctx context.Context, dealIds []*string) (deals []*postgresql.PgDeal, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeOrdersRequest() defer func() { if errRet != nil { @@ -135,10 +142,10 @@ func (me *PostgresqlService) DescribeOrders(ctx context.Context, dealIds []*stri ratelimit.Check(request.GetAction()) var response *postgresql.DescribeOrdersResponse - err := resource.Retry(readRetryTimeout*5, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError { res, err := me.client.UsePostgresqlClient().DescribeOrders(request) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if len(res.Response.Deals) == 0 { return resource.RetryableError(fmt.Errorf("waiting for deal return instance id")) @@ -163,7 +170,7 @@ func (me *PostgresqlService) DescribeOrders(ctx context.Context, dealIds []*stri } func (me *PostgresqlService) InitPostgresqlInstance(ctx context.Context, instanceId string, username string, password string, charset string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewInitDBInstancesRequest() defer func() { if errRet != nil { @@ -188,7 +195,7 @@ func (me *PostgresqlService) InitPostgresqlInstance(ctx context.Context, instanc } func (me *PostgresqlService) DescribeSpecinfos(ctx context.Context, zone string) (specCodeList []*postgresql.SpecItemInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeProductConfigRequest() defer func() { if errRet != nil { @@ -213,7 +220,7 @@ func (me *PostgresqlService) DescribeSpecinfos(ctx context.Context, zone string) } func (me *PostgresqlService) ModifyBackupPlan(ctx context.Context, request *postgresql.ModifyBackupPlanRequest) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", @@ -236,7 +243,7 @@ func (me *PostgresqlService) ModifyBackupPlan(ctx context.Context, request *post } func (me *PostgresqlService) DescribeBackupPlans(ctx context.Context, request *postgresql.DescribeBackupPlansRequest) (result []*postgresql.BackupPlan, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", @@ -263,7 +270,7 @@ func (me *PostgresqlService) DescribeBackupPlans(ctx context.Context, request *p } func (me *PostgresqlService) DescribeDBXlogs(ctx context.Context, request *postgresql.DescribeDBXlogsRequest) (xlogs []*postgresql.Xlog, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", @@ -294,7 +301,7 @@ func (me *PostgresqlService) DescribeDBXlogs(ctx context.Context, request *postg } func (me *PostgresqlService) ModifyPublicService(ctx context.Context, openInternet bool, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s-open:%t] fail,reason[%s]", logId, "modifyInternetService", openInternet, errRet.Error()) @@ -307,10 +314,10 @@ func (me *PostgresqlService) ModifyPublicService(ctx context.Context, openIntern ratelimit.Check(request.GetAction()) var response *postgresql.OpenDBExtranetAccessResponse - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { resp, err := me.client.UsePostgresqlClient().OpenDBExtranetAccess(request) if err != nil { - return retryError(err, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) + return tccommon.RetryError(err, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) } response = resp return nil @@ -328,10 +335,10 @@ func (me *PostgresqlService) ModifyPublicService(ctx context.Context, openIntern startProgressRetries := 5 // check open or not - err = resource.Retry(3*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, has, err := me.DescribePostgresqlInstanceById(ctx, instanceId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if !has { return resource.NonRetryableError(fmt.Errorf("check postgresql instance %s fail, instance is not exist", instanceId)) @@ -343,14 +350,14 @@ func (me *PostgresqlService) ModifyPublicService(ctx context.Context, openIntern if *v.NetType != "public" { continue } - if MatchAny(*v.Status, "opened", "2") { + if tccommon.MatchAny(*v.Status, "opened", "2") { return nil } - if MatchAny(*v.Status, "opening", "4") { + if tccommon.MatchAny(*v.Status, "opening", "4") { startProgressRetries = 0 return resource.RetryableError(fmt.Errorf("status %s, postgresql instance %s waiting", *v.Status, instanceId)) } - if startProgressRetries > 0 && MatchAny(*v.Status, "closed", "initing") { + if startProgressRetries > 0 && tccommon.MatchAny(*v.Status, "closed", "initing") { startProgressRetries -= 1 return resource.RetryableError(fmt.Errorf("status still closed, retry remaining count: %d", startProgressRetries)) } @@ -369,10 +376,10 @@ func (me *PostgresqlService) ModifyPublicService(ctx context.Context, openIntern ratelimit.Check(request.GetAction()) var response *postgresql.CloseDBExtranetAccessResponse - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { resp, err := me.client.UsePostgresqlClient().CloseDBExtranetAccess(request) if err != nil { - return retryError(err, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) + return tccommon.RetryError(err, postgresql.OPERATIONDENIED_INSTANCESTATUSLIMITOPERROR) } response = resp return nil @@ -386,10 +393,10 @@ func (me *PostgresqlService) ModifyPublicService(ctx context.Context, openIntern } startProgressRetries := 5 // check close or not - err = resource.Retry(3*readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError { instance, has, err := me.DescribePostgresqlInstanceById(ctx, instanceId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if !has { return resource.NonRetryableError(fmt.Errorf("check postgresql instance %s fail, instance is not exist", instanceId)) @@ -401,10 +408,10 @@ func (me *PostgresqlService) ModifyPublicService(ctx context.Context, openIntern if *v.NetType != "public" { continue } - if MatchAny(*v.Status, "closed", "3", "initing", "1") { + if tccommon.MatchAny(*v.Status, "closed", "3", "initing", "1") { return nil } - if MatchAny(*v.Status, "closing", "4") { + if tccommon.MatchAny(*v.Status, "closing", "4") { return resource.RetryableError(fmt.Errorf("status %s, postgresql instance %s waiting", *v.Status, instanceId)) } if startProgressRetries > 0 && *v.Status == "opened" { @@ -423,7 +430,7 @@ func (me *PostgresqlService) ModifyPublicService(ctx context.Context, openIntern } func (me *PostgresqlService) DescribePostgresqlInstanceById(ctx context.Context, instanceId string) (instance *postgresql.DBInstance, has bool, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeDBInstanceAttributeRequest() defer func() { if errRet != nil { @@ -451,7 +458,7 @@ func (me *PostgresqlService) DescribePostgresqlInstanceById(ctx context.Context, } func (me *PostgresqlService) DescribePostgresqlInstanceHAConfigById(ctx context.Context, instanceId string) (haConfig *postgresql.DescribeDBInstanceHAConfigResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeDBInstanceHAConfigRequest() defer func() { if errRet != nil { @@ -477,7 +484,7 @@ func (me *PostgresqlService) DescribePostgresqlInstanceHAConfigById(ctx context. } func (me *PostgresqlService) DescribePostgresqlInstances(ctx context.Context, filter []*postgresql.Filter) (instanceList []*postgresql.DBInstance, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeDBInstancesRequest() defer func() { if errRet != nil { @@ -509,7 +516,7 @@ func (me *PostgresqlService) DescribePostgresqlInstances(ctx context.Context, fi } func (me *PostgresqlService) ModifyPostgresqlInstanceName(ctx context.Context, instanceId string, name string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewModifyDBInstanceNameRequest() defer func() { if errRet != nil { @@ -525,7 +532,7 @@ func (me *PostgresqlService) ModifyPostgresqlInstanceName(ctx context.Context, i } func (me *PostgresqlService) UpgradePostgresqlInstance(ctx context.Context, instanceId string, memory int, storage int) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewModifyDBInstanceSpecRequest() defer func() { if errRet != nil { @@ -542,7 +549,7 @@ func (me *PostgresqlService) UpgradePostgresqlInstance(ctx context.Context, inst } func (me *PostgresqlService) ModifyPostgresqlInstanceProjectId(ctx context.Context, instanceId string, projectId int) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewModifyDBInstancesProjectRequest() defer func() { if errRet != nil { @@ -558,7 +565,7 @@ func (me *PostgresqlService) ModifyPostgresqlInstanceProjectId(ctx context.Conte } func (me *PostgresqlService) SetPostgresqlInstanceAutoRenewFlag(ctx context.Context, instanceId string, autoRenewFlag int) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewSetAutoRenewFlagRequest() defer func() { if errRet != nil { @@ -574,7 +581,7 @@ func (me *PostgresqlService) SetPostgresqlInstanceAutoRenewFlag(ctx context.Cont } func (me *PostgresqlService) IsolatePostgresqlInstance(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewIsolateDBInstancesRequest() request.DBInstanceIdSet = []*string{&instanceId} @@ -585,11 +592,11 @@ func (me *PostgresqlService) IsolatePostgresqlInstance(ctx context.Context, inst } }() - errRet = resource.Retry(writeRetryTimeout, func() *resource.RetryError { + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { _, errRet = me.client.UsePostgresqlClient().IsolateDBInstances(request) if errRet != nil { log.Printf("[CRITAL]%s describe account failed, reason: %v", logId, errRet) - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -597,7 +604,7 @@ func (me *PostgresqlService) IsolatePostgresqlInstance(ctx context.Context, inst } func (me *PostgresqlService) DeletePostgresqlInstance(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDestroyDBInstanceRequest() defer func() { if errRet != nil { @@ -612,7 +619,7 @@ func (me *PostgresqlService) DeletePostgresqlInstance(ctx context.Context, insta } func (me *PostgresqlService) SetPostgresqlInstanceRootPassword(ctx context.Context, instanceId string, password string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewResetAccountPasswordRequest() defer func() { if errRet != nil { @@ -630,7 +637,7 @@ func (me *PostgresqlService) SetPostgresqlInstanceRootPassword(ctx context.Conte func (me *PostgresqlService) CheckDBInstanceStatus(ctx context.Context, instanceId string, retryMinutes ...int) error { - var timeout = 2 * readRetryTimeout + var timeout = 2 * tccommon.ReadRetryTimeout if len(retryMinutes) > 0 && retryMinutes[0] > 0 { times := retryMinutes[0] timeout = time.Minute * time.Duration(times) @@ -639,7 +646,7 @@ func (me *PostgresqlService) CheckDBInstanceStatus(ctx context.Context, instance err := resource.Retry(timeout, func() *resource.RetryError { instance, has, err := me.DescribePostgresqlInstanceById(ctx, instanceId) if err != nil { - return retryError(err) + return tccommon.RetryError(err) } if !has { return resource.NonRetryableError(fmt.Errorf("check postgresql instance %s fail", instanceId)) @@ -654,7 +661,7 @@ func (me *PostgresqlService) CheckDBInstanceStatus(ctx context.Context, instance } func (me *PostgresqlService) DescribeRootUser(ctx context.Context, instanceId string) (accounts []*postgresql.AccountInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) orderBy := "createTime" orderByType := "asc" @@ -663,11 +670,11 @@ func (me *PostgresqlService) DescribeRootUser(ctx context.Context, instanceId st request.OrderBy = &orderBy request.OrderByType = &orderByType var response *postgresql.DescribeAccountsResponse - errRet = resource.Retry(2*readRetryTimeout, func() *resource.RetryError { + errRet = resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { response, errRet = me.client.UsePostgresqlClient().DescribeAccounts(request) if errRet != nil { log.Printf("[CRITAL]%s describe account failed, reason: %v", logId, errRet) - return retryError(errRet) + return tccommon.RetryError(errRet) } return nil }) @@ -684,7 +691,7 @@ func (me *PostgresqlService) DescribeRootUser(ctx context.Context, instanceId st } func (me *PostgresqlService) ModifyPgParams(ctx context.Context, instanceId string, paramEntrys map[string]string) (err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewModifyDBInstanceParametersRequest() request.DBInstanceId = &instanceId request.ParamList = make([]*postgresql.ParamEntry, 0) @@ -705,19 +712,19 @@ func (me *PostgresqlService) ModifyPgParams(ctx context.Context, instanceId stri } func (me *PostgresqlService) DescribePgParams(ctx context.Context, instanceId string) (params map[string]string, err error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) stateCheckRequest := postgresql.NewDescribeParamsEventRequest() stateCheckRequest.DBInstanceId = &instanceId // wait for param effective - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { stateCheckResponse, inErr := me.client.UsePostgresqlClient().DescribeParamsEvent(stateCheckRequest) if inErr != nil { ee, ok := inErr.(*sdkErrors.TencentCloudSDKError) if ok && ee.GetCode() == "ResourceNotFound.InstanceNotFoundError" { return nil } - return retryError(inErr) + return tccommon.RetryError(inErr) } for _, eventItem := range stateCheckResponse.Response.EventItems { @@ -757,7 +764,7 @@ func (me *PostgresqlService) DescribePgParams(ctx context.Context, instanceId st } func (me *PostgresqlService) ModifyDBInstanceDeployment(ctx context.Context, request *postgresql.ModifyDBInstanceDeploymentRequest) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", @@ -780,7 +787,7 @@ func (me *PostgresqlService) ModifyDBInstanceDeployment(ctx context.Context, req } func (me *PostgresqlService) DescribeDBInstanceAttribute(ctx context.Context, request *postgresql.DescribeDBInstanceAttributeRequest) (ins *postgresql.DBInstance, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", @@ -805,7 +812,7 @@ func (me *PostgresqlService) DescribeDBInstanceAttribute(ctx context.Context, re } func (me *PostgresqlService) DescribeDBEncryptionKeys(ctx context.Context, request *postgresql.DescribeEncryptionKeysRequest) (has bool, key *postgresql.EncryptionKey, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) defer func() { if errRet != nil { log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", @@ -832,7 +839,7 @@ func (me *PostgresqlService) DescribeDBEncryptionKeys(ctx context.Context, reque } func (me *PostgresqlService) DescribePostgresqlReadonlyGroups(ctx context.Context, filter []*postgresql.Filter) (instanceList []*postgresql.ReadOnlyGroup, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeReadOnlyGroupsRequest() defer func() { if errRet != nil { @@ -864,7 +871,7 @@ func (me *PostgresqlService) DescribePostgresqlReadonlyGroups(ctx context.Contex } func (me *PostgresqlService) DescribePostgresqlReadOnlyGroupById(ctx context.Context, dbInstanceId string) (instanceList []*postgresql.ReadOnlyGroup, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeReadOnlyGroupsRequest() defer func() { if errRet != nil { @@ -903,7 +910,7 @@ func (me *PostgresqlService) DescribePostgresqlReadOnlyGroupById(ctx context.Con } func (me *PostgresqlService) DeletePostgresqlReadOnlyGroupById(ctx context.Context, groupId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDeleteReadOnlyGroupRequest() defer func() { if errRet != nil { @@ -919,7 +926,7 @@ func (me *PostgresqlService) DeletePostgresqlReadOnlyGroupById(ctx context.Conte func (me *PostgresqlService) DescribePostgresqlParameterTemplatesByFilter(ctx context.Context, param map[string]interface{}) (ParameterTemplates []*postgresql.ParameterTemplate, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeParameterTemplatesRequest() ) @@ -972,7 +979,7 @@ func (me *PostgresqlService) DescribePostgresqlParameterTemplatesByFilter(ctx co } func (me *PostgresqlService) DescribePostgresqlParameterTemplateById(ctx context.Context, templateId string) (ParameterTemplate *postgresql.DescribeParameterTemplateAttributesResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeParameterTemplateAttributesRequest() request.TemplateId = &templateId @@ -997,7 +1004,7 @@ func (me *PostgresqlService) DescribePostgresqlParameterTemplateById(ctx context } func (me *PostgresqlService) DeletePostgresqlParameterTemplateById(ctx context.Context, templateId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDeleteParameterTemplateRequest() request.TemplateId = &templateId @@ -1022,7 +1029,7 @@ func (me *PostgresqlService) DeletePostgresqlParameterTemplateById(ctx context.C func (me *PostgresqlService) PostgresqlUpgradeKernelVersionRefreshFunc(instanceId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil instance, _, err := me.DescribePostgresqlInstanceById(ctx, instanceId) @@ -1036,7 +1043,7 @@ func (me *PostgresqlService) PostgresqlUpgradeKernelVersionRefreshFunc(instanceI func (me *PostgresqlService) DescribePostgresqlReadonlyGroupsByFilter(ctx context.Context, param map[string]interface{}) (ReadOnlyGroups []*postgresql.ReadOnlyGroup, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeReadOnlyGroupsRequest() ) @@ -1075,7 +1082,7 @@ func (me *PostgresqlService) DescribePostgresqlReadonlyGroupsByFilter(ctx contex } func (me *PostgresqlService) DescribePostgresqlBackupPlanConfigById(ctx context.Context, dBInstanceId string) (BackupPlanConfig *postgresql.BackupPlan, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeBackupPlansRequest() request.DBInstanceId = &dBInstanceId @@ -1104,7 +1111,7 @@ func (me *PostgresqlService) DescribePostgresqlBackupPlanConfigById(ctx context. } func (me *PostgresqlService) DescribePostgresqlBackupDownloadRestrictionConfigById(ctx context.Context, restrictionType string) (BackupDownloadRestrictionConfig *postgresql.DescribeBackupDownloadRestrictionResponseParams, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeBackupDownloadRestrictionRequest() @@ -1128,7 +1135,7 @@ func (me *PostgresqlService) DescribePostgresqlBackupDownloadRestrictionConfigBy } func (me *PostgresqlService) DescribePostgresqlSecurityGroupConfigById(ctx context.Context, dBInstanceId string, readOnlyGroupId string) (SecurityGroupConfigs []*postgresql.SecurityGroup, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeDBInstanceSecurityGroupsRequest() @@ -1164,7 +1171,7 @@ func (me *PostgresqlService) DescribePostgresqlSecurityGroupConfigById(ctx conte func (me *PostgresqlService) PostgresqlDbInstanceOperationStateRefreshFunc(instanceId string, failStates []string) resource.StateRefreshFunc { return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil instance, _, err := me.DescribePostgresqlInstanceById(ctx, instanceId) @@ -1177,9 +1184,9 @@ func (me *PostgresqlService) PostgresqlDbInstanceOperationStateRefreshFunc(insta } func (me *PostgresqlService) PostgresqlDBInstanceStateRefreshFunc(dbInstanceId string, failStates []string) resource.StateRefreshFunc { - logElapsed("PostgresqlDBInstanceStateRefreshFunc called")() + tccommon.LogElapsed("PostgresqlDBInstanceStateRefreshFunc called")() return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil object, has, err := me.DescribePostgresqlInstanceById(ctx, dbInstanceId) @@ -1200,8 +1207,8 @@ func (me *PostgresqlService) PostgresqlDBInstanceStateRefreshFunc(dbInstanceId s } func (me *PostgresqlService) DescribePostgresqlDBInstanceNetInfosById(ctx context.Context, dBInstanceId string) (netInfos []*postgresql.DBInstanceNetInfo, errRet error) { - logElapsed("DescribePostgresqlDBInstanceNetInfosById called")() - logId := getLogId(ctx) + tccommon.LogElapsed("DescribePostgresqlDBInstanceNetInfosById called")() + logId := tccommon.GetLogId(ctx) request := postgresql.NewDescribeDBInstanceAttributeRequest() request.DBInstanceId = &dBInstanceId @@ -1230,7 +1237,7 @@ func (me *PostgresqlService) DescribePostgresqlDBInstanceNetInfosById(ctx contex } func (me *PostgresqlService) DeletePostgresqlDBInstanceNetworkAccessById(ctx context.Context, dBInstanceId, vpcId, subnetId, vip string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDeleteDBInstanceNetworkAccessRequest() request.DBInstanceId = &dBInstanceId @@ -1257,9 +1264,9 @@ func (me *PostgresqlService) DeletePostgresqlDBInstanceNetworkAccessById(ctx con } func (me *PostgresqlService) PostgresqlDBInstanceNetworkAccessStateRefreshFunc(dBInstanceId, vpcId, subnetId, oldVip, newVip string, failStates []string) resource.StateRefreshFunc { - logElapsed("PostgresqlDBInstanceNetworkAccessStateRefreshFunc called")() + tccommon.LogElapsed("PostgresqlDBInstanceNetworkAccessStateRefreshFunc called")() return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil netInfos, err := me.DescribePostgresqlDBInstanceNetInfosById(ctx, dBInstanceId) @@ -1291,8 +1298,8 @@ func (me *PostgresqlService) PostgresqlDBInstanceNetworkAccessStateRefreshFunc(d } func (me *PostgresqlService) DescribePostgresqlReadonlyGroupNetInfosById(ctx context.Context, dbInstanceId, roGroupId string) (netInfos []*postgresql.DBInstanceNetInfo, errRet error) { - logElapsed("DescribePostgresqlReadonlyGroupNetInfoById called")() - logId := getLogId(ctx) + tccommon.LogElapsed("DescribePostgresqlReadonlyGroupNetInfoById called")() + logId := tccommon.GetLogId(ctx) paramMap := map[string]interface{}{ "Filters": []*postgresql.Filter{ @@ -1328,7 +1335,7 @@ func (me *PostgresqlService) DescribePostgresqlReadonlyGroupNetInfosById(ctx con } func (me *PostgresqlService) DeletePostgresqlReadonlyGroupNetworkAccessById(ctx context.Context, readOnlyGroupId, vpcId, subnetId, vip string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDeleteReadOnlyGroupNetworkAccessRequest() request.ReadOnlyGroupId = &readOnlyGroupId @@ -1355,9 +1362,9 @@ func (me *PostgresqlService) DeletePostgresqlReadonlyGroupNetworkAccessById(ctx } func (me *PostgresqlService) PostgresqlReadonlyGroupNetworkAccessStateRefreshFunc(dbInstanceId, roGroupId, vpcId, subnetId, oldVip, newVip string, failStates []string) resource.StateRefreshFunc { - logElapsed("PostgresqlReadonlyGroupNetworkAccessStateRefreshFunc called")() + tccommon.LogElapsed("PostgresqlReadonlyGroupNetworkAccessStateRefreshFunc called")() return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil netInfos, err := me.DescribePostgresqlReadonlyGroupNetInfosById(ctx, dbInstanceId, roGroupId) @@ -1389,9 +1396,9 @@ func (me *PostgresqlService) PostgresqlReadonlyGroupNetworkAccessStateRefreshFun } func (me *PostgresqlService) PostgresqlReadonlyGroupStateRefreshFunc(dbInstanceId, roGroupId string, failStates []string) resource.StateRefreshFunc { - logElapsed("PostgresqlReadonlyGroupStateRefreshFunc called")() + tccommon.LogElapsed("PostgresqlReadonlyGroupStateRefreshFunc called")() return func() (interface{}, string, error) { - ctx := contextNil + ctx := tccommon.ContextNil result, err := me.DescribePostgresqlReadOnlyGroupById(ctx, dbInstanceId) @@ -1423,7 +1430,7 @@ func (me *PostgresqlService) PostgresqlReadonlyGroupStateRefreshFunc(dbInstanceI func (me *PostgresqlService) DescribePostgresqlBackupDownloadUrlsByFilter(ctx context.Context, param map[string]interface{}) (BackupDownloadUrl *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeBackupDownloadURLRequest() ) @@ -1469,7 +1476,7 @@ func (me *PostgresqlService) DescribePostgresqlBackupDownloadUrlsByFilter(ctx co func (me *PostgresqlService) DescribePostgresqlBaseBackupsByFilter(ctx context.Context, param map[string]interface{}) (BaseBackups []*postgresql.BaseBackup, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeBaseBackupsRequest() ) @@ -1529,7 +1536,7 @@ func (me *PostgresqlService) DescribePostgresqlBaseBackupsByFilter(ctx context.C func (me *PostgresqlService) DescribePostgresqlLogBackupsByFilter(ctx context.Context, param map[string]interface{}) (LogBackups []*postgresql.LogBackup, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeLogBackupsRequest() ) @@ -1589,7 +1596,7 @@ func (me *PostgresqlService) DescribePostgresqlLogBackupsByFilter(ctx context.Co func (me *PostgresqlService) DescribePostgresqlDbInstanceClassesByFilter(ctx context.Context, param map[string]interface{}) (DbInstanceClasses []*postgresql.ClassInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeClassesRequest() ) @@ -1630,7 +1637,7 @@ func (me *PostgresqlService) DescribePostgresqlDbInstanceClassesByFilter(ctx con func (me *PostgresqlService) DescribePostgresqlDefaultParametersByFilter(ctx context.Context, param map[string]interface{}) (DefaultParameters []*postgresql.ParamInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeDefaultParametersRequest() ) @@ -1668,7 +1675,7 @@ func (me *PostgresqlService) DescribePostgresqlDefaultParametersByFilter(ctx con func (me *PostgresqlService) DescribePostgresqlRecoveryTimeByFilter(ctx context.Context, param map[string]interface{}) (ret *postgresql.DescribeAvailableRecoveryTimeResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeAvailableRecoveryTimeRequest() ) @@ -1703,7 +1710,7 @@ func (me *PostgresqlService) DescribePostgresqlRecoveryTimeByFilter(ctx context. func (me *PostgresqlService) DescribePostgresqlRegionsByFilter(ctx context.Context) (Regions []*postgresql.RegionInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeRegionsRequest() ) @@ -1732,7 +1739,7 @@ func (me *PostgresqlService) DescribePostgresqlRegionsByFilter(ctx context.Conte func (me *PostgresqlService) DescribePostgresqlDbInstanceVersionsByFilter(ctx context.Context) (DbInstanceVersions []*postgresql.Version, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeDBVersionsRequest() ) @@ -1761,7 +1768,7 @@ func (me *PostgresqlService) DescribePostgresqlDbInstanceVersionsByFilter(ctx co func (me *PostgresqlService) DescribePostgresqlZonesByFilter(ctx context.Context) (Zones []*postgresql.ZoneInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = postgresql.NewDescribeZonesRequest() ) @@ -1789,7 +1796,7 @@ func (me *PostgresqlService) DescribePostgresqlZonesByFilter(ctx context.Context } func (me *PostgresqlService) DescribePostgresqlBaseBackupById(ctx context.Context, baseBackupId string) (BaseBackup *postgresql.BaseBackup, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) params := map[string]interface{}{ "Filters": []*postgresql.Filter{ @@ -1816,7 +1823,7 @@ func (me *PostgresqlService) DescribePostgresqlBaseBackupById(ctx context.Contex } func (me *PostgresqlService) DeletePostgresqlBaseBackupById(ctx context.Context, dBInstanceId string, baseBackupId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := postgresql.NewDeleteBaseBackupRequest() request.DBInstanceId = &dBInstanceId @@ -1830,7 +1837,7 @@ func (me *PostgresqlService) DeletePostgresqlBaseBackupById(ctx context.Context, ratelimit.Check(request.GetAction()) - errRet = resource.Retry(3*writeRetryTimeout, func() *resource.RetryError { + errRet = resource.Retry(3*tccommon.WriteRetryTimeout, func() *resource.RetryError { response, e := me.client.UsePostgresqlClient().DeleteBaseBackup(request) if e != nil { tcErr := e.(*sdkErrors.TencentCloudSDKError) @@ -1838,7 +1845,7 @@ func (me *PostgresqlService) DeletePostgresqlBaseBackupById(ctx context.Context, if tcErr.Code == "FailedOperation.FailedOperationError" { return resource.RetryableError(fmt.Errorf("state not ready, retry...: %v", e.Error())) } - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) } diff --git a/tencentcloud/services/postgresql/service_tencentcloud_redis.go b/tencentcloud/services/postgresql/service_tencentcloud_redis.go new file mode 100644 index 0000000000..a7ffba3842 --- /dev/null +++ b/tencentcloud/services/postgresql/service_tencentcloud_redis.go @@ -0,0 +1,1929 @@ +package postgresql + +import ( + "context" + "fmt" + "log" + "strconv" + "time" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + cvm "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm/v20170312" + redis "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis/v20180412" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +type RedisService struct { + client *connectivity.TencentCloudClient + zoneMap map[int64]string +} + +type TencentCloudRedisDetail struct { + RedisId string + Name string + Zone string + ProjectId int64 + TypeId int64 + Type string + MemSize int64 + Status string + VpcId string + SubnetId string + Ip string + Port int64 + RedisShardNum int64 + RedisReplicasNum int64 + CreateTime string + Tags map[string]string + BillingMode string + NodeInfo []map[string]interface{} +} + +func (me *RedisService) fullZoneId() (errRet error) { + if me.zoneMap == nil { + me.zoneMap = make(map[int64]string) + } + if len(me.zoneMap) != 0 { + return + } + response, err := me.client.UseCvmClient().DescribeZones(cvm.NewDescribeZonesRequest()) + if err != nil { + return err + } + for _, item := range response.Response.ZoneSet { + if zoneId, err := strconv.ParseInt(*item.ZoneId, 10, 64); err != nil { + return fmt.Errorf("[sdk]DescribeZones return ZoneId is not illegal,%s", *item.ZoneId) + } else { + me.zoneMap[zoneId] = *item.Zone + } + } + + return nil +} + +func (me *RedisService) getZoneId(name string) (id int64, errRet error) { + if errRet = me.fullZoneId(); errRet != nil { + return + } + for key, value := range me.zoneMap { + if value == name { + id = key + return + } + } + errRet = fmt.Errorf("this redis zone %s not support yet", name) + return +} + +func (me *RedisService) getZoneName(id int64) (name string, errRet error) { + if errRet = me.fullZoneId(); errRet != nil { + return + } + name = me.zoneMap[id] + if name == "" { + errRet = fmt.Errorf("this redis zoneid %d not support yet", id) + } + return +} + +func (me *RedisService) DescribeRedisZoneConfig(ctx context.Context) (sellConfigures []*redis.RegionConf, errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewDescribeProductInfoRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeProductInfo(request) + if err != nil { + errRet = err + return + } + sellConfigures = response.Response.RegionSet + return +} + +func (me *RedisService) DescribeInstances(ctx context.Context, zoneName, searchKey string, + projectId, needLimit int64) (instances []TencentCloudRedisDetail, errRet error) { + + logId := tccommon.GetLogId(ctx) + + var zoneId int64 = -1 + + if zoneName != "" { + zoneId, errRet = me.getZoneId(zoneName) + if errRet != nil { + return + } + } + + listInitSize := map[bool]int64{true: 500, false: needLimit}[needLimit > 500 || needLimit < 1] + instances = make([]TencentCloudRedisDetail, 0, listInitSize) + + request := redis.NewDescribeInstancesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var ( + limit, offset uint64 = 2, 0 + leftNumber int64 + leftNumberInit bool + ) + + request.Limit = &limit + request.Offset = &offset + +needMoreItems: + if searchKey != "" { + request.SearchKey = &searchKey + } + if projectId >= 0 { + request.ProjectIds = []*int64{&projectId} + } + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeInstances(request) + if err != nil { + errRet = err + return + } + if !leftNumberInit { + leftNumber = *response.Response.TotalCount + leftNumberInit = true + } + leftNumber = leftNumber - int64(limit) + offset = offset + limit + for _, item := range response.Response.InstanceSet { + if zoneId != -1 && *item.ZoneId != zoneId { + continue + } + var instance TencentCloudRedisDetail + instance.Type = REDIS_NAMES[*item.Type] + if REDIS_STATUS[*item.Status] == "" { + instance.Status = "unknown" + } else { + instance.Status = REDIS_STATUS[*item.Status] + } + + name, err := me.getZoneName(*item.ZoneId) + if err != nil { + errRet = err + return + } + + instance.Zone = name + instance.CreateTime = *item.Createtime + instance.Ip = *item.WanIp + instance.MemSize = *item.RedisShardSize + instance.Name = *item.InstanceName + instance.Port = *item.Port + instance.ProjectId = *item.ProjectId + instance.RedisId = *item.InstanceId + instance.SubnetId = *item.UniqSubnetId + instance.VpcId = *item.UniqVpcId + instance.BillingMode = REDIS_CHARGE_TYPE_NAME[*item.BillingMode] + + instance.TypeId = *item.Type + if item.RedisReplicasNum != nil { + instance.RedisReplicasNum = *item.RedisReplicasNum + } + if item.RedisShardNum != nil { + instance.RedisShardNum = *item.RedisShardNum + } + + if item.NodeSet != nil { + nodeInfos := make([]map[string]interface{}, 0, len(item.NodeSet)) + for i := range item.NodeSet { + dMap := make(map[string]interface{}) + nodeInfo := item.NodeSet[i] + if *nodeInfo.NodeType == 0 { + dMap["master"] = true + } else { + dMap["master"] = false + } + dMap["id"] = *nodeInfo.NodeId + dMap["zone_id"] = *nodeInfo.ZoneId + nodeInfos = append(nodeInfos, dMap) + } + instance.NodeInfo = nodeInfos + } + instance.Tags = make(map[string]string, len(item.InstanceTags)) + for _, tag := range item.InstanceTags { + if tag.TagKey == nil { + return nil, fmt.Errorf("[CRITAL]%s api[%s] redis instance tag key is nil", logId, request.GetAction()) + } + if tag.TagValue == nil { + return nil, fmt.Errorf("[CRITAL]%s api[%s] redis instance tag value is nil", logId, request.GetAction()) + } + + instance.Tags[*tag.TagKey] = *tag.TagValue + } + + instances = append(instances, instance) + + if needLimit > 0 && int64(len(instances)) >= needLimit { + return + } + } + if leftNumber < 0 { + return + } else { + goto needMoreItems + } +} + +func (me *RedisService) CreateInstances(ctx context.Context, + zoneName string, typeId int64, password, vpcId, subnetId, redisName string, + memSize, projectId, port int64, + securityGroups []string, + redisShardNum, + redisReplicasNum int, + chargeTypeID int64, + chargePeriod uint64, + nodeInfo []*redis.RedisNodeInfo, + noAuth bool, + autoRenewFlag int, + replicasReadonly bool, + paramsTemplateId string, +) (instanceIds []*string, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := redis.NewCreateInstancesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + // zone + var intZoneId int64 + intZoneId, errRet = me.getZoneId(zoneName) + if errRet != nil { + return + } + request.ZoneId = helper.Int64Uint64(intZoneId) + request.TypeId = helper.Int64Uint64(typeId) + + // vpc + if (vpcId == "" && subnetId != "") || (vpcId != "" && subnetId == "") { + errRet = fmt.Errorf("redis need vpcId and subnetId both set or none") + return + } + if vpcId != "" && subnetId != "" { + request.VpcId = &vpcId + request.SubnetId = &subnetId + } else { + if len(securityGroups) > 0 { + errRet = fmt.Errorf("redis need empty security_groups if vpc_id and subnet_id is empty") + return + } + } + + if projectId >= 0 { + request.ProjectId = &projectId + } + + var ( + vport = uint64(port) + umemSize = uint64(memSize) + goodsNum uint64 = 1 + ) + request.VPort = &vport + request.MemSize = &umemSize + request.BillingMode = &chargeTypeID + request.GoodsNum = &goodsNum + request.Period = &chargePeriod + if redisShardNum > 0 { + request.RedisShardNum = helper.IntInt64(redisShardNum) + } + if redisReplicasNum > 0 { + request.RedisReplicasNum = helper.IntInt64(redisReplicasNum) + } + if redisName != "" { + request.InstanceName = &redisName + } + + request.Password = &password + + if len(securityGroups) > 0 { + request.SecurityGroupIdList = make([]*string, 0, len(securityGroups)) + for v := range securityGroups { + request.SecurityGroupIdList = append(request.SecurityGroupIdList, &securityGroups[v]) + } + } + + if len(nodeInfo) > 0 { + request.NodeSet = nodeInfo + } + + if noAuth { + request.NoAuth = &noAuth + } + if chargeTypeID == REDIS_CHARGE_TYPE_ID[REDIS_CHARGE_TYPE_PREPAID] { + request.AutoRenew = helper.IntUint64(autoRenewFlag) + } + if replicasReadonly { + request.ReplicasReadonly = &replicasReadonly + } + if paramsTemplateId != "" { + request.TemplateId = ¶msTemplateId + } + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().CreateInstances(request) + if err != nil { + errRet = err + return + } + log.Println(response.ToJsonString()) + instanceIds = response.Response.InstanceIds + return +} + +func (me *RedisService) CheckRedisOnlineOk(ctx context.Context, redisId string, retryTimeout time.Duration) (has bool, + online bool, + info *redis.InstanceSet, + errRet error) { + + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeInstancesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceId = &redisId + + // Post https://cdb.tencentcloudapi.com/: always get "Gateway Time-out" + var response *redis.DescribeInstancesResponse + err := resource.Retry(retryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseRedisClient().DescribeInstances(request) + if e != nil { + log.Printf("[CRITAL]%s CheckRedisOnlineOk fail, reason:%s\n", logId, e.Error()) + return tccommon.RetryError(e) + } + response = result + + if len(response.Response.InstanceSet) == 0 { + has = false + return resource.NonRetryableError(fmt.Errorf("instance %s not exist", redisId)) + } + + info = response.Response.InstanceSet[0] + has = true + + if *info.Status == REDIS_STATUS_ONLINE { + online = true + return nil + } + + if *info.Status == REDIS_STATUS_INIT || *info.Status == REDIS_STATUS_PROCESSING { + online = false + return resource.RetryableError(fmt.Errorf("istance %s status is %d, retrying", redisId, *info.Status)) + } + + return nil + }) + + if err != nil { + errRet = err + return + } + + return +} + +func (me *RedisService) CheckRedisUpdateOk(ctx context.Context, redisId string) (errRet error) { + var startUpdate bool + logId := tccommon.GetLogId(ctx) + request := redis.NewDescribeInstancesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceId = &redisId + errRet = resource.Retry(tccommon.ReadRetryTimeout*20, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseRedisClient().DescribeInstances(request) + if err != nil { + return tccommon.RetryError(err) + } + if len(result.Response.InstanceSet) == 0 { + return resource.NonRetryableError(fmt.Errorf("redis %s not exist", redisId)) + } + info := result.Response.InstanceSet[0] + if !startUpdate && *info.Status == REDIS_STATUS_ONLINE { + return resource.RetryableError(fmt.Errorf("waiting for upgrade start")) + } + startUpdate = true + if *info.Status == REDIS_STATUS_PROCESSING || *info.Status == REDIS_STATUS_INIT { + return resource.RetryableError(fmt.Errorf("instance %s status is %d", redisId, *info.Status)) + } + return nil + }) + + return +} + +func (me *RedisService) CheckRedisDestroyOk(ctx context.Context, redisId string) (has bool, + isolated bool, + errRet error) { + + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeInstancesRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.InstanceId = &redisId + + // Post https://cdb.tencentcloudapi.com/: always get "Gateway Time-out" + var response *redis.DescribeInstancesResponse + err := resource.Retry(10*tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseRedisClient().DescribeInstances(request) + if e != nil { + log.Printf("[CRITAL]%s CheckRedisDestroyOk fail, reason:%s\n", logId, e.Error()) + return tccommon.RetryError(e) + } + response = result + return nil + }) + + if err != nil { + errRet = err + return + } + + if len(response.Response.InstanceSet) == 0 { + has = false + return + } + + if len(response.Response.InstanceSet) != 1 { + errRet = fmt.Errorf("redis DescribeInstances one id get %d redis info", len(response.Response.InstanceSet)) + return + } + + has = true + + info := response.Response.InstanceSet[0] + if *info.Status <= REDIS_STATUS_ISOLATE { + isolated = true + return + } else { + isolated = false + return + } +} + +func (me *RedisService) DescribeInstanceDealDetail(ctx context.Context, dealId string) (done bool, redisId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewDescribeInstanceDealDetailRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.DealIds = []*string{&dealId} + + // Post https://cdb.tencentcloudapi.com/: always get "Gateway Time-out" + var response *redis.DescribeInstanceDealDetailResponse + err := resource.Retry(10*tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseRedisClient().DescribeInstanceDealDetail(request) + if e != nil { + log.Printf("[CRITAL]%s DescribeInstanceDealDetail fail, reason:%s\n", logId, e.Error()) + return tccommon.RetryError(e) + } + response = result + return nil + }) + + if err != nil { + errRet = err + return + } + + if len(response.Response.DealDetails) != 1 { + errRet = fmt.Errorf("Redis api DescribeInstanceDealDetail one dealId[%s] return %d deal infos.", + dealId, len(response.Response.DealDetails)) + return + } + + dealDetail := response.Response.DealDetails[0] + status := *dealDetail.Status + + if status == REDIS_ORDER_SUCCESS_DELIVERY { + + if len(dealDetail.InstanceIds) != 1 { + errRet = fmt.Errorf("redis one dealid give %d redis id", len(dealDetail.InstanceIds)) + return + } + redisId = *dealDetail.InstanceIds[0] + done = true + return + } + if status < REDIS_ORDER_SUCCESS_DELIVERY || status == REDIS_ORDER_PAYMENT { + return + } + errRet = fmt.Errorf("redis instance delivery failure, deal status is %d", status) + return +} + +func (me *RedisService) ModifyInstanceName(ctx context.Context, redisId string, name string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewModifyInstanceRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + op := "rename" + request.InstanceName = &name + request.Operation = &op + request.InstanceId = &redisId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().ModifyInstance(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + errRet = err + return +} + +func (me *RedisService) ModifyInstanceProjectId(ctx context.Context, redisId string, projectId int64) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewModifyInstanceRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + op := "modifyProject" + request.ProjectId = &projectId + request.Operation = &op + request.InstanceId = &redisId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().ModifyInstance(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + errRet = err + return +} + +func (me *RedisService) DescribeInstanceSecurityGroup(ctx context.Context, redisId string) (sg []string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewDescribeInstanceSecurityGroupRequest() + request.InstanceIds = []*string{&redisId} + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeInstanceSecurityGroup(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + if err != nil { + errRet = err + return + } + + if len(response.Response.InstanceSecurityGroupsDetail) > 0 { + for _, item := range response.Response.InstanceSecurityGroupsDetail { + if *item.InstanceId == redisId { + sg = make([]string, 0, len(item.SecurityGroupDetails)) + for _, v := range item.SecurityGroupDetails { + sg = append(sg, *v.SecurityGroupId) + } + break + } + } + } + return +} + +// DescribeDBSecurityGroups support query different type of DB by passing product name +func (me *RedisService) DescribeDBSecurityGroups(ctx context.Context, product string, instanceId string) (sg []string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewDescribeDBSecurityGroupsRequest() + request.Product = &product + request.InstanceId = &instanceId + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeDBSecurityGroups(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + if err != nil { + errRet = err + return + } + + groups := response.Response.Groups + if len(groups) > 0 { + for i := range groups { + sg = append(sg, *groups[i].SecurityGroupId) + } + } + return +} + +func (me *RedisService) ModifyDBInstanceSecurityGroups(ctx context.Context, product string, instanceId string, securityGroupIds []*string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewModifyDBInstanceSecurityGroupsRequest() + request.Product = &product + request.InstanceId = &instanceId + request.SecurityGroupIds = securityGroupIds + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().ModifyDBInstanceSecurityGroups(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + errRet = err + return +} + +func (me *RedisService) DestroyPostpaidInstance(ctx context.Context, redisId string) (taskId int64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewDestroyPostpaidInstanceRequest() + request.InstanceId = &redisId + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DestroyPostpaidInstance(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } else { + errRet = err + return + } + + taskId = *response.Response.TaskId + return +} + +func (me *RedisService) DestroyPrepaidInstance(ctx context.Context, redisId string) (dealId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewDestroyPrepaidInstanceRequest() + request.InstanceId = &redisId + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + // For prepaid instance, deal status synchronization will take some time so need to retry. + var response *redis.DestroyPrepaidInstanceResponse + err := resource.Retry(5*tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseRedisClient().DestroyPrepaidInstance(request) + if e != nil { + log.Printf("[CRITAL]%s DestroyPrepaidInstance fail, reason:%s\n", logId, e.Error()) + return tccommon.RetryError(e) + } + response = result + return nil + }) + if err == nil { + dealId = *response.Response.DealId + } else { + errRet = err + return + } + + return +} + +func (me *RedisService) CleanUpInstance(ctx context.Context, redisId string) (taskId int64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewCleanUpInstanceRequest() + request.InstanceId = &redisId + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + // Cleaning up action for prepaid instances needs to retry. + var response *redis.CleanUpInstanceResponse + err := resource.Retry(6*tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, e := me.client.UseRedisClient().CleanUpInstance(request) + if e != nil { + log.Printf("[CRITAL]%s CleanUpInstance fail, reason:%s\n", logId, e.Error()) + return tccommon.RetryError(e) + } + response = result + return nil + }) + if err != nil { + errRet = err + return + } + taskId = *response.Response.TaskId + return +} + +func (me *RedisService) UpgradeInstance(ctx context.Context, redisId string, newMemSize, redisShardNum, redisReplicasNum int, nodeSet []*redis.RedisNodeInfo) (dealId string, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewUpgradeInstanceRequest() + request.InstanceId = &redisId + if newMemSize > 0 { + request.MemSize = helper.IntUint64(newMemSize) + } + if redisShardNum > 0 { + request.RedisShardNum = helper.IntUint64(redisShardNum) + } + if redisReplicasNum != 0 { + request.RedisReplicasNum = helper.IntUint64(redisReplicasNum) + } + if len(nodeSet) > 0 { + request.NodeSet = nodeSet + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().UpgradeInstance(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } else { + errRet = err + return + } + + dealId = *response.Response.DealId + return +} + +func (me *RedisService) DescribeTaskInfo(ctx context.Context, redisId string, taskId int64) (ok bool, errRet error) { + logId := tccommon.GetLogId(ctx) + var uintTaskId = uint64(taskId) + request := redis.NewDescribeTaskInfoRequest() + request.TaskId = &uintTaskId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeTaskInfo(request) + + if err != nil { + errRet = err + return + } + if *response.Response.Status == REDIS_TASK_RUNNING || *response.Response.Status == REDIS_TASK_PREPARING { + return + } + if *response.Response.Status == REDIS_TASK_SUCCEED { + ok = true + return + } + errRet = fmt.Errorf("redis task exe fail, task status is %s", *response.Response.Status) + return +} + +func (me *RedisService) ResetPassword(ctx context.Context, redisId string, newPassword string, noAuth bool) (taskId int64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewResetPasswordRequest() + request.InstanceId = &redisId + request.Password = &newPassword + request.NoAuth = &noAuth + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().ResetPassword(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } else { + errRet = err + return + } + + taskId = *response.Response.TaskId + return + +} + +func (me *RedisService) ModifyAutoBackupConfig(ctx context.Context, redisId string, weekDays []string, timePeriod string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewModifyAutoBackupConfigRequest() + request.InstanceId = &redisId + request.WeekDays = make([]*string, 0, len(weekDays)) + for index := range weekDays { + request.WeekDays = append(request.WeekDays, &weekDays[index]) + } + request.TimePeriod = &timePeriod + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().ModifyAutoBackupConfig(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + } + return +} + +func (me *RedisService) DescribeAutoBackupConfig(ctx context.Context, redisId string) (weekDays []string, timePeriod string, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeAutoBackupConfigRequest() + request.InstanceId = &redisId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeAutoBackupConfig(request) + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + } + if err != nil { + errRet = err + return + } + + timePeriod = *response.Response.TimePeriod + + if len(response.Response.WeekDays) > 0 { + weekDays = make([]string, 0, len(response.Response.WeekDays)) + for _, v := range response.Response.WeekDays { + weekDays = append(weekDays, *v) + } + } + return +} + +func (me *RedisService) DescribeParamTemplates(ctx context.Context, request *redis.DescribeParamTemplatesRequest) (params []*redis.ParamTemplateInfo, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeParamTemplates(request) + + if err != nil { + errRet = err + return + } + + params = response.Response.Items + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *RedisService) DescribeParamTemplateById(ctx context.Context, id string) (params *redis.ParamTemplateInfo, errRet error) { + request := redis.NewDescribeParamTemplatesRequest() + + request.TemplateIds = []*string{&id} + + result, err := me.DescribeParamTemplates(ctx, request) + + if err != nil { + errRet = err + return + } + + if len(result) == 0 { + return + } + + params = result[0] + + return +} + +func (me *RedisService) ApplyParamsTemplate(ctx context.Context, request *redis.ApplyParamsTemplateRequest) (taskIds []*int64, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().ApplyParamsTemplate(request) + + if err != nil { + errRet = err + return + } + + taskIds = response.Response.TaskIds + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *RedisService) DescribeParamTemplateInfo(ctx context.Context, templateId string) (info *redis.DescribeParamTemplateInfoResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + request := redis.NewDescribeParamTemplateInfoRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.TemplateId = &templateId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeParamTemplateInfo(request) + + if err != nil { + errRet = err + return + } + + info = response.Response + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *RedisService) CreateParamTemplate(ctx context.Context, request *redis.CreateParamTemplateRequest) (id string, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().CreateParamTemplate(request) + + if err != nil { + errRet = err + return + } + + if response.Response == nil { + errRet = fmt.Errorf("[%s] returns nil response", request.GetAction()) + return + } + + id = *response.Response.TemplateId + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *RedisService) ModifyParamTemplate(ctx context.Context, request *redis.ModifyParamTemplateRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().ModifyParamTemplate(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *RedisService) DeleteParamTemplate(ctx context.Context, request *redis.DeleteParamTemplateRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DeleteParamTemplate(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *RedisService) DescribeRedisAccountById(ctx context.Context, instanceId, accountName string) (account *redis.Account, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeInstanceAccountRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var offset int64 = 0 + var limit int64 = 50 + for { + request.Offset = &offset + request.Limit = &limit + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeInstanceAccount(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Accounts) < 1 { + break + } + for _, v := range response.Response.Accounts { + if *v.AccountName == accountName { + account = v + return + } + } + if len(response.Response.Accounts) < int(limit) { + break + } + offset += limit + } + + return +} + +func (me *RedisService) DeleteRedisAccountById(ctx context.Context, instanceId, accountName string) (taskId int64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDeleteInstanceAccountRequest() + request.InstanceId = &instanceId + request.AccountName = &accountName + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DeleteInstanceAccount(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + taskId = *response.Response.TaskId + + return +} + +func (me *RedisService) RedisAccountStateRefreshFunc(instanceId, accountName string, failStates []string) resource.StateRefreshFunc { + return func() (interface{}, string, error) { + ctx := tccommon.ContextNil + + object, err := me.DescribeRedisAccountById(ctx, instanceId, accountName) + if err != nil { + return nil, "", err + } + + if object == nil { + return nil, "", nil + } + + return object, helper.PString(helper.String(strconv.FormatInt(*object.Status, 10))), nil + } +} + +func (me *RedisService) DescribeRedisInstanceById(ctx context.Context, instanceId string) (param *redis.InstanceSet, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeInstancesRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DescribeInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.InstanceSet) < 1 { + return + } + + param = response.Response.InstanceSet[0] + return +} + +func (me *RedisService) DescribeRedisParamById(ctx context.Context, instanceId string) (params map[string]interface{}, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeInstanceParamsRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DescribeInstanceParams(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + param := response.Response + instanceParams := make(map[string]interface{}) + if param.InstanceEnumParam != nil { + for _, v := range param.InstanceEnumParam { + key := *v.ParamName + value := *v.CurrentValue + instanceParams[key] = value + } + } + if param.InstanceIntegerParam != nil { + for _, v := range param.InstanceIntegerParam { + key := *v.ParamName + value := *v.CurrentValue + instanceParams[key] = value + } + } + if param.InstanceMultiParam != nil { + for _, v := range param.InstanceMultiParam { + key := *v.ParamName + value := *v.CurrentValue + instanceParams[key] = value + } + } + if param.InstanceTextParam != nil { + for _, v := range param.InstanceTextParam { + key := *v.ParamName + value := *v.CurrentValue + instanceParams[key] = value + } + } + params = instanceParams + return +} + +func (me *RedisService) DescribeRedisSslById(ctx context.Context, instanceId string) (ssl *redis.DescribeSSLStatusResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeSSLStatusRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DescribeSSLStatus(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ssl = response.Response + return +} + +func (me *RedisService) DescribeRedisMaintenanceWindowById(ctx context.Context, instanceId string) (maintenanceWindow *redis.DescribeMaintenanceWindowResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeMaintenanceWindowRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DescribeMaintenanceWindow(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + maintenanceWindow = response.Response + return +} + +func (me *RedisService) DescribeRedisBackupDownloadInfoByFilter(ctx context.Context, param map[string]interface{}) (backup []*redis.BackupDownloadInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = redis.NewDescribeBackupUrlRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "instance_id" { + request.InstanceId = v.(*string) + } + if k == "backup_id" { + request.BackupId = v.(*string) + } + if k == "limit_type" { + request.LimitType = v.(*string) + } + if k == "vpc_comparison_symbol" { + request.VpcComparisonSymbol = v.(*string) + } + if k == "ip_comparison_symbol" { + request.IpComparisonSymbol = v.(*string) + } + if k == "limit_vpc" { + request.LimitVpc = v.([]*redis.BackupLimitVpcItem) + } + if k == "limit_ip" { + request.LimitIp = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DescribeBackupUrl(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + backup = response.Response.BackupInfos + + return +} + +func (me *RedisService) DescribeRedisBackupByFilter(ctx context.Context, param map[string]interface{}) (backup []*redis.RedisBackupSet, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = redis.NewDescribeInstanceBackupsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "instance_id" { + request.InstanceId = v.(*string) + } + if k == "begin_time" { + request.BeginTime = v.(*string) + } + if k == "end_time" { + request.EndTime = v.(*string) + } + if k == "status" { + request.Status = v.([]*int64) + } + if k == "instance_name" { + request.InstanceName = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseRedisClient().DescribeInstanceBackups(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.BackupSet) < 1 { + break + } + backup = append(backup, response.Response.BackupSet...) + if len(response.Response.BackupSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *RedisService) DescribeRedisParamRecordsByFilter(ctx context.Context, param map[string]interface{}) (params []*redis.InstanceParamHistory, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = redis.NewDescribeInstanceParamRecordsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + instances = make([]*redis.InstanceParamHistory, 0) + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseRedisClient().DescribeInstanceParamRecords(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.InstanceParamHistory) < 1 { + break + } + instances = append(instances, response.Response.InstanceParamHistory...) + if len(response.Response.InstanceParamHistory) < int(limit) { + break + } + + offset += limit + } + if len(instances) < 1 { + return + } + params = instances + + return +} + +func (me *RedisService) DescribeRedisInstanceShardsByFilter(ctx context.Context, param map[string]interface{}) (instanceShards []*redis.InstanceClusterShard, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = redis.NewDescribeInstanceShardsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + if k == "FilterSlave" { + request.FilterSlave = v.(*bool) + } + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeInstanceShards(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.InstanceShards) < 1 { + return + } + instanceShards = response.Response.InstanceShards + + return +} + +func (me *RedisService) DescribeRedisInstanceZoneInfoByFilter(ctx context.Context, param map[string]interface{}) (instanceZoneInfo []*redis.ReplicaGroup, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = redis.NewDescribeInstanceZoneInfoRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeInstanceZoneInfo(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.ReplicaGroups) < 1 { + return + } + instanceZoneInfo = response.Response.ReplicaGroups + + return +} + +func (me *RedisService) DescribeRedisInstanceTaskListByFilter(ctx context.Context, param map[string]interface{}) (instanceTaskList []*redis.TaskInfoDetail, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = redis.NewDescribeTaskListRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + if k == "InstanceName" { + request.InstanceName = v.(*string) + } + if k == "ProjectIds" { + request.ProjectIds = v.([]*int64) + } + if k == "TaskTypes" { + request.TaskTypes = v.([]*string) + } + if k == "BeginTime" { + request.BeginTime = v.(*string) + } + if k == "EndTime" { + request.EndTime = v.(*string) + } + if k == "TaskStatus" { + request.TaskStatus = v.([]*int64) + } + if k == "Result" { + request.Result = v.([]*int64) + } + if k == "OperateUin" { + request.OperateUin = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseRedisClient().DescribeTaskList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Tasks) < 1 { + break + } + instanceTaskList = append(instanceTaskList, response.Response.Tasks...) + if len(response.Response.Tasks) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *RedisService) AddReplicationInstance(ctx context.Context, groupId, instanceId, instanceRole string) error { + logId := tccommon.GetLogId(ctx) + var ( + request = redis.NewAddReplicationInstanceRequest() + response = redis.NewAddReplicationInstanceResponse() + ) + + request.GroupId = &groupId + request.InstanceId = &instanceId + request.InstanceRole = &instanceRole + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := me.client.UseRedisClient().AddReplicationInstance(request) + if e != nil { + return tccommon.RetryError(e) + } else { + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) + } + response = result + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s create redis replicateAttachment failed, reason:%+v", logId, err) + return err + } + + taskId := *response.Response.TaskId + + if taskId > 0 { + err := resource.Retry(6*tccommon.ReadRetryTimeout, func() *resource.RetryError { + ok, err := me.DescribeTaskInfo(ctx, instanceId, taskId) + if err != nil { + if _, ok := err.(*sdkErrors.TencentCloudSDKError); !ok { + return resource.RetryableError(err) + } else { + return resource.NonRetryableError(err) + } + } + if ok { + return nil + } else { + return resource.RetryableError(fmt.Errorf("Add replication is processing")) + } + }) + + if err != nil { + log.Printf("[CRITAL]%s redis add replication fail, reason:%s\n", logId, err.Error()) + return err + } + } + + return nil +} + +func (me *RedisService) DescribeRedisReplicateInstanceById(ctx context.Context, groupId string) (replicateGroup *redis.Groups, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeReplicationGroupRequest() + request.GroupId = &groupId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseRedisClient().DescribeReplicationGroup(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Groups) < 1 { + return + } + + replicateGroup = response.Response.Groups[0] + + return +} + +func (me *RedisService) DescribeRedisBackupDownloadRestrictionById(ctx context.Context) (backupDownloadRestriction *redis.DescribeBackupDownloadRestrictionResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeBackupDownloadRestrictionRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DescribeBackupDownloadRestriction(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + backupDownloadRestriction = response.Response + return +} + +func (me *RedisService) DescribeRedisInstanceNodeInfoByFilter(ctx context.Context, param map[string]interface{}) (instanceNodeInfo *redis.DescribeInstanceNodeInfoResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = redis.NewDescribeInstanceNodeInfoRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseRedisClient().DescribeInstanceNodeInfo(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + instanceNodeInfo = response.Response + return +} + +func (me *RedisService) DescribeBandwidthRangeById(ctx context.Context, instanceId string) (connectionConfig *redis.DescribeBandwidthRangeResponseParams, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeBandwidthRangeRequest() + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DescribeBandwidthRange(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + connectionConfig = response.Response + return +} + +func (me *RedisService) DeleteRedisReplicateAttachmentById(ctx context.Context, instanceId string, groupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewRemoveReplicationInstanceRequest() + request.InstanceId = &instanceId + request.GroupId = &groupId + request.SyncType = helper.Bool(false) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().RemoveReplicationInstance(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + taskId := *response.Response.TaskId + + if taskId > 0 { + err := resource.Retry(6*tccommon.ReadRetryTimeout, func() *resource.RetryError { + ok, err := me.DescribeTaskInfo(ctx, instanceId, taskId) + if err != nil { + if _, ok := err.(*sdkErrors.TencentCloudSDKError); !ok { + return resource.RetryableError(err) + } else { + return resource.NonRetryableError(err) + } + } + if ok { + return nil + } else { + return resource.RetryableError(fmt.Errorf("remove replication is processing")) + } + }) + + if err != nil { + log.Printf("[CRITAL]%s redis remove replication fail, reason:%s\n", logId, err.Error()) + errRet = err + return + } + } + + return +} + +func (me *RedisService) DescribeRedisSecurityGroupAttachmentById(ctx context.Context, product string, instanceId string, securityGroupId string) (securityGroupAttachment *redis.SecurityGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDescribeDBSecurityGroupsRequest() + request.Product = &product + request.InstanceId = &instanceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DescribeDBSecurityGroups(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.Groups) < 1 { + return + } + + for _, v := range response.Response.Groups { + if *v.SecurityGroupId == securityGroupId { + securityGroupAttachment = v + return + } + } + + return +} + +func (me *RedisService) DeleteRedisSecurityGroupAttachmentById(ctx context.Context, product string, instanceId string, securityGroupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := redis.NewDisassociateSecurityGroupsRequest() + request.Product = &product + request.SecurityGroupId = &securityGroupId + request.InstanceIds = []*string{&instanceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseRedisClient().DisassociateSecurityGroups(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/services/postgresql/service_tencentcloud_tag.go b/tencentcloud/services/postgresql/service_tencentcloud_tag.go new file mode 100644 index 0000000000..86146c67f5 --- /dev/null +++ b/tencentcloud/services/postgresql/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package postgresql + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/services/postgresql/service_tencentcloud_vpc.go b/tencentcloud/services/postgresql/service_tencentcloud_vpc.go new file mode 100644 index 0000000000..a208eb3f67 --- /dev/null +++ b/tencentcloud/services/postgresql/service_tencentcloud_vpc.go @@ -0,0 +1,8076 @@ +package postgresql + +import ( + "context" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "log" + "net" + "regexp" + "strconv" + "strings" + "sync" + "time" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svccvm "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/cvm" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" + sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" + vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +var eipUnattachLocker = &sync.Mutex{} + +/* For Adun Sake please DO NOT Declare the redundant Type STRUCT!! */ +// VPC basic information +type VpcBasicInfo struct { + vpcId string + name string + cidr string + isMulticast bool + isDefault bool + dnsServers []string + createTime string + tags []*vpc.Tag + assistantCidrs []string + dockerAssistantCidrs []string +} + +// subnet basic information +type VpcSubnetBasicInfo struct { + vpcId string + subnetId string + routeTableId string + name string + cidr string + isMulticast bool + isDefault bool + zone string + availableIpCount int64 + createTime string +} + +// route entry basic information +type VpcRouteEntryBasicInfo struct { + routeEntryId int64 + destinationCidr string + nextType string + nextBub string + description string + entryType string + enabled bool +} + +// route table basic information +type VpcRouteTableBasicInfo struct { + routeTableId string + name string + vpcId string + isDefault bool + subnetIds []string + entryInfos []VpcRouteEntryBasicInfo + createTime string +} + +type VpcSecurityGroupLiteRule struct { + action string + cidrIp string + port string + protocol string + addressId string + addressGroupId string + securityGroupId string + protocolTemplateId string + protocolTemplateGroupId string +} + +var securityGroupIdRE = regexp.MustCompile(`^sg-\w{8}$`) +var ipAddressIdRE = regexp.MustCompile(`^ipm-\w{8}$`) +var ipAddressGroupIdRE = regexp.MustCompile(`^ipmg-\w{8}$`) +var protocolTemplateRE = regexp.MustCompile(`^ppmg?-\w{8}$`) +var protocolTemplateIdRE = regexp.MustCompile(`^ppm-\w{8}$`) +var protocolTemplateGroupIdRE = regexp.MustCompile(`^ppmg-\w{8}$`) +var portRE = regexp.MustCompile(`^(\d{1,5},)*\d{1,5}$|^\d{1,5}-\d{1,5}$`) + +// acl rule +type VpcACLRule struct { + action string + cidrIp string + port string + protocol string +} + +type VpcEniIP struct { + ip net.IP + primary bool + desc *string +} + +func (rule VpcSecurityGroupLiteRule) String() string { + + var source string + + if rule.cidrIp != "" { + source = rule.cidrIp + } + if rule.securityGroupId != "" { + source = rule.securityGroupId + } + if rule.addressId != "" { + source = rule.addressId + } + if rule.addressGroupId != "" { + source = rule.addressGroupId + } + + protocol := rule.protocol + + if protocol == "" && rule.protocolTemplateId != "" { + protocol = rule.protocolTemplateId + } else if protocol == "" && rule.protocolTemplateGroupId != "" { + protocol = rule.protocolTemplateGroupId + } + + return fmt.Sprintf("%s#%s#%s#%s", rule.action, source, rule.port, protocol) +} + +func getSecurityGroupPolicies(rules []VpcSecurityGroupLiteRule) []*vpc.SecurityGroupPolicy { + policies := make([]*vpc.SecurityGroupPolicy, 0) + + for i := range rules { + rule := rules[i] + policy := &vpc.SecurityGroupPolicy{ + Action: &rule.action, + } + + if rule.securityGroupId != "" { + policy.SecurityGroupId = &rule.securityGroupId + } else if rule.addressId != "" || rule.addressGroupId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + if rule.addressId != "" { + policy.AddressTemplate.AddressId = &rule.addressId + } + if rule.addressGroupId != "" { + policy.AddressTemplate.AddressGroupId = &rule.addressGroupId + } + } else { + policy.CidrBlock = &rule.cidrIp + } + + usingProtocolTemplate := rule.protocolTemplateId != "" || rule.protocolTemplateGroupId != "" + + if usingProtocolTemplate { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + if rule.protocolTemplateId != "" { + policy.ServiceTemplate.ServiceId = &rule.protocolTemplateId + } + if rule.protocolTemplateGroupId != "" { + policy.ServiceTemplate.ServiceGroupId = &rule.protocolTemplateGroupId + } + } + + if !usingProtocolTemplate { + policy.Protocol = &rule.protocol + } + + if !usingProtocolTemplate && rule.port != "" { + policy.Port = &rule.port + } + + policies = append(policies, policy) + } + return policies +} + +func NewVpcService(client *connectivity.TencentCloudClient) VpcService { + return VpcService{client: client} +} + +type VpcService struct { + client *connectivity.TencentCloudClient +} + +// ///////common +func (me *VpcService) fillFilter(ins []*vpc.Filter, key, value string) (outs []*vpc.Filter) { + if ins == nil { + ins = make([]*vpc.Filter, 0, 2) + } + + var filter = vpc.Filter{Name: &key, Values: []*string{&value}} + ins = append(ins, &filter) + outs = ins + return +} + +// ////////api +func (me *VpcService) CreateVpc(ctx context.Context, name, cidr string, + isMulticast bool, dnsServers []string, tags map[string]string) (vpcId string, isDefault bool, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateVpcRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcName = &name + request.CidrBlock = &cidr + + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + request.EnableMulticast = &enableMulticast + + if len(dnsServers) > 0 { + request.DnsServers = make([]*string, 0, len(dnsServers)) + for index := range dnsServers { + request.DnsServers = append(request.DnsServers, &dnsServers[index]) + } + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + var response *vpc.CreateVpcResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().CreateVpc(request) + if err != nil { + return tccommon.RetryError(err) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s create vpc failed, reason: %v", logId, err) + errRet = err + return + } + vpcId, isDefault = *response.Response.Vpc.VpcId, *response.Response.Vpc.IsDefault + return +} + +func (me *VpcService) DescribeVpc(ctx context.Context, + vpcId string, + tagKey string, + cidrBlock string) (info VpcBasicInfo, has int, errRet error) { + infos, err := me.DescribeVpcs(ctx, vpcId, "", nil, nil, tagKey, cidrBlock) + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return +} + +func (me *VpcService) DescribeVpcs(ctx context.Context, + vpcId, name string, + tags map[string]string, + isDefaultPtr *bool, + tagKey string, + cidrBlock string) (infos []VpcBasicInfo, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpcsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + infos = make([]VpcBasicInfo, 0, 100) + + var ( + offset = 0 + limit = 100 + total = -1 + hasVpc = map[string]bool{} + filters []*vpc.Filter + ) + + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + + if name != "" { + filters = me.fillFilter(filters, "vpc-name", name) + } + + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + + if cidrBlock != "" { + filters = me.fillFilter(filters, "cidr-block", cidrBlock) + } + + if isDefaultPtr != nil { + filters = me.fillFilter(filters, "is-default", map[bool]string{true: "true", false: "false"}[*isDefaultPtr]) + } + + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + var response *vpc.DescribeVpcsResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().DescribeVpcs(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s read vpc failed, reason: %v", logId, err) + return nil, err + } + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.VpcSet) > 0 { + offset += limit + } else { + // get empty VpcInfo, we're done + return + } + for _, item := range response.Response.VpcSet { + var basicInfo VpcBasicInfo + basicInfo.cidr = *item.CidrBlock + basicInfo.createTime = *item.CreatedTime + basicInfo.dnsServers = make([]string, 0, len(item.DnsServerSet)) + + for _, v := range item.DnsServerSet { + basicInfo.dnsServers = append(basicInfo.dnsServers, *v) + } + basicInfo.isDefault = *item.IsDefault + basicInfo.isMulticast = *item.EnableMulticast + basicInfo.name = *item.VpcName + basicInfo.vpcId = *item.VpcId + + if hasVpc[basicInfo.vpcId] { + errRet = fmt.Errorf("get repeated vpc_id[%s] when doing DescribeVpcs", basicInfo.vpcId) + return + } + hasVpc[basicInfo.vpcId] = true + + if len(item.AssistantCidrSet) > 0 { + for i := range item.AssistantCidrSet { + kind := item.AssistantCidrSet[i].AssistantType + cidr := item.AssistantCidrSet[i].CidrBlock + if kind != nil && *kind == 0 { + basicInfo.assistantCidrs = append(basicInfo.assistantCidrs, *cidr) + } else { + basicInfo.dockerAssistantCidrs = append(basicInfo.dockerAssistantCidrs, *cidr) + } + } + } + + if len(item.TagSet) > 0 { + basicInfo.tags = item.TagSet + } + + infos = append(infos, basicInfo) + } + goto getMoreData + +} +func (me *VpcService) DescribeSubnet(ctx context.Context, + subnetId string, + isRemoteVpcSNAT *bool, + tagKey, + cidrBlock string) (info VpcSubnetBasicInfo, has int, errRet error) { + infos, err := me.DescribeSubnets(ctx, subnetId, "", "", "", nil, nil, isRemoteVpcSNAT, tagKey, cidrBlock) + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return +} + +func (me *VpcService) DescribeSubnets(ctx context.Context, + subnetId, + vpcId, + subnetName, + zone string, + tags map[string]string, + isDefaultPtr *bool, + isRemoteVpcSNAT *bool, + tagKey, + cidrBlock string) (infos []VpcSubnetBasicInfo, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeSubnetsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var ( + offset = 0 + limit = 100 + total = -1 + hasSubnet = map[string]bool{} + filters []*vpc.Filter + ) + + if subnetId != "" { + filters = me.fillFilter(filters, "subnet-id", subnetId) + } + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + if subnetName != "" { + filters = me.fillFilter(filters, "subnet-name", subnetName) + } + if zone != "" { + filters = me.fillFilter(filters, "zone", zone) + } + + if isDefaultPtr != nil { + filters = me.fillFilter(filters, "is-default", map[bool]string{true: "true", false: "false"}[*isDefaultPtr]) + } + + if isRemoteVpcSNAT != nil { + filters = me.fillFilter(filters, "is-remote-vpc-snat", map[bool]string{true: "true", false: "false"}[*isRemoteVpcSNAT]) + } + + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + if cidrBlock != "" { + filters = me.fillFilter(filters, "cidr-block", cidrBlock) + } + + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + var response *vpc.DescribeSubnetsResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().DescribeSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s read subnets failed, reason: %v", logId, err) + return nil, err + } + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.SubnetSet) > 0 { + offset += limit + } else { + // get empty subnet, we're done + return + } + for _, item := range response.Response.SubnetSet { + var basicInfo VpcSubnetBasicInfo + + basicInfo.cidr = *item.CidrBlock + basicInfo.createTime = *item.CreatedTime + basicInfo.vpcId = *item.VpcId + basicInfo.subnetId = *item.SubnetId + basicInfo.routeTableId = *item.RouteTableId + + basicInfo.name = *item.SubnetName + basicInfo.isDefault = *item.IsDefault + basicInfo.isMulticast = *item.EnableBroadcast + + basicInfo.zone = *item.Zone + basicInfo.availableIpCount = int64(*item.AvailableIpAddressCount) + + if hasSubnet[basicInfo.subnetId] { + errRet = fmt.Errorf("get repeated subnetId[%s] when doing DescribeSubnets", basicInfo.subnetId) + return + } + hasSubnet[basicInfo.subnetId] = true + infos = append(infos, basicInfo) + } + goto getMoreData +} + +func (me *VpcService) ModifyVpcAttribute(ctx context.Context, vpcId, name string, isMulticast bool, dnsServers []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyVpcAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcId = &vpcId + request.VpcName = &name + + if len(dnsServers) > 0 { + request.DnsServers = make([]*string, 0, len(dnsServers)) + for index := range dnsServers { + request.DnsServers = append(request.DnsServers, &dnsServers[index]) + } + } + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + request.EnableMulticast = &enableMulticast + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyVpcAttribute(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify vpc failed, reason: %v", logId, err) + return err + } + + return +} + +func (me *VpcService) DeleteVpc(ctx context.Context, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpcRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + if vpcId == "" { + errRet = fmt.Errorf("DeleteVpc can not delete empty vpc_id.") + return + } + + request.VpcId = &vpcId + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteVpc(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete vpc failed, reason: %v", logId, err) + return err + } + return + +} + +func (me *VpcService) CreateSubnet(ctx context.Context, vpcId, name, cidr, zone string, tags map[string]string) (subnetId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateSubnetRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if vpcId == "" { + errRet = fmt.Errorf("CreateSubnet can not invoke by empty vpc_id.") + return + } + request.VpcId = &vpcId + request.SubnetName = &name + request.CidrBlock = &cidr + request.Zone = &zone + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + var response *vpc.CreateSubnetResponse + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + result, err := me.client.UseVpcClient().CreateSubnet(request) + if err != nil { + return tccommon.RetryError(err) + } + response = result + return nil + }); err != nil { + log.Printf("[CRITAL]%s create subnet failed, reason: %v", logId, err) + return "", err + } + + subnetId = *response.Response.Subnet.SubnetId + + return +} + +func (me *VpcService) ModifySubnetAttribute(ctx context.Context, subnetId, name string, isMulticast bool) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifySubnetAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + var enableMulticast = map[bool]string{true: "true", false: "false"}[isMulticast] + + request.SubnetId = &subnetId + request.SubnetName = &name + request.EnableBroadcast = &enableMulticast + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifySubnetAttribute(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify subnet failed, reason: %v", logId, err) + return err + } + return +} + +func (me *VpcService) DeleteSubnet(ctx context.Context, subnetId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteSubnetRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SubnetId = &subnetId + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteSubnet(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete subnet failed, reason: %v", logId, err) + return err + } + return + +} + +func (me *VpcService) ReplaceRouteTableAssociation(ctx context.Context, subnetId string, routeTableId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewReplaceRouteTableAssociationRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SubnetId = &subnetId + request.RouteTableId = &routeTableId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ReplaceRouteTableAssociation(request) + + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return +} + +func (me *VpcService) IsRouteTableInVpc(ctx context.Context, routeTableId, vpcId string) (info VpcRouteTableBasicInfo, has int, errRet error) { + + infos, err := me.DescribeRouteTables(ctx, routeTableId, "", vpcId, nil, nil, "") + if err != nil { + errRet = err + return + } + has = len(infos) + if has > 0 { + info = infos[0] + } + return + +} + +func (me *VpcService) DescribeRouteTable(ctx context.Context, routeTableId string) (info VpcRouteTableBasicInfo, has int, errRet error) { + + infos, err := me.DescribeRouteTables(ctx, routeTableId, "", "", nil, nil, "") + if err != nil { + errRet = err + return + } + + has = len(infos) + + if has == 0 { + return + } + info = infos[0] + return +} +func (me *VpcService) DescribeRouteTables(ctx context.Context, + routeTableId, + routeTableName, + vpcId string, + tags map[string]string, + associationMain *bool, + tagKey string) (infos []VpcRouteTableBasicInfo, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeRouteTablesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + infos = make([]VpcRouteTableBasicInfo, 0, 100) + var offset = 0 + var limit = 100 + var total = -1 + var hasTableMap = map[string]bool{} + + var filters []*vpc.Filter + if routeTableId != "" { + filters = me.fillFilter(filters, "route-table-id", routeTableId) + } + if vpcId != "" { + filters = me.fillFilter(filters, "vpc-id", vpcId) + } + if routeTableName != "" { + filters = me.fillFilter(filters, "route-table-name", routeTableName) + } + if associationMain != nil { + filters = me.fillFilter(filters, "association.main", map[bool]string{true: "true", false: "false"}[*associationMain]) + } + if tagKey != "" { + filters = me.fillFilter(filters, "tag-key", tagKey) + } + for k, v := range tags { + filters = me.fillFilter(filters, "tag:"+k, v) + } + if len(filters) > 0 { + request.Filters = filters + } + +getMoreData: + if total >= 0 { + if offset >= total { + return + } + } + var strLimit = fmt.Sprintf("%d", limit) + request.Limit = &strLimit + + var strOffset = fmt.Sprintf("%d", offset) + request.Offset = &strOffset + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteTables(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if total < 0 { + total = int(*response.Response.TotalCount) + } + + if len(response.Response.RouteTableSet) > 0 { + offset += limit + } else { + // get empty Vpcinfo, we're done + return + } + for _, item := range response.Response.RouteTableSet { + var basicInfo VpcRouteTableBasicInfo + basicInfo.createTime = *item.CreatedTime + basicInfo.isDefault = *item.Main + basicInfo.name = *item.RouteTableName + basicInfo.routeTableId = *item.RouteTableId + basicInfo.vpcId = *item.VpcId + + basicInfo.subnetIds = make([]string, 0, len(item.AssociationSet)) + for _, v := range item.AssociationSet { + basicInfo.subnetIds = append(basicInfo.subnetIds, *v.SubnetId) + } + + basicInfo.entryInfos = make([]VpcRouteEntryBasicInfo, 0, len(item.RouteSet)) + + for _, v := range item.RouteSet { + var entry VpcRouteEntryBasicInfo + entry.destinationCidr = *v.DestinationCidrBlock + entry.nextBub = *v.GatewayId + entry.nextType = *v.GatewayType + entry.description = *v.RouteDescription + entry.routeEntryId = int64(*v.RouteId) + entry.entryType = *v.RouteType + entry.enabled = *v.Enabled + basicInfo.entryInfos = append(basicInfo.entryInfos, entry) + } + if hasTableMap[basicInfo.routeTableId] { + errRet = fmt.Errorf("get repeated route_table_id[%s] when doing DescribeRouteTables", basicInfo.routeTableId) + return + } + hasTableMap[basicInfo.routeTableId] = true + infos = append(infos, basicInfo) + } + goto getMoreData + +} + +func (me *VpcService) CreateRouteTable(ctx context.Context, name, vpcId string, tags map[string]string) (routeTableId string, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateRouteTableRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if vpcId == "" { + errRet = fmt.Errorf("CreateRouteTable can not invoke by empty vpc_id.") + return + } + request.VpcId = &vpcId + request.RouteTableName = &name + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateRouteTable(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + routeTableId = *response.Response.RouteTable.RouteTableId + } + return +} + +func (me *VpcService) DeleteRouteTable(ctx context.Context, routeTableId string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteRouteTableRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("DeleteRouteTable can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteRouteTable(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + return +} + +func (me *VpcService) ModifyRouteTableAttribute(ctx context.Context, routeTableId string, name string) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyRouteTableAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("ModifyRouteTableAttribute can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + request.RouteTableName = &name + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyRouteTableAttribute(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + + return +} + +func (me *VpcService) GetRouteId(ctx context.Context, + routeTableId, destinationCidrBlock, nextType, nextHub, description string) (entryId int64, errRet error) { + + logId := tccommon.GetLogId(ctx) + + info, has, err := me.DescribeRouteTable(ctx, routeTableId) + if err != nil { + errRet = err + return + } + if has == 0 { + errRet = fmt.Errorf("not fonud the route table of this route entry") + return + } + + if has != 1 { + errRet = fmt.Errorf("one routeTableId id get %d routeTableId infos", has) + return + } + + for _, v := range info.entryInfos { + + if v.destinationCidr == destinationCidrBlock && v.nextType == nextType && v.nextBub == nextHub { + entryId = v.routeEntryId + return + } + } + errRet = fmt.Errorf("not found route entry id from route table [%s]", routeTableId) + + for _, v := range info.entryInfos { + log.Printf("%s[WARN] GetRouteId [%+v] vs [%+v],[%+v] vs [%+v],[%+v] vs [%+v] %+v\n", + logId, + v.destinationCidr, + destinationCidrBlock, + v.nextType, + nextType, + v.nextBub, + nextHub, + v.destinationCidr == destinationCidrBlock && v.nextType == nextType && v.nextBub == nextHub) + } + + return + +} + +func (me *VpcService) DeleteRoutes(ctx context.Context, routeTableId string, entryId uint64) (errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("DeleteRoutes can not invoke by empty routeTableId.") + return + } + + request.RouteTableId = &routeTableId + var route vpc.Route + route.RouteId = &entryId + request.Routes = []*vpc.Route{&route} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteRoutes(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } + return +} + +func (me *VpcService) CreateRoutes(ctx context.Context, + routeTableId, destinationCidrBlock, nextType, nextHub, description string, enabled bool) (entryId int64, errRet error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + if routeTableId == "" { + errRet = fmt.Errorf("CreateRoutes can not invoke by empty routeTableId.") + return + } + request.RouteTableId = &routeTableId + var route vpc.Route + route.DestinationCidrBlock = &destinationCidrBlock + route.RouteDescription = &description + route.GatewayType = &nextType + route.GatewayId = &nextHub + route.Enabled = &enabled + request.Routes = []*vpc.Route{&route} + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateRoutes(request) + errRet = err + if err == nil { + log.Printf("[DEBUG]%s api[%s] , request body [%s], response body[%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + } else { + return + } + + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + + if errRet != nil { + time.Sleep(3 * time.Second) + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + } + + if errRet != nil { + time.Sleep(5 * time.Second) + entryId, errRet = me.GetRouteId(ctx, routeTableId, destinationCidrBlock, nextType, nextHub, description) + } + + /* + if *(response.Response.TotalCount) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTable . but we only request 1.", *response.Response.TotalCount) + return + } + + if len(response.Response.RouteTableSet) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTable info . but we only request 1.", len(response.Response.RouteTableSet)) + return + } + + if len(response.Response.RouteTableSet[0].RouteSet) != 1 { + errRet = fmt.Errorf("CreateRoutes return %d routeTableSet info . but we only create 1.", len(response.Response.RouteTableSet[0].RouteSet)) + return + } + + entryId = int64(*response.Response.RouteTableSet[0].RouteSet[0].RouteId) + */ + + return +} + +func (me *VpcService) SwitchRouteEnabled(ctx context.Context, routeTableId string, routeId uint64, enabled bool) error { + if enabled { + request := vpc.NewEnableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.EnableRoutes(ctx, request) + } else { + request := vpc.NewDisableRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteIds = []*uint64{&routeId} + return me.DisableRoutes(ctx, request) + } +} + +func (me *VpcService) EnableRoutes(ctx context.Context, request *vpc.EnableRoutesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().EnableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *VpcService) DisableRoutes(ctx context.Context, request *vpc.DisableRoutesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisableRoutes(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *VpcService) CreateSecurityGroup(ctx context.Context, name, desc string, projectId *int, tags map[string]string) (id string, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewCreateSecurityGroupRequest() + + request.GroupName = &name + request.GroupDescription = &desc + + if projectId != nil { + request.ProjectId = helper.String(strconv.Itoa(*projectId)) + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().CreateSecurityGroup(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + if response.Response.SecurityGroup == nil || response.Response.SecurityGroup.SecurityGroupId == nil { + err := fmt.Errorf("api[%s] return security group id is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + id = *response.Response.SecurityGroup.SecurityGroupId + return nil + }); err != nil { + log.Printf("[CRITAL]%s create security group failed, reason: %v", logId, err) + return "", err + } + + return +} + +func (me *VpcService) DescribeSecurityGroup(ctx context.Context, id string) (sg *vpc.SecurityGroup, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupsRequest() + request.SecurityGroupIds = []*string{&id} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroups(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err, tccommon.InternalError) + } + + if len(response.Response.SecurityGroupSet) == 0 { + return nil + } + + sg = response.Response.SecurityGroupSet[0] + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read security group failed, reason: %v", logId, err) + return nil, err + } + + return +} + +func (me *VpcService) ModifySecurityGroup(ctx context.Context, id string, newName, newDesc *string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupAttributeRequest() + + request.SecurityGroupId = &id + request.GroupName = newName + request.GroupDescription = newDesc + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifySecurityGroupAttribute(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify security group failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DeleteSecurityGroup(ctx context.Context, id string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupRequest() + request.SecurityGroupId = &id + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().DeleteSecurityGroup(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete security group failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DescribeSecurityGroupsAssociate(ctx context.Context, ids []string) ([]*vpc.SecurityGroupAssociationStatistics, error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupAssociationStatisticsRequest() + request.SecurityGroupIds = common.StringPtrs(ids) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupAssociationStatistics(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil, err + } + + return response.Response.SecurityGroupAssociationStatisticsSet, nil +} + +// Deprecated: the redundant type struct cause cause unnecessary mental burden, use sdk request directly +func (me *VpcService) CreateSecurityGroupPolicy(ctx context.Context, info securityGroupRuleBasicInfoWithPolicyIndex) (ruleId string, err error) { + logId := tccommon.GetLogId(ctx) + + createRequest := vpc.NewCreateSecurityGroupPoliciesRequest() + createRequest.SecurityGroupId = &info.SgId + + createRequest.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + + policy.CidrBlock = info.CidrIp + policy.SecurityGroupId = info.SourceSgId + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + policy.AddressTemplate.AddressId = info.AddressTemplateId + } + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + policy.AddressTemplate.AddressGroupId = info.AddressTemplateGroupId + } + + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + policy.ServiceTemplate.ServiceId = info.ProtocolTemplateId + } + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + policy.ServiceTemplate.ServiceGroupId = info.ProtocolTemplateGroupId + } + + if info.Protocol != nil { + policy.Protocol = common.StringPtr(strings.ToUpper(*info.Protocol)) + } + policy.PolicyIndex = helper.Int64(info.PolicyIndex) + policy.Port = info.PortRange + policy.PolicyDescription = info.Description + policy.Action = common.StringPtr(strings.ToUpper(info.Action)) + + switch strings.ToLower(info.PolicyType) { + case "ingress": + createRequest.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + createRequest.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(createRequest.GetAction()) + if _, err := me.client.UseVpcClient().CreateSecurityGroupPolicies(createRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, createRequest.GetAction(), createRequest.ToJsonString(), err) + return "", err + } + + if info.CidrIp == nil { + info.CidrIp = common.StringPtr("") + } + if info.Protocol == nil { + info.Protocol = common.StringPtr("ALL") + } + if info.PortRange == nil { + info.PortRange = common.StringPtr("ALL") + } + if info.SourceSgId == nil { + info.SourceSgId = common.StringPtr("") + } + + ruleId, err = buildSecurityGroupRuleId(info.securityGroupRuleBasicInfo) + if err != nil { + return "", fmt.Errorf("build rule id error, reason: %v", err) + } + + return ruleId, nil +} + +func (me *VpcService) CreateSecurityGroupPolicies(ctx context.Context, request *vpc.CreateSecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +// Deprecated: use DescribeSecurityGroupPolicies instead +func (me *VpcService) DescribeSecurityGroupPolicy(ctx context.Context, ruleId string) (sgId string, policyType string, policy *vpc.SecurityGroupPolicy, errRet error) { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + errRet = err + return + } + + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + request.SecurityGroupId = &info.SgId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + // if security group does not exist, security group rule does not exist too + if sdkError.Code == "ResourceNotFound" { + return + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + policySet := response.Response.SecurityGroupPolicySet + + if policySet == nil { + log.Printf("[DEBUG]%s policy set is nil", logId) + return + } + + var policies []*vpc.SecurityGroupPolicy + + switch strings.ToLower(info.PolicyType) { + case "ingress": + policies = policySet.Ingress + + case "egress": + policies = policySet.Egress + } + + for _, pl := range policies { + if comparePolicyAndSecurityGroupInfo(pl, info) { + policy = pl + break + } + } + + if policy == nil { + log.Printf("[DEBUG]%s can't find security group rule, maybe user modify rules on web console", logId) + return + } + + return info.SgId, info.PolicyType, policy, nil +} + +func (me *VpcService) DescribeSecurityGroupPolicies(ctx context.Context, sgId string) (result *vpc.SecurityGroupPolicySet, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + request.SecurityGroupId = &sgId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + result = response.Response.SecurityGroupPolicySet + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteSecurityGroupPolicy(ctx context.Context, ruleId string) error { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + return err + } + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = &info.SgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + policy.Action = common.StringPtr(strings.ToUpper(info.Action)) + + if *info.CidrIp != "" { + policy.CidrBlock = info.CidrIp + } + + if *info.Protocol != "ALL" { + policy.Protocol = common.StringPtr(strings.ToUpper(*info.Protocol)) + } + + if *info.PortRange != "ALL" { + policy.Port = info.PortRange + } + + if *info.SourceSgId != "" { + policy.SecurityGroupId = info.SourceSgId + } + + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + policy.AddressTemplate.AddressGroupId = info.AddressTemplateGroupId + } + + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + policy.AddressTemplate = &vpc.AddressTemplateSpecification{} + policy.AddressTemplate.AddressId = info.AddressTemplateId + } + + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + policy.ServiceTemplate.ServiceGroupId = info.ProtocolTemplateGroupId + } + + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + policy.ServiceTemplate = &vpc.ServiceTemplateSpecification{} + policy.ServiceTemplate.ServiceId = info.ProtocolTemplateId + } + + if info.Description != nil && *info.Description != "" { + policy.PolicyDescription = info.Description + } + + switch strings.ToLower(info.PolicyType) { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + + return nil +} + +func (me *VpcService) DeleteSecurityGroupPolicies(ctx context.Context, request *vpc.DeleteSecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteSecurityGroupPolicyByPolicyIndex(ctx context.Context, policyIndex int64, sgId, policyType string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = helper.String(sgId) + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := new(vpc.SecurityGroupPolicy) + policy.PolicyIndex = helper.Int64(policyIndex) + switch strings.ToLower(policyType) { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + return nil + +} + +func (me *VpcService) DeleteSecurityGroupPolicyByPolicyIndexList(ctx context.Context, sgId string, policyIndexList []*int64, policyType string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = helper.String(sgId) + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + tmpList := make([]*vpc.SecurityGroupPolicy, 0) + for _, v := range policyIndexList { + policy := new(vpc.SecurityGroupPolicy) + policy.PolicyIndex = v + tmpList = append(tmpList, policy) + } + + switch strings.ToLower(policyType) { + + case "ingress": + request.SecurityGroupPolicySet.Ingress = tmpList + + case "egress": + request.SecurityGroupPolicySet.Egress = tmpList + } + + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + return nil + +} + +// Deprecated: Use ModifySecurityGroupPolicies instead +func (me *VpcService) ModifySecurityGroupPolicy(ctx context.Context, ruleId string, desc *string) error { + logId := tccommon.GetLogId(ctx) + + info, err := parseSecurityGroupRuleId(ruleId) + if err != nil { + return err + } + + request := vpc.NewReplaceSecurityGroupPolicyRequest() + request.SecurityGroupId = &info.SgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + policy := &vpc.SecurityGroupPolicy{ + Action: &info.Action, + CidrBlock: info.CidrIp, + Protocol: info.Protocol, + Port: info.PortRange, + SecurityGroupId: info.SourceSgId, + PolicyDescription: desc, + } + + switch info.PolicyType { + case "ingress": + request.SecurityGroupPolicySet.Ingress = []*vpc.SecurityGroupPolicy{policy} + + case "egress": + request.SecurityGroupPolicySet.Egress = []*vpc.SecurityGroupPolicy{policy} + } + ratelimit.Check(request.GetAction()) + if _, err := me.client.UseVpcClient().ReplaceSecurityGroupPolicy(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return err + } + + return nil +} + +func (me *VpcService) ModifySecurityGroupPolicies(ctx context.Context, request *vpc.ModifySecurityGroupPoliciesRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeSecurityGroups(ctx context.Context, sgId, sgName *string, projectId *int, tags map[string]string) (sgs []*vpc.SecurityGroup, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupsRequest() + + if sgId != nil { + request.SecurityGroupIds = []*string{sgId} + } else { + if sgName != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("security-group-name"), + Values: []*string{sgName}, + }) + } + + if projectId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("project-id"), + Values: []*string{helper.String(strconv.Itoa(*projectId))}, + }) + } + + for k, v := range tags { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("tag:" + k), + Values: []*string{helper.String(v)}, + }) + } + } + + request.Limit = helper.String(strconv.Itoa(svccvm.DESCRIBE_SECURITY_GROUP_LIMIT)) + + offset := 0 + count := svccvm.DESCRIBE_SECURITY_GROUP_LIMIT + // run loop at least once + for count == svccvm.DESCRIBE_SECURITY_GROUP_LIMIT { + request.Offset = helper.String(strconv.Itoa(offset)) + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroups(request) + if err != nil { + count = 0 + + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err, tccommon.InternalError) + } + + set := response.Response.SecurityGroupSet + count = len(set) + sgs = append(sgs, set...) + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read security groups failed, reason: %v", logId, err) + return nil, err + } + + offset += count + } + + return +} + +func (me *VpcService) modifyLiteRulesInSecurityGroup(ctx context.Context, sgId string, ingress, egress []VpcSecurityGroupLiteRule) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + request.SecurityGroupPolicySet.Egress = getSecurityGroupPolicies(egress) + request.SecurityGroupPolicySet.Ingress = getSecurityGroupPolicies(ingress) + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }) +} + +func (me *VpcService) DeleteLiteRules(ctx context.Context, sgId string, rules []VpcSecurityGroupLiteRule, isIngress bool) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = new(vpc.SecurityGroupPolicySet) + + if isIngress { + request.SecurityGroupPolicySet.Ingress = getSecurityGroupPolicies(rules) + } else { + request.SecurityGroupPolicySet.Egress = getSecurityGroupPolicies(rules) + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().DeleteSecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + + return tccommon.RetryError(err) + } + + return nil + }) +} + +func (me *VpcService) AttachLiteRulesToSecurityGroup(ctx context.Context, sgId string, ingress, egress []VpcSecurityGroupLiteRule) error { + logId := tccommon.GetLogId(ctx) + + if err := me.modifyLiteRulesInSecurityGroup(ctx, sgId, ingress, egress); err != nil { + log.Printf("[CRITAL]%s attach lite rules to security group failed, reason: %v", logId, err) + + return err + } + + return nil +} + +func (me *VpcService) DescribeSecurityGroupPolices(ctx context.Context, sgId string) (ingress, egress []VpcSecurityGroupLiteRule, exist bool, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupPolicies(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + policySet := response.Response.SecurityGroupPolicySet + + for _, in := range policySet.Ingress { + if nilFields := tccommon.CheckNil(in, map[string]string{ + "Action": "action", + "SecurityGroupId": "nested security group id", + }); len(nilFields) > 0 { + err := fmt.Errorf("api[%s] security group ingress %v are nil", request.GetAction(), nilFields) + log.Printf("[CRITAL]%s %v", logId, err) + } + + liteRule := VpcSecurityGroupLiteRule{ + //protocol: strings.ToUpper(*in.Protocol), + //port: *in.Port, + cidrIp: *in.CidrBlock, + action: *in.Action, + securityGroupId: *in.SecurityGroupId, + } + + if in.Protocol != nil { + liteRule.protocol = strings.ToUpper(*in.Protocol) + } + + if in.Port != nil { + liteRule.port = *in.Port + } + + if in.AddressTemplate != nil { + liteRule.addressId = *in.AddressTemplate.AddressId + liteRule.addressGroupId = *in.AddressTemplate.AddressGroupId + } + + if in.ServiceTemplate != nil { + liteRule.protocolTemplateId = *in.ServiceTemplate.ServiceId + liteRule.protocolTemplateGroupId = *in.ServiceTemplate.ServiceGroupId + } + + ingress = append(ingress, liteRule) + } + + for _, eg := range policySet.Egress { + if nilFields := tccommon.CheckNil(eg, map[string]string{ + "Action": "action", + "SecurityGroupId": "nested security group id", + }); len(nilFields) > 0 { + err := fmt.Errorf("api[%s] security group egress %v are nil", request.GetAction(), nilFields) + log.Printf("[CRITAL]%s %v", logId, err) + } + + liteRule := VpcSecurityGroupLiteRule{ + action: *eg.Action, + cidrIp: *eg.CidrBlock, + securityGroupId: *eg.SecurityGroupId, + } + + if eg.Port != nil { + liteRule.port = *eg.Port + } + + if eg.Protocol != nil { + liteRule.protocol = strings.ToUpper(*eg.Protocol) + } + + if eg.AddressTemplate != nil { + liteRule.addressId = *eg.AddressTemplate.AddressId + liteRule.addressGroupId = *eg.AddressTemplate.AddressGroupId + } + + if eg.ServiceTemplate != nil { + liteRule.protocolTemplateId = *eg.ServiceTemplate.ServiceId + liteRule.protocolTemplateGroupId = *eg.ServiceTemplate.ServiceGroupId + } + + egress = append(egress, liteRule) + } + + exist = true + + return nil + }); err != nil { + log.Printf("[CRITAL]%s describe security group policies failed, rason: %v", logId, err) + return nil, nil, false, err + } + + return +} + +func (me *VpcService) DetachAllLiteRulesFromSecurityGroup(ctx context.Context, sgId string) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewModifySecurityGroupPoliciesRequest() + request.SecurityGroupId = &sgId + request.SecurityGroupPolicySet = &vpc.SecurityGroupPolicySet{ + Version: helper.String("0"), + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseVpcClient().ModifySecurityGroupPolicies(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }) +} + +type securityGroupRuleBasicInfo struct { + SgId string `json:"sg_id"` + PolicyType string `json:"policy_type"` + CidrIp *string `json:"cidr_ip,omitempty"` + Protocol *string `json:"protocol"` + PortRange *string `json:"port_range"` + Action string `json:"action"` + SourceSgId *string `json:"source_sg_id"` + Description *string `json:"description,omitempty"` + AddressTemplateId *string `json:"address_template_id,omitempty"` + AddressTemplateGroupId *string `json:"address_template_group_id,omitempty"` + ProtocolTemplateId *string `json:"protocol_template_id,omitempty"` + ProtocolTemplateGroupId *string `json:"protocol_template_group_id,omitempty"` +} + +type securityGroupRuleBasicInfoWithPolicyIndex struct { + securityGroupRuleBasicInfo + PolicyIndex int64 `json:"policy_index"` +} + +// Build an ID for a Security Group Rule (new version) +func buildSecurityGroupRuleId(info securityGroupRuleBasicInfo) (ruleId string, err error) { + b, err := json.Marshal(info) + if err != nil { + return "", err + } + + log.Printf("[DEBUG] build rule is %s", string(b)) + + return base64.StdEncoding.EncodeToString(b), nil +} + +// Parse Security Group Rule ID +func parseSecurityGroupRuleId(ruleId string) (info securityGroupRuleBasicInfo, errRet error) { + log.Printf("[DEBUG] parseSecurityGroupRuleId before: %v", ruleId) + + // new version ID + if b, err := base64.StdEncoding.DecodeString(ruleId); err == nil { + errRet = json.Unmarshal(b, &info) + return + } + + // old version ID + m := make(map[string]string) + ruleQueryStrings := strings.Split(ruleId, "&") + if len(ruleQueryStrings) == 0 { + errRet = errors.New("ruleId is invalid") + return + } + for _, str := range ruleQueryStrings { + arr := strings.Split(str, "=") + if len(arr) != 2 { + errRet = errors.New("ruleId is invalid") + return + } + m[arr[0]] = arr[1] + } + + info.SgId = m["sgId"] + info.PolicyType = m["direction"] + info.Action = m["action"] + + // the newest version include template + addressTemplateId, addressTemplateOk := m["address_template_id"] + addressGroupTemplateId, addressTemplateGroupOk := m["address_template_group_id"] + if addressTemplateOk || addressTemplateGroupOk { + if addressTemplateGroupOk { + info.AddressTemplateGroupId = common.StringPtr(addressGroupTemplateId) + } else { + info.AddressTemplateId = common.StringPtr(addressTemplateId) + } + info.CidrIp = common.StringPtr("") + info.SourceSgId = common.StringPtr("") + } else { + if m["sourceSgid"] == "" { + info.CidrIp = common.StringPtr(m["cidrIp"]) + } else { + info.CidrIp = common.StringPtr("") + } + info.SourceSgId = common.StringPtr(m["sourceSgid"]) + } + + protocolTemplateId, protocolTemplateOk := m["protocol_template_id"] + protocolGroupTemplateId, protocolTemplateGroupOk := m["protocol_template_group_id"] + if protocolTemplateOk || protocolTemplateGroupOk { + if protocolTemplateGroupOk { + info.ProtocolTemplateGroupId = common.StringPtr(protocolGroupTemplateId) + } else { + info.ProtocolTemplateId = common.StringPtr(protocolTemplateId) + } + info.Protocol = common.StringPtr("") + info.PortRange = common.StringPtr("") + } else { + info.Protocol = common.StringPtr(m["ipProtocol"]) + info.PortRange = common.StringPtr(m["portRange"]) + } + + info.Description = common.StringPtr(m["description"]) + + log.Printf("[DEBUG] parseSecurityGroupRuleId after: %v", info) + return +} + +func comparePolicyAndSecurityGroupInfo(policy *vpc.SecurityGroupPolicy, info securityGroupRuleBasicInfo) bool { + if policy.PolicyDescription != nil && *policy.PolicyDescription != "" { + if info.Description == nil || *policy.PolicyDescription != *info.Description { + return false + } + } else { + if info.Description != nil && *info.Description != "" { + return false + } + } + // policy.CidrBlock will be nil if address template is set + if policy.CidrBlock != nil && *policy.CidrBlock != "" { + if info.CidrIp == nil || *policy.CidrBlock != *info.CidrIp { + return false + } + } else { + if info.CidrIp != nil && *info.CidrIp != "" { + return false + } + } + + // policy.Port will be nil if protocol template is set + if policy.Port != nil && *policy.Port != "" { + if info.PortRange == nil || *policy.Port != *info.PortRange { + return false + } + } else { + if info.PortRange != nil && *info.PortRange != "" && *info.PortRange != "ALL" { + return false + } + } + + // policy.Protocol will be nil if protocol template is set + if policy.Protocol != nil && *policy.Protocol != "" { + if info.Protocol == nil || !strings.EqualFold(*policy.Protocol, *info.Protocol) { + return false + } + } else { + if info.Protocol != nil && *info.Protocol != "" && *info.Protocol != "ALL" { + return false + } + } + + // policy.SecurityGroupId always not nil + if *policy.SecurityGroupId != *info.SourceSgId { + return false + } + + if !strings.EqualFold(*policy.Action, info.Action) { + return false + } + + // if template is not null it must be compared + if info.ProtocolTemplateId != nil && *info.ProtocolTemplateId != "" { + if policy.ServiceTemplate == nil || policy.ServiceTemplate.ServiceId == nil || *info.ProtocolTemplateId != *policy.ServiceTemplate.ServiceId { + log.Printf("%s %v test", *info.ProtocolTemplateId, policy.ServiceTemplate) + return false + } + } else { + if policy.ServiceTemplate != nil && policy.ServiceTemplate.ServiceId != nil && *policy.ServiceTemplate.ServiceId != "" { + return false + } + } + + if info.ProtocolTemplateGroupId != nil && *info.ProtocolTemplateGroupId != "" { + if policy.ServiceTemplate == nil || policy.ServiceTemplate.ServiceGroupId == nil || *info.ProtocolTemplateGroupId != *policy.ServiceTemplate.ServiceGroupId { + log.Printf("%s %v test", *info.ProtocolTemplateGroupId, policy.ServiceTemplate) + return false + } + } else { + if policy.ServiceTemplate != nil && policy.ServiceTemplate.ServiceGroupId != nil && *policy.ServiceTemplate.ServiceGroupId != "" { + return false + } + } + + if info.AddressTemplateGroupId != nil && *info.AddressTemplateGroupId != "" { + if policy.AddressTemplate == nil || policy.AddressTemplate.AddressGroupId == nil || *info.AddressTemplateGroupId != *policy.AddressTemplate.AddressGroupId { + return false + } + } else { + if policy.AddressTemplate != nil && policy.AddressTemplate.AddressGroupId != nil && *policy.AddressTemplate.AddressGroupId != "" { + return false + } + } + if info.AddressTemplateId != nil && *info.AddressTemplateId != "" { + if policy.AddressTemplate == nil || policy.AddressTemplate.AddressId == nil || *info.AddressTemplateId != *policy.AddressTemplate.AddressId { + return false + } + } else { + if policy.AddressTemplate != nil && policy.AddressTemplate.AddressId != nil && *policy.AddressTemplate.AddressId != "" { + return false + } + } + + return true +} + +func parseRule(str string) (liteRule VpcSecurityGroupLiteRule, err error) { + split := strings.Split(str, "#") + if len(split) != 4 { + err = fmt.Errorf("invalid security group rule %s", str) + return + } + + var ( + source string + port string + protocol string + // source is "sg-xxxxxx" / "ipm-xxxxxx" / "ipmg-xxxxxx" formatted + isInstanceIdSource = true + ) + + liteRule.action, source, port, protocol = split[0], split[1], split[2], split[3] + + if securityGroupIdRE.MatchString(source) { + liteRule.securityGroupId = source + } else if ipAddressIdRE.MatchString(source) { + liteRule.addressId = source + } else if ipAddressGroupIdRE.MatchString(source) { + liteRule.addressGroupId = source + } else { + isInstanceIdSource = false + liteRule.cidrIp = source + } + + if v := liteRule.action; v != "ACCEPT" && v != "DROP" { + err = fmt.Errorf("invalid action `%s`, available actions: `ACCEPT`, `DROP`", v) + return + } + + if net.ParseIP(liteRule.cidrIp) == nil && !isInstanceIdSource { + if _, _, err = net.ParseCIDR(liteRule.cidrIp); err != nil { + err = fmt.Errorf("invalid cidr_ip %s, allow cidr_ip format is `8.8.8.8` or `10.0.1.0/24`", liteRule.cidrIp) + return + } + } + + liteRule.port = port + if port != "ALL" && !portRE.MatchString(port) && !protocolTemplateRE.MatchString(protocol) { + err = fmt.Errorf("invalid port %s, allow port format is `ALL`, `53`, `80,443` or `80-90`", liteRule.port) + return + } + + liteRule.protocol = protocol + if protocolTemplateRE.MatchString(protocol) { + liteRule.port = "" + liteRule.protocol = "" + if protocolTemplateIdRE.MatchString(protocol) { + liteRule.protocolTemplateId = protocol + } else if protocolTemplateGroupIdRE.MatchString(protocol) { + liteRule.protocolTemplateGroupId = protocol + } + } else if protocol != "TCP" && protocol != "UDP" && protocol != "ALL" && protocol != "ICMP" { + err = fmt.Errorf("invalid protocol %s, allow protocol is `ALL`, `TCP`, `UDP`, `ICMP` or `ppm(g?)-xxxxxxxx`", liteRule.protocol) + } else if protocol == "ALL" || protocol == "ICMP" { + if liteRule.port != "ALL" { + err = fmt.Errorf("when protocol is %s, port must be ALL", protocol) + } else { + liteRule.port = "" + } + } + + if err != nil { + return + } + + return +} + +/* +EIP +*/ +func (me *VpcService) DescribeEipById(ctx context.Context, eipId string) (eip *vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressesRequest() + request.AddressIds = []*string{&eipId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AddressSet) < 1 { + return + } + eip = response.Response.AddressSet[0] + return +} + +func (me *VpcService) DescribeEipByFilter(ctx context.Context, filters map[string][]string) (eips []*vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressesRequest() + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := &vpc.Filter{ + Name: helper.String(k), + Values: []*string{}, + } + for _, vv := range v { + filter.Values = append(filter.Values, helper.String(vv)) + } + request.Filters = append(request.Filters, filter) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + eips = response.Response.AddressSet + return +} + +func (me *VpcService) ModifyEipName(ctx context.Context, eipId, eipName string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressAttributeRequest() + request.AddressId = &eipId + request.AddressName = &eipName + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressAttribute(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) ModifyEipBandwidthOut(ctx context.Context, eipId string, bandwidthOut int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressesBandwidthRequest() + request.AddressIds = []*string{&eipId} + request.InternetMaxBandwidthOut = helper.IntInt64(bandwidthOut) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressesBandwidth(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) ModifyEipInternetChargeType(ctx context.Context, eipId string, internetChargeType string, bandwidthOut, period, renewFlag int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressInternetChargeTypeRequest() + request.AddressId = &eipId + request.InternetChargeType = &internetChargeType + request.InternetMaxBandwidthOut = helper.IntUint64(bandwidthOut) + + if internetChargeType == "BANDWIDTH_PREPAID_BY_MONTH" { + addressChargePrepaid := vpc.AddressChargePrepaid{} + addressChargePrepaid.AutoRenewFlag = helper.IntInt64(renewFlag) + addressChargePrepaid.Period = helper.IntInt64(period) + request.AddressChargePrepaid = &addressChargePrepaid + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAddressInternetChargeType(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) RenewAddress(ctx context.Context, eipId string, period int, renewFlag int) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewRenewAddressesRequest() + request.AddressIds = []*string{&eipId} + addressChargePrepaid := vpc.AddressChargePrepaid{} + addressChargePrepaid.AutoRenewFlag = helper.IntInt64(renewFlag) + addressChargePrepaid.Period = helper.IntInt64(period) + request.AddressChargePrepaid = &addressChargePrepaid + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().RenewAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) DeleteEip(ctx context.Context, eipId string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewReleaseAddressesRequest() + request.AddressIds = []*string{&eipId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ReleaseAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) AttachEip(ctx context.Context, eipId, instanceId string) error { + logId := tccommon.GetLogId(ctx) + request := vpc.NewAssociateAddressRequest() + request.AddressId = &eipId + request.InstanceId = &instanceId + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().AssociateAddress(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return nil +} + +func (me *VpcService) DescribeNatGatewayById(ctx context.Context, natGateWayId string) (natGateWay *vpc.NatGateway, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeNatGatewaysRequest() + request.NatGatewayIds = []*string{&natGateWayId} + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeNatGateways(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NatGatewaySet) > 0 { + natGateWay = response.Response.NatGatewaySet[0] + } + + return +} + +func (me *VpcService) DescribeNatGatewayByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.NatGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNatGatewaysRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.NatGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeNatGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NatGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.NatGatewaySet...) + if len(response.Response.NatGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteNatGateway(ctx context.Context, natGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteNatGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteNatGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DisassociateNatGatewayAddress(ctx context.Context, request *vpc.DisassociateNatGatewayAddressRequest) (result *vpc.DisassociateNatGatewayAddressResponse, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + // Check if Nat Gateway Ip still associate + gateway, err := me.DescribeNatGatewayById(ctx, *request.NatGatewayId) + + if err != nil { + errRet = err + return + } + + if gateway == nil || len(gateway.PublicIpAddressSet) == 0 { + return + } + + var gatewayAddresses []string + var candidates []*string + + for i := range gateway.PublicIpAddressSet { + addr := gateway.PublicIpAddressSet[i].PublicIpAddress + gatewayAddresses = append(gatewayAddresses, *addr) + } + + for i := range request.PublicIpAddresses { + addr := request.PublicIpAddresses[i] + if helper.StringsContain(gatewayAddresses, *addr) { + candidates = append(candidates, addr) + } + } + + if len(candidates) == 0 { + return nil, nil + } + + request.PublicIpAddresses = candidates + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisassociateNatGatewayAddress(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + result = response + return +} + +func (me *VpcService) UnattachEip(ctx context.Context, eipId string) error { + eipUnattachLocker.Lock() + defer eipUnattachLocker.Unlock() + + logId := tccommon.GetLogId(ctx) + eip, err := me.DescribeEipById(ctx, eipId) + if err != nil { + return err + } + if eip == nil || *eip.AddressStatus == EIP_STATUS_UNBIND { + return nil + } + + // DisassociateAddress Doesn't support Disassociate NAT Address + if eip.InstanceId != nil && strings.HasPrefix(*eip.InstanceId, "nat-") { + request := vpc.NewDisassociateNatGatewayAddressRequest() + request.NatGatewayId = eip.InstanceId + request.PublicIpAddresses = []*string{eip.AddressIp} + _, err := me.DisassociateNatGatewayAddress(ctx, request) + if err != nil { + return err + } + + outErr := resource.Retry(tccommon.ReadRetryTimeout*3, func() *resource.RetryError { + eip, err := me.DescribeEipById(ctx, eipId) + if err != nil { + return tccommon.RetryError(err) + } + if eip != nil && *eip.AddressStatus != EIP_STATUS_UNBIND { + return resource.RetryableError(fmt.Errorf("eip is still %s", EIP_STATUS_UNBIND)) + } + return nil + }) + + if outErr != nil { + return outErr + } + } + + request := vpc.NewDisassociateAddressRequest() + request.AddressId = &eipId + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DisassociateAddress(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + return err + } + if response.Response.TaskId == nil { + return nil + } + taskId, err := strconv.ParseUint(*response.Response.TaskId, 10, 64) + if err != nil { + return nil + } + + taskRequest := vpc.NewDescribeTaskResultRequest() + taskRequest.TaskId = &taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(taskRequest.GetAction()) + taskResponse, err := me.client.UseVpcClient().DescribeTaskResult(taskRequest) + if err != nil { + return tccommon.RetryError(err) + } + if taskResponse.Response.Result != nil && *taskResponse.Response.Result == EIP_TASK_STATUS_RUNNING { + return resource.RetryableError(errors.New("eip task is running")) + } + return nil + }) + if err != nil { + return err + } + + return nil +} + +func (me *VpcService) CreateEni( + ctx context.Context, + name, vpcId, subnetId, desc string, + securityGroups []string, + ipv4Count *int, + ipv4s []VpcEniIP, + tags map[string]string, +) (id string, err error) { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + createRequest := vpc.NewCreateNetworkInterfaceRequest() + createRequest.NetworkInterfaceName = &name + createRequest.VpcId = &vpcId + createRequest.SubnetId = &subnetId + createRequest.NetworkInterfaceDescription = &desc + + if len(securityGroups) > 0 { + createRequest.SecurityGroupIds = common.StringPtrs(securityGroups) + } + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + createRequest.Tags = append(createRequest.Tags, &tag) + } + } + + if ipv4Count != nil { + // create will assign a primary ip, secondary ip count is *ipv4Count-1 + createRequest.SecondaryPrivateIpAddressCount = helper.IntUint64(*ipv4Count - 1) + } + + var wantIpv4 []string + + for _, ipv4 := range ipv4s { + wantIpv4 = append(wantIpv4, ipv4.ip.String()) + createRequest.PrivateIpAddresses = append(createRequest.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4.ip.String()), + Primary: helper.Bool(ipv4.primary), + Description: ipv4.desc, + }) + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(createRequest.GetAction()) + + response, err := client.CreateNetworkInterface(createRequest) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, createRequest.GetAction(), createRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + eni := response.Response.NetworkInterface + + if eni == nil { + err := fmt.Errorf("api[%s] eni is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + ipv4Set := eni.PrivateIpAddressSet + + if len(wantIpv4) > 0 { + checkMap := make(map[string]bool, len(wantIpv4)) + for _, ipv4 := range wantIpv4 { + checkMap[ipv4] = false + } + + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + checkMap[*ipv4.PrivateIpAddress] = true + } + + for ipv4, checked := range checkMap { + if !checked { + err := fmt.Errorf("api[%s] doesn't assign %s ip", createRequest.GetAction(), ipv4) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + } + } else { + if len(ipv4Set) != *ipv4Count { + err := fmt.Errorf("api[%s] doesn't assign enough ip", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = make([]string, 0, *ipv4Count) + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", createRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = append(wantIpv4, *ipv4.PrivateIpAddress) + } + } + + id = *eni.NetworkInterfaceId + + return nil + }); err != nil { + log.Printf("[CRITAL]%s create eni failed, reason: %v", logId, err) + return "", err + } + + if err := waitEniReady(ctx, id, client, wantIpv4, nil); err != nil { + log.Printf("[CRITAL]%s create eni failed, reason: %v", logId, err) + return "", err + } + + return +} + +func (me *VpcService) describeEnis( + ctx context.Context, + ids []string, + vpcId, subnetId, id, cvmId, sgId, name, desc, ipv4 *string, + tags map[string]string, +) (enis []*vpc.NetworkInterface, err error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkInterfacesRequest() + + if len(ids) > 0 { + request.NetworkInterfaceIds = common.StringPtrs(ids) + } + + if vpcId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("vpc-id"), + Values: []*string{vpcId}, + }) + } + + if subnetId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("subnet-id"), + Values: []*string{subnetId}, + }) + } + + if id != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-id"), + Values: []*string{id}, + }) + } + + if cvmId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("attachment.instance-id"), + Values: []*string{cvmId}, + }) + } + + if sgId != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("groups.security-group-id"), + Values: []*string{sgId}, + }) + } + + if name != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-name"), + Values: []*string{name}, + }) + } + + if desc != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("network-interface-description"), + Values: []*string{desc}, + }) + } + + if ipv4 != nil { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("address-ip"), + Values: []*string{ipv4}, + }) + } + + for k, v := range tags { + request.Filters = append(request.Filters, &vpc.Filter{ + Name: helper.String("tag:" + k), + Values: []*string{helper.String(v)}, + }) + } + + var offset uint64 + request.Offset = &offset + request.Limit = helper.IntUint64(ENI_DESCRIBE_LIMIT) + + count := ENI_DESCRIBE_LIMIT + for count == ENI_DESCRIBE_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkInterfaces(request) + if err != nil { + count = 0 + + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + eniSet := response.Response.NetworkInterfaceSet + count = len(eniSet) + enis = append(enis, eniSet...) + + return nil + }); err != nil { + log.Printf("[CRITAL]%s read eni list failed, reason: %v", logId, err) + return nil, err + } + + offset += uint64(count) + } + + return +} + +func (me *VpcService) DescribeEniById(ctx context.Context, ids []string) (enis []*vpc.NetworkInterface, err error) { + return me.describeEnis(ctx, ids, nil, nil, nil, nil, nil, nil, nil, nil, nil) +} + +func (me *VpcService) ModifyEniAttribute(ctx context.Context, id string, name, desc *string, sgs []string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewModifyNetworkInterfaceAttributeRequest() + request.NetworkInterfaceId = &id + request.NetworkInterfaceName = name + request.NetworkInterfaceDescription = desc + request.SecurityGroupIds = common.StringPtrs(sgs) + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.ModifyNetworkInterfaceAttribute(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify eni attribute failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, nil, nil); err != nil { + log.Printf("[CRITAL]%s modify eni attribute failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) UnAssignIpv4FromEni(ctx context.Context, id string, ipv4s []string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewUnassignPrivateIpAddressesRequest() + request.NetworkInterfaceId = &id + request.PrivateIpAddresses = make([]*vpc.PrivateIpAddressSpecification, 0, len(ipv4s)) + for _, ipv4 := range ipv4s { + request.PrivateIpAddresses = append(request.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4), + }) + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.UnassignPrivateIpAddresses(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s unassign ipv4 from eni failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, nil, ipv4s); err != nil { + log.Printf("[CRITAL]%s unassign ipv4 from eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) AssignIpv4ToEni(ctx context.Context, id string, ipv4s []VpcEniIP, ipv4Count *int) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewAssignPrivateIpAddressesRequest() + request.NetworkInterfaceId = &id + + if ipv4Count != nil { + request.SecondaryPrivateIpAddressCount = helper.IntUint64(*ipv4Count) + } + + var wantIpv4 []string + + if len(ipv4s) > 0 { + request.PrivateIpAddresses = make([]*vpc.PrivateIpAddressSpecification, 0, len(ipv4s)) + wantIpv4 = make([]string, 0, len(ipv4s)) + + for _, ipv4 := range ipv4s { + wantIpv4 = append(wantIpv4, ipv4.ip.String()) + request.PrivateIpAddresses = append(request.PrivateIpAddresses, &vpc.PrivateIpAddressSpecification{ + PrivateIpAddress: helper.String(ipv4.ip.String()), + Primary: helper.Bool(ipv4.primary), + Description: ipv4.desc, + }) + } + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.AssignPrivateIpAddresses(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + ipv4Set := response.Response.PrivateIpAddressSet + + if len(wantIpv4) > 0 { + checkMap := make(map[string]bool, len(wantIpv4)) + for _, ipv4 := range wantIpv4 { + checkMap[ipv4] = false + } + + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + checkMap[*ipv4.PrivateIpAddress] = true + } + + for ipv4, checked := range checkMap { + if !checked { + err := fmt.Errorf("api[%s] doesn't assign %s ip", request.GetAction(), ipv4) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + } + } else { + if len(ipv4Set) != *ipv4Count { + err := fmt.Errorf("api[%s] doesn't assign enough ip", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = make([]string, 0, *ipv4Count) + for _, ipv4 := range ipv4Set { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + wantIpv4 = append(wantIpv4, *ipv4.PrivateIpAddress) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s assign ipv4 to eni failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, wantIpv4, nil); err != nil { + log.Printf("[CRITAL]%s assign ipv4 to eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DeleteEni(ctx context.Context, id string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + deleteRequest := vpc.NewDeleteNetworkInterfaceRequest() + deleteRequest.NetworkInterfaceId = &id + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(deleteRequest.GetAction()) + + if _, err := client.DeleteNetworkInterface(deleteRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, deleteRequest.GetAction(), deleteRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete eni failed, reason: %v", logId, err) + return err + } + + describeRequest := vpc.NewDescribeNetworkInterfacesRequest() + describeRequest.NetworkInterfaceIds = []*string{&id} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(describeRequest.GetAction()) + + response, err := client.DescribeNetworkInterfaces(describeRequest) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if sdkError.Code == "ResourceNotFound" { + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + for _, eni := range response.Response.NetworkInterfaceSet { + if eni.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.NetworkInterfaceId == id { + err := errors.New("eni still exists") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s delete eni failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) AttachEniToCvm(ctx context.Context, eniId, cvmId string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + attachRequest := vpc.NewAttachNetworkInterfaceRequest() + attachRequest.NetworkInterfaceId = &eniId + attachRequest.InstanceId = &cvmId + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(attachRequest.GetAction()) + + if _, err := client.AttachNetworkInterface(attachRequest); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, attachRequest.GetAction(), attachRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s attach eni to instance failed, reason: %v", logId, err) + return err + } + + describeRequest := vpc.NewDescribeNetworkInterfacesRequest() + describeRequest.NetworkInterfaceIds = []*string{&eniId} + + if err := resource.Retry(2*tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(describeRequest.GetAction()) + + response, err := client.DescribeNetworkInterfaces(describeRequest) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, describeRequest.GetAction(), describeRequest.ToJsonString(), err) + return tccommon.RetryError(err) + } + + var eni *vpc.NetworkInterface + for _, e := range response.Response.NetworkInterfaceSet { + if e.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *e.NetworkInterfaceId == eniId { + eni = e + break + } + } + + if eni == nil { + err := fmt.Errorf("api[%s] eni not found", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.Attachment == nil { + err := fmt.Errorf("api[%s] eni attachment is not ready", describeRequest.GetAction()) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + if eni.Attachment.InstanceId == nil { + err := fmt.Errorf("api[%s] eni attach instance id is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.Attachment.InstanceId != cvmId { + err := fmt.Errorf("api[%s] eni attach instance id is not right", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if eni.State == nil { + err := fmt.Errorf("api[%s] eni state is nil", describeRequest.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.State != ENI_STATE_AVAILABLE { + err := errors.New("eni is not ready") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s attach eni to instance failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DetachEniFromCvm(ctx context.Context, eniId, cvmId string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewDetachNetworkInterfaceRequest() + request.NetworkInterfaceId = &eniId + request.InstanceId = &cvmId + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.DetachNetworkInterface(request); err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + switch sdkError.Code { + case "UnsupportedOperation.InvalidState": + return resource.RetryableError(errors.New("cvm may still bind eni")) + + case "ResourceNotFound": + // eni or cvm doesn't exist + return nil + } + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s detach eni from instance failed, reason: %v", logId, err) + return err + } + + if err := waitEniDetach(ctx, eniId, client); err != nil { + log.Printf("[CRITAL]%s detach eni from instance failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) ModifyEniPrimaryIpv4Desc(ctx context.Context, id, ip string, desc *string) error { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + request := vpc.NewModifyPrivateIpAddressesAttributeRequest() + request.NetworkInterfaceId = &id + request.PrivateIpAddresses = []*vpc.PrivateIpAddressSpecification{ + { + PrivateIpAddress: &ip, + Description: desc, + }, + } + + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := client.ModifyPrivateIpAddressesAttribute(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s modify eni primary ipv4 description failed, reason: %v", logId, err) + return err + } + + if err := waitEniReady(ctx, id, client, []string{ip}, nil); err != nil { + log.Printf("[CRITAL]%s modify eni primary ipv4 description failed, reason: %v", logId, err) + return err + } + + return nil +} + +func (me *VpcService) DescribeEniByFilters( + ctx context.Context, + vpcId, subnetId, cvmId, sgId, name, desc, ipv4 *string, + tags map[string]string, +) (enis []*vpc.NetworkInterface, err error) { + return me.describeEnis(ctx, nil, vpcId, subnetId, nil, cvmId, sgId, name, desc, ipv4, tags) +} + +func (me *VpcService) DescribeHaVipByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.HaVip, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeHaVipsRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.HaVip, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeHaVips(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.HaVipSet) < 1 { + break + } + instances = append(instances, response.Response.HaVipSet...) + if len(response.Response.HaVipSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DescribeHaVipEipById(ctx context.Context, haVipEipAttachmentId string) (eip string, haVip string, has bool, errRet error) { + logId := tccommon.GetLogId(ctx) + client := me.client.UseVpcClient() + + items := strings.Split(haVipEipAttachmentId, "#") + if len(items) != 2 { + errRet = fmt.Errorf("decode HA VIP EIP attachment ID error %s", haVipEipAttachmentId) + return + } + haVipId := items[0] + addressIp := items[1] + + request := vpc.NewDescribeHaVipsRequest() + request.HaVipIds = []*string{&haVipId} + eip = "" + haVip = "" + if err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if result, err := client.DescribeHaVips(request); err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } else { + length := len(result.Response.HaVipSet) + if length != 1 { + if length == 0 { + return nil + } else { + err = fmt.Errorf("query havip %s eip %s failed, the SDK returns %d HaVips", haVipId, addressIp, length) + return resource.NonRetryableError(err) + } + } else { + eip = *result.Response.HaVipSet[0].AddressIp + if addressIp != eip { + return nil + } + has = true + haVip = haVipId + } + } + return nil + }); err != nil { + log.Printf("[CRITAL]%s describe HA VIP attachment failed, reason: %v", logId, err) + errRet = err + } + return eip, haVip, has, errRet +} + +func (me *VpcService) DeleteHaVip(ctx context.Context, haVipId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteHaVipRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.HaVipId = &haVipId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteHaVip(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func waitEniReady(ctx context.Context, id string, client *vpc.Client, wantIpv4s []string, dropIpv4s []string) error { + logId := tccommon.GetLogId(ctx) + + wantCheckMap := make(map[string]bool, len(wantIpv4s)) + for _, ipv4 := range wantIpv4s { + wantCheckMap[ipv4] = false + } + + dropCheckMap := make(map[string]struct{}, len(dropIpv4s)) + for _, ipv4 := range dropIpv4s { + dropCheckMap[ipv4] = struct{}{} + } + + request := vpc.NewDescribeNetworkInterfacesRequest() + request.NetworkInterfaceIds = []*string{helper.String(id)} + + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.DescribeNetworkInterfaces(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + var eni *vpc.NetworkInterface + for _, networkInterface := range response.Response.NetworkInterfaceSet { + if networkInterface.NetworkInterfaceId == nil { + err := fmt.Errorf("api[%s] eni id is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *networkInterface.NetworkInterfaceId == id { + eni = networkInterface + break + } + } + + if eni == nil { + err := fmt.Errorf("api[%s] eni not exist", request.GetAction()) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + if eni.State == nil { + err := fmt.Errorf("api[%s] eni state is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *eni.State != ENI_STATE_AVAILABLE { + err := errors.New("eni is not available") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + for _, ipv4 := range eni.PrivateIpAddressSet { + if ipv4.PrivateIpAddress == nil { + err := fmt.Errorf("api[%s] eni ipv4 ip is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + // check drop + if _, ok := dropCheckMap[*ipv4.PrivateIpAddress]; ok { + err := fmt.Errorf("api[%s] drop ip %s still exists", request.GetAction(), *ipv4.PrivateIpAddress) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + + // check want + if _, ok := wantCheckMap[*ipv4.PrivateIpAddress]; ok { + wantCheckMap[*ipv4.PrivateIpAddress] = true + } + + if ipv4.State == nil { + err := fmt.Errorf("api[%s] eni ipv4 state is nil", request.GetAction()) + log.Printf("[CRITAL]%s %v", logId, err) + return resource.NonRetryableError(err) + } + + if *ipv4.State != ENI_IP_AVAILABLE { + err := errors.New("eni ipv4 is not available") + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + for ipv4, checked := range wantCheckMap { + if !checked { + err := fmt.Errorf("api[%s] ipv4 %s is no ready", request.GetAction(), ipv4) + log.Printf("[DEBUG]%s %v", logId, err) + return resource.RetryableError(err) + } + } + + return nil + }); err != nil { + log.Printf("[CRITAL]%s eni is not available failed, reason: %v", logId, err) + return err + } + + return nil +} + +func flattenVpnSPDList(spd []*vpc.SecurityPolicyDatabase) (mapping []*map[string]interface{}) { + mapping = make([]*map[string]interface{}, 0, len(spd)) + for _, spg := range spd { + item := make(map[string]interface{}) + item["local_cidr_block"] = spg.LocalCidrBlock + item["remote_cidr_block"] = spg.RemoteCidrBlock + mapping = append(mapping, &item) + } + return +} + +func waitEniDetach(ctx context.Context, id string, client *vpc.Client) error { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkInterfacesRequest() + request.NetworkInterfaceIds = []*string{helper.String(id)} + + return resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := client.DescribeNetworkInterfaces(request) + if err != nil { + if sdkError, ok := err.(*sdkErrors.TencentCloudSDKError); ok && sdkError.Code == "ResourceNotFound" { + return nil + } + + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return tccommon.RetryError(err) + } + + enis := response.Response.NetworkInterfaceSet + + if len(enis) == 0 { + return nil + } + + eni := enis[0] + + if eni.Attachment == nil { + return nil + } + + if eni.Attachment.InstanceId != nil && *eni.Attachment.InstanceId != "" { + return resource.RetryableError(fmt.Errorf("eni %s still bind in cvm %s", id, *eni.Attachment.InstanceId)) + } + + if eni.State == nil { + return resource.NonRetryableError(fmt.Errorf("eni %s state is nil", id)) + } + + if *eni.State != ENI_STATE_AVAILABLE { + return resource.RetryableError(errors.New("eni is not available")) + } + + return nil + }) +} + +// deal acl +func parseACLRule(str string) (liteRule VpcACLRule, err error) { + split := strings.Split(str, "#") + if len(split) != 4 { + err = fmt.Errorf("invalid acl rule %s", str) + return + } + + liteRule.action, liteRule.cidrIp, liteRule.port, liteRule.protocol = split[0], split[1], split[2], split[3] + + switch liteRule.action { + default: + err = fmt.Errorf("invalid action %s, allow action is `ACCEPT` or `DROP`", liteRule.action) + return + case "ACCEPT", "DROP": + } + + if net.ParseIP(liteRule.cidrIp) == nil { + if _, _, err = net.ParseCIDR(liteRule.cidrIp); err != nil { + err = fmt.Errorf("invalid cidr_ip %s, allow cidr_ip format is `8.8.8.8` or `10.0.1.0/24`", liteRule.cidrIp) + return + } + } + + if liteRule.port != "ALL" && !regexp.MustCompile(`^(\d{1,5},)*\d{1,5}$|^\d{1,5}-\d{1,5}$`).MatchString(liteRule.port) { + err = fmt.Errorf("invalid port %s, allow port format is `ALL`, `53`, `80,443` or `80-90`", liteRule.port) + return + } + + switch liteRule.protocol { + default: + err = fmt.Errorf("invalid protocol %s, allow protocol is `ALL`, `TCP`, `UDP` or `ICMP`", liteRule.protocol) + return + + case "ALL", "ICMP": + if liteRule.port != "ALL" { + err = fmt.Errorf("when protocol is %s, port must be ALL", liteRule.protocol) + return + } + + // when protocol is ALL or ICMP, port should be "" to avoid sdk error + liteRule.port = "" + + case "TCP", "UDP": + } + + return +} + +func (me *VpcService) CreateVpcNetworkAcl(ctx context.Context, vpcID string, name string, tags map[string]string) (aclID string, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewCreateNetworkAclRequest() + response *vpc.CreateNetworkAclResponse + err error + ) + + request.VpcId = &vpcID + request.NetworkAclName = &name + + if len(tags) > 0 { + for tagKey, tagValue := range tags { + tag := vpc.Tag{ + Key: helper.String(tagKey), + Value: helper.String(tagValue), + } + request.Tags = append(request.Tags, &tag) + } + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err = me.client.UseVpcClient().CreateNetworkAcl(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + aclID = *response.Response.NetworkAcl.NetworkAclId + return +} + +func (me *VpcService) AttachRulesToACL(ctx context.Context, aclID string, ingressParm, egressParm []VpcACLRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + + if len(ingressParm) == 0 && len(egressParm) == 0 { + return + } + if errRet = me.ModifyNetWorkAclRules(ctx, aclID, ingressParm, egressParm); errRet != nil { + log.Printf("[CRITAL]%s attach rules to acl failed, reason: %v", logId, errRet) + } + return +} + +func (me *VpcService) ModifyNetWorkAclRules(ctx context.Context, aclID string, ingressParm, egressParm []VpcACLRule) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewModifyNetworkAclEntriesRequest() + err error + ingress []*vpc.NetworkAclEntry + egress []*vpc.NetworkAclEntry + ) + + for i := range ingressParm { + policy := &vpc.NetworkAclEntry{ + Protocol: &ingressParm[i].protocol, + CidrBlock: &ingressParm[i].cidrIp, + Action: &ingressParm[i].action, + } + + if ingressParm[i].port != "" { + policy.Port = &ingressParm[i].port + } + + ingress = append(ingress, policy) + } + + for i := range egressParm { + policy := &vpc.NetworkAclEntry{ + Protocol: &egressParm[i].protocol, + CidrBlock: &egressParm[i].cidrIp, + Action: &egressParm[i].action, + } + + if egressParm[i].port != "" { + policy.Port = &egressParm[i].port + } + + egress = append(egress, policy) + } + + request.NetworkAclId = &aclID + request.NetworkAclEntrySet = &vpc.NetworkAclEntrySet{ + Ingress: ingress, + Egress: egress, + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().ModifyNetworkAclEntries(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) DescribeNetWorkByACLID(ctx context.Context, aclID string) (info *vpc.NetworkAcl, has int, errRet error) { + results, err := me.DescribeNetWorkAcls(ctx, aclID, "", "") + if err != nil { + errRet = err + return + } + + has = len(results) + if has == 0 { + return + } + + info = results[0] + return +} + +func (me *VpcService) DeleteAcl(ctx context.Context, aclID string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + err error + networkAcls []*vpc.NetworkAcl + request = vpc.NewDeleteNetworkAclRequest() + ) + + // Disassociate Network Acl Subnets + networkAcls, err = me.DescribeNetWorkAcls(ctx, aclID, "", "") + if err != nil { + errRet = err + return + } + + if len(networkAcls) > 0 { + subnets := networkAcls[0].SubnetSet + if len(subnets) > 0 { + requestSubnet := vpc.NewDisassociateNetworkAclSubnetsRequest() + requestSubnet.NetworkAclId = &aclID + + for i := range subnets { + requestSubnet.SubnetIds = append(requestSubnet.SubnetIds, subnets[i].SubnetId) + } + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DisassociateNetworkAclSubnets(requestSubnet) + if err != nil { + if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil + } + } + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + if err != nil { + errRet = err + return + } + } + } + + // delete acl + request.NetworkAclId = &aclID + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DeleteNetworkAcl(request) + + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err, tccommon.InternalError) + } + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return nil + } + return tccommon.RetryError(err, tccommon.InternalError) + } + + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) ModifyVpcNetworkAcl(ctx context.Context, id *string, name *string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + err error + request = vpc.NewModifyNetworkAclAttributeRequest() + ) + + request.NetworkAclId = id + request.NetworkAclName = name + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().ModifyNetworkAclAttribute(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err, tccommon.InternalError) + } + if ee.Code == VPCNotFound { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + return resource.NonRetryableError(err) + } + return tccommon.RetryError(err, tccommon.InternalError) + } + + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + + return +} + +func (me *VpcService) AssociateAclSubnets(ctx context.Context, aclId string, subnetIds []string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewAssociateNetworkAclSubnetsRequest() + err error + subIds []*string + ) + + for _, i := range subnetIds { + subIds = append(subIds, &i) + } + + request.NetworkAclId = &aclId + request.SubnetIds = subIds + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().AssociateNetworkAclSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + return +} + +func (me *VpcService) DescribeNetWorkAcls(ctx context.Context, aclID, vpcID, name string) (info []*vpc.NetworkAcl, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkAclsRequest() + response *vpc.DescribeNetworkAclsResponse + err error + filters []*vpc.Filter + offset, pageSize uint64 = 0, 100 + ) + + if vpcID != "" { + filters = me.fillFilter(filters, "vpc-id", vpcID) + } + if aclID != "" { + filters = me.fillFilter(filters, "network-acl-id", aclID) + } + if name != "" { + filters = me.fillFilter(filters, "network-acl-name", name) + } + + if len(filters) > 0 { + request.Filters = filters + } + + request.Offset = &offset + request.Limit = &pageSize + for { + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err = me.client.UseVpcClient().DescribeNetworkAcls(request) + if err != nil { + if ee, ok := err.(*sdkErrors.TencentCloudSDKError); ok { + if ee.Code == VPCNotFound { + return nil + } + } + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + if response.Response == nil { + return + } + + info = append(info, response.Response.NetworkAclSet...) + if len(response.Response.NetworkAclSet) < int(pageSize) { + break + } + + offset += pageSize + } + + return +} + +func (me *VpcService) DescribeByAclId(ctx context.Context, attachmentAcl string) (has bool, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDisassociateNetworkAclSubnetsRequest() + aclId string + ) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + if attachmentAcl == "" { + errRet = fmt.Errorf("DisassociateNetworkAclSubnets can not invoke by empty routeTableId.") + return + } + + aclId = strings.Split(attachmentAcl, "#")[0] + + results, err := me.DescribeNetWorkAcls(ctx, aclId, "", "") + if err != nil { + errRet = err + return + } + if len(results) < 1 || len(results[0].SubnetSet) < 1 { + return + } + + has = true + return +} + +func (me *VpcService) DeleteAclAttachment(ctx context.Context, attachmentAcl string) (errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDisassociateNetworkAclSubnetsRequest() + err error + ) + + if attachmentAcl == "" { + errRet = fmt.Errorf("DeleteRouteTable can not invoke by empty NetworkAclId.") + return + } + + items := strings.Split(attachmentAcl, "#") + request.NetworkAclId = &items[0] + request.SubnetIds = helper.Strings(items[1:]) + + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, err = me.client.UseVpcClient().DisassociateNetworkAclSubnets(request) + if err != nil { + return tccommon.RetryError(err, tccommon.InternalError) + } + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), err) + errRet = err + return + } + return +} + +func (me *VpcService) DescribeVpngwById(ctx context.Context, vpngwId string) (has bool, gateway *vpc.VpnGateway, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaysRequest() + response *vpc.DescribeVpnGatewaysResponse + ) + request.VpnGatewayIds = []*string{&vpngwId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGateways(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.VpnGatewaySet) < 1 { + has = false + return + } + + gateway = response.Response.VpnGatewaySet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.VpnGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaysRequest() + ) + request.Filters = make([]*vpc.FilterObject, 0, len(filters)) + for k, v := range filters { + filter := vpc.FilterObject{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.VpnGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpnGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.VpnGatewaySet...) + if len(response.Response.VpnGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGateway(ctx context.Context, vpnGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteVpnGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeCustomerGatewayByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.CustomerGateway, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCustomerGatewaysRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.CustomerGateway, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeCustomerGateways(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CustomerGatewaySet) < 1 { + break + } + instances = append(instances, response.Response.CustomerGatewaySet...) + if len(response.Response.CustomerGatewaySet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteCustomerGateway(ctx context.Context, customerGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteCustomerGatewayRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.CustomerGatewayId = &customerGatewayId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteCustomerGateway(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) CreateAddressTemplate(ctx context.Context, name string, addresses []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateAddressTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateName = &name + request.Addresses = make([]*string, len(addresses)) + for i, v := range addresses { + request.Addresses[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAddressTemplate(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.AddressTemplate == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.AddressTemplate.AddressTemplateId + return +} + +func (me *VpcService) DescribeAddressTemplateById(ctx context.Context, templateId string) (template *vpc.AddressTemplate, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("address-template-id"), Values: []*string{&templateId}} + templates, err := me.DescribeAddressTemplates(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeAddressTemplates(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.AddressTemplate, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressTemplatesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddressTemplates(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.AddressTemplateSet...) + if len(response.Response.AddressTemplateSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) ModifyAddressTemplate(ctx context.Context, templateId string, name string, addresses []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressTemplateAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateId = &templateId + request.AddressTemplateName = &name + request.Addresses = make([]*string, len(addresses)) + for i, v := range addresses { + request.Addresses[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyAddressTemplateAttribute(request) + return err +} + +func (me *VpcService) DeleteAddressTemplate(ctx context.Context, templateId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteAddressTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.AddressTemplateId = &templateId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteAddressTemplate(request) + return err +} + +func (me *VpcService) CreateAddressTemplateGroup(ctx context.Context, name string, addressTemplate []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateAddressTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateGroupName = &name + request.AddressTemplateIds = make([]*string, len(addressTemplate)) + for i, v := range addressTemplate { + request.AddressTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAddressTemplateGroup(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.AddressTemplateGroup == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.AddressTemplateGroup.AddressTemplateGroupId + return +} + +func (me *VpcService) ModifyAddressTemplateGroup(ctx context.Context, templateGroupId string, name string, templateIds []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyAddressTemplateGroupAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.AddressTemplateGroupId = &templateGroupId + request.AddressTemplateGroupName = &name + request.AddressTemplateIds = make([]*string, len(templateIds)) + for i, v := range templateIds { + request.AddressTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyAddressTemplateGroupAttribute(request) + return err +} + +func (me *VpcService) DescribeAddressTemplateGroupById(ctx context.Context, templateGroupId string) (templateGroup *vpc.AddressTemplateGroup, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("address-template-group-id"), Values: []*string{&templateGroupId}} + templateGroups, err := me.DescribeAddressTemplateGroups(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templateGroups) == 0 { + return + } + if len(templateGroups) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one template group, instanceId %s", templateGroupId) + } + + has = true + templateGroup = templateGroups[0] + return +} + +func (me *VpcService) DescribeAddressTemplateGroups(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.AddressTemplateGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAddressTemplateGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAddressTemplateGroups(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.AddressTemplateGroupSet...) + if len(response.Response.AddressTemplateGroupSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) DeleteAddressTemplateGroup(ctx context.Context, templateGroupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteAddressTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.AddressTemplateGroupId = &templateGroupId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteAddressTemplateGroup(request) + return err +} + +func (me *VpcService) CreateServiceTemplate(ctx context.Context, name string, services []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateServiceTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateName = &name + request.Services = make([]*string, len(services)) + for i, v := range services { + request.Services[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateServiceTemplate(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.ServiceTemplate == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.ServiceTemplate.ServiceTemplateId + return +} + +func (me *VpcService) ModifyServiceTemplate(ctx context.Context, templateId string, name string, services []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyServiceTemplateAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateId = &templateId + request.ServiceTemplateName = &name + request.Services = make([]*string, len(services)) + for i, v := range services { + request.Services[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyServiceTemplateAttribute(request) + return err +} + +func (me *VpcService) DescribeServiceTemplateById(ctx context.Context, templateId string) (template *vpc.ServiceTemplate, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("service-template-id"), Values: []*string{&templateId}} + templates, err := me.DescribeServiceTemplates(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeServiceTemplates(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.ServiceTemplate, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeServiceTemplatesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeServiceTemplates(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.ServiceTemplateSet...) + if len(response.Response.ServiceTemplateSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) DeleteServiceTemplate(ctx context.Context, templateId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteServiceTemplateRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.ServiceTemplateId = &templateId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteServiceTemplate(request) + return err +} + +func (me *VpcService) CreateServiceTemplateGroup(ctx context.Context, name string, serviceTemplate []interface{}) (templateId string, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateServiceTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateGroupName = &name + request.ServiceTemplateIds = make([]*string, len(serviceTemplate)) + for i, v := range serviceTemplate { + request.ServiceTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateServiceTemplateGroup(request) + if err != nil { + errRet = err + return + } + + if response == nil || response.Response == nil || response.Response.ServiceTemplateGroup == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + + templateId = *response.Response.ServiceTemplateGroup.ServiceTemplateGroupId + return +} + +func (me *VpcService) DescribeServiceTemplateGroupById(ctx context.Context, templateGroupId string) (template *vpc.ServiceTemplateGroup, has bool, errRet error) { + filter := vpc.Filter{Name: helper.String("service-template-group-id"), Values: []*string{&templateGroupId}} + templates, err := me.DescribeServiceTemplateGroups(ctx, []*vpc.Filter{&filter}) + if err != nil { + errRet = err + return + } + + if len(templates) == 0 { + return + } + if len(templates) > 1 { + errRet = fmt.Errorf("TencentCloud SDK return more than one templates, instanceId %s", templateGroupId) + } + + has = true + template = templates[0] + return +} + +func (me *VpcService) DescribeServiceTemplateGroups(ctx context.Context, filter []*vpc.Filter) (templateList []*vpc.ServiceTemplateGroup, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeServiceTemplateGroupsRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + + var offset, limit = 0, 100 + request.Filters = filter + + for { + request.Offset = helper.String(strconv.Itoa(offset)) + request.Limit = helper.String(strconv.Itoa(limit)) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeServiceTemplateGroups(request) + if err != nil { + errRet = err + return + } + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + templateList = append(templateList, response.Response.ServiceTemplateGroupSet...) + if len(response.Response.ServiceTemplateGroupSet) < limit { + return + } + offset += limit + } +} + +func (me *VpcService) ModifyServiceTemplateGroup(ctx context.Context, serviceGroupId string, name string, templateIds []interface{}) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyServiceTemplateGroupAttributeRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", + logId, request.GetAction(), request.ToJsonString(), errRet) + } + }() + + request.ServiceTemplateGroupId = &serviceGroupId + request.ServiceTemplateGroupName = &name + request.ServiceTemplateIds = make([]*string, len(templateIds)) + for i, v := range templateIds { + request.ServiceTemplateIds[i] = helper.String(v.(string)) + } + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().ModifyServiceTemplateGroupAttribute(request) + return err +} + +func (me *VpcService) DeleteServiceTemplateGroup(ctx context.Context, templateGroupId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteServiceTemplateGroupRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.ServiceTemplateGroupId = &templateGroupId + + ratelimit.Check(request.GetAction()) + _, err := me.client.UseVpcClient().DeleteServiceTemplateGroup(request) + return err +} + +func (me *VpcService) CreateVpnGatewayRoute(ctx context.Context, vpnGatewayId string, vpnGwRoutes []*vpc.VpnGatewayRoute) (errRet error, routes []*vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.Routes = vpnGwRoutes + + var response *vpc.CreateVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().CreateVpnGatewayRoutes(request) + if errRet != nil { + log.Printf("[CRITAL]%s create vpn gateway route failed, reason: %v", logId, errRet) + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil || response.Response.Routes == nil || len(response.Response.Routes) == 0 { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %+v, %s", response, request.GetAction()) + } else { + routes = response.Response.Routes + } + return +} + +func (me *VpcService) ModifyVpnGatewayRoute(ctx context.Context, vpnGatewayId, routeId, status string) (errRet error, routes *vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.Routes = []*vpc.VpnGatewayRouteModify{{ + RouteId: &routeId, + Status: &status, + }} + + var response *vpc.ModifyVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().ModifyVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil || response.Response.Routes == nil || len(response.Response.Routes) == 0 { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } else { + routes = response.Response.Routes[0] + } + return +} + +func (me *VpcService) DeleteVpnGatewayRoutes(ctx context.Context, vpnGatewayId string, routeIds []*string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + request.RouteIds = routeIds + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeVpnGatewayRoutes(ctx context.Context, vpnGatewayId string, filters []*vpc.Filter) (errRet error, result []*vpc.VpnGatewayRoute) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpnGatewayRoutesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.VpnGatewayId = &vpnGatewayId + if len(filters) > 0 { + request.Filters = filters + } + + offset := int64(0) + limit := int64(VPN_DESCRIBE_LIMIT) + for { + request.Offset = &offset + request.Limit = &limit + var response *vpc.DescribeVpnGatewayRoutesResponse + errRet = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().DescribeVpnGatewayRoutes(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil { + return fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()), nil + } else if len(response.Response.Routes) > 0 { + result = append(result, response.Response.Routes...) + } else { + return + } + offset = offset + limit + } +} + +func (me *VpcService) DescribeVpcTaskResult(ctx context.Context, taskId *string) (err error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeVpcTaskResultRequest() + defer func() { + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), err.Error()) + } + }() + request.TaskId = taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpcTaskResult(request) + if err != nil { + return tccommon.RetryError(err) + } + if response.Response.Status != nil && *response.Response.Status == VPN_TASK_STATUS_RUNNING { + return resource.RetryableError(errors.New("VPN task is running")) + } + return nil + }) + if err != nil { + return err + } + return +} + +func (me *VpcService) DescribeTaskResult(ctx context.Context, taskId *uint64) (result *vpc.DescribeTaskResultResponse, err error) { + + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeTaskResultRequest() + defer func() { + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), err.Error()) + } + }() + request.TaskId = taskId + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeTaskResult(request) + if err != nil { + return tccommon.RetryError(err) + } + result = response + return nil + }) + if err != nil { + return nil, err + } + return +} + +func (me *VpcService) DescribeVpnSslServerById(ctx context.Context, sslId string) (has bool, gateway *vpc.SslVpnSever, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslServersRequest() + response *vpc.DescribeVpnGatewaySslServersResponse + ) + request.SslVpnServerIds = []*string{&sslId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGatewaySslServers(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.SslVpnSeverSet) < 1 { + has = false + return + } + + gateway = response.Response.SslVpnSeverSet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwSslServerByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.SslVpnSever, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslServersRequest() + ) + request.Filters = make([]*vpc.FilterObject, 0, len(filters)) + for k, v := range filters { + filter := vpc.FilterObject{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.SslVpnSever, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGatewaySslServers(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SslVpnSeverSet) < 1 { + break + } + instances = append(instances, response.Response.SslVpnSeverSet...) + if len(response.Response.SslVpnSeverSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGatewaySslServer(ctx context.Context, SslServerId string) (taskId uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewaySslServerRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SslVpnServerId = &SslServerId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslServer(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + taskId = *response.Response.TaskId + return nil + }) + return +} + +func (me *VpcService) DescribeVpnSslClientById(ctx context.Context, sslId string) (has bool, gateway *vpc.SslVpnClient, err error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslClientsRequest() + response *vpc.DescribeVpnGatewaySslClientsResponse + ) + request.SslVpnClientIds = []*string{&sslId} + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + response, err = me.client.UseVpcClient().DescribeVpnGatewaySslClients(request) + if err != nil { + ee, ok := err.(*sdkErrors.TencentCloudSDKError) + if !ok { + return tccommon.RetryError(err) + } + if ee.Code == VPCNotFound { + return nil + } else { + return tccommon.RetryError(err) + } + } + return nil + }) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]", logId, request.GetAction(), request.ToJsonString(), err) + return + } + if response == nil || response.Response == nil || len(response.Response.SslVpnClientSet) < 1 { + has = false + return + } + + gateway = response.Response.SslVpnClientSet[0] + has = true + return +} + +func (me *VpcService) DescribeVpnGwSslClientByFilter(ctx context.Context, filters map[string]string) (instances []*vpc.SslVpnClient, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpnGatewaySslClientsRequest() + ) + request.Filters = make([]*vpc.Filter, 0, len(filters)) + for k, v := range filters { + filter := vpc.Filter{ + Name: helper.String(k), + Values: []*string{helper.String(v)}, + } + request.Filters = append(request.Filters, &filter) + } + + var offset uint64 = 0 + var pageSize uint64 = 100 + instances = make([]*vpc.SslVpnClient, 0) + + for { + request.Offset = &offset + request.Limit = &pageSize + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeVpnGatewaySslClients(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SslVpnClientSet) < 1 { + break + } + instances = append(instances, response.Response.SslVpnClientSet...) + if len(response.Response.SslVpnClientSet) < int(pageSize) { + break + } + offset += pageSize + } + return +} + +func (me *VpcService) DeleteVpnGatewaySslClient(ctx context.Context, SslClientId string) (taskId *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteVpnGatewaySslClientRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.SslVpnClientId = &SslClientId + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet := me.client.UseVpcClient().DeleteVpnGatewaySslClient(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + taskId = response.Response.TaskId + return nil + }) + return +} + +func (me *VpcService) CreateNatGatewaySnat(ctx context.Context, natGatewayId string, snat *vpc.SourceIpTranslationNatRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewCreateNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.SourceIpTranslationNatRules = []*vpc.SourceIpTranslationNatRule{snat} + + var response *vpc.CreateNatGatewaySourceIpTranslationNatRuleResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().CreateNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + log.Printf("[CRITAL]%s create nat gateway source ip translation nat rule failed, reason: %v", logId, errRet) + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %+v, %s", response, request.GetAction()) + } + return +} + +func (me *VpcService) ModifyNatGatewaySnat(ctx context.Context, natGatewayId string, snat *vpc.SourceIpTranslationNatRule) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewModifyNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.SourceIpTranslationNatRule = snat + + var response *vpc.ModifyNatGatewaySourceIpTranslationNatRuleResponse + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().ModifyNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet + } + + if response == nil || response.Response == nil { + errRet = fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()) + } + return +} + +func (me *VpcService) DeleteNatGatewaySnat(ctx context.Context, natGatewayId string, snatId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDeleteNatGatewaySourceIpTranslationNatRuleRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + request.NatGatewaySnatIds = []*string{&snatId} + + errRet = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + _, errRet = me.client.UseVpcClient().DeleteNatGatewaySourceIpTranslationNatRule(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + return +} + +func (me *VpcService) DescribeNatGatewaySnats(ctx context.Context, natGatewayId string, filters []*vpc.Filter) (errRet error, result []*vpc.SourceIpTranslationNatRule) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeNatGatewaySourceIpTranslationNatRulesRequest() + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail,reason[%s]", logId, request.GetAction(), errRet.Error()) + } + }() + request.NatGatewayId = &natGatewayId + if len(filters) > 0 { + request.Filters = filters + } + + offset := int64(0) + limit := int64(VPN_DESCRIBE_LIMIT) + for { + request.Offset = &offset + request.Limit = &limit + var response *vpc.DescribeNatGatewaySourceIpTranslationNatRulesResponse + errRet = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + response, errRet = me.client.UseVpcClient().DescribeNatGatewaySourceIpTranslationNatRules(request) + if errRet != nil { + return tccommon.RetryError(errRet, tccommon.InternalError) + } + return nil + }) + if errRet != nil { + return errRet, nil + } + + if response == nil || response.Response == nil { + return fmt.Errorf("TencentCloud SDK return nil response, %s", request.GetAction()), nil + } else if len(response.Response.SourceIpTranslationNatRuleSet) > 0 { + result = append(result, response.Response.SourceIpTranslationNatRuleSet...) + } else { + return + } + offset = offset + limit + } +} + +func (me *VpcService) DescribeAssistantCidr(ctx context.Context, vpcId string) (info []*vpc.AssistantCidr, errRet error) { + logId := tccommon.GetLogId(ctx) + request := vpc.NewDescribeAssistantCidrRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.VpcIds = []*string{&vpcId} + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.AssistantCidrSet + + return +} + +// CheckAssistantCidr used for check if cidr conflict +func (me *VpcService) CheckAssistantCidr(ctx context.Context, request *vpc.CheckAssistantCidrRequest) (info []*vpc.ConflictSource, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CheckAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.ConflictSourceSet + + return +} + +func (me *VpcService) CreateAssistantCidr(ctx context.Context, request *vpc.CreateAssistantCidrRequest) (info []*vpc.AssistantCidr, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().CreateAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + info = response.Response.AssistantCidrSet + + return +} + +func (me *VpcService) ModifyAssistantCidr(ctx context.Context, request *vpc.ModifyAssistantCidrRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().ModifyAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteAssistantCidr(ctx context.Context, request *vpc.DeleteAssistantCidrRequest) (errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteAssistantCidr(request) + + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackage(ctx context.Context, bandwidthPackageId string) (resource *vpc.BandwidthPackage, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackagesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.BandwidthPackageIds = []*string{&bandwidthPackageId} + //request.Filters = append( + // request.Filters, + // &bwp.Filter{ + // Name: helper.String("bandwidth-package_id"), + // Values: []*string{&bandwidthPackageId}, + // }, + //) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackages(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil && len(response.Response.BandwidthPackageSet) > 0 { + resource = response.Response.BandwidthPackageSet[0] + } + + return +} + +func (me *VpcService) DeleteVpcBandwidthPackageById(ctx context.Context, bandwidthPackageId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteBandwidthPackageRequest() + + request.BandwidthPackageId = &bandwidthPackageId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DeleteBandwidthPackage(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageAttachment(ctx context.Context, bandwidthPackageId, resourceId string) (bandwidthPackageResources *vpc.Resource, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageResourcesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.BandwidthPackageId = &bandwidthPackageId + request.Filters = append( + request.Filters, + &vpc.Filter{ + Name: helper.String("resource-id"), + Values: []*string{&resourceId}, + }, + ) + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackageResources(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.ResourceSet) < 1 { + return + } + bandwidthPackageResources = response.Response.ResourceSet[0] + + return + +} + +func (me *VpcService) DeleteVpcBandwidthPackageAttachmentById(ctx context.Context, bandwidthPackageId, resourceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewRemoveBandwidthPackageResourcesRequest() + + if strings.HasPrefix(resourceId, "eip") { + request.ResourceType = helper.String("Address") + } else { + request.ResourceType = helper.String("LoadBalance") + } + + request.BandwidthPackageId = &bandwidthPackageId + request.ResourceIds = []*string{&resourceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "delete object", request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().RemoveBandwidthPackageResources(request) + if err != nil { + errRet = err + return err + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeFlowLogs(ctx context.Context, request *vpc.DescribeFlowLogsRequest) (result []*vpc.FlowLog, errRet error) { + logId := tccommon.GetLogId(ctx) + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeFlowLogs(request) + + if err != nil { + errRet = err + return + } + + result = response.Response.FlowLog + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcFlowLogById(ctx context.Context, flowLogId, vpcId string) (FlowLog *vpc.FlowLog, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeFlowLogRequest() + request.FlowLogId = &flowLogId + + if vpcId != "" { + request.VpcId = &vpcId + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeFlowLog(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.FlowLog) < 1 { + return + } + + FlowLog = response.Response.FlowLog[0] + return +} + +func (me *VpcService) DeleteVpcFlowLogById(ctx context.Context, flowLogId, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteFlowLogRequest() + request.FlowLogId = &flowLogId + if vpcId != "" { + request.VpcId = &vpcId + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteFlowLog(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointServiceById(ctx context.Context, endPointServiceId string) (endPointService *vpc.EndPointService, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointServiceRequest() + request.EndPointServiceIds = []*string{&endPointServiceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.EndPointService, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPointService(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.EndPointServiceSet) < 1 { + break + } + instances = append(instances, response.Response.EndPointServiceSet...) + if len(response.Response.EndPointServiceSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPointService = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointServiceById(ctx context.Context, endPointServiceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointServiceRequest() + request.EndPointServiceId = &endPointServiceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPointService(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointById(ctx context.Context, endPointId string) (endPoint *vpc.EndPoint, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointRequest() + request.EndPointId = []*string{&endPointId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.EndPoint, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPoint(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.EndPointSet) < 1 { + break + } + instances = append(instances, response.Response.EndPointSet...) + if len(response.Response.EndPointSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPoint = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointById(ctx context.Context, endPointId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointRequest() + request.EndPointId = &endPointId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPoint(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcEndPointServiceWhiteListById(ctx context.Context, userUin string, endPointServiceId string) (endPointServiceWhiteList *vpc.VpcEndPointServiceUser, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcEndPointServiceWhiteListRequest() + + request.Filters = make([]*vpc.Filter, 0) + if userUin != "" { + filter := &vpc.Filter{ + Name: helper.String("user-uin"), + Values: []*string{&userUin}, + } + request.Filters = append(request.Filters, filter) + } + if endPointServiceId != "" { + filter := &vpc.Filter{ + Name: helper.String("end-point-service-id"), + Values: []*string{&endPointServiceId}, + } + request.Filters = append(request.Filters, filter) + } + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*vpc.VpcEndPointServiceUser, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcEndPointServiceWhiteList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpcEndpointServiceUserSet) < 1 { + break + } + instances = append(instances, response.Response.VpcEndpointServiceUserSet...) + if len(response.Response.VpcEndpointServiceUserSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + endPointServiceWhiteList = instances[0] + return +} + +func (me *VpcService) DeleteVpcEndPointServiceWhiteListById(ctx context.Context, userUin string, endPointServiceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteVpcEndPointServiceWhiteListRequest() + request.UserUin = []*string{&userUin} + request.EndPointServiceId = &endPointServiceId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteVpcEndPointServiceWhiteList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageByEip(ctx context.Context, eipId string) (resource *vpc.BandwidthPackage, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackagesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, "query object", request.ToJsonString(), errRet.Error()) + } + }() + + request.Filters = append( + request.Filters, + &vpc.Filter{ + Name: helper.String("resource.resource-id"), + Values: []*string{&eipId}, + }, + ) + ratelimit.Check(request.GetAction()) + response, err := me.client.UseVpcClient().DescribeBandwidthPackages(request) + if err != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", + logId, request.GetAction(), request.ToJsonString(), err.Error()) + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", + logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response != nil && len(response.Response.BandwidthPackageSet) > 0 { + resource = response.Response.BandwidthPackageSet[0] + } + + return +} + +func (me *VpcService) DescribeVpcCcnRoutesById(ctx context.Context, ccnId string, routeId string) (ccnRoutes *vpc.CcnRoute, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeCcnRoutesRequest() + request.CcnId = &ccnId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCcnRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + for _, route := range response.Response.RouteSet { + if *route.RouteId == routeId { + ccnRoutes = route + return + } + } + + return +} + +func (me *VpcService) DescribeCcnCrossBorderComplianceByFilter(ctx context.Context, param map[string]interface{}) (crossBorderCompliance []*vpc.CrossBorderCompliance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderComplianceRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "service_provider" { + request.ServiceProvider = v.(*string) + } + if k == "compliance_id" { + if *v.(*uint64) != 0 { + request.ComplianceId = v.(*uint64) + } + } + if k == "company" { + request.Company = v.(*string) + } + if k == "uniform_social_credit_code" { + request.UniformSocialCreditCode = v.(*string) + } + if k == "legal_person" { + request.LegalPerson = v.(*string) + } + if k == "issuing_authority" { + request.IssuingAuthority = v.(*string) + } + if k == "business_address" { + request.BusinessAddress = v.(*string) + } + if k == "post_code" { + if *v.(*uint64) != 0 { + request.PostCode = v.(*uint64) + } + } + if k == "manager" { + request.Manager = v.(*string) + } + if k == "manager_id" { + request.ManagerId = v.(*string) + } + if k == "manager_address" { + request.ManagerAddress = v.(*string) + } + if k == "manager_telephone" { + request.ManagerTelephone = v.(*string) + } + if k == "email" { + request.Email = v.(*string) + } + if k == "service_start_date" { + request.ServiceStartDate = v.(*string) + } + if k == "service_end_date" { + request.ServiceEndDate = v.(*string) + } + if k == "state" { + request.State = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeCrossBorderCompliance(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CrossBorderComplianceSet) < 1 { + break + } + crossBorderCompliance = append(crossBorderCompliance, response.Response.CrossBorderComplianceSet...) + if len(response.Response.CrossBorderComplianceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeTenantCcnByFilter(ctx context.Context, param map[string]interface{}) (tenantCcn []*vpc.CcnInstanceInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeTenantCcnsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.Filters = make([]*vpc.Filter, 0, len(param)) + for k, v := range param { + filter := &vpc.Filter{ + Name: helper.String(k), + Values: v.([]*string), + } + request.Filters = append(request.Filters, filter) + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeTenantCcns(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CcnSet) < 1 { + break + } + tenantCcn = append(tenantCcn, response.Response.CcnSet...) + if len(response.Response.CcnSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeCcnCrossBorderFlowMonitorByFilter(ctx context.Context, param map[string]interface{}) (crossBorderFlowMonitor []*vpc.CrossBorderFlowMonitorData, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderFlowMonitorRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "source_region" { + request.SourceRegion = v.(*string) + } + if k == "destination_region" { + request.DestinationRegion = v.(*string) + } + if k == "ccn_id" { + request.CcnId = v.(*string) + } + if k == "ccn_uin" { + request.CcnUin = v.(*string) + } + if k == "period" { + if *v.(*int64) != 0 { + request.Period = v.(*int64) + } + } + if k == "start_time" { + request.StartTime = v.(*string) + } + if k == "end_time" { + request.EndTime = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCrossBorderFlowMonitor(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CrossBorderFlowMonitorData) < 1 { + return + } + + crossBorderFlowMonitor = response.Response.CrossBorderFlowMonitorData + + return +} + +func (me *VpcService) DescribeVpnCustomerGatewayVendors(ctx context.Context) (vpnCustomerGatewayVendors []*vpc.CustomerGatewayVendor, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCustomerGatewayVendorsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeCustomerGatewayVendors(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CustomerGatewayVendorSet) < 1 { + return + } + + vpnCustomerGatewayVendors = response.Response.CustomerGatewayVendorSet + return +} + +func (me *VpcService) DescribeVpcVpnGatewayCcnRoutesById(ctx context.Context, vpnGatewayId string, routeId string) (vpnGatewayCcnRoutes *vpc.VpngwCcnRoutes, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpnGatewayCcnRoutesRequest() + request.VpnGatewayId = &vpnGatewayId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpnGatewayCcnRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.RouteSet) < 1 { + return + } + + for _, route := range response.Response.RouteSet { + if *route.RouteId == routeId { + vpnGatewayCcnRoutes = route + break + } + } + return +} + +func (me *VpcService) DescribeVpcIpv6AddressById(ctx context.Context, ip6AddressId string) (ipv6Address *vpc.Address, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeIp6AddressesRequest() + request.Ip6AddressIds = []*string{&ip6AddressId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeIp6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AddressSet) < 1 { + return + } + + ipv6Address = response.Response.AddressSet[0] + return +} + +func (me *VpcService) DeleteVpcIpv6AddressById(ctx context.Context, ip6AddressId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewReleaseIp6AddressesBandwidthRequest() + request.Ip6AddressIds = []*string{&ip6AddressId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().ReleaseIp6AddressesBandwidth(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) VpcIpv6AddressStateRefreshFunc(taskId string, failStates []string) resource.StateRefreshFunc { + return func() (interface{}, string, error) { + ctx := tccommon.ContextNil + + taskId := helper.StrToUint64Point(taskId) + + object, err := me.DescribeTaskResult(ctx, taskId) + + if err != nil { + return nil, "", err + } + + return object, helper.PString(object.Response.Result), nil + } +} + +func (me *VpcService) DescribeVpcCcnRegionBandwidthLimitsByFilter(ctx context.Context, param map[string]interface{}) (CcnRegionBandwidthLimits []*vpc.CcnBandwidth, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeCrossBorderCcnRegionBandwidthLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeCrossBorderCcnRegionBandwidthLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.CcnBandwidthSet) < 1 { + break + } + CcnRegionBandwidthLimits = append(CcnRegionBandwidthLimits, response.Response.CcnBandwidthSet...) + if len(response.Response.CcnBandwidthSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeNatDcRouteByFilter(ctx context.Context, param map[string]interface{}) (natDcRoute []*vpc.NatDirectConnectGatewayRoute, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNatGatewayDirectConnectGatewayRouteRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "NatGatewayId" { + request.NatGatewayId = v.(*string) + } + if k == "VpcId" { + request.VpcId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeNatGatewayDirectConnectGatewayRoute(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NatDirectConnectGatewayRouteSet) < 1 { + break + } + natDcRoute = append(natDcRoute, response.Response.NatDirectConnectGatewayRouteSet...) + if len(response.Response.NatDirectConnectGatewayRouteSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeEipAddressQuota(ctx context.Context) (addressQuota []*vpc.Quota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeAddressQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeAddressQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + addressQuota = append(addressQuota, response.Response.QuotaSet...) + + return +} + +func (me *VpcService) DescribeEipNetworkAccountType(ctx context.Context) (networkAccountType *string, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkAccountTypeRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkAccountType(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + networkAccountType = response.Response.NetworkAccountType + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageQuota(ctx context.Context) (bandwidthPackageQuota []*vpc.Quota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeBandwidthPackageQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + bandwidthPackageQuota = append(bandwidthPackageQuota, response.Response.QuotaSet...) + + return +} + +func (me *VpcService) DescribeVpcBandwidthPackageBillUsageByFilter(ctx context.Context, param map[string]interface{}) (bandwidthPackageBillUsage []*vpc.BandwidthPackageBillBandwidth, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeBandwidthPackageBillUsageRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "BandwidthPackageId" { + request.BandwidthPackageId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeBandwidthPackageBillUsage(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + bandwidthPackageBillUsage = append(bandwidthPackageBillUsage, response.Response.BandwidthPackageBillBandwidthSet...) + + return +} + +func (me *VpcService) DescribeVpcTrafficPackageById(ctx context.Context, trafficPackageId string) (TrafficPackage *vpc.TrafficPackage, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeTrafficPackagesRequest() + request.TrafficPackageIds = []*string{&trafficPackageId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeTrafficPackages(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.TrafficPackageSet) < 1 { + return + } + + TrafficPackage = response.Response.TrafficPackageSet[0] + return +} + +func (me *VpcService) DeleteVpcTrafficPackageById(ctx context.Context, trafficPackageId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteTrafficPackagesRequest() + request.TrafficPackageIds = []*string{&trafficPackageId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteTrafficPackages(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcSnapshotPoliciesById(ctx context.Context, snapshotPolicyId string) (snapshotPolices []*vpc.SnapshotPolicy, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSnapshotPoliciesRequest() + request.SnapshotPolicyIds = []*string{&snapshotPolicyId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSnapshotPolicies(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + snapshotPolices = response.Response.SnapshotPolicySet + return +} + +func (me *VpcService) DeleteVpcSnapshotPoliciesById(ctx context.Context, snapshotPolicyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteSnapshotPoliciesRequest() + request.SnapshotPolicyIds = []*string{&snapshotPolicyId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteSnapshotPolicies(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcSnapshotPolicyAttachmentById(ctx context.Context, snapshotPolicyId string) (snapshotPolicyAttachment []*vpc.SnapshotInstance, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSnapshotAttachedInstancesRequest() + request.SnapshotPolicyId = &snapshotPolicyId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSnapshotAttachedInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.InstanceSet) < 1 { + return + } + + snapshotPolicyAttachment = response.Response.InstanceSet + return +} + +func (me *VpcService) DeleteVpcSnapshotPolicyAttachmentById(ctx context.Context, snapshotPolicyId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDetachSnapshotInstancesRequest() + request.SnapshotPolicyId = &snapshotPolicyId + + snapshotInstace, err := me.DescribeVpcSnapshotPolicyAttachmentById(ctx, snapshotPolicyId) + if err != nil { + errRet = err + return + } + request.Instances = snapshotInstace + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DetachSnapshotInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcNetDetectById(ctx context.Context, netDetectId string) (netDetect *vpc.NetDetect, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetDetectsRequest() + request.NetDetectIds = []*string{&netDetectId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetDetects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NetDetectSet) < 1 { + return + } + + netDetect = response.Response.NetDetectSet[0] + return +} + +func (me *VpcService) DeleteVpcNetDetectById(ctx context.Context, netDetectId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteNetDetectRequest() + request.NetDetectId = &netDetectId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteNetDetect(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcClassicLinkAttachmentById(ctx context.Context, vpcId string, instanceId string) (classicLinkAttachment *vpc.ClassicLinkInstance, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeClassicLinkInstancesRequest() + filter := vpc.FilterObject{ + Name: helper.String("vpc-id"), + Values: []*string{&vpcId}, + } + request.Filters = append(request.Filters, &filter) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.ClassicLinkInstance, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeClassicLinkInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.ClassicLinkInstanceSet) < 1 { + break + } + instances = append(instances, response.Response.ClassicLinkInstanceSet...) + if len(response.Response.ClassicLinkInstanceSet) < int(limit) { + break + } + offset += limit + } + + if len(instances) < 1 { + return + } + + for _, instance := range instances { + if *instance.InstanceId == instanceId { + classicLinkAttachment = instance + } + } + + return +} + +func (me *VpcService) DeleteVpcClassicLinkAttachmentById(ctx context.Context, vpcId string, instanceId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDetachClassicLinkVpcRequest() + request.VpcId = &vpcId + request.InstanceIds = []*string{&instanceId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DetachClassicLinkVpc(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcDhcpIpById(ctx context.Context, dhcpIpId string) (dhcpIp *vpc.DhcpIp, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeDhcpIpsRequest() + request.DhcpIpIds = []*string{&dhcpIpId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeDhcpIps(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.DhcpIpSet) < 1 { + return + } + + dhcpIp = response.Response.DhcpIpSet[0] + return +} + +func (me *VpcService) DeleteVpcDhcpIpById(ctx context.Context, dhcpIpId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteDhcpIpRequest() + request.DhcpIpId = &dhcpIpId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteDhcpIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcDhcpAssociateAddressById(ctx context.Context, dhcpIpId string, addressIp string) (dhcpAssociateAddress *vpc.DhcpIp, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeDhcpIpsRequest() + request.DhcpIpIds = []*string{&dhcpIpId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeDhcpIps(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.DhcpIpSet) < 1 { + return + } + + dhcpIp := response.Response.DhcpIpSet[0] + if *dhcpIp.AddressIp != addressIp { + return + } + dhcpAssociateAddress = dhcpIp + + return +} + +func (me *VpcService) DeleteVpcDhcpAssociateAddressById(ctx context.Context, dhcpIpId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDisassociateDhcpIpWithAddressIpRequest() + request.DhcpIpId = &dhcpIpId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DisassociateDhcpIpWithAddressIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcById(ctx context.Context, vpcId string) (instance *vpc.Vpc, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcsRequest() + request.VpcIds = []*string{&vpcId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.Vpc, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeVpcs(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.VpcSet) < 1 { + break + } + instances = append(instances, response.Response.VpcSet...) + if len(response.Response.VpcSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + instance = instances[0] + return +} + +func (me *VpcService) DeleteVpcIpv6CidrBlockById(ctx context.Context, vpcId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6CidrBlockRequest() + request.VpcId = &vpcId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6CidrBlock(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeSubnetById(ctx context.Context, subnetId string) (instance *vpc.Subnet, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeSubnetsRequest() + request.SubnetIds = []*string{&subnetId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + instances := make([]*vpc.Subnet, 0) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeSubnets(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SubnetSet) < 1 { + break + } + instances = append(instances, response.Response.SubnetSet...) + if len(response.Response.SubnetSet) < int(limit) { + break + } + + offset += limit + } + + if len(instances) < 1 { + return + } + instance = instances[0] + return +} + +func (me *VpcService) DeleteVpcIpv6SubnetCidrBlockById(ctx context.Context, vpcId string, subnetId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6SubnetCidrBlockRequest() + request.VpcId = &vpcId + + ipv6SubnetCidrBlock := vpc.Ipv6SubnetCidrBlock{} + ipv6SubnetCidrBlock.SubnetId = &subnetId + request.Ipv6SubnetCidrBlocks = append(request.Ipv6SubnetCidrBlocks, &ipv6SubnetCidrBlock) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6SubnetCidrBlock(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcIpv6EniAddressById(ctx context.Context, vpcId string, ipv6Address string) (ipv6EniAddress *vpc.VpcIpv6Address, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeVpcIpv6AddressesRequest() + request.VpcId = &vpcId + request.Ipv6Addresses = []*string{&ipv6Address} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcIpv6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.Ipv6AddressSet) < 1 { + return + } + + ipv6EniAddress = response.Response.Ipv6AddressSet[0] + return +} + +func (me *VpcService) DeleteVpcIpv6EniAddressById(ctx context.Context, networkInterfaceId string, ipv6Address string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewUnassignIpv6AddressesRequest() + request.NetworkInterfaceId = &networkInterfaceId + address := vpc.Ipv6Address{} + address.Address = &ipv6Address + request.Ipv6Addresses = append(request.Ipv6Addresses, &address) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().UnassignIpv6Addresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcLocalGatewayById(ctx context.Context, localGatewayId string) (localGateway *vpc.LocalGateway, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeLocalGatewayRequest() + + filter := vpc.Filter{ + Name: helper.String("local-gateway-id"), + Values: []*string{&localGatewayId}, + } + + request.Filters = append(request.Filters, &filter) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeLocalGateway(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.LocalGatewaySet) < 1 { + return + } + + localGateway = response.Response.LocalGatewaySet[0] + return +} + +func (me *VpcService) DeleteVpcLocalGatewayById(ctx context.Context, cdcId string, localGatewayId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteLocalGatewayRequest() + request.CdcId = &cdcId + request.LocalGatewayId = &localGatewayId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteLocalGateway(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcAccountAttributes(ctx context.Context) (accountAttributes []*vpc.AccountAttribute, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeAccountAttributesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeAccountAttributes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + accountAttributes = response.Response.AccountAttributeSet + + return +} + +func (me *VpcService) DescribeVpcClassicLinkInstancesByFilter(ctx context.Context, param map[string]interface{}) (classicLinkInstances []*vpc.ClassicLinkInstance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeClassicLinkInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Filters" { + request.Filters = v.([]*vpc.FilterObject) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 20 + ) + for { + request.Offset = helper.Int64ToStrPoint(offset) + request.Limit = helper.Int64ToStrPoint(limit) + response, err := me.client.UseVpcClient().DescribeClassicLinkInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.ClassicLinkInstanceSet) < 1 { + break + } + classicLinkInstances = append(classicLinkInstances, response.Response.ClassicLinkInstanceSet...) + if len(response.Response.ClassicLinkInstanceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcGatewayFlowMonitorDetailByFilter(ctx context.Context, param map[string]interface{}) (GatewayFlowMonitorDetail []*vpc.GatewayFlowMonitorDetail, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeGatewayFlowMonitorDetailRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "TimePoint" { + request.TimePoint = v.(*string) + } + if k == "VpnId" { + request.VpnId = v.(*string) + } + if k == "DirectConnectGatewayId" { + request.DirectConnectGatewayId = v.(*string) + } + if k == "PeeringConnectionId" { + request.PeeringConnectionId = v.(*string) + } + if k == "NatId" { + request.NatId = v.(*string) + } + if k == "OrderField" { + request.OrderField = v.(*string) + } + if k == "OrderDirection" { + request.OrderDirection = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeGatewayFlowMonitorDetail(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.GatewayFlowMonitorDetailSet) < 1 { + break + } + GatewayFlowMonitorDetail = append(GatewayFlowMonitorDetail, response.Response.GatewayFlowMonitorDetailSet...) + if len(response.Response.GatewayFlowMonitorDetailSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcGatewayFlowQosByFilter(ctx context.Context, param map[string]interface{}) (GatewayFlowQos []*vpc.GatewayQos, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeGatewayFlowQosRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "GatewayId" { + request.GatewayId = v.(*string) + } + if k == "IpAddresses" { + request.IpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeGatewayFlowQos(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.GatewayQosSet) < 1 { + break + } + GatewayFlowQos = append(GatewayFlowQos, response.Response.GatewayQosSet...) + if len(response.Response.GatewayQosSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcCvmInstancesByFilter(ctx context.Context, param map[string]interface{}) (CvmInstances []*vpc.CvmInstance, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcInstancesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeVpcInstances(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.InstanceSet) < 1 { + break + } + CvmInstances = append(CvmInstances, response.Response.InstanceSet...) + if len(response.Response.InstanceSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcNetDetectStatesByFilter(ctx context.Context, param map[string]interface{}) (NetDetectStates []*vpc.NetDetectState, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetDetectStatesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "NetDetectIds" { + request.NetDetectIds = v.([]*string) + } + if k == "Filters" { + request.Filters = v.([]*vpc.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeNetDetectStates(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.NetDetectStateSet) < 1 { + break + } + NetDetectStates = append(NetDetectStates, response.Response.NetDetectStateSet...) + if len(response.Response.NetDetectStateSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcNetworkInterfaceLimit(ctx context.Context, param map[string]interface{}) (networkInterfaceLimit *vpc.DescribeNetworkInterfaceLimitResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeNetworkInterfaceLimitRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkInterfaceLimit(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + networkInterfaceLimit = response.Response + + return +} + +func (me *VpcService) DescribeVpcPrivateIpAddresses(ctx context.Context, param map[string]interface{}) (PrivateIpAddresses []*vpc.VpcPrivateIpAddress, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcPrivateIpAddressesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "PrivateIpAddresses" { + request.PrivateIpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcPrivateIpAddresses(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + PrivateIpAddresses = response.Response.VpcPrivateIpAddressSet + + return +} + +func (me *VpcService) DescribeVpcProductQuota(ctx context.Context, param map[string]interface{}) (ProductQuota []*vpc.ProductQuota, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeProductQuotaRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Product" { + request.Product = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeProductQuota(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ProductQuota = response.Response.ProductQuotaSet + + return +} + +func (me *VpcService) DescribeVpcResourceDashboard(ctx context.Context, param map[string]interface{}) (ResourceDashboard []*vpc.ResourceDashboard, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcResourceDashboardRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcIds" { + request.VpcIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcResourceDashboard(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + ResourceDashboard = response.Response.ResourceDashboardSet + + return +} + +func (me *VpcService) DescribeVpcRouteConflicts(ctx context.Context, param map[string]interface{}) (routeConflicts []*vpc.RouteConflict, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeRouteConflictsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "RouteTableId" { + request.RouteTableId = v.(*string) + } + if k == "DestinationCidrBlocks" { + request.DestinationCidrBlocks = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteConflicts(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + routeConflicts = response.Response.RouteConflictSet + + return +} + +func (me *VpcService) DescribeVpcSecurityGroupLimits(ctx context.Context, param map[string]interface{}) (securityGroupLimit *vpc.SecurityGroupLimitSet, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSecurityGroupLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + securityGroupLimit = response.Response.SecurityGroupLimitSet + + return +} + +func (me *VpcService) DescribeVpcSecurityGroupReferences(ctx context.Context, param map[string]interface{}) (securityGroupReferences []*vpc.ReferredSecurityGroup, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSecurityGroupReferencesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SecurityGroupIds" { + request.SecurityGroupIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSecurityGroupReferences(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + securityGroupReferences = response.Response.ReferredSecurityGroupSet + + return +} + +func (me *VpcService) DescribeVpcSgSnapshotFileContent(ctx context.Context, param map[string]interface{}) (sgSnapshotFileContent *vpc.DescribeSgSnapshotFileContentResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSgSnapshotFileContentRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SnapshotPolicyId" { + request.SnapshotPolicyId = v.(*string) + } + if k == "SnapshotFileId" { + request.SnapshotFileId = v.(*string) + } + if k == "SecurityGroupId" { + request.SecurityGroupId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSgSnapshotFileContent(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + sgSnapshotFileContent = response.Response + + return +} + +func (me *VpcService) DescribeVpcSnapshotFilesByFilter(ctx context.Context, param map[string]interface{}) (SnapshotFiles []*vpc.SnapshotFileInfo, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSnapshotFilesRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "BusinessType" { + request.BusinessType = v.(*string) + } + if k == "InstanceId" { + request.InstanceId = v.(*string) + } + if k == "StartDate" { + request.StartDate = v.(*string) + } + if k == "EndDate" { + request.EndDate = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeSnapshotFiles(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.SnapshotFileSet) < 1 { + break + } + SnapshotFiles = append(SnapshotFiles, response.Response.SnapshotFileSet...) + if len(response.Response.SnapshotFileSet) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcSubnetResourceDashboardByFilter(ctx context.Context, param map[string]interface{}) (subnetResourceDashboard []*vpc.ResourceStatistics, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeSubnetResourceDashboardRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "SubnetIds" { + request.SubnetIds = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeSubnetResourceDashboard(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + subnetResourceDashboard = response.Response.ResourceStatisticsSet + + return +} + +func (me *VpcService) DescribeVpcTemplateLimits(ctx context.Context) (templateLimit *vpc.TemplateLimit, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeTemplateLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeTemplateLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + templateLimit = response.Response.TemplateLimit + + return +} + +func (me *VpcService) DescribeVpcUsedIpAddressByFilter(ctx context.Context, param map[string]interface{}) (UsedIpAddress []*vpc.IpAddressStates, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeUsedIpAddressRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "SubnetId" { + request.SubnetId = v.(*string) + } + if k == "IpAddresses" { + request.IpAddresses = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseVpcClient().DescribeUsedIpAddress(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.IpAddressStates) < 1 { + break + } + UsedIpAddress = append(UsedIpAddress, response.Response.IpAddressStates...) + if len(response.Response.IpAddressStates) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *VpcService) DescribeVpcLimitsByFilter(ctx context.Context, param map[string]interface{}) (limits []*vpc.VpcLimit, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewDescribeVpcLimitsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "LimitTypes" { + request.LimitTypes = v.([]*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeVpcLimits(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + limits = response.Response.VpcLimitSet + + return +} + +func (me *VpcService) DescribeVpcNetworkAclQuintupleById(ctx context.Context, networkAclId string) (networkAclQuintuples []*vpc.NetworkAclQuintupleEntry, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeNetworkAclQuintupleEntriesRequest() + request.NetworkAclId = &networkAclId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeNetworkAclQuintupleEntries(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.NetworkAclQuintupleSet) < 1 { + return + } + + networkAclQuintuples = response.Response.NetworkAclQuintupleSet + return +} + +func (me *VpcService) DeleteVpcNetworkAclQuintupleById(ctx context.Context, networkAclId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDeleteNetworkAclQuintupleEntriesRequest() + request.NetworkAclId = &networkAclId + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DeleteNetworkAclQuintupleEntries(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DeleteVpcEniSgAttachmentById(ctx context.Context, networkInterfaceId string, securityGroupIds []string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDisassociateNetworkInterfaceSecurityGroupsRequest() + request.NetworkInterfaceIds = []*string{&networkInterfaceId} + request.SecurityGroupIds = common.StringPtrs(securityGroupIds) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DisassociateNetworkInterfaceSecurityGroups(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpcNetDetectStateCheck(ctx context.Context, param map[string]interface{}) (netDetectStateCheck []*vpc.NetDetectIpState, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewCheckNetDetectStateRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "DetectDestinationIp" { + request.DetectDestinationIp = v.([]*string) + } + if k == "NextHopType" { + request.NextHopType = v.(*string) + } + if k == "NextHopDestination" { + request.NextHopDestination = v.(*string) + } + if k == "NetDetectId" { + request.NetDetectId = v.(*string) + } + if k == "VpcId" { + request.VpcId = v.(*string) + } + if k == "SubnetId" { + request.SubnetId = v.(*string) + } + if k == "NetDetectName" { + request.NetDetectName = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().CheckNetDetectState(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + netDetectStateCheck = response.Response.NetDetectIpStateSet + + return +} + +func (me *VpcService) DescribeVpcNotifyRoutesById(ctx context.Context, routeTableId string, routeItemId string) (notifyRoute *vpc.Route, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewDescribeRouteTablesRequest() + request.RouteTableIds = []*string{&routeTableId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().DescribeRouteTables(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.RouteTableSet) < 1 { + return + } + + for _, routeTable := range response.Response.RouteTableSet { + for _, route := range routeTable.RouteSet { + if *route.RouteItemId == routeItemId { + notifyRoute = route + break + } + } + } + return +} + +func (me *VpcService) DeleteVpcNotifyRoutesById(ctx context.Context, routeTableId string, routeItemId string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := vpc.NewWithdrawNotifyRoutesRequest() + request.RouteTableId = &routeTableId + request.RouteItemIds = []*string{&routeItemId} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().WithdrawNotifyRoutes(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *VpcService) DescribeVpnDefaultHealthCheckIp(ctx context.Context, param map[string]interface{}) (defaultHealthCheck *vpc.GenerateVpnConnectionDefaultHealthCheckIpResponseParams, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = vpc.NewGenerateVpnConnectionDefaultHealthCheckIpRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "VpnGatewayId" { + request.VpnGatewayId = v.(*string) + } + } + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseVpcClient().GenerateVpnConnectionDefaultHealthCheckIp(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + defaultHealthCheck = response.Response + + return +} diff --git a/tencentcloud/data_source_tc_private_dns_records.go b/tencentcloud/services/privatedns/data_source_tc_private_dns_records.go similarity index 90% rename from tencentcloud/data_source_tc_private_dns_records.go rename to tencentcloud/services/privatedns/data_source_tc_private_dns_records.go index 3977634f59..79093d70dd 100644 --- a/tencentcloud/data_source_tc_private_dns_records.go +++ b/tencentcloud/services/privatedns/data_source_tc_private_dns_records.go @@ -1,15 +1,18 @@ -package tencentcloud +package privatedns import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" privatedns "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPrivateDnsRecords() *schema.Resource { +func DataSourceTencentCloudPrivateDnsRecords() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPrivateDnsRecordsRead, Schema: map[string]*schema.Schema{ @@ -127,12 +130,12 @@ func dataSourceTencentCloudPrivateDnsRecords() *schema.Resource { } func dataSourceTencentCloudPrivateDnsRecordsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_private_dns_records.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_private_dns_records.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) zoneId := d.Get("zone_id").(string) filterList := make([]*privatedns.Filter, 0) @@ -155,14 +158,14 @@ func dataSourceTencentCloudPrivateDnsRecordsRead(d *schema.ResourceData, meta in } } - service := PrivateDnsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PrivateDnsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var recordSet []*privatedns.PrivateZoneRecord - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePrivateDnsRecordByFilter(ctx, zoneId, filterList) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } recordSet = result return nil @@ -240,7 +243,7 @@ func dataSourceTencentCloudPrivateDnsRecordsRead(d *schema.ResourceData, meta in d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_private_dns_records_test.go b/tencentcloud/services/privatedns/data_source_tc_private_dns_records_test.go similarity index 61% rename from tencentcloud/data_source_tc_private_dns_records_test.go rename to tencentcloud/services/privatedns/data_source_tc_private_dns_records_test.go index 5b0c72a7b6..0f6341fa95 100644 --- a/tencentcloud/data_source_tc_private_dns_records_test.go +++ b/tencentcloud/services/privatedns/data_source_tc_private_dns_records_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package privatedns_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudPrivateDnsRecordsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPrivateDnsRecordsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_private_dns_records.private_dns_record")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_private_dns_records.private_dns_record")), }, }, }) diff --git a/tencentcloud/extension_privatedns.go b/tencentcloud/services/privatedns/extension_privatedns.go similarity index 95% rename from tencentcloud/extension_privatedns.go rename to tencentcloud/services/privatedns/extension_privatedns.go index bb81d6d883..fad6a5adc8 100644 --- a/tencentcloud/extension_privatedns.go +++ b/tencentcloud/services/privatedns/extension_privatedns.go @@ -1,4 +1,4 @@ -package tencentcloud +package privatedns const ( DNS_FORWARD_STATUS_ENABLE = "ENABLED" diff --git a/tencentcloud/services/privatedns/extension_tags.go b/tencentcloud/services/privatedns/extension_tags.go new file mode 100644 index 0000000000..f201ba491c --- /dev/null +++ b/tencentcloud/services/privatedns/extension_tags.go @@ -0,0 +1,3 @@ +package privatedns + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/resource_tc_private_dns_record.go b/tencentcloud/services/privatedns/resource_tc_private_dns_record.go similarity index 76% rename from tencentcloud/resource_tc_private_dns_record.go rename to tencentcloud/services/privatedns/resource_tc_private_dns_record.go index 8f2a63b719..d9f3945e92 100644 --- a/tencentcloud/resource_tc_private_dns_record.go +++ b/tencentcloud/services/privatedns/resource_tc_private_dns_record.go @@ -1,4 +1,4 @@ -package tencentcloud +package privatedns import ( "context" @@ -6,6 +6,8 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -13,7 +15,7 @@ import ( privatedns "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028" ) -func resourceTencentCloudPrivateDnsRecord() *schema.Resource { +func ResourceTencentCloudPrivateDnsRecord() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDPrivateDnsRecordCreate, Read: resourceTencentCloudDPrivateDnsRecordRead, @@ -67,9 +69,9 @@ func resourceTencentCloudPrivateDnsRecord() *schema.Resource { } func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_record.create")() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_record.create")() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := privatedns.NewCreatePrivateZoneRecordRequest() @@ -96,7 +98,7 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in request.TTL = helper.Int64(int64(v.(int))) } - result, err := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().CreatePrivateZoneRecord(request) + result, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().CreatePrivateZoneRecord(request) if err != nil { log.Printf("[CRITAL]%s create PrivateDns record failed, reason:%s\n", logId, err.Error()) @@ -106,23 +108,23 @@ func resourceTencentCloudDPrivateDnsRecordCreate(d *schema.ResourceData, meta in response := result recordId := *response.Response.RecordId - d.SetId(strings.Join([]string{zoneId, recordId}, FILED_SP)) + d.SetId(strings.Join([]string{zoneId, recordId}, tccommon.FILED_SP)) return resourceTencentCloudDPrivateDnsRecordRead(d, meta) } func resourceTencentCloudDPrivateDnsRecordRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_zone.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_zone.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) service := PrivateDnsService{ - client: meta.(*TencentCloudClient).apiV3Conn, + client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(), } - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("record id strategy is can't read, id is borken, id is %s", d.Id()) } @@ -165,13 +167,13 @@ func resourceTencentCloudDPrivateDnsRecordRead(d *schema.ResourceData, meta inte } func resourceTencentCloudDPrivateDnsRecordUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_record.update")() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_record.update")() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("record id strategy is can't read, id is borken, id is %s", d.Id()) } - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) zoneId := idSplit[0] recordId := idSplit[1] @@ -223,10 +225,10 @@ func resourceTencentCloudDPrivateDnsRecordUpdate(d *schema.ResourceData, meta in if v, ok := d.GetOk("record_value"); ok { request.RecordValue = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().ModifyPrivateZoneRecord(request) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().ModifyPrivateZoneRecord(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -240,11 +242,11 @@ func resourceTencentCloudDPrivateDnsRecordUpdate(d *schema.ResourceData, meta in } func resourceTencentCloudDPrivateDnsRecordDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_record.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_record.delete")() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("record id strategy is can't read, id is borken, id is %s", d.Id()) } @@ -257,10 +259,10 @@ func resourceTencentCloudDPrivateDnsRecordDelete(d *schema.ResourceData, meta in var response *privatedns.DescribePrivateZoneResponse - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().DescribePrivateZone(request) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().DescribePrivateZone(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } response = result @@ -280,10 +282,10 @@ func resourceTencentCloudDPrivateDnsRecordDelete(d *schema.ResourceData, meta in unBindRequest.VpcSet = []*privatedns.VpcInfo{} unBindRequest.AccountVpcSet = []*privatedns.AccountVpcInfo{} - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().ModifyPrivateZoneVpc(unBindRequest) + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().ModifyPrivateZoneVpc(unBindRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -297,10 +299,10 @@ func resourceTencentCloudDPrivateDnsRecordDelete(d *schema.ResourceData, meta in recordRequest.ZoneId = helper.String(zoneId) recordRequest.RecordId = helper.String(recordId) - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().DeletePrivateZoneRecord(recordRequest) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().DeletePrivateZoneRecord(recordRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -326,10 +328,10 @@ func resourceTencentCloudDPrivateDnsRecordDelete(d *schema.ResourceData, meta in unBindRequest.AccountVpcSet = accountVpcSet - err = resource.Retry(readRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().ModifyPrivateZoneVpc(unBindRequest) + err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().ModifyPrivateZoneVpc(unBindRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) diff --git a/tencentcloud/resource_tc_private_dns_record_test.go b/tencentcloud/services/privatedns/resource_tc_private_dns_record_test.go similarity index 78% rename from tencentcloud/resource_tc_private_dns_record_test.go rename to tencentcloud/services/privatedns/resource_tc_private_dns_record_test.go index 6855c0013f..a979625203 100644 --- a/tencentcloud/resource_tc_private_dns_record_test.go +++ b/tencentcloud/services/privatedns/resource_tc_private_dns_record_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package privatedns_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,8 +12,8 @@ func TestAccTencentCloudPrivateDnsRecord_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPrivateDnsRecord_basic, @@ -28,7 +30,7 @@ func TestAccTencentCloudPrivateDnsRecord_basic(t *testing.T) { }) } -const testAccPrivateDnsRecord_basic = defaultInstanceVariable + ` +const testAccPrivateDnsRecord_basic = tcacctest.DefaultInstanceVariable + ` resource "tencentcloud_private_dns_zone" "zone" { dns_forward_status = "DISABLED" domain = "domain.com" diff --git a/tencentcloud/resource_tc_private_dns_zone.go b/tencentcloud/services/privatedns/resource_tc_private_dns_zone.go similarity index 81% rename from tencentcloud/resource_tc_private_dns_zone.go rename to tencentcloud/services/privatedns/resource_tc_private_dns_zone.go index 1535cdb20c..dc7b2dadae 100644 --- a/tencentcloud/resource_tc_private_dns_zone.go +++ b/tencentcloud/services/privatedns/resource_tc_private_dns_zone.go @@ -1,10 +1,12 @@ -package tencentcloud +package privatedns import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" @@ -12,7 +14,7 @@ import ( privatedns "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028" ) -func resourceTencentCloudPrivateDnsZone() *schema.Resource { +func ResourceTencentCloudPrivateDnsZone() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudDPrivateDnsZoneCreate, Read: resourceTencentCloudDPrivateDnsZoneRead, @@ -85,7 +87,7 @@ func resourceTencentCloudPrivateDnsZone() *schema.Resource { Type: schema.TypeString, Optional: true, Default: DNS_FORWARD_STATUS_DISABLED, - ValidateFunc: validateAllowedStringValue(PRIVATE_DNS_FORWARD_STATUS), + ValidateFunc: tccommon.ValidateAllowedStringValue(PRIVATE_DNS_FORWARD_STATUS), Description: "Whether to enable subdomain recursive DNS. Valid values: ENABLED, DISABLED. Default value: DISABLED.", }, "account_vpc_set": { @@ -121,7 +123,7 @@ func resourceTencentCloudPrivateDnsZone() *schema.Resource { Type: schema.TypeString, Optional: true, Default: CNAME_SPEEDUP_STATUS_ENABLED, - ValidateFunc: validateAllowedStringValue(CNAME_SPEEDUP_STATUS), + ValidateFunc: tccommon.ValidateAllowedStringValue(CNAME_SPEEDUP_STATUS), Description: "CNAME acceleration: ENABLED, DISABLED, Default value is ENABLED.", }, }, @@ -129,11 +131,11 @@ func resourceTencentCloudPrivateDnsZone() *schema.Resource { } func resourceTencentCloudDPrivateDnsZoneCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_zone.create")() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_zone.create")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request = privatedns.NewCreatePrivateZoneRequest() ) @@ -196,7 +198,7 @@ func resourceTencentCloudDPrivateDnsZoneCreate(d *schema.ResourceData, meta inte request.CnameSpeedupStatus = helper.String(cnameSpeedupStatus) } - result, err := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().CreatePrivateZone(request) + result, err := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().CreatePrivateZone(request) if err != nil { log.Printf("[CRITAL]%s create PrivateDns failed, reason:%s\n", logId, err.Error()) @@ -208,12 +210,12 @@ func resourceTencentCloudDPrivateDnsZoneCreate(d *schema.ResourceData, meta inte id := *response.Response.ZoneId d.SetId(id) - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := TagService{client: client} region := client.Region if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - resourceName := BuildTagResourceName("privatedns", "zone", region, id) + resourceName := tccommon.BuildTagResourceName("privatedns", "zone", region, id) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err } @@ -223,12 +225,12 @@ func resourceTencentCloudDPrivateDnsZoneCreate(d *schema.ResourceData, meta inte } func resourceTencentCloudDPrivateDnsZoneRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_zone.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_zone.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request = privatedns.NewDescribePrivateZoneRequest() response *privatedns.DescribePrivateZoneResponse id = d.Id() @@ -236,10 +238,10 @@ func resourceTencentCloudDPrivateDnsZoneRead(d *schema.ResourceData, meta interf request.ZoneId = &id - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().DescribePrivateZone(request) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().DescribePrivateZone(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } response = result @@ -265,7 +267,7 @@ func resourceTencentCloudDPrivateDnsZoneRead(d *schema.ResourceData, meta interf } _ = d.Set("tag_set", tagSets) - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := TagService{client: client} region := client.Region @@ -300,11 +302,11 @@ func resourceTencentCloudDPrivateDnsZoneRead(d *schema.ResourceData, meta interf } func resourceTencentCloudDPrivateDnsZoneUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_zone.update")() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_zone.update")() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) id = d.Id() ) @@ -327,10 +329,10 @@ func resourceTencentCloudDPrivateDnsZoneUpdate(d *schema.ResourceData, meta inte request.CnameSpeedupStatus = helper.String(v.(string)) } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().ModifyPrivateZone(request) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().ModifyPrivateZone(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil }) @@ -374,10 +376,10 @@ func resourceTencentCloudDPrivateDnsZoneUpdate(d *schema.ResourceData, meta inte request.AccountVpcSet = accVpcSets } - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().ModifyPrivateZoneVpc(request) + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().ModifyPrivateZoneVpc(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil @@ -389,7 +391,7 @@ func resourceTencentCloudDPrivateDnsZoneUpdate(d *schema.ResourceData, meta inte } } - client := meta.(*TencentCloudClient).apiV3Conn + client := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := TagService{client: client} region := client.Region @@ -397,7 +399,7 @@ func resourceTencentCloudDPrivateDnsZoneUpdate(d *schema.ResourceData, meta inte oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("privatedns", "zone", region, id) + resourceName := tccommon.BuildTagResourceName("privatedns", "zone", region, id) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -408,20 +410,20 @@ func resourceTencentCloudDPrivateDnsZoneUpdate(d *schema.ResourceData, meta inte } func resourceTencentCloudDPrivateDnsZoneDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_zone.delete")() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_zone.delete")() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = privatedns.NewDeletePrivateZoneRequest() id = d.Id() ) request.ZoneId = &id - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - _, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().DeletePrivateZone(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + _, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().DeletePrivateZone(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } return nil diff --git a/tencentcloud/resource_tc_private_dns_zone_test.go b/tencentcloud/services/privatedns/resource_tc_private_dns_zone_test.go similarity index 77% rename from tencentcloud/resource_tc_private_dns_zone_test.go rename to tencentcloud/services/privatedns/resource_tc_private_dns_zone_test.go index a39956cd2f..245723e396 100644 --- a/tencentcloud/resource_tc_private_dns_zone_test.go +++ b/tencentcloud/services/privatedns/resource_tc_private_dns_zone_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package privatedns_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ func TestAccTencentCloudPrivateDnsZone_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPrivateDnsZone_basic, @@ -29,7 +31,7 @@ func TestAccTencentCloudPrivateDnsZone_basic(t *testing.T) { }) } -const testAccPrivateDnsZone_basic = defaultInstanceVariable + ` +const testAccPrivateDnsZone_basic = tcacctest.DefaultInstanceVariable + ` resource "tencentcloud_private_dns_zone" "example" { domain = "domain.com" remark = "remark." diff --git a/tencentcloud/resource_tc_private_dns_zone_vpc_attachment.go b/tencentcloud/services/privatedns/resource_tc_private_dns_zone_vpc_attachment.go similarity index 82% rename from tencentcloud/resource_tc_private_dns_zone_vpc_attachment.go rename to tencentcloud/services/privatedns/resource_tc_private_dns_zone_vpc_attachment.go index f66eb5d2bd..75be614222 100644 --- a/tencentcloud/resource_tc_private_dns_zone_vpc_attachment.go +++ b/tencentcloud/services/privatedns/resource_tc_private_dns_zone_vpc_attachment.go @@ -1,4 +1,4 @@ -package tencentcloud +package privatedns import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" privatedns "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPrivateDnsZoneVpcAttachment() *schema.Resource { +func ResourceTencentCloudPrivateDnsZoneVpcAttachment() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPrivateDnsZoneVpcAttachmentCreate, Read: resourceTencentCloudPrivateDnsZoneVpcAttachmentRead, @@ -86,11 +89,11 @@ func resourceTencentCloudPrivateDnsZoneVpcAttachment() *schema.Resource { } func resourceTencentCloudPrivateDnsZoneVpcAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_zone_vpc_attachment.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_zone_vpc_attachment.create")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) + logId = tccommon.GetLogId(tccommon.ContextNil) request = privatedns.NewAddSpecifyPrivateZoneVpcRequest() asyncRequest = privatedns.NewQueryAsyncBindVpcStatusRequest() zoneId string @@ -144,10 +147,10 @@ func resourceTencentCloudPrivateDnsZoneVpcAttachmentCreate(d *schema.ResourceDat } request.Sync = helper.Bool(false) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().AddSpecifyPrivateZoneVpc(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().AddSpecifyPrivateZoneVpc(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -166,14 +169,14 @@ func resourceTencentCloudPrivateDnsZoneVpcAttachmentCreate(d *schema.ResourceDat return err } - d.SetId(strings.Join([]string{zoneId, uniqVpcId}, FILED_SP)) + d.SetId(strings.Join([]string{zoneId, uniqVpcId}, tccommon.FILED_SP)) // wait asyncRequest.UniqId = &uniqId - err = resource.Retry(readRetryTimeout*5, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().QueryAsyncBindVpcStatus(asyncRequest) + err = resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().QueryAsyncBindVpcStatus(asyncRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, asyncRequest.GetAction(), asyncRequest.ToJsonString(), asyncRequest.ToJsonString()) } @@ -194,16 +197,16 @@ func resourceTencentCloudPrivateDnsZoneVpcAttachmentCreate(d *schema.ResourceDat } func resourceTencentCloudPrivateDnsZoneVpcAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_zone_vpc_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_zone_vpc_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = PrivateDnsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = PrivateDnsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } @@ -263,18 +266,18 @@ func resourceTencentCloudPrivateDnsZoneVpcAttachmentRead(d *schema.ResourceData, } func resourceTencentCloudPrivateDnsZoneVpcAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_private_dns_zone_vpc_attachment.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_zone_vpc_attachment.delete")() + defer tccommon.InconsistentCheck(d, meta)() var ( - logId = getLogId(contextNil) - ctx = context.WithValue(context.TODO(), logIdKey, logId) - service = PrivateDnsService{client: meta.(*TencentCloudClient).apiV3Conn} + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service = PrivateDnsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} region string uin string ) - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", idSplit) } diff --git a/tencentcloud/resource_tc_private_dns_zone_vpc_attachment_test.go b/tencentcloud/services/privatedns/resource_tc_private_dns_zone_vpc_attachment_test.go similarity index 89% rename from tencentcloud/resource_tc_private_dns_zone_vpc_attachment_test.go rename to tencentcloud/services/privatedns/resource_tc_private_dns_zone_vpc_attachment_test.go index ad497a3158..b15f86b32a 100644 --- a/tencentcloud/resource_tc_private_dns_zone_vpc_attachment_test.go +++ b/tencentcloud/services/privatedns/resource_tc_private_dns_zone_vpc_attachment_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package privatedns_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudPrivateDnsZoneVpcAttachmentResource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPrivateDnsZoneVpcAttachment, diff --git a/tencentcloud/service_tencentcloud_private_dns.go b/tencentcloud/services/privatedns/service_tencentcloud_private_dns.go similarity index 91% rename from tencentcloud/service_tencentcloud_private_dns.go rename to tencentcloud/services/privatedns/service_tencentcloud_private_dns.go index a16c697ca0..402e30d540 100644 --- a/tencentcloud/service_tencentcloud_private_dns.go +++ b/tencentcloud/services/privatedns/service_tencentcloud_private_dns.go @@ -1,4 +1,4 @@ -package tencentcloud +package privatedns import ( "context" @@ -8,6 +8,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" privatedns "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) @@ -21,7 +23,7 @@ type PrivateDnsService struct { // ////////api func (me *PrivateDnsService) DescribePrivateDnsRecordByFilter(ctx context.Context, zoneId string, filterList []*privatedns.Filter) (recordInfos []*privatedns.PrivateZoneRecord, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := privatedns.NewDescribePrivateZoneRecordListRequest() defer func() { if errRet != nil { @@ -53,11 +55,11 @@ getMoreData: request.Limit = &limit request.Offset = &offset - if err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { ratelimit.Check(request.GetAction()) result, err := me.client.UsePrivateDnsClient().DescribePrivateZoneRecordList(request) if err != nil { - return retryError(err, InternalError) + return tccommon.RetryError(err, tccommon.InternalError) } response = result return nil @@ -80,7 +82,7 @@ getMoreData: } func (me *PrivateDnsService) DescribePrivateDnsZoneVpcAttachmentById(ctx context.Context, zoneId string) (ZoneVpcAttachment *privatedns.PrivateZone, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := privatedns.NewDescribePrivateZoneRequest() request.ZoneId = &zoneId @@ -112,7 +114,7 @@ func (me *PrivateDnsService) DescribePrivateDnsZoneVpcAttachmentById(ctx context func (me *PrivateDnsService) DeletePrivateDnsZoneVpcAttachmentById(ctx context.Context, zoneId, uniqVpcId, region, uin string) (errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) asyncRequest = privatedns.NewQueryAsyncBindVpcStatusRequest() uniqId string ) @@ -162,10 +164,10 @@ func (me *PrivateDnsService) DeletePrivateDnsZoneVpcAttachmentById(ctx context.C // wait asyncRequest.UniqId = &uniqId - err = resource.Retry(readRetryTimeout*5, func() *resource.RetryError { + err = resource.Retry(tccommon.ReadRetryTimeout*5, func() *resource.RetryError { result, e := me.client.UsePrivateDnsClient().QueryAsyncBindVpcStatus(asyncRequest) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, asyncRequest.GetAction(), asyncRequest.ToJsonString(), asyncRequest.ToJsonString()) } diff --git a/tencentcloud/services/privatedns/service_tencentcloud_tag.go b/tencentcloud/services/privatedns/service_tencentcloud_tag.go new file mode 100644 index 0000000000..372be328db --- /dev/null +++ b/tencentcloud/services/privatedns/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package privatedns + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/data_source_tc_projects.go b/tencentcloud/services/project/data_source_tc_projects.go similarity index 81% rename from tencentcloud/data_source_tc_projects.go rename to tencentcloud/services/project/data_source_tc_projects.go index 7db5da2737..c3af53b6e4 100644 --- a/tencentcloud/data_source_tc_projects.go +++ b/tencentcloud/services/project/data_source_tc_projects.go @@ -1,15 +1,18 @@ -package tencentcloud +package project import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudProjects() *schema.Resource { +func DataSourceTencentCloudProjects() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudProjectsRead, Schema: map[string]*schema.Schema{ @@ -64,26 +67,26 @@ func dataSourceTencentCloudProjects() *schema.Resource { } func dataSourceTencentCloudProjectsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_tag_project.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_tag_project.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, _ := d.GetOk("all_list"); v != nil { paramMap["AllList"] = helper.IntUint64(v.(int)) } - service := TagService{client: meta.(*TencentCloudClient).apiV3Conn} + service := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var projects []*tag.Project - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeProjects(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } projects = result return nil @@ -129,7 +132,7 @@ func dataSourceTencentCloudProjectsRead(d *schema.ResourceData, meta interface{} d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_projects_test.go b/tencentcloud/services/project/data_source_tc_projects_test.go similarity index 57% rename from tencentcloud/data_source_tc_projects_test.go rename to tencentcloud/services/project/data_source_tc_projects_test.go index 6e9d846a21..a90aea257a 100644 --- a/tencentcloud/data_source_tc_projects_test.go +++ b/tencentcloud/services/project/data_source_tc_projects_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package project_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudProjectsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccProjectsDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_projects.project")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_projects.project")), }, }, }) diff --git a/tencentcloud/services/project/extension_tags.go b/tencentcloud/services/project/extension_tags.go new file mode 100644 index 0000000000..ba3f8f111a --- /dev/null +++ b/tencentcloud/services/project/extension_tags.go @@ -0,0 +1,3 @@ +package project + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/resource_tc_project.go b/tencentcloud/services/project/resource_tc_project.go similarity index 72% rename from tencentcloud/resource_tc_project.go rename to tencentcloud/services/project/resource_tc_project.go index d587973d93..30cbc0f56f 100644 --- a/tencentcloud/resource_tc_project.go +++ b/tencentcloud/services/project/resource_tc_project.go @@ -1,16 +1,19 @@ -package tencentcloud +package project import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudProject() *schema.Resource { +func ResourceTencentCloudProject() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudProjectCreate, Read: resourceTencentCloudProjectRead, @@ -55,10 +58,10 @@ func resourceTencentCloudProject() *schema.Resource { } func resourceTencentCloudProjectCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_project.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_project.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = tag.NewAddProjectRequest() @@ -73,10 +76,10 @@ func resourceTencentCloudProjectCreate(d *schema.ResourceData, meta interface{}) request.Info = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseTagClient().AddProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTagClient().AddProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -93,9 +96,9 @@ func resourceTencentCloudProjectCreate(d *schema.ResourceData, meta interface{}) if v, ok := d.GetOkExists("disable"); ok { if v.(int) == 1 { - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := TagService{client: meta.(*TencentCloudClient).apiV3Conn} + service := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} projectId := helper.StrToUInt64(d.Id()) if err := service.DisableProjectById(ctx, projectId); err != nil { @@ -108,14 +111,14 @@ func resourceTencentCloudProjectCreate(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudProjectRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_project.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_project.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := TagService{client: meta.(*TencentCloudClient).apiV3Conn} + service := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} projectId := helper.StrToUInt64(d.Id()) @@ -154,10 +157,10 @@ func resourceTencentCloudProjectRead(d *schema.ResourceData, meta interface{}) e } func resourceTencentCloudProjectUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_project.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_project.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := tag.NewUpdateProjectRequest() @@ -188,10 +191,10 @@ func resourceTencentCloudProjectUpdate(d *schema.ResourceData, meta interface{}) request.Disable = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseTagClient().UpdateProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseTagClient().UpdateProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -207,13 +210,13 @@ func resourceTencentCloudProjectUpdate(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudProjectDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_project.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_project.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := TagService{client: meta.(*TencentCloudClient).apiV3Conn} + service := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} projectId := helper.StrToUInt64(d.Id()) if err := service.DisableProjectById(ctx, projectId); err != nil { diff --git a/tencentcloud/resource_tc_project_test.go b/tencentcloud/services/project/resource_tc_project_test.go similarity index 79% rename from tencentcloud/resource_tc_project_test.go rename to tencentcloud/services/project/resource_tc_project_test.go index 12be3ef8e6..43a0c4fecc 100644 --- a/tencentcloud/resource_tc_project_test.go +++ b/tencentcloud/services/project/resource_tc_project_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package project_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixProjectResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccProject, diff --git a/tencentcloud/services/project/service_tencentcloud_tag.go b/tencentcloud/services/project/service_tencentcloud_tag.go new file mode 100644 index 0000000000..3ce5f109d7 --- /dev/null +++ b/tencentcloud/services/project/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package project + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} diff --git a/tencentcloud/data_source_tc_pts_scenario_with_jobs.go b/tencentcloud/services/pts/data_source_tc_pts_scenario_with_jobs.go similarity index 99% rename from tencentcloud/data_source_tc_pts_scenario_with_jobs.go rename to tencentcloud/services/pts/data_source_tc_pts_scenario_with_jobs.go index e1bbabbd28..8caae65306 100644 --- a/tencentcloud/data_source_tc_pts_scenario_with_jobs.go +++ b/tencentcloud/services/pts/data_source_tc_pts_scenario_with_jobs.go @@ -1,15 +1,18 @@ -package tencentcloud +package pts import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudPtsScenarioWithJobs() *schema.Resource { +func DataSourceTencentCloudPtsScenarioWithJobs() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudPtsScenarioWithJobsRead, Schema: map[string]*schema.Schema{ @@ -1483,12 +1486,12 @@ func dataSourceTencentCloudPtsScenarioWithJobs() *schema.Resource { } func dataSourceTencentCloudPtsScenarioWithJobsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_pts_scenario_with_jobs.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_pts_scenario_with_jobs.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("project_ids"); ok { @@ -1533,14 +1536,14 @@ func dataSourceTencentCloudPtsScenarioWithJobsRead(d *schema.ResourceData, meta paramMap["Owner"] = helper.String(v.(string)) } - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var scenarioWithJobsSet []*pts.ScenarioWithJobs - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribePtsScenarioWithJobsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } scenarioWithJobsSet = result return nil @@ -2694,7 +2697,7 @@ func dataSourceTencentCloudPtsScenarioWithJobsRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_pts_scenario_with_jobs_test.go b/tencentcloud/services/pts/data_source_tc_pts_scenario_with_jobs_test.go similarity index 94% rename from tencentcloud/data_source_tc_pts_scenario_with_jobs_test.go rename to tencentcloud/services/pts/data_source_tc_pts_scenario_with_jobs_test.go index a410bae467..a44e4a6a83 100644 --- a/tencentcloud/data_source_tc_pts_scenario_with_jobs_test.go +++ b/tencentcloud/services/pts/data_source_tc_pts_scenario_with_jobs_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudPtsScenarioWithJobsDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPtsScenarioWithJobsDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_pts_scenario_with_jobs.scenario_with_jobs"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_pts_scenario_with_jobs.scenario_with_jobs"), resource.TestCheckResourceAttrSet("data.tencentcloud_pts_scenario_with_jobs.scenario_with_jobs", "scenario_with_jobs_set.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_pts_scenario_with_jobs.scenario_with_jobs", "scenario_with_jobs_set.0.scenario.#"), resource.TestCheckResourceAttrSet("data.tencentcloud_pts_scenario_with_jobs.scenario_with_jobs", "scenario_with_jobs_set.0.scenario.0.app_id"), diff --git a/tencentcloud/resource_tc_pts_alert_channel.go b/tencentcloud/services/pts/resource_tc_pts_alert_channel.go similarity index 77% rename from tencentcloud/resource_tc_pts_alert_channel.go rename to tencentcloud/services/pts/resource_tc_pts_alert_channel.go index 5b621b560d..70a97ab053 100644 --- a/tencentcloud/resource_tc_pts_alert_channel.go +++ b/tencentcloud/services/pts/resource_tc_pts_alert_channel.go @@ -1,4 +1,4 @@ -package tencentcloud +package pts import ( "context" @@ -6,14 +6,17 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsAlertChannel() *schema.Resource { +func ResourceTencentCloudPtsAlertChannel() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudPtsAlertChannelRead, Create: resourceTencentCloudPtsAlertChannelCreate, @@ -81,10 +84,10 @@ func resourceTencentCloudPtsAlertChannel() *schema.Resource { } func resourceTencentCloudPtsAlertChannelCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_alert_channel.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_alert_channel.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewCreateAlertChannelRequest() @@ -106,15 +109,15 @@ func resourceTencentCloudPtsAlertChannelCreate(d *schema.ResourceData, meta inte request.AMPConsumerId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().CreateAlertChannel(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().CreateAlertChannel(request) if e != nil { if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok { if sdkError.Code == "FailedOperation.DbRecordCreateFailed" { return resource.NonRetryableError(e) } } - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -127,20 +130,20 @@ func resourceTencentCloudPtsAlertChannelCreate(d *schema.ResourceData, meta inte return err } - d.SetId(projectId + FILED_SP + noticeId) + d.SetId(projectId + tccommon.FILED_SP + noticeId) return resourceTencentCloudPtsAlertChannelRead(d, meta) } func resourceTencentCloudPtsAlertChannelRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_alert_channel.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_alert_channel.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -198,22 +201,22 @@ func resourceTencentCloudPtsAlertChannelRead(d *schema.ResourceData, meta interf } func resourceTencentCloudPtsAlertChannelUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_alert_channel.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_alert_channel.update")() + defer tccommon.InconsistentCheck(d, meta)() return resourceTencentCloudPtsAlertChannelRead(d, meta) } func resourceTencentCloudPtsAlertChannelDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_alert_channel.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_alert_channel.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_pts_alert_channel_test.go b/tencentcloud/services/pts/resource_tc_pts_alert_channel_test.go similarity index 90% rename from tencentcloud/resource_tc_pts_alert_channel_test.go rename to tencentcloud/services/pts/resource_tc_pts_alert_channel_test.go index f1e32ed07f..2516bb3e12 100644 --- a/tencentcloud/resource_tc_pts_alert_channel_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_alert_channel_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,8 +13,8 @@ func TestAccTencentCloudPtsAlertChannelResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPtsAlertChannel, diff --git a/tencentcloud/resource_tc_pts_cron_job.go b/tencentcloud/services/pts/resource_tc_pts_cron_job.go similarity index 82% rename from tencentcloud/resource_tc_pts_cron_job.go rename to tencentcloud/services/pts/resource_tc_pts_cron_job.go index 500d5977df..ab32f70b76 100644 --- a/tencentcloud/resource_tc_pts_cron_job.go +++ b/tencentcloud/services/pts/resource_tc_pts_cron_job.go @@ -1,4 +1,4 @@ -package tencentcloud +package pts import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsCronJob() *schema.Resource { +func ResourceTencentCloudPtsCronJob() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudPtsCronJobRead, Create: resourceTencentCloudPtsCronJobCreate, @@ -134,10 +137,10 @@ func resourceTencentCloudPtsCronJob() *schema.Resource { } func resourceTencentCloudPtsCronJobCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewCreateCronJobRequest() @@ -187,10 +190,10 @@ func resourceTencentCloudPtsCronJobCreate(d *schema.ResourceData, meta interface request.Note = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().CreateCronJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().CreateCronJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -206,20 +209,20 @@ func resourceTencentCloudPtsCronJobCreate(d *schema.ResourceData, meta interface cronJobId = *response.Response.CronJobId - d.SetId(projectId + FILED_SP + cronJobId) + d.SetId(projectId + tccommon.FILED_SP + cronJobId) return resourceTencentCloudPtsCronJobRead(d, meta) } func resourceTencentCloudPtsCronJobRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -311,14 +314,14 @@ func resourceTencentCloudPtsCronJobRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudPtsCronJobUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := pts.NewUpdateCronJobRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -364,10 +367,10 @@ func resourceTencentCloudPtsCronJobUpdate(d *schema.ResourceData, meta interface request.Note = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().UpdateCronJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().UpdateCronJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -384,15 +387,15 @@ func resourceTencentCloudPtsCronJobUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudPtsCronJobDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_pts_cron_job_abort.go b/tencentcloud/services/pts/resource_tc_pts_cron_job_abort.go similarity index 68% rename from tencentcloud/resource_tc_pts_cron_job_abort.go rename to tencentcloud/services/pts/resource_tc_pts_cron_job_abort.go index 58db94534a..815cece019 100644 --- a/tencentcloud/resource_tc_pts_cron_job_abort.go +++ b/tencentcloud/services/pts/resource_tc_pts_cron_job_abort.go @@ -1,15 +1,18 @@ -package tencentcloud +package pts import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsCronJobAbort() *schema.Resource { +func ResourceTencentCloudPtsCronJobAbort() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPtsCronJobAbortCreate, Read: resourceTencentCloudPtsCronJobAbortRead, @@ -34,10 +37,10 @@ func resourceTencentCloudPtsCronJobAbort() *schema.Resource { } func resourceTencentCloudPtsCronJobAbortCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job_abort.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job_abort.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewAbortCronJobsRequest() @@ -54,10 +57,10 @@ func resourceTencentCloudPtsCronJobAbortCreate(d *schema.ResourceData, meta inte request.CronJobIds = append(request.CronJobIds, helper.String(cronJobId)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().AbortCronJobs(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().AbortCronJobs(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -68,21 +71,21 @@ func resourceTencentCloudPtsCronJobAbortCreate(d *schema.ResourceData, meta inte return err } - d.SetId(projectId + FILED_SP + cronJobId) + d.SetId(projectId + tccommon.FILED_SP + cronJobId) return resourceTencentCloudPtsCronJobAbortRead(d, meta) } func resourceTencentCloudPtsCronJobAbortRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job_abort.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job_abort.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPtsCronJobAbortDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job_abort.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job_abort.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_pts_cron_job_abort_test.go b/tencentcloud/services/pts/resource_tc_pts_cron_job_abort_test.go similarity index 77% rename from tencentcloud/resource_tc_pts_cron_job_abort_test.go rename to tencentcloud/services/pts/resource_tc_pts_cron_job_abort_test.go index a8ea7ae14f..fa0365a790 100644 --- a/tencentcloud/resource_tc_pts_cron_job_abort_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_cron_job_abort_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudPtsCronJobAbortResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPtsCronJobAbort, diff --git a/tencentcloud/resource_tc_pts_cron_job_restart.go b/tencentcloud/services/pts/resource_tc_pts_cron_job_restart.go similarity index 68% rename from tencentcloud/resource_tc_pts_cron_job_restart.go rename to tencentcloud/services/pts/resource_tc_pts_cron_job_restart.go index ae0c6dab27..0b602cea04 100644 --- a/tencentcloud/resource_tc_pts_cron_job_restart.go +++ b/tencentcloud/services/pts/resource_tc_pts_cron_job_restart.go @@ -1,15 +1,18 @@ -package tencentcloud +package pts import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsCronJobRestart() *schema.Resource { +func ResourceTencentCloudPtsCronJobRestart() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPtsCronJobRestartCreate, Read: resourceTencentCloudPtsCronJobRestartRead, @@ -34,10 +37,10 @@ func resourceTencentCloudPtsCronJobRestart() *schema.Resource { } func resourceTencentCloudPtsCronJobRestartCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job_restart.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job_restart.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewRestartCronJobsRequest() @@ -53,10 +56,10 @@ func resourceTencentCloudPtsCronJobRestartCreate(d *schema.ResourceData, meta in request.CronJobIds = append(request.CronJobIds, helper.String(cronJobId)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().RestartCronJobs(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().RestartCronJobs(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -67,21 +70,21 @@ func resourceTencentCloudPtsCronJobRestartCreate(d *schema.ResourceData, meta in return err } - d.SetId(projectId + FILED_SP + cronJobId) + d.SetId(projectId + tccommon.FILED_SP + cronJobId) return resourceTencentCloudPtsCronJobRestartRead(d, meta) } func resourceTencentCloudPtsCronJobRestartRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job_restart.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job_restart.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPtsCronJobRestartDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_cron_job_restart.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_cron_job_restart.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_pts_cron_job_restart_test.go b/tencentcloud/services/pts/resource_tc_pts_cron_job_restart_test.go similarity index 78% rename from tencentcloud/resource_tc_pts_cron_job_restart_test.go rename to tencentcloud/services/pts/resource_tc_pts_cron_job_restart_test.go index 4126a09803..1b2fa4f3ba 100644 --- a/tencentcloud/resource_tc_pts_cron_job_restart_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_cron_job_restart_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixPtsCronJobRestartResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPtsCronJobRestart, diff --git a/tencentcloud/resource_tc_pts_cron_job_test.go b/tencentcloud/services/pts/resource_tc_pts_cron_job_test.go similarity index 71% rename from tencentcloud/resource_tc_pts_cron_job_test.go rename to tencentcloud/services/pts/resource_tc_pts_cron_job_test.go index cb50eef425..d84b90e95e 100644 --- a/tencentcloud/resource_tc_pts_cron_job_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_cron_job_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package pts_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcpts "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/pts" + "context" "fmt" "strings" @@ -15,8 +19,8 @@ func TestAccTencentCloudPtsCronJobResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckPtsCronJobDestroy, Steps: []resource.TestStep{ { @@ -24,13 +28,13 @@ func TestAccTencentCloudPtsCronJobResource_basic(t *testing.T) { Check: resource.ComposeTestCheckFunc( testAccCheckPtsCronJobExists("tencentcloud_pts_cron_job.cron_job"), resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "name", "iac-cron_job-update"), - resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "project_id", defaultPtsProjectId), - resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "scenario_id", defaultScenarioId), + resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "project_id", tcacctest.DefaultPtsProjectId), + resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "scenario_id", tcacctest.DefaultScenarioId), resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "scenario_name", "keep-pts-js"), resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "frequency_type", "2"), resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "cron_expression", "* 1 * * *"), resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "job_owner", "userName"), - resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "notice_id", defaultPtsNoticeId), + resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "notice_id", tcacctest.DefaultPtsNoticeId), resource.TestCheckResourceAttr("tencentcloud_pts_cron_job.cron_job", "note", "desc"), ), }, @@ -44,15 +48,15 @@ func TestAccTencentCloudPtsCronJobResource_basic(t *testing.T) { } func testAccCheckPtsCronJobDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_pts_project" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -72,22 +76,22 @@ func testAccCheckPtsCronJobDestroy(s *terraform.State) error { func testAccCheckPtsCronJobExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } projectId := idSplit[0] cronJobId := idSplit[1] - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) cronJob, err := service.DescribePtsCronJob(ctx, cronJobId, projectId) if cronJob == nil { return fmt.Errorf("pts cronJob %s is not found", rs.Primary.ID) @@ -102,13 +106,13 @@ func testAccCheckPtsCronJobExists(r string) resource.TestCheckFunc { const testAccPtsCronJobVar = ` variable "project_id" { - default = "` + defaultPtsProjectId + `" + default = "` + tcacctest.DefaultPtsProjectId + `" } variable "scenario_id" { - default = "` + defaultScenarioId + `" + default = "` + tcacctest.DefaultScenarioId + `" } variable "notice_id" { - default = "` + defaultPtsNoticeId + `" + default = "` + tcacctest.DefaultPtsNoticeId + `" } ` diff --git a/tencentcloud/resource_tc_pts_file.go b/tencentcloud/services/pts/resource_tc_pts_file.go similarity index 85% rename from tencentcloud/resource_tc_pts_file.go rename to tencentcloud/services/pts/resource_tc_pts_file.go index 6efbc9b596..f415f700a1 100644 --- a/tencentcloud/resource_tc_pts_file.go +++ b/tencentcloud/services/pts/resource_tc_pts_file.go @@ -1,4 +1,4 @@ -package tencentcloud +package pts import ( "context" @@ -6,14 +6,17 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsFile() *schema.Resource { +func ResourceTencentCloudPtsFile() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudPtsFileRead, Create: resourceTencentCloudPtsFileCreate, @@ -137,10 +140,10 @@ func resourceTencentCloudPtsFile() *schema.Resource { } func resourceTencentCloudPtsFileCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_file.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_file.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewCreateFileRequest() @@ -230,15 +233,15 @@ func resourceTencentCloudPtsFileCreate(d *schema.ResourceData, meta interface{}) } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().CreateFile(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().CreateFile(request) if e != nil { if sdkError, ok := e.(*sdkErrors.TencentCloudSDKError); ok { if sdkError.Code == "FailedOperation.DbRecordCreateFailed" { return resource.NonRetryableError(e) } } - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -251,20 +254,20 @@ func resourceTencentCloudPtsFileCreate(d *schema.ResourceData, meta interface{}) return err } - d.SetId(projectId + FILED_SP + fileId) + d.SetId(projectId + tccommon.FILED_SP + fileId) return resourceTencentCloudPtsFileRead(d, meta) } func resourceTencentCloudPtsFileRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_file.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_file.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -355,22 +358,22 @@ func resourceTencentCloudPtsFileRead(d *schema.ResourceData, meta interface{}) e } func resourceTencentCloudPtsFileUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_file.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_file.update")() + defer tccommon.InconsistentCheck(d, meta)() return resourceTencentCloudPtsFileRead(d, meta) } func resourceTencentCloudPtsFileDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_file.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_file.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_pts_file_test.go b/tencentcloud/services/pts/resource_tc_pts_file_test.go similarity index 72% rename from tencentcloud/resource_tc_pts_file_test.go rename to tencentcloud/services/pts/resource_tc_pts_file_test.go index 57543814e7..2fe81309ec 100644 --- a/tencentcloud/resource_tc_pts_file_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_file_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package pts_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcpts "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/pts" + "context" "fmt" "strings" @@ -15,8 +19,8 @@ func TestAccTencentCloudPtsFileResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckPtsFileDestroy, Steps: []resource.TestStep{ { @@ -39,15 +43,15 @@ func TestAccTencentCloudPtsFileResource_basic(t *testing.T) { } func testAccCheckPtsFileDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_pts_file" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -67,22 +71,22 @@ func testAccCheckPtsFileDestroy(s *terraform.State) error { func testAccCheckPtsFileExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } projectId := idSplit[0] fileId := idSplit[1] - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) file, err := service.DescribePtsFile(ctx, projectId, fileId) if file == nil { return fmt.Errorf("pts file %s is not found", rs.Primary.ID) diff --git a/tencentcloud/resource_tc_pts_job.go b/tencentcloud/services/pts/resource_tc_pts_job.go similarity index 95% rename from tencentcloud/resource_tc_pts_job.go rename to tencentcloud/services/pts/resource_tc_pts_job.go index 666fdab370..e4fb8cece9 100644 --- a/tencentcloud/resource_tc_pts_job.go +++ b/tencentcloud/services/pts/resource_tc_pts_job.go @@ -1,4 +1,4 @@ -package tencentcloud +package pts import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsJob() *schema.Resource { +func ResourceTencentCloudPtsJob() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudPtsJobRead, Create: resourceTencentCloudPtsJobCreate, @@ -684,10 +687,10 @@ func resourceTencentCloudPtsJob() *schema.Resource { } func resourceTencentCloudPtsJobCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_job.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_job.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewStartJobRequest() @@ -719,10 +722,10 @@ func resourceTencentCloudPtsJobCreate(d *schema.ResourceData, meta interface{}) request.Note = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().StartJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().StartJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -738,20 +741,20 @@ func resourceTencentCloudPtsJobCreate(d *schema.ResourceData, meta interface{}) jobId = *response.Response.JobId - d.SetId(projectId + FILED_SP + scenarioId + FILED_SP + jobId) + d.SetId(projectId + tccommon.FILED_SP + scenarioId + tccommon.FILED_SP + jobId) return resourceTencentCloudPtsJobRead(d, meta) } func resourceTencentCloudPtsJobRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_job.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_job.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -1043,7 +1046,7 @@ func resourceTencentCloudPtsJobRead(d *schema.ResourceData, meta interface{}) er testScriptsMap["updated_at"] = testScripts.UpdatedAt } if testScripts.EncodedContent != nil { - content, err := Base64ToString(*testScripts.EncodedContent) + content, err := tccommon.Base64ToString(*testScripts.EncodedContent) if err != nil { return fmt.Errorf("`testScripts.EncodedContent` %s does not be decoded to string", *testScripts.EncodedContent) } @@ -1201,14 +1204,14 @@ func resourceTencentCloudPtsJobRead(d *schema.ResourceData, meta interface{}) er } func resourceTencentCloudPtsJobUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_job.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_job.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := pts.NewUpdateJobRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -1234,10 +1237,10 @@ func resourceTencentCloudPtsJobUpdate(d *schema.ResourceData, meta interface{}) } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().UpdateJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().UpdateJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -1254,15 +1257,15 @@ func resourceTencentCloudPtsJobUpdate(d *schema.ResourceData, meta interface{}) } func resourceTencentCloudPtsJobDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_job.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_job.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_pts_job_abort.go b/tencentcloud/services/pts/resource_tc_pts_job_abort.go similarity index 73% rename from tencentcloud/resource_tc_pts_job_abort.go rename to tencentcloud/services/pts/resource_tc_pts_job_abort.go index 86df9b2f1a..27c5f6b0d7 100644 --- a/tencentcloud/resource_tc_pts_job_abort.go +++ b/tencentcloud/services/pts/resource_tc_pts_job_abort.go @@ -1,15 +1,18 @@ -package tencentcloud +package pts import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsJobAbort() *schema.Resource { +func ResourceTencentCloudPtsJobAbort() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPtsJobAbortCreate, Read: resourceTencentCloudPtsJobAbortRead, @@ -48,10 +51,10 @@ func resourceTencentCloudPtsJobAbort() *schema.Resource { } func resourceTencentCloudPtsJobAbortCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_job_abort.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_job_abort.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewAbortJobRequest() @@ -78,10 +81,10 @@ func resourceTencentCloudPtsJobAbortCreate(d *schema.ResourceData, meta interfac request.AbortReason = helper.IntInt64(v.(int)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().AbortJob(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().AbortJob(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -92,21 +95,21 @@ func resourceTencentCloudPtsJobAbortCreate(d *schema.ResourceData, meta interfac return err } - d.SetId(projectId + FILED_SP + scenarioId + FILED_SP + jobId) + d.SetId(projectId + tccommon.FILED_SP + scenarioId + tccommon.FILED_SP + jobId) return resourceTencentCloudPtsJobAbortRead(d, meta) } func resourceTencentCloudPtsJobAbortRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_job_abort.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_job_abort.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPtsJobAbortDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_job_abort.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_job_abort.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_pts_job_abort_test.go b/tencentcloud/services/pts/resource_tc_pts_job_abort_test.go similarity index 78% rename from tencentcloud/resource_tc_pts_job_abort_test.go rename to tencentcloud/services/pts/resource_tc_pts_job_abort_test.go index cbbb569dd6..a8cd62ac73 100644 --- a/tencentcloud/resource_tc_pts_job_abort_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_job_abort_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixPtsJobAbortResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPtsJobAbort, diff --git a/tencentcloud/resource_tc_pts_job_test.go b/tencentcloud/services/pts/resource_tc_pts_job_test.go similarity index 67% rename from tencentcloud/resource_tc_pts_job_test.go rename to tencentcloud/services/pts/resource_tc_pts_job_test.go index c779a0557c..7b7fe48af2 100644 --- a/tencentcloud/resource_tc_pts_job_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_job_test.go @@ -1,4 +1,4 @@ -package tencentcloud +package pts_test import ( "context" @@ -6,8 +6,13 @@ import ( "strings" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcpts "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/pts" ) // go test -i; go test -test.run TestAccTencentCloudPtsJobResource_basic -v @@ -15,17 +20,17 @@ func TestAccTencentCloudPtsJobResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckPtsJobDestroy, Steps: []resource.TestStep{ { Config: testAccPtsJob, Check: resource.ComposeTestCheckFunc( testAccCheckPtsJobExists("tencentcloud_pts_job.job"), - resource.TestCheckResourceAttr("tencentcloud_pts_job.job", "scenario_id", defaultScenarioIdJob), + resource.TestCheckResourceAttr("tencentcloud_pts_job.job", "scenario_id", tcacctest.DefaultScenarioIdJob), resource.TestCheckResourceAttr("tencentcloud_pts_job.job", "job_owner", "username"), - resource.TestCheckResourceAttr("tencentcloud_pts_job.job", "project_id", defaultPtsProjectId), + resource.TestCheckResourceAttr("tencentcloud_pts_job.job", "project_id", tcacctest.DefaultPtsProjectId), resource.TestCheckResourceAttr("tencentcloud_pts_job.job", "note", "desc"), ), }, @@ -39,15 +44,15 @@ func TestAccTencentCloudPtsJobResource_basic(t *testing.T) { } func testAccCheckPtsJobDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_pts_project" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -68,15 +73,15 @@ func testAccCheckPtsJobDestroy(s *terraform.State) error { func testAccCheckPtsJobExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 3 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -84,7 +89,7 @@ func testAccCheckPtsJobExists(r string) resource.TestCheckFunc { scenarioId := idSplit[1] jobId := idSplit[2] - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) job, err := service.DescribePtsJob(ctx, projectId, scenarioId, jobId) if job == nil { return fmt.Errorf("pts job %s is not found", rs.Primary.ID) @@ -99,10 +104,10 @@ func testAccCheckPtsJobExists(r string) resource.TestCheckFunc { const testAccPtsJobVar = ` variable "project_id" { - default = "` + defaultPtsProjectId + `" + default = "` + tcacctest.DefaultPtsProjectId + `" } variable "scenario_id" { - default = "` + defaultScenarioIdJob + `" + default = "` + tcacctest.DefaultScenarioIdJob + `" } ` diff --git a/tencentcloud/resource_tc_pts_project.go b/tencentcloud/services/pts/resource_tc_pts_project.go similarity index 79% rename from tencentcloud/resource_tc_pts_project.go rename to tencentcloud/services/pts/resource_tc_pts_project.go index 537c8e7341..da67b4a4a6 100644 --- a/tencentcloud/resource_tc_pts_project.go +++ b/tencentcloud/services/pts/resource_tc_pts_project.go @@ -1,4 +1,4 @@ -package tencentcloud +package pts import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsProject() *schema.Resource { +func ResourceTencentCloudPtsProject() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudPtsProjectRead, Create: resourceTencentCloudPtsProjectCreate, @@ -94,10 +97,10 @@ func resourceTencentCloudPtsProject() *schema.Resource { } func resourceTencentCloudPtsProjectCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_project.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_project.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewCreateProjectRequest() @@ -130,10 +133,10 @@ func resourceTencentCloudPtsProjectCreate(d *schema.ResourceData, meta interface } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().CreateProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().CreateProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -154,13 +157,13 @@ func resourceTencentCloudPtsProjectCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudPtsProjectRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_project.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_project.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} projectId := d.Id() @@ -227,10 +230,10 @@ func resourceTencentCloudPtsProjectRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudPtsProjectUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_project.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_project.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := pts.NewUpdateProjectRequest() @@ -263,10 +266,10 @@ func resourceTencentCloudPtsProjectUpdate(d *schema.ResourceData, meta interface } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().UpdateProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().UpdateProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -283,13 +286,13 @@ func resourceTencentCloudPtsProjectUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudPtsProjectDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_project.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_project.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} projectId := d.Id() diff --git a/tencentcloud/resource_tc_pts_project_test.go b/tencentcloud/services/pts/resource_tc_pts_project_test.go similarity index 73% rename from tencentcloud/resource_tc_pts_project_test.go rename to tencentcloud/services/pts/resource_tc_pts_project_test.go index 96d105c166..10f26ab3c8 100644 --- a/tencentcloud/resource_tc_pts_project_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_project_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package pts_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcpts "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/pts" + "context" "fmt" "testing" @@ -14,8 +18,8 @@ func TestAccTencentCloudPtsProjectResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckPtsProjectDestroy, Steps: []resource.TestStep{ { @@ -40,9 +44,9 @@ func TestAccTencentCloudPtsProjectResource_basic(t *testing.T) { } func testAccCheckPtsProjectDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_pts_project" { continue @@ -61,15 +65,15 @@ func testAccCheckPtsProjectDestroy(s *terraform.State) error { func testAccCheckPtsProjectExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) project, err := service.DescribePtsProject(ctx, rs.Primary.ID) if project == nil { return fmt.Errorf("pts project %s is not found", rs.Primary.ID) diff --git a/tencentcloud/resource_tc_pts_scenario.go b/tencentcloud/services/pts/resource_tc_pts_scenario.go similarity index 96% rename from tencentcloud/resource_tc_pts_scenario.go rename to tencentcloud/services/pts/resource_tc_pts_scenario.go index 209b4abc9f..1241896cc9 100644 --- a/tencentcloud/resource_tc_pts_scenario.go +++ b/tencentcloud/services/pts/resource_tc_pts_scenario.go @@ -1,4 +1,4 @@ -package tencentcloud +package pts import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsScenario() *schema.Resource { +func ResourceTencentCloudPtsScenario() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudPtsScenarioRead, Create: resourceTencentCloudPtsScenarioCreate, @@ -675,10 +678,10 @@ func resourceTencentCloudPtsScenario() *schema.Resource { } func resourceTencentCloudPtsScenarioCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_scenario.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_scenario.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewCreateScenarioRequest() @@ -903,10 +906,10 @@ func resourceTencentCloudPtsScenarioCreate(d *schema.ResourceData, meta interfac scriptInfo.UpdatedAt = helper.String(v.(string)) } if v, ok := dMap["encoded_content"]; ok { - scriptInfo.EncodedContent = helper.String(StringToBase64(v.(string))) + scriptInfo.EncodedContent = helper.String(tccommon.StringToBase64(v.(string))) } if v, ok := dMap["encoded_http_archive"]; ok { - scriptInfo.EncodedHttpArchive = helper.String(StringToBase64(v.(string))) + scriptInfo.EncodedHttpArchive = helper.String(tccommon.StringToBase64(v.(string))) } if v, ok := dMap["load_weight"]; ok { scriptInfo.LoadWeight = helper.Int64(int64(v.(int))) @@ -1082,10 +1085,10 @@ func resourceTencentCloudPtsScenarioCreate(d *schema.ResourceData, meta interfac requestUp.DomainNameConfig = &domainNameConfig } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().CreateScenario(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().CreateScenario(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -1102,10 +1105,10 @@ func resourceTencentCloudPtsScenarioCreate(d *schema.ResourceData, meta interfac scenarioId = *response.Response.ScenarioId requestUp.ScenarioId = &scenarioId - err = resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().UpdateScenario(requestUp) + err = resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().UpdateScenario(requestUp) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -1118,20 +1121,20 @@ func resourceTencentCloudPtsScenarioCreate(d *schema.ResourceData, meta interfac return err } - d.SetId(projectId + FILED_SP + scenarioId) + d.SetId(projectId + tccommon.FILED_SP + scenarioId) return resourceTencentCloudPtsScenarioRead(d, meta) } func resourceTencentCloudPtsScenarioRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_scenario.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_scenario.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -1345,14 +1348,14 @@ func resourceTencentCloudPtsScenarioRead(d *schema.ResourceData, meta interface{ testScriptsMap["updated_at"] = testScripts.UpdatedAt } if testScripts.EncodedContent != nil { - content, err := Base64ToString(*testScripts.EncodedContent) + content, err := tccommon.Base64ToString(*testScripts.EncodedContent) if err != nil { return fmt.Errorf("`testScripts.EncodedContent` %s does not be decoded to string", *testScripts.EncodedContent) } testScriptsMap["encoded_content"] = content } if testScripts.EncodedHttpArchive != nil { - archive, err := Base64ToString(*testScripts.EncodedHttpArchive) + archive, err := tccommon.Base64ToString(*testScripts.EncodedHttpArchive) if err != nil { return fmt.Errorf("`testScripts.EncodedHttpArchive` %s does not be decoded to string", *testScripts.EncodedHttpArchive) } @@ -1577,14 +1580,14 @@ func resourceTencentCloudPtsScenarioRead(d *schema.ResourceData, meta interface{ } func resourceTencentCloudPtsScenarioUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_scenario.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_scenario.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := pts.NewUpdateScenarioRequest() - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -1800,10 +1803,10 @@ func resourceTencentCloudPtsScenarioUpdate(d *schema.ResourceData, meta interfac scriptInfo.UpdatedAt = helper.String(v.(string)) } if v, ok := dMap["encoded_content"]; ok { - scriptInfo.EncodedContent = helper.String(StringToBase64(v.(string))) + scriptInfo.EncodedContent = helper.String(tccommon.StringToBase64(v.(string))) } if v, ok := dMap["encoded_http_archive"]; ok { - scriptInfo.EncodedHttpArchive = helper.String(StringToBase64(v.(string))) + scriptInfo.EncodedHttpArchive = helper.String(tccommon.StringToBase64(v.(string))) } if v, ok := dMap["load_weight"]; ok { scriptInfo.LoadWeight = helper.Int64(int64(v.(int))) @@ -1975,10 +1978,10 @@ func resourceTencentCloudPtsScenarioUpdate(d *schema.ResourceData, meta interfac request.DomainNameConfig = &domainNameConfig } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().UpdateScenario(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().UpdateScenario(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -1995,15 +1998,15 @@ func resourceTencentCloudPtsScenarioUpdate(d *schema.ResourceData, meta interfac } func resourceTencentCloudPtsScenarioDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_scenario.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_scenario.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := PtsService{client: meta.(*TencentCloudClient).apiV3Conn} + service := PtsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_pts_scenario_test.go b/tencentcloud/services/pts/resource_tc_pts_scenario_test.go similarity index 89% rename from tencentcloud/resource_tc_pts_scenario_test.go rename to tencentcloud/services/pts/resource_tc_pts_scenario_test.go index 8f962f0672..e3d3d7527b 100644 --- a/tencentcloud/resource_tc_pts_scenario_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_scenario_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package pts_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcpts "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/pts" + "context" "fmt" "strings" @@ -15,8 +19,8 @@ func TestAccTencentCloudPtsScenarioResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckPtsScenarioDestroy, Steps: []resource.TestStep{ { @@ -63,14 +67,14 @@ func TestAccTencentCloudPtsScenarioResource_basic(t *testing.T) { } func testAccCheckPtsScenarioDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_pts_scenario" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -90,21 +94,21 @@ func testAccCheckPtsScenarioDestroy(s *terraform.State) error { func testAccCheckPtsScenarioExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } projectId := idSplit[0] scenarioId := idSplit[1] - service := PtsService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcpts.NewPtsService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) scenario, err := service.DescribePtsScenario(ctx, projectId, scenarioId) if scenario == nil { return fmt.Errorf("pts scenario %s is not found", rs.Primary.ID) diff --git a/tencentcloud/resource_tc_pts_tmp_key_generate.go b/tencentcloud/services/pts/resource_tc_pts_tmp_key_generate.go similarity index 81% rename from tencentcloud/resource_tc_pts_tmp_key_generate.go rename to tencentcloud/services/pts/resource_tc_pts_tmp_key_generate.go index ded68a9d6a..4e5ee7072d 100644 --- a/tencentcloud/resource_tc_pts_tmp_key_generate.go +++ b/tencentcloud/services/pts/resource_tc_pts_tmp_key_generate.go @@ -1,15 +1,18 @@ -package tencentcloud +package pts import ( "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudPtsTmpKeyGenerate() *schema.Resource { +func ResourceTencentCloudPtsTmpKeyGenerate() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudPtsTmpKeyGenerateCreate, Read: resourceTencentCloudPtsTmpKeyGenerateRead, @@ -69,10 +72,10 @@ func resourceTencentCloudPtsTmpKeyGenerate() *schema.Resource { } func resourceTencentCloudPtsTmpKeyGenerateCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_tmp_key_generate.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_tmp_key_generate.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = pts.NewGenerateTmpKeyRequest() @@ -88,10 +91,10 @@ func resourceTencentCloudPtsTmpKeyGenerateCreate(d *schema.ResourceData, meta in request.ScenarioId = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UsePtsClient().GenerateTmpKey(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePtsClient().GenerateTmpKey(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -137,15 +140,15 @@ func resourceTencentCloudPtsTmpKeyGenerateCreate(d *schema.ResourceData, meta in } func resourceTencentCloudPtsTmpKeyGenerateRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_tmp_key_generate.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_tmp_key_generate.read")() + defer tccommon.InconsistentCheck(d, meta)() return nil } func resourceTencentCloudPtsTmpKeyGenerateDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_pts_tmp_key_generate.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_pts_tmp_key_generate.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_pts_tmp_key_generate_test.go b/tencentcloud/services/pts/resource_tc_pts_tmp_key_generate_test.go similarity index 85% rename from tencentcloud/resource_tc_pts_tmp_key_generate_test.go rename to tencentcloud/services/pts/resource_tc_pts_tmp_key_generate_test.go index a6d846e3eb..e9bf79db10 100644 --- a/tencentcloud/resource_tc_pts_tmp_key_generate_test.go +++ b/tencentcloud/services/pts/resource_tc_pts_tmp_key_generate_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package pts_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudPtsTmpKeyResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccPtsTmpKey, @@ -35,10 +37,10 @@ func TestAccTencentCloudPtsTmpKeyResource_basic(t *testing.T) { const testAccPtsTmpKeyVar = ` variable "project_id" { - default = "` + defaultPtsProjectId + `" + default = "` + tcacctest.DefaultPtsProjectId + `" } variable "scenario_id" { - default = "` + defaultScenarioId + `" + default = "` + tcacctest.DefaultScenarioId + `" } ` diff --git a/tencentcloud/service_tencentcloud_pts.go b/tencentcloud/services/pts/service_tencentcloud_pts.go similarity index 94% rename from tencentcloud/service_tencentcloud_pts.go rename to tencentcloud/services/pts/service_tencentcloud_pts.go index c1ec363374..956bd56930 100644 --- a/tencentcloud/service_tencentcloud_pts.go +++ b/tencentcloud/services/pts/service_tencentcloud_pts.go @@ -1,21 +1,28 @@ -package tencentcloud +package pts import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewPtsService(client *connectivity.TencentCloudClient) PtsService { + return PtsService{client: client} +} + type PtsService struct { client *connectivity.TencentCloudClient } func (me *PtsService) DescribePtsProject(ctx context.Context, projectId string) (project *pts.Project, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = pts.NewDescribeProjectsRequest() ) @@ -44,7 +51,7 @@ func (me *PtsService) DescribePtsProject(ctx context.Context, projectId string) } func (me *PtsService) DeletePtsProjectById(ctx context.Context, projectId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := pts.NewDeleteProjectsRequest() @@ -71,7 +78,7 @@ func (me *PtsService) DeletePtsProjectById(ctx context.Context, projectId string func (me *PtsService) DescribePtsAlertChannel(ctx context.Context, noticeId, projectId string) (alertChannel *pts.AlertChannelRecord, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = pts.NewDescribeAlertChannelsRequest() ) @@ -101,7 +108,7 @@ func (me *PtsService) DescribePtsAlertChannel(ctx context.Context, noticeId, pro } func (me *PtsService) DeletePtsAlertChannelById(ctx context.Context, noticeId, projectId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := pts.NewDeleteAlertChannelRequest() @@ -129,7 +136,7 @@ func (me *PtsService) DeletePtsAlertChannelById(ctx context.Context, noticeId, p func (me *PtsService) DescribePtsScenario(ctx context.Context, projectId, scenarioId string) (scenario *pts.Scenario, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = pts.NewDescribeScenariosRequest() ) @@ -159,7 +166,7 @@ func (me *PtsService) DescribePtsScenario(ctx context.Context, projectId, scenar } func (me *PtsService) DeletePtsScenarioById(ctx context.Context, projectId, scenarioId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := pts.NewDeleteScenariosRequest() @@ -187,7 +194,7 @@ func (me *PtsService) DeletePtsScenarioById(ctx context.Context, projectId, scen func (me *PtsService) DescribePtsFile(ctx context.Context, projectId, fileIds string) (file *pts.File, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = pts.NewDescribeFilesRequest() ) @@ -217,7 +224,7 @@ func (me *PtsService) DescribePtsFile(ctx context.Context, projectId, fileIds st } func (me *PtsService) DeletePtsFileById(ctx context.Context, projectId, fileIds string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := pts.NewDeleteFilesRequest() @@ -245,7 +252,7 @@ func (me *PtsService) DeletePtsFileById(ctx context.Context, projectId, fileIds func (me *PtsService) DescribePtsJob(ctx context.Context, projectId, scenarioId, jobId string) (job *pts.Job, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = pts.NewDescribeJobsRequest() ) @@ -276,7 +283,7 @@ func (me *PtsService) DescribePtsJob(ctx context.Context, projectId, scenarioId, } func (me *PtsService) DeletePtsJobById(ctx context.Context, projectId, scenarioId, jobId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := pts.NewDeleteJobsRequest() @@ -305,7 +312,7 @@ func (me *PtsService) DeletePtsJobById(ctx context.Context, projectId, scenarioI func (me *PtsService) DescribePtsCronJob(ctx context.Context, cronJobId, projectId string) (cronJob *pts.CronJob, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = pts.NewDescribeCronJobsRequest() ) @@ -335,7 +342,7 @@ func (me *PtsService) DescribePtsCronJob(ctx context.Context, cronJobId, project } func (me *PtsService) DeletePtsCronJobById(ctx context.Context, cronJobId, projectId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := pts.NewDeleteCronJobsRequest() @@ -363,7 +370,7 @@ func (me *PtsService) DeletePtsCronJobById(ctx context.Context, cronJobId, proje func (me *PtsService) DescribePtsScenarioWithJobsByFilter(ctx context.Context, param map[string]interface{}) (scenarioWithJobs []*pts.ScenarioWithJobs, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = pts.NewDescribeScenarioWithJobsRequest() ) diff --git a/tencentcloud/data_source_tc_rum_custom_url.go b/tencentcloud/services/rum/data_source_tc_rum_custom_url.go similarity index 92% rename from tencentcloud/data_source_tc_rum_custom_url.go rename to tencentcloud/services/rum/data_source_tc_rum_custom_url.go index 2bcee552ae..4578b12951 100644 --- a/tencentcloud/data_source_tc_rum_custom_url.go +++ b/tencentcloud/services/rum/data_source_tc_rum_custom_url.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumCustomUrl() *schema.Resource { +func DataSourceTencentCloudRumCustomUrl() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumCustomUrlRead, Schema: map[string]*schema.Schema{ @@ -167,12 +170,12 @@ func dataSourceTencentCloudRumCustomUrl() *schema.Resource { } func dataSourceTencentCloudRumCustomUrlRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_custom_url.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_custom_url.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -274,13 +277,13 @@ func dataSourceTencentCloudRumCustomUrlRead(d *schema.ResourceData, meta interfa paramMap["Env"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumCustomUrlByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -298,7 +301,7 @@ func dataSourceTencentCloudRumCustomUrlRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_custom_url_test.go b/tencentcloud/services/rum/data_source_tc_rum_custom_url_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_custom_url_test.go rename to tencentcloud/services/rum/data_source_tc_rum_custom_url_test.go index e703abf3b0..0d94ff2f0c 100644 --- a/tencentcloud/data_source_tc_rum_custom_url_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_custom_url_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -16,14 +18,14 @@ func TestAccTencentCloudRumCustomUrlDataSource_basic(t *testing.T) { endTime := time.Now().Unix() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumCustomUrlDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_custom_url.custom_url"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_custom_url.custom_url"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_custom_url.custom_url", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_event_url.go b/tencentcloud/services/rum/data_source_tc_rum_event_url.go similarity index 92% rename from tencentcloud/data_source_tc_rum_event_url.go rename to tencentcloud/services/rum/data_source_tc_rum_event_url.go index ff9933745c..e968ef16d3 100644 --- a/tencentcloud/data_source_tc_rum_event_url.go +++ b/tencentcloud/services/rum/data_source_tc_rum_event_url.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumEventUrl() *schema.Resource { +func DataSourceTencentCloudRumEventUrl() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumEventUrlRead, Schema: map[string]*schema.Schema{ @@ -161,12 +164,12 @@ func dataSourceTencentCloudRumEventUrl() *schema.Resource { } func dataSourceTencentCloudRumEventUrlRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_event_url.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_event_url.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -264,13 +267,13 @@ func dataSourceTencentCloudRumEventUrlRead(d *schema.ResourceData, meta interfac paramMap["Env"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumEventUrlByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -288,7 +291,7 @@ func dataSourceTencentCloudRumEventUrlRead(d *schema.ResourceData, meta interfac d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_event_url_test.go b/tencentcloud/services/rum/data_source_tc_rum_event_url_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_event_url_test.go rename to tencentcloud/services/rum/data_source_tc_rum_event_url_test.go index a226004f0d..9e8db6353b 100644 --- a/tencentcloud/data_source_tc_rum_event_url_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_event_url_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -16,14 +18,14 @@ func TestAccTencentCloudRumEventUrlDataSource_basic(t *testing.T) { endTime := time.Now().Unix() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumEventUrlDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_event_url.event_url"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_event_url.event_url"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_event_url.event_url", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_fetch_url.go b/tencentcloud/services/rum/data_source_tc_rum_fetch_url.go similarity index 93% rename from tencentcloud/data_source_tc_rum_fetch_url.go rename to tencentcloud/services/rum/data_source_tc_rum_fetch_url.go index b9ac904ac6..a554653f91 100644 --- a/tencentcloud/data_source_tc_rum_fetch_url.go +++ b/tencentcloud/services/rum/data_source_tc_rum_fetch_url.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumFetchUrl() *schema.Resource { +func DataSourceTencentCloudRumFetchUrl() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumFetchUrlRead, Schema: map[string]*schema.Schema{ @@ -185,12 +188,12 @@ func dataSourceTencentCloudRumFetchUrl() *schema.Resource { } func dataSourceTencentCloudRumFetchUrlRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_fetch_url.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_fetch_url.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -304,13 +307,13 @@ func dataSourceTencentCloudRumFetchUrlRead(d *schema.ResourceData, meta interfac paramMap["NetStatus"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumFetchUrlByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -328,7 +331,7 @@ func dataSourceTencentCloudRumFetchUrlRead(d *schema.ResourceData, meta interfac d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_fetch_url_info.go b/tencentcloud/services/rum/data_source_tc_rum_fetch_url_info.go similarity index 91% rename from tencentcloud/data_source_tc_rum_fetch_url_info.go rename to tencentcloud/services/rum/data_source_tc_rum_fetch_url_info.go index bedf931acd..9046ac08b2 100644 --- a/tencentcloud/data_source_tc_rum_fetch_url_info.go +++ b/tencentcloud/services/rum/data_source_tc_rum_fetch_url_info.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumFetchUrlInfo() *schema.Resource { +func DataSourceTencentCloudRumFetchUrlInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumFetchUrlInfoRead, Schema: map[string]*schema.Schema{ @@ -167,12 +170,12 @@ func dataSourceTencentCloudRumFetchUrlInfo() *schema.Resource { } func dataSourceTencentCloudRumFetchUrlInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_fetch_url_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_fetch_url_info.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -274,13 +277,13 @@ func dataSourceTencentCloudRumFetchUrlInfoRead(d *schema.ResourceData, meta inte paramMap["Env"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumFetchUrlInfoByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -298,7 +301,7 @@ func dataSourceTencentCloudRumFetchUrlInfoRead(d *schema.ResourceData, meta inte d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_fetch_url_info_test.go b/tencentcloud/services/rum/data_source_tc_rum_fetch_url_info_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_fetch_url_info_test.go rename to tencentcloud/services/rum/data_source_tc_rum_fetch_url_info_test.go index de86f601b6..d9bfe36793 100644 --- a/tencentcloud/data_source_tc_rum_fetch_url_info_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_fetch_url_info_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumFetchUrlInfoDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumFetchUrlInfoDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_fetch_url_info.fetch_url_info"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_fetch_url_info.fetch_url_info"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_fetch_url_info.fetch_url_info", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_fetch_url_test.go b/tencentcloud/services/rum/data_source_tc_rum_fetch_url_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_fetch_url_test.go rename to tencentcloud/services/rum/data_source_tc_rum_fetch_url_test.go index a9dcf63dfb..a61e1c29a3 100644 --- a/tencentcloud/data_source_tc_rum_fetch_url_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_fetch_url_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumFetchUrlDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumFetchUrlDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_fetch_url.fetch_url"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_fetch_url.fetch_url"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_fetch_url.fetch_url", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_group_log.go b/tencentcloud/services/rum/data_source_tc_rum_group_log.go similarity index 80% rename from tencentcloud/data_source_tc_rum_group_log.go rename to tencentcloud/services/rum/data_source_tc_rum_group_log.go index c3d9f85629..4e0f4bdae3 100644 --- a/tencentcloud/data_source_tc_rum_group_log.go +++ b/tencentcloud/services/rum/data_source_tc_rum_group_log.go @@ -1,14 +1,17 @@ -package tencentcloud +package rum import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumGroupLog() *schema.Resource { +func DataSourceTencentCloudRumGroupLog() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumGroupLogRead, Schema: map[string]*schema.Schema{ @@ -64,12 +67,12 @@ func dataSourceTencentCloudRumGroupLog() *schema.Resource { } func dataSourceTencentCloudRumGroupLogRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_group_log.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_group_log.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime string @@ -103,13 +106,13 @@ func dataSourceTencentCloudRumGroupLogRead(d *schema.ResourceData, meta interfac paramMap["GroupField"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumGroupLogByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -127,7 +130,7 @@ func dataSourceTencentCloudRumGroupLogRead(d *schema.ResourceData, meta interfac d.SetId(helper.DataResourceIdsHash([]string{startTime, endTime, ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_group_log_test.go b/tencentcloud/services/rum/data_source_tc_rum_group_log_test.go similarity index 69% rename from tencentcloud/data_source_tc_rum_group_log_test.go rename to tencentcloud/services/rum/data_source_tc_rum_group_log_test.go index 739c565196..a1c0419b48 100644 --- a/tencentcloud/data_source_tc_rum_group_log_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_group_log_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,14 +12,14 @@ func TestAccTencentCloudRumGroupLogDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumGroupLogDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_group_log.group_log"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_group_log.group_log"), ), }, }, diff --git a/tencentcloud/data_source_tc_rum_log_export.go b/tencentcloud/services/rum/data_source_tc_rum_log_export.go similarity index 77% rename from tencentcloud/data_source_tc_rum_log_export.go rename to tencentcloud/services/rum/data_source_tc_rum_log_export.go index e05f5186cc..46d1026bec 100644 --- a/tencentcloud/data_source_tc_rum_log_export.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_export.go @@ -1,29 +1,17 @@ -/* -Use this data source to query detailed information of rum log_export - -Example Usage - -```hcl -data "tencentcloud_rum_log_export" "log_export" { - name = "log" - start_time = "1692594840000" - query = "id:123 AND type: \"log\"" - end_time = "1692609240000" - project_id = 1 -} -``` -*/ -package tencentcloud +package rum import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumLogExport() *schema.Resource { +func DataSourceTencentCloudRumLogExport() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumLogExportRead, Schema: map[string]*schema.Schema{ @@ -82,12 +70,12 @@ func dataSourceTencentCloudRumLogExport() *schema.Resource { } func dataSourceTencentCloudRumLogExportRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_log_export.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_log_export.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime string @@ -122,13 +110,13 @@ func dataSourceTencentCloudRumLogExportRead(d *schema.ResourceData, meta interfa paramMap["Fields"] = helper.InterfacesStringsPoint(fieldsSet) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumLogExportByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -146,7 +134,7 @@ func dataSourceTencentCloudRumLogExportRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash([]string{startTime, endTime, ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/services/rum/data_source_tc_rum_log_export.md b/tencentcloud/services/rum/data_source_tc_rum_log_export.md new file mode 100644 index 0000000000..2b4b8eac67 --- /dev/null +++ b/tencentcloud/services/rum/data_source_tc_rum_log_export.md @@ -0,0 +1,13 @@ +Use this data source to query detailed information of rum log_export + +Example Usage + +```hcl +data "tencentcloud_rum_log_export" "log_export" { + name = "log" + start_time = "1692594840000" + query = "id:123 AND type: \"log\"" + end_time = "1692609240000" + project_id = 1 +} +``` diff --git a/tencentcloud/data_source_tc_rum_log_export_list.go b/tencentcloud/services/rum/data_source_tc_rum_log_export_list.go similarity index 67% rename from tencentcloud/data_source_tc_rum_log_export_list.go rename to tencentcloud/services/rum/data_source_tc_rum_log_export_list.go index 7a59677773..d7e869712f 100644 --- a/tencentcloud/data_source_tc_rum_log_export_list.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_export_list.go @@ -1,14 +1,17 @@ -package tencentcloud +package rum import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumLogExportList() *schema.Resource { +func DataSourceTencentCloudRumLogExportList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumLogExportListRead, Schema: map[string]*schema.Schema{ @@ -34,25 +37,25 @@ func dataSourceTencentCloudRumLogExportList() *schema.Resource { } func dataSourceTencentCloudRumLogExportListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_log_export_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_log_export_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, _ := d.GetOk("project_id"); v != nil { paramMap["ProjectId"] = helper.IntInt64(v.(int)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumLogExportListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -70,7 +73,7 @@ func dataSourceTencentCloudRumLogExportListRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdsHash([]string{ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_log_export_list_test.go b/tencentcloud/services/rum/data_source_tc_rum_log_export_list_test.go similarity index 71% rename from tencentcloud/data_source_tc_rum_log_export_list_test.go rename to tencentcloud/services/rum/data_source_tc_rum_log_export_list_test.go index 79c9b4b039..e02352f063 100644 --- a/tencentcloud/data_source_tc_rum_log_export_list_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_export_list_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudRumLogExportListDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumLogExportListDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_export_list.log_export_list"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_export_list.log_export_list"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_log_export_list.log_export_list", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_log_export_test.go b/tencentcloud/services/rum/data_source_tc_rum_log_export_test.go similarity index 65% rename from tencentcloud/data_source_tc_rum_log_export_test.go rename to tencentcloud/services/rum/data_source_tc_rum_log_export_test.go index 803b0b16d9..657d6983aa 100644 --- a/tencentcloud/data_source_tc_rum_log_export_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_export_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudNeedFixRumLogExportDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumLogExportDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_export.log_export")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_export.log_export")), }, }, }) diff --git a/tencentcloud/data_source_tc_rum_log_list.go b/tencentcloud/services/rum/data_source_tc_rum_log_list.go similarity index 76% rename from tencentcloud/data_source_tc_rum_log_list.go rename to tencentcloud/services/rum/data_source_tc_rum_log_list.go index 5d7af09f13..27bcc543fd 100644 --- a/tencentcloud/data_source_tc_rum_log_list.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_list.go @@ -1,29 +1,17 @@ -/* -Use this data source to query detailed information of rum log_list - -Example Usage - -```hcl -data "tencentcloud_rum_log_list" "log_list" { - order_by = "desc" - start_time = 1625444040000 - query = "id:123 AND type:\"log\"" - end_time = 1625454840000 - project_id = 1 -} -``` -*/ -package tencentcloud +package rum import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumLogList() *schema.Resource { +func DataSourceTencentCloudRumLogList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumLogListRead, Schema: map[string]*schema.Schema{ @@ -73,12 +61,12 @@ func dataSourceTencentCloudRumLogList() *schema.Resource { } func dataSourceTencentCloudRumLogListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_log_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_log_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime string @@ -108,13 +96,13 @@ func dataSourceTencentCloudRumLogListRead(d *schema.ResourceData, meta interface paramMap["ID"] = helper.IntInt64(v.(int)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumLogListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -132,7 +120,7 @@ func dataSourceTencentCloudRumLogListRead(d *schema.ResourceData, meta interface d.SetId(helper.DataResourceIdsHash([]string{startTime, endTime, ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/services/rum/data_source_tc_rum_log_list.md b/tencentcloud/services/rum/data_source_tc_rum_log_list.md new file mode 100644 index 0000000000..af364b5811 --- /dev/null +++ b/tencentcloud/services/rum/data_source_tc_rum_log_list.md @@ -0,0 +1,13 @@ +Use this data source to query detailed information of rum log_list + +Example Usage + +```hcl +data "tencentcloud_rum_log_list" "log_list" { + order_by = "desc" + start_time = 1625444040000 + query = "id:123 AND type:\"log\"" + end_time = 1625454840000 + project_id = 1 +} +``` diff --git a/tencentcloud/data_source_tc_rum_log_list_test.go b/tencentcloud/services/rum/data_source_tc_rum_log_list_test.go similarity index 64% rename from tencentcloud/data_source_tc_rum_log_list_test.go rename to tencentcloud/services/rum/data_source_tc_rum_log_list_test.go index bb952c4582..cf644cbe3d 100644 --- a/tencentcloud/data_source_tc_rum_log_list_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_list_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudNeedFixRumLogListDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumLogListDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_list.log_list")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_list.log_list")), }, }, }) diff --git a/tencentcloud/data_source_tc_rum_log_stats_log_list.go b/tencentcloud/services/rum/data_source_tc_rum_log_stats_log_list.go similarity index 73% rename from tencentcloud/data_source_tc_rum_log_stats_log_list.go rename to tencentcloud/services/rum/data_source_tc_rum_log_stats_log_list.go index d481f7a285..c4d4e49533 100644 --- a/tencentcloud/data_source_tc_rum_log_stats_log_list.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_stats_log_list.go @@ -1,28 +1,17 @@ -/* -Use this data source to query detailed information of rum log_stats_log_list - -Example Usage - -```hcl -data "tencentcloud_rum_log_stats_log_list" "log_stats_log_list" { - start_time = 1625444040 - query = "id:123 AND type:\"log\"" - end_time = 1625454840 - project_id = 1 -} -``` -*/ -package tencentcloud +package rum import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumLogStatsLogList() *schema.Resource { +func DataSourceTencentCloudRumLogStatsLogList() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumLogStatsLogListRead, Schema: map[string]*schema.Schema{ @@ -66,12 +55,12 @@ func dataSourceTencentCloudRumLogStatsLogList() *schema.Resource { } func dataSourceTencentCloudRumLogStatsLogListRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_log_stats_log_list.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_log_stats_log_list.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime string @@ -97,13 +86,13 @@ func dataSourceTencentCloudRumLogStatsLogListRead(d *schema.ResourceData, meta i paramMap["ID"] = helper.IntInt64(v.(int)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumLogStatsLogListByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -121,7 +110,7 @@ func dataSourceTencentCloudRumLogStatsLogListRead(d *schema.ResourceData, meta i d.SetId(helper.DataResourceIdsHash([]string{startTime, endTime, ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/services/rum/data_source_tc_rum_log_stats_log_list.md b/tencentcloud/services/rum/data_source_tc_rum_log_stats_log_list.md new file mode 100644 index 0000000000..8444ae4c0c --- /dev/null +++ b/tencentcloud/services/rum/data_source_tc_rum_log_stats_log_list.md @@ -0,0 +1,12 @@ +Use this data source to query detailed information of rum log_stats_log_list + +Example Usage + +```hcl +data "tencentcloud_rum_log_stats_log_list" "log_stats_log_list" { + start_time = 1625444040 + query = "id:123 AND type:\"log\"" + end_time = 1625454840 + project_id = 1 +} +``` diff --git a/tencentcloud/data_source_tc_rum_log_stats_log_list_test.go b/tencentcloud/services/rum/data_source_tc_rum_log_stats_log_list_test.go similarity index 63% rename from tencentcloud/data_source_tc_rum_log_stats_log_list_test.go rename to tencentcloud/services/rum/data_source_tc_rum_log_stats_log_list_test.go index 1b14021bff..0d7766ecab 100644 --- a/tencentcloud/data_source_tc_rum_log_stats_log_list_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_stats_log_list_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudNeedFixRumLogStatsLogListDataSource_basic(t *testing.T) t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumLogStatsLogListDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_stats_log_list.log_stats_log_list")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_stats_log_list.log_stats_log_list")), }, }, }) diff --git a/tencentcloud/data_source_tc_rum_log_url_statistics.go b/tencentcloud/services/rum/data_source_tc_rum_log_url_statistics.go similarity index 91% rename from tencentcloud/data_source_tc_rum_log_url_statistics.go rename to tencentcloud/services/rum/data_source_tc_rum_log_url_statistics.go index 372e61d2d2..6290bf4829 100644 --- a/tencentcloud/data_source_tc_rum_log_url_statistics.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_url_statistics.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumLogUrlStatistics() *schema.Resource { +func DataSourceTencentCloudRumLogUrlStatistics() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumLogUrlStatisticsRead, Schema: map[string]*schema.Schema{ @@ -155,12 +158,12 @@ func dataSourceTencentCloudRumLogUrlStatistics() *schema.Resource { } func dataSourceTencentCloudRumLogUrlStatisticsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_log_url_statistics.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_log_url_statistics.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -254,13 +257,13 @@ func dataSourceTencentCloudRumLogUrlStatisticsRead(d *schema.ResourceData, meta paramMap["Env"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumLogUrlStatisticsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -278,7 +281,7 @@ func dataSourceTencentCloudRumLogUrlStatisticsRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_log_url_statistics_test.go b/tencentcloud/services/rum/data_source_tc_rum_log_url_statistics_test.go similarity index 76% rename from tencentcloud/data_source_tc_rum_log_url_statistics_test.go rename to tencentcloud/services/rum/data_source_tc_rum_log_url_statistics_test.go index e349f59c1d..cee23dea68 100644 --- a/tencentcloud/data_source_tc_rum_log_url_statistics_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_log_url_statistics_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumLogUrlStatisticsDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumLogUrlStatisticsDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_url_statistics.log_url_statistics"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_log_url_statistics.log_url_statistics"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_log_url_statistics.log_url_statistics", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_offline_log_config.go b/tencentcloud/services/rum/data_source_tc_rum_offline_log_config.go similarity index 77% rename from tencentcloud/data_source_tc_rum_offline_log_config.go rename to tencentcloud/services/rum/data_source_tc_rum_offline_log_config.go index 59ad375a43..696adfa7a8 100644 --- a/tencentcloud/data_source_tc_rum_offline_log_config.go +++ b/tencentcloud/services/rum/data_source_tc_rum_offline_log_config.go @@ -1,17 +1,20 @@ -package tencentcloud +package rum import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumOfflineLogConfig() *schema.Resource { +func DataSourceTencentCloudRumOfflineLogConfig() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumOfflineLogConfigRead, Schema: map[string]*schema.Schema{ @@ -46,11 +49,11 @@ func dataSourceTencentCloudRumOfflineLogConfig() *schema.Resource { } func dataSourceTencentCloudRumOfflineLogConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_offline_log_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_offline_log_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var projectKey string paramMap := make(map[string]interface{}) @@ -59,13 +62,13 @@ func dataSourceTencentCloudRumOfflineLogConfigRead(d *schema.ResourceData, meta paramMap["project_key"] = helper.String(v.(string)) } - rumService := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + rumService := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var logConfigs *rum.DescribeOfflineLogConfigsResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := rumService.DescribeRumOfflineLogConfigByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } logConfigs = results return nil @@ -95,7 +98,7 @@ func dataSourceTencentCloudRumOfflineLogConfigRead(d *schema.ResourceData, meta output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), map[string]interface{}{ + if e := tccommon.WriteToFile(output.(string), map[string]interface{}{ "project_key": projectKey, "unique_id_set": uniqueID, "msg": *logConfigs.Msg, diff --git a/tencentcloud/data_source_tc_rum_offline_log_config_test.go b/tencentcloud/services/rum/data_source_tc_rum_offline_log_config_test.go similarity index 73% rename from tencentcloud/data_source_tc_rum_offline_log_config_test.go rename to tencentcloud/services/rum/data_source_tc_rum_offline_log_config_test.go index 610da29fa8..16d75b30e0 100644 --- a/tencentcloud/data_source_tc_rum_offline_log_config_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_offline_log_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudRumOfflineLogConfigDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceRumOfflineLogConfig, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_offline_log_config.offlineLogConfig"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_offline_log_config.offlineLogConfig"), resource.TestCheckResourceAttr("data.tencentcloud_rum_offline_log_config.offlineLogConfig", "project_key", "ZEYrYfvaYQ30jRdmPx"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_offline_log_config.offlineLogConfig", "unique_id_set.#"), ), diff --git a/tencentcloud/data_source_tc_rum_performance_page.go b/tencentcloud/services/rum/data_source_tc_rum_performance_page.go similarity index 92% rename from tencentcloud/data_source_tc_rum_performance_page.go rename to tencentcloud/services/rum/data_source_tc_rum_performance_page.go index 985218eb68..b9e4c2580f 100644 --- a/tencentcloud/data_source_tc_rum_performance_page.go +++ b/tencentcloud/services/rum/data_source_tc_rum_performance_page.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumPerformancePage() *schema.Resource { +func DataSourceTencentCloudRumPerformancePage() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumPerformancePageRead, Schema: map[string]*schema.Schema{ @@ -167,12 +170,12 @@ func dataSourceTencentCloudRumPerformancePage() *schema.Resource { } func dataSourceTencentCloudRumPerformancePageRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_performance_page.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_performance_page.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -278,13 +281,13 @@ func dataSourceTencentCloudRumPerformancePageRead(d *schema.ResourceData, meta i paramMap["NetStatus"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumPerformancePageByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -302,7 +305,7 @@ func dataSourceTencentCloudRumPerformancePageRead(d *schema.ResourceData, meta i d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_performance_page_test.go b/tencentcloud/services/rum/data_source_tc_rum_performance_page_test.go similarity index 76% rename from tencentcloud/data_source_tc_rum_performance_page_test.go rename to tencentcloud/services/rum/data_source_tc_rum_performance_page_test.go index d91d2b317a..764de1c005 100644 --- a/tencentcloud/data_source_tc_rum_performance_page_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_performance_page_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumPerformancePageDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumPerformancePageDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_performance_page.performance_page"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_performance_page.performance_page"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_performance_page.performance_page", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_project.go b/tencentcloud/services/rum/data_source_tc_rum_project.go similarity index 89% rename from tencentcloud/data_source_tc_rum_project.go rename to tencentcloud/services/rum/data_source_tc_rum_project.go index fd93305249..7b465d8b4e 100644 --- a/tencentcloud/data_source_tc_rum_project.go +++ b/tencentcloud/services/rum/data_source_tc_rum_project.go @@ -1,17 +1,20 @@ -package tencentcloud +package rum import ( "context" "log" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumProject() *schema.Resource { +func DataSourceTencentCloudRumProject() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumProjectRead, Schema: map[string]*schema.Schema{ @@ -121,24 +124,24 @@ func dataSourceTencentCloudRumProject() *schema.Resource { } func dataSourceTencentCloudRumProjectRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_project.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_project.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { paramMap["instance_id"] = helper.String(v.(string)) } - rumService := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + rumService := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var projectSet []*rum.RumProject - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := rumService.DescribeRumProjectByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } projectSet = results return nil @@ -213,7 +216,7 @@ func dataSourceTencentCloudRumProjectRead(d *schema.ResourceData, meta interface output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), projectSetList); e != nil { + if e := tccommon.WriteToFile(output.(string), projectSetList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_project_test.go b/tencentcloud/services/rum/data_source_tc_rum_project_test.go similarity index 87% rename from tencentcloud/data_source_tc_rum_project_test.go rename to tencentcloud/services/rum/data_source_tc_rum_project_test.go index c3d6674647..fc6aea74d5 100644 --- a/tencentcloud/data_source_tc_rum_project_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_project_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudRumProjectDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceRumProject, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_project.project"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_project.project"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_project.project", "project_set.#"), resource.TestCheckResourceAttr("data.tencentcloud_rum_project.project", "project_set.0.creator", "100027012454"), resource.TestCheckResourceAttr("data.tencentcloud_rum_project.project", "project_set.0.desc", "Automated testing, do not delete"), diff --git a/tencentcloud/data_source_tc_rum_pv_url_info.go b/tencentcloud/services/rum/data_source_tc_rum_pv_url_info.go similarity index 91% rename from tencentcloud/data_source_tc_rum_pv_url_info.go rename to tencentcloud/services/rum/data_source_tc_rum_pv_url_info.go index e3dc519a97..93ca32f845 100644 --- a/tencentcloud/data_source_tc_rum_pv_url_info.go +++ b/tencentcloud/services/rum/data_source_tc_rum_pv_url_info.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumPvUrlInfo() *schema.Resource { +func DataSourceTencentCloudRumPvUrlInfo() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumPvUrlInfoRead, Schema: map[string]*schema.Schema{ @@ -155,12 +158,12 @@ func dataSourceTencentCloudRumPvUrlInfo() *schema.Resource { } func dataSourceTencentCloudRumPvUrlInfoRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_pv_url_info.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_pv_url_info.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -254,13 +257,13 @@ func dataSourceTencentCloudRumPvUrlInfoRead(d *schema.ResourceData, meta interfa paramMap["Env"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumPvUrlInfoByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -278,7 +281,7 @@ func dataSourceTencentCloudRumPvUrlInfoRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_pv_url_info_test.go b/tencentcloud/services/rum/data_source_tc_rum_pv_url_info_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_pv_url_info_test.go rename to tencentcloud/services/rum/data_source_tc_rum_pv_url_info_test.go index 1f6a75b74b..07aba0dfe9 100644 --- a/tencentcloud/data_source_tc_rum_pv_url_info_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_pv_url_info_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumPvUrlInfoDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumPvUrlInfoDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_pv_url_info.pv_url_info"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_pv_url_info.pv_url_info"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_pv_url_info.pv_url_info", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_pv_url_statistics.go b/tencentcloud/services/rum/data_source_tc_rum_pv_url_statistics.go similarity index 92% rename from tencentcloud/data_source_tc_rum_pv_url_statistics.go rename to tencentcloud/services/rum/data_source_tc_rum_pv_url_statistics.go index fe24e14f56..7e7194ade6 100644 --- a/tencentcloud/data_source_tc_rum_pv_url_statistics.go +++ b/tencentcloud/services/rum/data_source_tc_rum_pv_url_statistics.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumPvUrlStatistics() *schema.Resource { +func DataSourceTencentCloudRumPvUrlStatistics() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumPvUrlStatisticsRead, Schema: map[string]*schema.Schema{ @@ -161,12 +164,12 @@ func dataSourceTencentCloudRumPvUrlStatistics() *schema.Resource { } func dataSourceTencentCloudRumPvUrlStatisticsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_pv_url_statistics.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_pv_url_statistics.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -264,13 +267,13 @@ func dataSourceTencentCloudRumPvUrlStatisticsRead(d *schema.ResourceData, meta i paramMap["GroupByType"] = helper.IntInt64(v.(int)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumPvUrlStatisticsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -288,7 +291,7 @@ func dataSourceTencentCloudRumPvUrlStatisticsRead(d *schema.ResourceData, meta i d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_pv_url_statistics_test.go b/tencentcloud/services/rum/data_source_tc_rum_pv_url_statistics_test.go similarity index 76% rename from tencentcloud/data_source_tc_rum_pv_url_statistics_test.go rename to tencentcloud/services/rum/data_source_tc_rum_pv_url_statistics_test.go index 3b1ffe1dc0..28dd560ba3 100644 --- a/tencentcloud/data_source_tc_rum_pv_url_statistics_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_pv_url_statistics_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumPvUrlStatisticsDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumPvUrlStatisticsDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_pv_url_statistics.pv_url_statistics"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_pv_url_statistics.pv_url_statistics"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_pv_url_statistics.pv_url_statistics", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_report_count.go b/tencentcloud/services/rum/data_source_tc_rum_report_count.go similarity index 80% rename from tencentcloud/data_source_tc_rum_report_count.go rename to tencentcloud/services/rum/data_source_tc_rum_report_count.go index 8b35db7884..f6f24f46da 100644 --- a/tencentcloud/data_source_tc_rum_report_count.go +++ b/tencentcloud/services/rum/data_source_tc_rum_report_count.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumReportCount() *schema.Resource { +func DataSourceTencentCloudRumReportCount() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumReportCountRead, Schema: map[string]*schema.Schema{ @@ -59,12 +62,12 @@ func dataSourceTencentCloudRumReportCount() *schema.Resource { } func dataSourceTencentCloudRumReportCountRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_report_count.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_report_count.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -94,13 +97,13 @@ func dataSourceTencentCloudRumReportCountRead(d *schema.ResourceData, meta inter paramMap["InstanceID"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumReportCountByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -118,7 +121,7 @@ func dataSourceTencentCloudRumReportCountRead(d *schema.ResourceData, meta inter d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_report_count_test.go b/tencentcloud/services/rum/data_source_tc_rum_report_count_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_report_count_test.go rename to tencentcloud/services/rum/data_source_tc_rum_report_count_test.go index 590d120540..c520e00ef0 100644 --- a/tencentcloud/data_source_tc_rum_report_count_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_report_count_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumReportCountDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumReportCountDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_report_count.report_count"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_report_count.report_count"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_report_count.report_count", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_scores.go b/tencentcloud/services/rum/data_source_tc_rum_scores.go similarity index 90% rename from tencentcloud/data_source_tc_rum_scores.go rename to tencentcloud/services/rum/data_source_tc_rum_scores.go index 9676c83c39..ab055cc2de 100644 --- a/tencentcloud/data_source_tc_rum_scores.go +++ b/tencentcloud/services/rum/data_source_tc_rum_scores.go @@ -1,16 +1,19 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumScores() *schema.Resource { +func DataSourceTencentCloudRumScores() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumScoresRead, Schema: map[string]*schema.Schema{ @@ -128,12 +131,12 @@ func dataSourceTencentCloudRumScores() *schema.Resource { } func dataSourceTencentCloudRumScoresRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_scores.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_scores.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var startTime, endTime string paramMap := make(map[string]interface{}) @@ -155,14 +158,14 @@ func dataSourceTencentCloudRumScoresRead(d *schema.ResourceData, meta interface{ paramMap["IsDemo"] = helper.IntInt64(v.(int)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var scoreSet []*rum.ScoreInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeRumScoresByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } scoreSet = result return nil @@ -246,7 +249,7 @@ func dataSourceTencentCloudRumScoresRead(d *schema.ResourceData, meta interface{ d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_scores_test.go b/tencentcloud/services/rum/data_source_tc_rum_scores_test.go similarity index 73% rename from tencentcloud/data_source_tc_rum_scores_test.go rename to tencentcloud/services/rum/data_source_tc_rum_scores_test.go index c5bace9125..346b9ebe12 100644 --- a/tencentcloud/data_source_tc_rum_scores_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_scores_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumScoresDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumScoresDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_scores.scores"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_scores.scores"), ), }, }, diff --git a/tencentcloud/data_source_tc_rum_set_url_statistics.go b/tencentcloud/services/rum/data_source_tc_rum_set_url_statistics.go similarity index 92% rename from tencentcloud/data_source_tc_rum_set_url_statistics.go rename to tencentcloud/services/rum/data_source_tc_rum_set_url_statistics.go index 8adf8aabd9..491601b238 100644 --- a/tencentcloud/data_source_tc_rum_set_url_statistics.go +++ b/tencentcloud/services/rum/data_source_tc_rum_set_url_statistics.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumSetUrlStatistics() *schema.Resource { +func DataSourceTencentCloudRumSetUrlStatistics() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumSetUrlStatisticsRead, Schema: map[string]*schema.Schema{ @@ -167,12 +170,12 @@ func dataSourceTencentCloudRumSetUrlStatistics() *schema.Resource { } func dataSourceTencentCloudRumSetUrlStatisticsRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_set_url_statistics.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_set_url_statistics.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -274,13 +277,13 @@ func dataSourceTencentCloudRumSetUrlStatisticsRead(d *schema.ResourceData, meta paramMap["PackageType"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumSetUrlStatisticsByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -298,7 +301,7 @@ func dataSourceTencentCloudRumSetUrlStatisticsRead(d *schema.ResourceData, meta d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_set_url_statistics_test.go b/tencentcloud/services/rum/data_source_tc_rum_set_url_statistics_test.go similarity index 76% rename from tencentcloud/data_source_tc_rum_set_url_statistics_test.go rename to tencentcloud/services/rum/data_source_tc_rum_set_url_statistics_test.go index 0bb2404db2..a6bd8ef7b9 100644 --- a/tencentcloud/data_source_tc_rum_set_url_statistics_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_set_url_statistics_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumSetUrlStatisticsDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumSetUrlStatisticsDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_set_url_statistics.set_url_statistics"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_set_url_statistics.set_url_statistics"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_set_url_statistics.set_url_statistics", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_sign.go b/tencentcloud/services/rum/data_source_tc_rum_sign.go similarity index 80% rename from tencentcloud/data_source_tc_rum_sign.go rename to tencentcloud/services/rum/data_source_tc_rum_sign.go index f82a06fcbd..5140fd6a2b 100644 --- a/tencentcloud/data_source_tc_rum_sign.go +++ b/tencentcloud/services/rum/data_source_tc_rum_sign.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumSign() *schema.Resource { +func DataSourceTencentCloudRumSign() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumSignRead, Schema: map[string]*schema.Schema{ @@ -65,12 +68,12 @@ func dataSourceTencentCloudRumSign() *schema.Resource { } func dataSourceTencentCloudRumSignRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_sign.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_sign.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, _ := d.GetOk("timeout"); v != nil { @@ -81,13 +84,13 @@ func dataSourceTencentCloudRumSignRead(d *schema.ResourceData, meta interface{}) paramMap["FileType"] = helper.IntInt64(v.(int)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *rum.DescribeReleaseFileSignResponseParams - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumSignByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -123,7 +126,7 @@ func dataSourceTencentCloudRumSignRead(d *schema.ResourceData, meta interface{}) d.SetId(helper.DataResourceIdsHash([]string{token})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_sign_test.go b/tencentcloud/services/rum/data_source_tc_rum_sign_test.go similarity index 67% rename from tencentcloud/data_source_tc_rum_sign_test.go rename to tencentcloud/services/rum/data_source_tc_rum_sign_test.go index 537a84e478..aebc695844 100644 --- a/tencentcloud/data_source_tc_rum_sign_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_sign_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,14 +13,14 @@ func TestAccTencentCloudRumSignDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumSignDataSource, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_sign.sign"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_sign.sign"), ), }, }, diff --git a/tencentcloud/data_source_tc_rum_static_project.go b/tencentcloud/services/rum/data_source_tc_rum_static_project.go similarity index 92% rename from tencentcloud/data_source_tc_rum_static_project.go rename to tencentcloud/services/rum/data_source_tc_rum_static_project.go index 28f41fdb91..a65e3795b1 100644 --- a/tencentcloud/data_source_tc_rum_static_project.go +++ b/tencentcloud/services/rum/data_source_tc_rum_static_project.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumStaticProject() *schema.Resource { +func DataSourceTencentCloudRumStaticProject() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumStaticProjectRead, Schema: map[string]*schema.Schema{ @@ -167,12 +170,12 @@ func dataSourceTencentCloudRumStaticProject() *schema.Resource { } func dataSourceTencentCloudRumStaticProjectRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_static_project.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_static_project.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -280,13 +283,13 @@ func dataSourceTencentCloudRumStaticProjectRead(d *schema.ResourceData, meta int paramMap["Env"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumStaticProjectByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -304,7 +307,7 @@ func dataSourceTencentCloudRumStaticProjectRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_static_project_test.go b/tencentcloud/services/rum/data_source_tc_rum_static_project_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_static_project_test.go rename to tencentcloud/services/rum/data_source_tc_rum_static_project_test.go index 55b7aab5c2..a82cc7e185 100644 --- a/tencentcloud/data_source_tc_rum_static_project_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_static_project_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumStaticProjectDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumStaticProjectDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_static_project.static_project"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_static_project.static_project"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_static_project.static_project", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_static_resource.go b/tencentcloud/services/rum/data_source_tc_rum_static_resource.go similarity index 92% rename from tencentcloud/data_source_tc_rum_static_resource.go rename to tencentcloud/services/rum/data_source_tc_rum_static_resource.go index 69dedcb5a4..eba3bb6e75 100644 --- a/tencentcloud/data_source_tc_rum_static_resource.go +++ b/tencentcloud/services/rum/data_source_tc_rum_static_resource.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumStaticResource() *schema.Resource { +func DataSourceTencentCloudRumStaticResource() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumStaticResourceRead, Schema: map[string]*schema.Schema{ @@ -167,12 +170,12 @@ func dataSourceTencentCloudRumStaticResource() *schema.Resource { } func dataSourceTencentCloudRumStaticResourceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_static_resource.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_static_resource.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -274,13 +277,13 @@ func dataSourceTencentCloudRumStaticResourceRead(d *schema.ResourceData, meta in paramMap["Env"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumStaticResourceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -298,7 +301,7 @@ func dataSourceTencentCloudRumStaticResourceRead(d *schema.ResourceData, meta in d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_static_resource_test.go b/tencentcloud/services/rum/data_source_tc_rum_static_resource_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_static_resource_test.go rename to tencentcloud/services/rum/data_source_tc_rum_static_resource_test.go index 529656d109..cfd9ad3bbe 100644 --- a/tencentcloud/data_source_tc_rum_static_resource_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_static_resource_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumStaticResourceDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumStaticResourceDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_static_resource.static_resource"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_static_resource.static_resource"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_static_resource.static_resource", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_static_url.go b/tencentcloud/services/rum/data_source_tc_rum_static_url.go similarity index 92% rename from tencentcloud/data_source_tc_rum_static_url.go rename to tencentcloud/services/rum/data_source_tc_rum_static_url.go index c626e2a1fd..f1f6e5beb3 100644 --- a/tencentcloud/data_source_tc_rum_static_url.go +++ b/tencentcloud/services/rum/data_source_tc_rum_static_url.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumStaticUrl() *schema.Resource { +func DataSourceTencentCloudRumStaticUrl() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumStaticUrlRead, Schema: map[string]*schema.Schema{ @@ -167,12 +170,12 @@ func dataSourceTencentCloudRumStaticUrl() *schema.Resource { } func dataSourceTencentCloudRumStaticUrlRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_static_url.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_static_url.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -274,13 +277,13 @@ func dataSourceTencentCloudRumStaticUrlRead(d *schema.ResourceData, meta interfa paramMap["Env"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumStaticUrlByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -298,7 +301,7 @@ func dataSourceTencentCloudRumStaticUrlRead(d *schema.ResourceData, meta interfa d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_static_url_test.go b/tencentcloud/services/rum/data_source_tc_rum_static_url_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_static_url_test.go rename to tencentcloud/services/rum/data_source_tc_rum_static_url_test.go index de356ad102..16adf33c3b 100644 --- a/tencentcloud/data_source_tc_rum_static_url_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_static_url_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumStaticUrlDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumStaticUrlDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_static_url.static_url"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_static_url.static_url"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_static_url.static_url", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_taw_area.go b/tencentcloud/services/rum/data_source_tc_rum_taw_area.go similarity index 86% rename from tencentcloud/data_source_tc_rum_taw_area.go rename to tencentcloud/services/rum/data_source_tc_rum_taw_area.go index b236e41d1c..51b9db5994 100644 --- a/tencentcloud/data_source_tc_rum_taw_area.go +++ b/tencentcloud/services/rum/data_source_tc_rum_taw_area.go @@ -1,29 +1,19 @@ -/* -Use this data source to query detailed information of rum taw_area - -Example Usage - -```hcl -data "tencentcloud_rum_taw_area" "taw_area" { - area_ids = - area_keys = - area_statuses = -} -``` -*/ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumTawArea() *schema.Resource { +func DataSourceTencentCloudRumTawArea() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumTawAreaRead, Schema: map[string]*schema.Schema{ @@ -109,12 +99,12 @@ func dataSourceTencentCloudRumTawArea() *schema.Resource { } func dataSourceTencentCloudRumTawAreaRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_taw_area.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_taw_area.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("area_ids"); ok { @@ -142,13 +132,13 @@ func dataSourceTencentCloudRumTawAreaRead(d *schema.ResourceData, meta interface paramMap["AreaStatuses"] = areaList } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var areaSet []*rum.RumAreaInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { result, e := service.DescribeRumTawAreaByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } areaSet = result return nil @@ -202,7 +192,7 @@ func dataSourceTencentCloudRumTawAreaRead(d *schema.ResourceData, meta interface d.SetId(helper.DataResourceIdsHash(ids)) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), tmpList); e != nil { + if e := tccommon.WriteToFile(output.(string), tmpList); e != nil { return e } } diff --git a/tencentcloud/services/rum/data_source_tc_rum_taw_area.md b/tencentcloud/services/rum/data_source_tc_rum_taw_area.md new file mode 100644 index 0000000000..71cb55bca8 --- /dev/null +++ b/tencentcloud/services/rum/data_source_tc_rum_taw_area.md @@ -0,0 +1,11 @@ +Use this data source to query detailed information of rum taw_area + +Example Usage + +```hcl +data "tencentcloud_rum_taw_area" "taw_area" { + area_ids = + area_keys = + area_statuses = +} +``` diff --git a/tencentcloud/data_source_tc_rum_taw_area_test.go b/tencentcloud/services/rum/data_source_tc_rum_taw_area_test.go similarity index 60% rename from tencentcloud/data_source_tc_rum_taw_area_test.go rename to tencentcloud/services/rum/data_source_tc_rum_taw_area_test.go index 39673d4cb5..bae14937a1 100644 --- a/tencentcloud/data_source_tc_rum_taw_area_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_taw_area_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,13 +12,13 @@ func TestAccTencentCloudNeedFixRumTawAreaDataSource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumTawAreaDataSource, - Check: resource.ComposeTestCheckFunc(testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_taw_area.taw_area")), + Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_taw_area.taw_area")), }, }, }) diff --git a/tencentcloud/data_source_tc_rum_taw_instance.go b/tencentcloud/services/rum/data_source_tc_rum_taw_instance.go similarity index 92% rename from tencentcloud/data_source_tc_rum_taw_instance.go rename to tencentcloud/services/rum/data_source_tc_rum_taw_instance.go index f88025cae4..17c1850f43 100644 --- a/tencentcloud/data_source_tc_rum_taw_instance.go +++ b/tencentcloud/services/rum/data_source_tc_rum_taw_instance.go @@ -1,16 +1,19 @@ -package tencentcloud +package rum import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumTawInstance() *schema.Resource { +func DataSourceTencentCloudRumTawInstance() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumTawInstanceRead, Schema: map[string]*schema.Schema{ @@ -153,11 +156,11 @@ func dataSourceTencentCloudRumTawInstance() *schema.Resource { } func dataSourceTencentCloudRumTawInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_taw_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_taw_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("charge_statuses"); ok { @@ -210,13 +213,13 @@ func dataSourceTencentCloudRumTawInstanceRead(d *schema.ResourceData, meta inter paramMap["instance_ids"] = instanceIdsSet } - rumService := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + rumService := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var instanceSet []*rum.RumInstanceInfo - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := rumService.DescribeRumTawInstanceByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } instanceSet = results return nil @@ -290,7 +293,7 @@ func dataSourceTencentCloudRumTawInstanceRead(d *schema.ResourceData, meta inter output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), instanceSetList); e != nil { + if e := tccommon.WriteToFile(output.(string), instanceSetList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_taw_instance_test.go b/tencentcloud/services/rum/data_source_tc_rum_taw_instance_test.go similarity index 86% rename from tencentcloud/data_source_tc_rum_taw_instance_test.go rename to tencentcloud/services/rum/data_source_tc_rum_taw_instance_test.go index 30483c6012..bf4a64479c 100644 --- a/tencentcloud/data_source_tc_rum_taw_instance_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_taw_instance_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudRumTawInstanceDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceRumTawInstance, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_taw_instance.taw_instance"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_taw_instance.taw_instance"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_taw_instance.taw_instance", "instance_set.#"), resource.TestCheckResourceAttr("data.tencentcloud_rum_taw_instance.taw_instance", "instance_set.0.area_id", "1"), resource.TestCheckResourceAttr("data.tencentcloud_rum_taw_instance.taw_instance", "instance_set.0.charge_status", "1"), diff --git a/tencentcloud/data_source_tc_rum_web_vitals_page.go b/tencentcloud/services/rum/data_source_tc_rum_web_vitals_page.go similarity index 91% rename from tencentcloud/data_source_tc_rum_web_vitals_page.go rename to tencentcloud/services/rum/data_source_tc_rum_web_vitals_page.go index 08fd209248..dd06484de6 100644 --- a/tencentcloud/data_source_tc_rum_web_vitals_page.go +++ b/tencentcloud/services/rum/data_source_tc_rum_web_vitals_page.go @@ -1,15 +1,18 @@ -package tencentcloud +package rum import ( "context" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumWebVitalsPage() *schema.Resource { +func DataSourceTencentCloudRumWebVitalsPage() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumWebVitalsPageRead, Schema: map[string]*schema.Schema{ @@ -161,12 +164,12 @@ func dataSourceTencentCloudRumWebVitalsPage() *schema.Resource { } func dataSourceTencentCloudRumWebVitalsPageRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_web_vitals_page.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_web_vitals_page.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) var ( startTime int @@ -264,13 +267,13 @@ func dataSourceTencentCloudRumWebVitalsPageRead(d *schema.ResourceData, meta int paramMap["Env"] = helper.String(v.(string)) } - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var result *string - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { response, e := service.DescribeRumWebVitalsPageByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } result = response return nil @@ -288,7 +291,7 @@ func dataSourceTencentCloudRumWebVitalsPageRead(d *schema.ResourceData, meta int d.SetId(helper.DataResourceIdsHash([]string{strconv.Itoa(startTime), strconv.Itoa(endTime), ids})) output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), result); e != nil { + if e := tccommon.WriteToFile(output.(string), result); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_web_vitals_page_test.go b/tencentcloud/services/rum/data_source_tc_rum_web_vitals_page_test.go similarity index 75% rename from tencentcloud/data_source_tc_rum_web_vitals_page_test.go rename to tencentcloud/services/rum/data_source_tc_rum_web_vitals_page_test.go index 46a5fa5fe1..1d605a3f3e 100644 --- a/tencentcloud/data_source_tc_rum_web_vitals_page_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_web_vitals_page_test.go @@ -1,10 +1,12 @@ -package tencentcloud +package rum_test import ( "fmt" "testing" "time" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -17,14 +19,14 @@ func TestAccTencentCloudRumWebVitalsPageDataSource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: fmt.Sprintf(testAccRumWebVitalsPageDataSource, startTime, endTime), Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_web_vitals_page.web_vitals_page"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_web_vitals_page.web_vitals_page"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_web_vitals_page.web_vitals_page", "result"), ), }, diff --git a/tencentcloud/data_source_tc_rum_whitelist.go b/tencentcloud/services/rum/data_source_tc_rum_whitelist.go similarity index 84% rename from tencentcloud/data_source_tc_rum_whitelist.go rename to tencentcloud/services/rum/data_source_tc_rum_whitelist.go index 4e145dfe19..15e37e334e 100644 --- a/tencentcloud/data_source_tc_rum_whitelist.go +++ b/tencentcloud/services/rum/data_source_tc_rum_whitelist.go @@ -1,16 +1,19 @@ -package tencentcloud +package rum import ( "context" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func dataSourceTencentCloudRumWhitelist() *schema.Resource { +func DataSourceTencentCloudRumWhitelist() *schema.Resource { return &schema.Resource{ Read: dataSourceTencentCloudRumWhitelistRead, Schema: map[string]*schema.Schema{ @@ -75,24 +78,24 @@ func dataSourceTencentCloudRumWhitelist() *schema.Resource { } func dataSourceTencentCloudRumWhitelistRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("data_source.tencentcloud_rum_whitelist.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("data_source.tencentcloud_rum_whitelist.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) paramMap := make(map[string]interface{}) if v, ok := d.GetOk("instance_id"); ok { paramMap["instance_id"] = helper.String(v.(string)) } - rumService := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + rumService := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} var whitelistSet []*rum.Whitelist - err := resource.Retry(readRetryTimeout, func() *resource.RetryError { + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { results, e := rumService.DescribeRumWhitelistByFilter(ctx, paramMap) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } whitelistSet = results return nil @@ -140,7 +143,7 @@ func dataSourceTencentCloudRumWhitelistRead(d *schema.ResourceData, meta interfa output, ok := d.GetOk("result_output_file") if ok && output.(string) != "" { - if e := writeToFile(output.(string), whitelistSetList); e != nil { + if e := tccommon.WriteToFile(output.(string), whitelistSetList); e != nil { return e } } diff --git a/tencentcloud/data_source_tc_rum_whitelist_test.go b/tencentcloud/services/rum/data_source_tc_rum_whitelist_test.go similarity index 79% rename from tencentcloud/data_source_tc_rum_whitelist_test.go rename to tencentcloud/services/rum/data_source_tc_rum_whitelist_test.go index 4cafa93e6e..0caedb4385 100644 --- a/tencentcloud/data_source_tc_rum_whitelist_test.go +++ b/tencentcloud/services/rum/data_source_tc_rum_whitelist_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,13 +13,13 @@ func TestAccTencentCloudRumWhitelistDataSource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccDataSourceRumWhitelist, Check: resource.ComposeTestCheckFunc( - testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_whitelist.whitelist"), + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_rum_whitelist.whitelist"), resource.TestCheckResourceAttrSet("data.tencentcloud_rum_whitelist.whitelist", "whitelist_set.#"), resource.TestCheckResourceAttr("data.tencentcloud_rum_whitelist.whitelist", "whitelist_set.0.remark", "keep-whitelist"), resource.TestCheckResourceAttr("data.tencentcloud_rum_whitelist.whitelist", "whitelist_set.0.ttl", "100027012454"), diff --git a/tencentcloud/services/rum/extension_tags.go b/tencentcloud/services/rum/extension_tags.go new file mode 100644 index 0000000000..d3b19914ec --- /dev/null +++ b/tencentcloud/services/rum/extension_tags.go @@ -0,0 +1,3 @@ +package rum + +const DESCRIBE_TAGS_LIMIT = 20 diff --git a/tencentcloud/resource_tc_rum_instance_status_config.go b/tencentcloud/services/rum/resource_tc_rum_instance_status_config.go similarity index 71% rename from tencentcloud/resource_tc_rum_instance_status_config.go rename to tencentcloud/services/rum/resource_tc_rum_instance_status_config.go index 0933952dae..d52c89b607 100644 --- a/tencentcloud/resource_tc_rum_instance_status_config.go +++ b/tencentcloud/services/rum/resource_tc_rum_instance_status_config.go @@ -1,16 +1,18 @@ -package tencentcloud +package rum import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" ) -func resourceTencentCloudRumInstanceStatusConfig() *schema.Resource { +func ResourceTencentCloudRumInstanceStatusConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudRumInstanceStatusConfigCreate, Read: resourceTencentCloudRumInstanceStatusConfigRead, @@ -43,8 +45,8 @@ func resourceTencentCloudRumInstanceStatusConfig() *schema.Resource { } func resourceTencentCloudRumInstanceStatusConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_instance_status_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_instance_status_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var instanceId string if v, ok := d.GetOk("instance_id"); ok { @@ -57,14 +59,14 @@ func resourceTencentCloudRumInstanceStatusConfigCreate(d *schema.ResourceData, m } func resourceTencentCloudRumInstanceStatusConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_instance_status_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_instance_status_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() instanceStatusConfig, err := service.DescribeRumInstanceStatusConfigById(ctx, instanceId) @@ -90,10 +92,10 @@ func resourceTencentCloudRumInstanceStatusConfigRead(d *schema.ResourceData, met } func resourceTencentCloudRumInstanceStatusConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_instance_status_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_instance_status_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) instanceId := d.Id() @@ -105,10 +107,10 @@ func resourceTencentCloudRumInstanceStatusConfigUpdate(d *schema.ResourceData, m if operate == "resume" { request := rum.NewResumeInstanceRequest() request.InstanceId = &instanceId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().ResumeInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().ResumeInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -121,10 +123,10 @@ func resourceTencentCloudRumInstanceStatusConfigUpdate(d *schema.ResourceData, m } else if operate == "stop" { request := rum.NewStopInstanceRequest() request.InstanceId = &instanceId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().StopInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().StopInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -142,8 +144,8 @@ func resourceTencentCloudRumInstanceStatusConfigUpdate(d *schema.ResourceData, m } func resourceTencentCloudRumInstanceStatusConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_instance_status_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_instance_status_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_rum_instance_status_config_test.go b/tencentcloud/services/rum/resource_tc_rum_instance_status_config_test.go similarity index 88% rename from tencentcloud/resource_tc_rum_instance_status_config_test.go rename to tencentcloud/services/rum/resource_tc_rum_instance_status_config_test.go index c1a46f84fc..078d5f7a5e 100644 --- a/tencentcloud/resource_tc_rum_instance_status_config_test.go +++ b/tencentcloud/services/rum/resource_tc_rum_instance_status_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudRumInstanceStatusConfigResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumInstanceStatusConfig, @@ -41,7 +43,7 @@ func TestAccTencentCloudRumInstanceStatusConfigResource_basic(t *testing.T) { const testAccRumInstanceStatusConfigVar = ` variable "instance_id" { - default = "` + defaultRumInstanceId + `" + default = "` + tcacctest.DefaultRumInstanceId + `" } ` diff --git a/tencentcloud/resource_tc_rum_offline_log_config_attachment.go b/tencentcloud/services/rum/resource_tc_rum_offline_log_config_attachment.go similarity index 68% rename from tencentcloud/resource_tc_rum_offline_log_config_attachment.go rename to tencentcloud/services/rum/resource_tc_rum_offline_log_config_attachment.go index 569c60ecd5..fd0c629dc9 100644 --- a/tencentcloud/resource_tc_rum_offline_log_config_attachment.go +++ b/tencentcloud/services/rum/resource_tc_rum_offline_log_config_attachment.go @@ -1,4 +1,4 @@ -package tencentcloud +package rum import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudRumOfflineLogConfigAttachment() *schema.Resource { +func ResourceTencentCloudRumOfflineLogConfigAttachment() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudRumOfflineLogConfigAttachmentRead, Create: resourceTencentCloudRumOfflineLogConfigAttachmentCreate, @@ -45,10 +48,10 @@ func resourceTencentCloudRumOfflineLogConfigAttachment() *schema.Resource { } func resourceTencentCloudRumOfflineLogConfigAttachmentCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_offline_log_config_attachment.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_offline_log_config_attachment.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = rum.NewCreateOfflineLogConfigRequest() @@ -66,10 +69,10 @@ func resourceTencentCloudRumOfflineLogConfigAttachmentCreate(d *schema.ResourceD request.UniqueID = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().CreateOfflineLogConfig(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().CreateOfflineLogConfig(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -82,20 +85,20 @@ func resourceTencentCloudRumOfflineLogConfigAttachmentCreate(d *schema.ResourceD return err } - d.SetId(projectKey + FILED_SP + uniqueId) + d.SetId(projectKey + tccommon.FILED_SP + uniqueId) return resourceTencentCloudRumOfflineLogConfigAttachmentRead(d, meta) } func resourceTencentCloudRumOfflineLogConfigAttachmentRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_offline_log_config_attachment.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_offline_log_config_attachment.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -124,15 +127,15 @@ func resourceTencentCloudRumOfflineLogConfigAttachmentRead(d *schema.ResourceDat } func resourceTencentCloudRumOfflineLogConfigAttachmentDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_offline_log_config_attachment.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_offline_log_config_attachment.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_rum_offline_log_config_attachment_test.go b/tencentcloud/services/rum/resource_tc_rum_offline_log_config_attachment_test.go similarity index 74% rename from tencentcloud/resource_tc_rum_offline_log_config_attachment_test.go rename to tencentcloud/services/rum/resource_tc_rum_offline_log_config_attachment_test.go index 23f80dc487..5de4df79ca 100644 --- a/tencentcloud/resource_tc_rum_offline_log_config_attachment_test.go +++ b/tencentcloud/services/rum/resource_tc_rum_offline_log_config_attachment_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package rum_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcrum "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/rum" + "context" "fmt" "strings" @@ -14,8 +18,8 @@ import ( func TestAccTencentCloudRumOfflineLogConfigAttachmentResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckRumOfflineLogConfigDestroy, Steps: []resource.TestStep{ { @@ -37,14 +41,14 @@ func TestAccTencentCloudRumOfflineLogConfigAttachmentResource_basic(t *testing.T } func testAccCheckRumOfflineLogConfigDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := RumService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcrum.NewRumService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_rum_offline_log_config_attachment" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -64,22 +68,22 @@ func testAccCheckRumOfflineLogConfigDestroy(s *terraform.State) error { func testAccCheckRumOfflineLogConfigExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } projectKey := idSplit[0] uniqueId := idSplit[1] - service := RumService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcrum.NewRumService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) logConfig, err := service.DescribeRumOfflineLogConfigAttachment(ctx, projectKey, uniqueId) if logConfig == nil || len(logConfig.UniqueIDSet) < 1 { return fmt.Errorf("rum logConfig %s is not found", rs.Primary.ID) diff --git a/tencentcloud/resource_tc_rum_project.go b/tencentcloud/services/rum/resource_tc_rum_project.go similarity index 83% rename from tencentcloud/resource_tc_rum_project.go rename to tencentcloud/services/rum/resource_tc_rum_project.go index 7ab3b17bdc..1a94dc96ff 100644 --- a/tencentcloud/resource_tc_rum_project.go +++ b/tencentcloud/services/rum/resource_tc_rum_project.go @@ -1,4 +1,4 @@ -package tencentcloud +package rum import ( "context" @@ -6,13 +6,16 @@ import ( "log" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudRumProject() *schema.Resource { +func ResourceTencentCloudRumProject() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudRumProjectRead, Create: resourceTencentCloudRumProjectCreate, @@ -116,10 +119,10 @@ func resourceTencentCloudRumProject() *schema.Resource { } func resourceTencentCloudRumProjectCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_project.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_project.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = rum.NewCreateProjectRequest() @@ -159,10 +162,10 @@ func resourceTencentCloudRumProjectCreate(d *schema.ResourceData, meta interface request.Desc = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().CreateProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().CreateProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -183,13 +186,13 @@ func resourceTencentCloudRumProjectCreate(d *schema.ResourceData, meta interface } func resourceTencentCloudRumProjectRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_project.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_project.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} projectId := d.Id() @@ -268,10 +271,10 @@ func resourceTencentCloudRumProjectRead(d *schema.ResourceData, meta interface{} } func resourceTencentCloudRumProjectUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_project.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_project.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) request := rum.NewModifyProjectRequest() @@ -333,10 +336,10 @@ func resourceTencentCloudRumProjectUpdate(d *schema.ResourceData, meta interface } } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().ModifyProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().ModifyProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -353,13 +356,13 @@ func resourceTencentCloudRumProjectUpdate(d *schema.ResourceData, meta interface } func resourceTencentCloudRumProjectDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_project.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_project.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} projectId := d.Id() diff --git a/tencentcloud/resource_tc_rum_project_status_config.go b/tencentcloud/services/rum/resource_tc_rum_project_status_config.go similarity index 69% rename from tencentcloud/resource_tc_rum_project_status_config.go rename to tencentcloud/services/rum/resource_tc_rum_project_status_config.go index 39a42feb2d..e9a6af0fee 100644 --- a/tencentcloud/resource_tc_rum_project_status_config.go +++ b/tencentcloud/services/rum/resource_tc_rum_project_status_config.go @@ -1,4 +1,4 @@ -package tencentcloud +package rum import ( "context" @@ -6,12 +6,14 @@ import ( "log" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" ) -func resourceTencentCloudRumProjectStatusConfig() *schema.Resource { +func ResourceTencentCloudRumProjectStatusConfig() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudRumProjectStatusConfigCreate, Read: resourceTencentCloudRumProjectStatusConfigRead, @@ -37,8 +39,8 @@ func resourceTencentCloudRumProjectStatusConfig() *schema.Resource { } func resourceTencentCloudRumProjectStatusConfigCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_project_status_config.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_project_status_config.create")() + defer tccommon.InconsistentCheck(d, meta)() var projectId int if v, ok := d.GetOk("project_id"); ok { @@ -51,14 +53,14 @@ func resourceTencentCloudRumProjectStatusConfigCreate(d *schema.ResourceData, me } func resourceTencentCloudRumProjectStatusConfigRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_project_status_config.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_project_status_config.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} projectId := d.Id() @@ -81,10 +83,10 @@ func resourceTencentCloudRumProjectStatusConfigRead(d *schema.ResourceData, meta } func resourceTencentCloudRumProjectStatusConfigUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_project_status_config.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_project_status_config.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) projectId, _ := strconv.ParseInt(d.Id(), 10, 64) @@ -96,10 +98,10 @@ func resourceTencentCloudRumProjectStatusConfigUpdate(d *schema.ResourceData, me if operate == "resume" { request := rum.NewResumeProjectRequest() request.ProjectId = &projectId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().ResumeProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().ResumeProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -112,10 +114,10 @@ func resourceTencentCloudRumProjectStatusConfigUpdate(d *schema.ResourceData, me } else if operate == "stop" { request := rum.NewStopProjectRequest() request.ProjectId = &projectId - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().StopProject(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().StopProject(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -133,8 +135,8 @@ func resourceTencentCloudRumProjectStatusConfigUpdate(d *schema.ResourceData, me } func resourceTencentCloudRumProjectStatusConfigDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_project_status_config.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_project_status_config.delete")() + defer tccommon.InconsistentCheck(d, meta)() return nil } diff --git a/tencentcloud/resource_tc_rum_project_status_config_test.go b/tencentcloud/services/rum/resource_tc_rum_project_status_config_test.go similarity index 86% rename from tencentcloud/resource_tc_rum_project_status_config_test.go rename to tencentcloud/services/rum/resource_tc_rum_project_status_config_test.go index 108ef7a9cd..7a1cb3cf35 100644 --- a/tencentcloud/resource_tc_rum_project_status_config_test.go +++ b/tencentcloud/services/rum/resource_tc_rum_project_status_config_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -11,9 +13,9 @@ func TestAccTencentCloudRumProjectStatusConfigResource_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumProjectStatusConfig, @@ -39,7 +41,7 @@ func TestAccTencentCloudRumProjectStatusConfigResource_basic(t *testing.T) { const testAccRumProjectStatusConfigVar = ` variable "project_id" { - default = "` + defaultRumProjectId + `" + default = "` + tcacctest.DefaultRumProjectId + `" } ` diff --git a/tencentcloud/resource_tc_rum_project_test.go b/tencentcloud/services/rum/resource_tc_rum_project_test.go similarity index 72% rename from tencentcloud/resource_tc_rum_project_test.go rename to tencentcloud/services/rum/resource_tc_rum_project_test.go index 0eaf0be8dc..76cffab12f 100644 --- a/tencentcloud/resource_tc_rum_project_test.go +++ b/tencentcloud/services/rum/resource_tc_rum_project_test.go @@ -1,20 +1,25 @@ -package tencentcloud +package rum_test import ( "context" "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcrum "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/rum" ) // go test -i; go test -test.run TestAccTencentCloudRumProjectResource_basic -v func TestAccTencentCloudRumProjectResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckRumProjectDestroy, Steps: []resource.TestStep{ { @@ -23,7 +28,7 @@ func TestAccTencentCloudRumProjectResource_basic(t *testing.T) { testAccCheckRumProjectExists("tencentcloud_rum_project.project"), resource.TestCheckResourceAttr("tencentcloud_rum_project.project", "desc", "desc"), resource.TestCheckResourceAttr("tencentcloud_rum_project.project", "enable_url_group", "0"), - resource.TestCheckResourceAttr("tencentcloud_rum_project.project", "instance_id", defaultRumInstanceId), + resource.TestCheckResourceAttr("tencentcloud_rum_project.project", "instance_id", tcacctest.DefaultRumInstanceId), resource.TestCheckResourceAttr("tencentcloud_rum_project.project", "name", "name-2"), resource.TestCheckResourceAttr("tencentcloud_rum_project.project", "rate", "100"), resource.TestCheckResourceAttr("tencentcloud_rum_project.project", "type", "web"), @@ -40,9 +45,9 @@ func TestAccTencentCloudRumProjectResource_basic(t *testing.T) { } func testAccCheckRumProjectDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := RumService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcrum.NewRumService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_rum_project" { continue @@ -61,15 +66,15 @@ func testAccCheckRumProjectDestroy(s *terraform.State) error { func testAccCheckRumProjectExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - service := RumService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcrum.NewRumService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) project, err := service.DescribeRumProject(ctx, rs.Primary.ID) if project == nil { return fmt.Errorf("rum project %s is not found", rs.Primary.ID) @@ -84,7 +89,7 @@ func testAccCheckRumProjectExists(r string) resource.TestCheckFunc { const testAccRumProjectVar = ` variable "instance_id" { - default = "` + defaultRumInstanceId + `" + default = "` + tcacctest.DefaultRumInstanceId + `" } ` const testAccRumProject = testAccRumProjectVar + ` diff --git a/tencentcloud/resource_tc_rum_release_file.go b/tencentcloud/services/rum/resource_tc_rum_release_file.go similarity index 73% rename from tencentcloud/resource_tc_rum_release_file.go rename to tencentcloud/services/rum/resource_tc_rum_release_file.go index fac53ae591..c944805cdb 100644 --- a/tencentcloud/resource_tc_rum_release_file.go +++ b/tencentcloud/services/rum/resource_tc_rum_release_file.go @@ -1,20 +1,22 @@ /* Provides a resource to create a rum release_file -Example Usage +# Example Usage ```hcl -resource "tencentcloud_rum_release_file" "release_file" { - project_id = 123 - version = "1.0" - file_key = "120000-last-1632921299138-index.js.map" - file_name = "index.js.map" - file_hash = "b148c43fd81d845ba7cc6907928ce430" - release_file_id = 1 -} + + resource "tencentcloud_rum_release_file" "release_file" { + project_id = 123 + version = "1.0" + file_key = "120000-last-1632921299138-index.js.map" + file_name = "index.js.map" + file_hash = "b148c43fd81d845ba7cc6907928ce430" + release_file_id = 1 + } + ``` -Import +# Import rum release_file can be imported using the id, e.g. @@ -22,7 +24,7 @@ rum release_file can be imported using the id, e.g. terraform import tencentcloud_rum_release_file.release_file projectId#releaseFileId ``` */ -package tencentcloud +package rum import ( "context" @@ -31,13 +33,15 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudRumReleaseFile() *schema.Resource { +func ResourceTencentCloudRumReleaseFile() *schema.Resource { return &schema.Resource{ Create: resourceTencentCloudRumReleaseFileCreate, Read: resourceTencentCloudRumReleaseFileRead, @@ -87,10 +91,10 @@ func resourceTencentCloudRumReleaseFile() *schema.Resource { } func resourceTencentCloudRumReleaseFileCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_release_file.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_release_file.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = rum.NewCreateReleaseFileRequest() @@ -121,10 +125,10 @@ func resourceTencentCloudRumReleaseFileCreate(d *schema.ResourceData, meta inter } request.Files = append(request.Files, &releaseFile) - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().CreateReleaseFile(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().CreateReleaseFile(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) } @@ -135,22 +139,22 @@ func resourceTencentCloudRumReleaseFileCreate(d *schema.ResourceData, meta inter return err } - d.SetId(strconv.Itoa(projectID) + FILED_SP + strconv.Itoa(releaseFileId)) + d.SetId(strconv.Itoa(projectID) + tccommon.FILED_SP + strconv.Itoa(releaseFileId)) return resourceTencentCloudRumReleaseFileRead(d, meta) } func resourceTencentCloudRumReleaseFileRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_release_file.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_release_file.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -200,14 +204,14 @@ func resourceTencentCloudRumReleaseFileRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudRumReleaseFileDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_release_file.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_release_file.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} - idSplit := strings.Split(d.Id(), FILED_SP) + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_rum_release_file_test.go b/tencentcloud/services/rum/resource_tc_rum_release_file_test.go similarity index 83% rename from tencentcloud/resource_tc_rum_release_file_test.go rename to tencentcloud/services/rum/resource_tc_rum_release_file_test.go index fc6f0f5902..a420c5952c 100644 --- a/tencentcloud/resource_tc_rum_release_file_test.go +++ b/tencentcloud/services/rum/resource_tc_rum_release_file_test.go @@ -1,8 +1,10 @@ -package tencentcloud +package rum_test import ( "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" ) @@ -10,9 +12,9 @@ func TestAccTencentCloudNeedFixRumReleaseFileResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ PreCheck: func() { - testAccPreCheck(t) + tcacctest.AccPreCheck(t) }, - Providers: testAccProviders, + Providers: tcacctest.AccProviders, Steps: []resource.TestStep{ { Config: testAccRumReleaseFile, diff --git a/tencentcloud/resource_tc_rum_taw_instance.go b/tencentcloud/services/rum/resource_tc_rum_taw_instance.go similarity index 80% rename from tencentcloud/resource_tc_rum_taw_instance.go rename to tencentcloud/services/rum/resource_tc_rum_taw_instance.go index 8662896708..6e381669a0 100644 --- a/tencentcloud/resource_tc_rum_taw_instance.go +++ b/tencentcloud/services/rum/resource_tc_rum_taw_instance.go @@ -1,17 +1,20 @@ -package tencentcloud +package rum import ( "context" "fmt" "log" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudRumTawInstance() *schema.Resource { +func ResourceTencentCloudRumTawInstance() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudRumTawInstanceRead, Create: resourceTencentCloudRumTawInstanceCreate, @@ -109,10 +112,10 @@ func resourceTencentCloudRumTawInstance() *schema.Resource { } func resourceTencentCloudRumTawInstanceCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_taw_instance.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_taw_instance.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = rum.NewCreateTawInstanceRequest() @@ -166,10 +169,10 @@ func resourceTencentCloudRumTawInstanceCreate(d *schema.ResourceData, meta inter // request.BuyingChannel = helper.String(v.(string)) // } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().CreateTawInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().CreateTawInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -187,10 +190,10 @@ func resourceTencentCloudRumTawInstanceCreate(d *schema.ResourceData, meta inter d.SetId(instanceId) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) if tags := helper.GetTags(d, "tags"); len(tags) > 0 { - tagService := TagService{client: meta.(*TencentCloudClient).apiV3Conn} - region := meta.(*TencentCloudClient).apiV3Conn.Region + tagService := TagService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region resourceName := fmt.Sprintf("qcs::rum:%s:uin/:Instance/%s", region, instanceId) if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil { return err @@ -201,13 +204,13 @@ func resourceTencentCloudRumTawInstanceCreate(d *schema.ResourceData, meta inter } func resourceTencentCloudRumTawInstanceRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_taw_instance.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_taw_instance.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() @@ -287,7 +290,7 @@ func resourceTencentCloudRumTawInstanceRead(d *schema.ResourceData, meta interfa _ = d.Set("created_at", tawInstance.CreatedAt) } - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} tags, err := tagService.DescribeResourceTags(ctx, "rum", "Instance", tcClient.Region, d.Id()) if err != nil { @@ -299,11 +302,11 @@ func resourceTencentCloudRumTawInstanceRead(d *schema.ResourceData, meta interfa } func resourceTencentCloudRumTawInstanceUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_taw_instance.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_taw_instance.update")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) request := rum.NewModifyInstanceRequest() @@ -331,10 +334,10 @@ func resourceTencentCloudRumTawInstanceUpdate(d *schema.ResourceData, meta inter request.InstanceDesc = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().ModifyInstance(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().ModifyInstance(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -348,11 +351,11 @@ func resourceTencentCloudRumTawInstanceUpdate(d *schema.ResourceData, meta inter } if d.HasChange("tags") { - tcClient := meta.(*TencentCloudClient).apiV3Conn + tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn() tagService := &TagService{client: tcClient} oldTags, newTags := d.GetChange("tags") replaceTags, deleteTags := diffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{})) - resourceName := BuildTagResourceName("rum", "Instance", tcClient.Region, d.Id()) + resourceName := tccommon.BuildTagResourceName("rum", "Instance", tcClient.Region, d.Id()) if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil { return err } @@ -362,13 +365,13 @@ func resourceTencentCloudRumTawInstanceUpdate(d *schema.ResourceData, meta inter } func resourceTencentCloudRumTawInstanceDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_taw_instance.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_taw_instance.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} instanceId := d.Id() diff --git a/tencentcloud/resource_tc_rum_taw_instance_test.go b/tencentcloud/services/rum/resource_tc_rum_taw_instance_test.go similarity index 76% rename from tencentcloud/resource_tc_rum_taw_instance_test.go rename to tencentcloud/services/rum/resource_tc_rum_taw_instance_test.go index a7a1569912..acd461274f 100644 --- a/tencentcloud/resource_tc_rum_taw_instance_test.go +++ b/tencentcloud/services/rum/resource_tc_rum_taw_instance_test.go @@ -1,20 +1,25 @@ -package tencentcloud +package rum_test import ( "context" "fmt" "testing" + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + + svcrum "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/rum" ) // go test -i; go test -test.run TestAccTencentCloudRumTawInstanceResource_basic -v func TestAccTencentCloudRumTawInstanceResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckRumTawInstanceDestroy, Steps: []resource.TestStep{ { @@ -41,9 +46,9 @@ func TestAccTencentCloudRumTawInstanceResource_basic(t *testing.T) { } func testAccCheckRumTawInstanceDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := RumService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcrum.NewRumService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_rum_taw_instance" { continue @@ -62,15 +67,15 @@ func testAccCheckRumTawInstanceDestroy(s *terraform.State) error { func testAccCheckRumTawInstanceExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - service := RumService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcrum.NewRumService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) instance, err := service.DescribeRumTawInstance(ctx, rs.Primary.ID) if instance == nil { return fmt.Errorf("rum instance %s is not found", rs.Primary.ID) diff --git a/tencentcloud/resource_tc_rum_whitelist.go b/tencentcloud/services/rum/resource_tc_rum_whitelist.go similarity index 76% rename from tencentcloud/resource_tc_rum_whitelist.go rename to tencentcloud/services/rum/resource_tc_rum_whitelist.go index 2671305ad3..7ffbbedeb1 100644 --- a/tencentcloud/resource_tc_rum_whitelist.go +++ b/tencentcloud/services/rum/resource_tc_rum_whitelist.go @@ -1,4 +1,4 @@ -package tencentcloud +package rum import ( "context" @@ -7,13 +7,16 @@ import ( "strconv" "strings" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) -func resourceTencentCloudRumWhitelist() *schema.Resource { +func ResourceTencentCloudRumWhitelist() *schema.Resource { return &schema.Resource{ Read: resourceTencentCloudRumWhitelistRead, Create: resourceTencentCloudRumWhitelistCreate, @@ -75,10 +78,10 @@ func resourceTencentCloudRumWhitelist() *schema.Resource { } func resourceTencentCloudRumWhitelistCreate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_whitelist.create")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_whitelist.create")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) + logId := tccommon.GetLogId(tccommon.ContextNil) var ( request = rum.NewCreateWhitelistRequest() @@ -104,10 +107,10 @@ func resourceTencentCloudRumWhitelistCreate(d *schema.ResourceData, meta interfa request.Aid = helper.String(v.(string)) } - err := resource.Retry(writeRetryTimeout, func() *resource.RetryError { - result, e := meta.(*TencentCloudClient).apiV3Conn.UseRumClient().CreateWhitelist(request) + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseRumClient().CreateWhitelist(request) if e != nil { - return retryError(e) + return tccommon.RetryError(e) } else { log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString()) @@ -123,20 +126,20 @@ func resourceTencentCloudRumWhitelistCreate(d *schema.ResourceData, meta interfa wid = strconv.Itoa(int(*response.Response.ID)) - d.SetId(instanceID + FILED_SP + wid) + d.SetId(instanceID + tccommon.FILED_SP + wid) return resourceTencentCloudRumWhitelistRead(d, meta) } func resourceTencentCloudRumWhitelistRead(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_whitelist.read")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_whitelist.read")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } @@ -190,8 +193,8 @@ func resourceTencentCloudRumWhitelistRead(d *schema.ResourceData, meta interface } func resourceTencentCloudRumWhitelistUpdate(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_whitelist.update")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_whitelist.update")() + defer tccommon.InconsistentCheck(d, meta)() if d.HasChange("instance_id") { return fmt.Errorf("`instance_id` do not support change now.") @@ -213,15 +216,15 @@ func resourceTencentCloudRumWhitelistUpdate(d *schema.ResourceData, meta interfa } func resourceTencentCloudRumWhitelistDelete(d *schema.ResourceData, meta interface{}) error { - defer logElapsed("resource.tencentcloud_rum_whitelist.delete")() - defer inconsistentCheck(d, meta)() + defer tccommon.LogElapsed("resource.tencentcloud_rum_whitelist.delete")() + defer tccommon.InconsistentCheck(d, meta)() - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) - service := RumService{client: meta.(*TencentCloudClient).apiV3Conn} + service := RumService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} - idSplit := strings.Split(d.Id(), FILED_SP) + idSplit := strings.Split(d.Id(), tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", d.Id()) } diff --git a/tencentcloud/resource_tc_rum_whitelist_test.go b/tencentcloud/services/rum/resource_tc_rum_whitelist_test.go similarity index 69% rename from tencentcloud/resource_tc_rum_whitelist_test.go rename to tencentcloud/services/rum/resource_tc_rum_whitelist_test.go index 3c9c9eff80..32e24a6d0d 100644 --- a/tencentcloud/resource_tc_rum_whitelist_test.go +++ b/tencentcloud/services/rum/resource_tc_rum_whitelist_test.go @@ -1,6 +1,10 @@ -package tencentcloud +package rum_test import ( + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + svcrum "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/rum" + "context" "fmt" "strings" @@ -14,15 +18,15 @@ import ( func TestAccTencentCloudRumWhitelistResource_basic(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, + PreCheck: func() { tcacctest.AccPreCheck(t) }, + Providers: tcacctest.AccProviders, CheckDestroy: testAccCheckRumWhitelistDestroy, Steps: []resource.TestStep{ { Config: testAccRumWhitelist, Check: resource.ComposeTestCheckFunc( testAccCheckRumWhitelistExists("tencentcloud_rum_whitelist.whitelist"), - resource.TestCheckResourceAttr("tencentcloud_rum_whitelist.whitelist", "instance_id", defaultRumInstanceId), + resource.TestCheckResourceAttr("tencentcloud_rum_whitelist.whitelist", "instance_id", tcacctest.DefaultRumInstanceId), resource.TestCheckResourceAttr("tencentcloud_rum_whitelist.whitelist", "remark", "white list remark"), resource.TestCheckResourceAttr("tencentcloud_rum_whitelist.whitelist", "whitelist_uin", "20221122"), ), @@ -37,15 +41,15 @@ func TestAccTencentCloudRumWhitelistResource_basic(t *testing.T) { } func testAccCheckRumWhitelistDestroy(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) - service := RumService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) + service := svcrum.NewRumService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) for _, rs := range s.RootModule().Resources { if rs.Type != "tencentcloud_rum_project" { continue } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } @@ -65,21 +69,21 @@ func testAccCheckRumWhitelistDestroy(s *terraform.State) error { func testAccCheckRumWhitelistExists(r string) resource.TestCheckFunc { return func(s *terraform.State) error { - logId := getLogId(contextNil) - ctx := context.WithValue(context.TODO(), logIdKey, logId) + logId := tccommon.GetLogId(tccommon.ContextNil) + ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId) rs, ok := s.RootModule().Resources[r] if !ok { return fmt.Errorf("resource %s is not found", r) } - idSplit := strings.Split(rs.Primary.ID, FILED_SP) + idSplit := strings.Split(rs.Primary.ID, tccommon.FILED_SP) if len(idSplit) != 2 { return fmt.Errorf("id is broken,%s", rs.Primary.ID) } instanceID := idSplit[0] wid := idSplit[1] - service := RumService{client: testAccProvider.Meta().(*TencentCloudClient).apiV3Conn} + service := svcrum.NewRumService(tcacctest.AccProvider.Meta().(tccommon.ProviderMeta).GetAPIV3Conn()) whitelist, err := service.DescribeRumWhitelist(ctx, instanceID, wid) if whitelist == nil { return fmt.Errorf("rum whitelist %s is not found", rs.Primary.ID) @@ -94,7 +98,7 @@ func testAccCheckRumWhitelistExists(r string) resource.TestCheckFunc { const testAccRumWhitelistVar = ` variable "instance_id" { - default = "` + defaultRumInstanceId + `" + default = "` + tcacctest.DefaultRumInstanceId + `" } ` diff --git a/tencentcloud/service_tencentcloud_rum.go b/tencentcloud/services/rum/service_tencentcloud_rum.go similarity index 97% rename from tencentcloud/service_tencentcloud_rum.go rename to tencentcloud/services/rum/service_tencentcloud_rum.go index dcc88b9403..e98ba62004 100644 --- a/tencentcloud/service_tencentcloud_rum.go +++ b/tencentcloud/services/rum/service_tencentcloud_rum.go @@ -1,23 +1,30 @@ -package tencentcloud +package rum import ( "context" "log" "strconv" + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" ) +func NewRumService(client *connectivity.TencentCloudClient) RumService { + return RumService{client: client} +} + type RumService struct { client *connectivity.TencentCloudClient } func (me *RumService) DescribeRumTawInstance(ctx context.Context, instanceId string) (tawInstance *rum.RumInstanceInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeTawInstancesRequest() ) @@ -53,7 +60,7 @@ func (me *RumService) DescribeRumTawInstance(ctx context.Context, instanceId str } func (me *RumService) DeleteRumTawInstanceById(ctx context.Context, instanceId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := rum.NewDeleteInstanceRequest() @@ -80,7 +87,7 @@ func (me *RumService) DeleteRumTawInstanceById(ctx context.Context, instanceId s func (me *RumService) DescribeRumProject(ctx context.Context, id string) (project *rum.RumProject, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeProjectsRequest() ) @@ -138,7 +145,7 @@ func (me *RumService) DescribeRumProject(ctx context.Context, id string) (projec } func (me *RumService) DeleteRumProjectById(ctx context.Context, id string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := rum.NewDeleteProjectRequest() @@ -172,7 +179,7 @@ func (me *RumService) DeleteRumProjectById(ctx context.Context, id string) (errR func (me *RumService) DescribeRumWhitelist(ctx context.Context, instanceID, id string) (whitelist *rum.Whitelist, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeWhitelistsRequest() ) @@ -208,7 +215,7 @@ func (me *RumService) DescribeRumWhitelist(ctx context.Context, instanceID, id s } func (me *RumService) DeleteRumWhitelistById(ctx context.Context, instanceID, id string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := rum.NewDeleteWhitelistRequest() @@ -236,7 +243,7 @@ func (me *RumService) DeleteRumWhitelistById(ctx context.Context, instanceID, id func (me *RumService) DescribeRumOfflineLogConfigAttachment(ctx context.Context, projectKey, uniqueId string) (offlineLogConfig *rum.DescribeOfflineLogConfigsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeOfflineLogConfigsRequest() ) @@ -262,7 +269,7 @@ func (me *RumService) DescribeRumOfflineLogConfigAttachment(ctx context.Context, } func (me *RumService) DeleteRumOfflineLogConfigAttachmentById(ctx context.Context, projectKey, uniqueId string) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := rum.NewDeleteOfflineLogConfigRequest() @@ -290,7 +297,7 @@ func (me *RumService) DeleteRumOfflineLogConfigAttachmentById(ctx context.Contex func (me *RumService) DescribeRumOfflineLogConfigByFilter(ctx context.Context, param map[string]interface{}) (configs *rum.DescribeOfflineLogConfigsResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeOfflineLogConfigsRequest() ) @@ -327,7 +334,7 @@ func (me *RumService) DescribeRumOfflineLogConfigByFilter(ctx context.Context, p func (me *RumService) DescribeRumProjectByFilter(ctx context.Context, param map[string]interface{}) (project []*rum.RumProject, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeProjectsRequest() ) @@ -382,7 +389,7 @@ func (me *RumService) DescribeRumProjectByFilter(ctx context.Context, param map[ func (me *RumService) DescribeRumWhitelistByFilter(ctx context.Context, param map[string]interface{}) (whitelist []*rum.Whitelist, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeWhitelistsRequest() ) @@ -418,7 +425,7 @@ func (me *RumService) DescribeRumWhitelistByFilter(ctx context.Context, param ma func (me *RumService) DescribeRumTawInstanceByFilter(ctx context.Context, param map[string]interface{}) (tawInstance []*rum.RumInstanceInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeTawInstancesRequest() ) @@ -485,7 +492,7 @@ func (me *RumService) DescribeRumTawInstanceByFilter(ctx context.Context, param func (me *RumService) DescribeRumCustomUrlByFilter(ctx context.Context, param map[string]interface{}) (customUrl *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataCustomUrlRequest() ) @@ -586,7 +593,7 @@ func (me *RumService) DescribeRumCustomUrlByFilter(ctx context.Context, param ma func (me *RumService) DescribeRumSetUrlStatisticsByFilter(ctx context.Context, param map[string]interface{}) (setUrlStatistics *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataSetUrlStatisticsRequest() ) @@ -687,7 +694,7 @@ func (me *RumService) DescribeRumSetUrlStatisticsByFilter(ctx context.Context, p func (me *RumService) DescribeRumEventUrlByFilter(ctx context.Context, param map[string]interface{}) (eventUrl *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataEventUrlRequest() ) @@ -786,7 +793,7 @@ func (me *RumService) DescribeRumEventUrlByFilter(ctx context.Context, param map func (me *RumService) DescribeRumFetchUrlByFilter(ctx context.Context, param map[string]interface{}) (fetchUrl *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataFetchUrlRequest() ) @@ -895,7 +902,7 @@ func (me *RumService) DescribeRumFetchUrlByFilter(ctx context.Context, param map } func (me *RumService) DescribeRumFetchUrlInfoByFilter(ctx context.Context, param map[string]interface{}) (fetchUrlInfo *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataFetchUrlInfoRequest() ) @@ -995,7 +1002,7 @@ func (me *RumService) DescribeRumFetchUrlInfoByFilter(ctx context.Context, param } func (me *RumService) DescribeRumLogUrlInfoByFilter(ctx context.Context, param map[string]interface{}) (logUrlInfo *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataLogUrlInfoRequest() ) @@ -1035,7 +1042,7 @@ func (me *RumService) DescribeRumLogUrlInfoByFilter(ctx context.Context, param m } func (me *RumService) DescribeRumLogUrlStatisticsByFilter(ctx context.Context, param map[string]interface{}) (logUrlStatistics *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataLogUrlStatisticsRequest() ) @@ -1129,7 +1136,7 @@ func (me *RumService) DescribeRumLogUrlStatisticsByFilter(ctx context.Context, p } func (me *RumService) DescribeRumPerformancePageByFilter(ctx context.Context, param map[string]interface{}) (performancePage *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataPerformancePageRequest() ) @@ -1229,7 +1236,7 @@ func (me *RumService) DescribeRumPerformancePageByFilter(ctx context.Context, pa } func (me *RumService) DescribeRumPvUrlInfoByFilter(ctx context.Context, param map[string]interface{}) (pvUrlInfo *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataPvUrlInfoRequest() ) @@ -1323,7 +1330,7 @@ func (me *RumService) DescribeRumPvUrlInfoByFilter(ctx context.Context, param ma } func (me *RumService) DescribeRumPvUrlStatisticsByFilter(ctx context.Context, param map[string]interface{}) (pvUrlStatistics *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataPvUrlStatisticsRequest() ) @@ -1420,7 +1427,7 @@ func (me *RumService) DescribeRumPvUrlStatisticsByFilter(ctx context.Context, pa } func (me *RumService) DescribeRumReportCountByFilter(ctx context.Context, param map[string]interface{}) (reportCount *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataReportCountRequest() ) @@ -1467,7 +1474,7 @@ func (me *RumService) DescribeRumReportCountByFilter(ctx context.Context, param func (me *RumService) DescribeRumStaticProjectByFilter(ctx context.Context, param map[string]interface{}) (staticProject *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataStaticProjectRequest() ) @@ -1567,7 +1574,7 @@ func (me *RumService) DescribeRumStaticProjectByFilter(ctx context.Context, para } func (me *RumService) DescribeRumStaticResourceByFilter(ctx context.Context, param map[string]interface{}) (staticResource *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataStaticResourceRequest() ) @@ -1667,7 +1674,7 @@ func (me *RumService) DescribeRumStaticResourceByFilter(ctx context.Context, par } func (me *RumService) DescribeRumStaticUrlByFilter(ctx context.Context, param map[string]interface{}) (staticUrl *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataStaticUrlRequest() ) @@ -1767,7 +1774,7 @@ func (me *RumService) DescribeRumStaticUrlByFilter(ctx context.Context, param ma } func (me *RumService) DescribeRumWebVitalsPageByFilter(ctx context.Context, param map[string]interface{}) (webVitalsPage *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeDataWebVitalsPageRequest() ) @@ -1865,7 +1872,7 @@ func (me *RumService) DescribeRumWebVitalsPageByFilter(ctx context.Context, para func (me *RumService) DescribeRumGroupLogByFilter(ctx context.Context, param map[string]interface{}) (groupLog *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeRumGroupLogRequest() ) @@ -1923,7 +1930,7 @@ func (me *RumService) DescribeRumGroupLogByFilter(ctx context.Context, param map func (me *RumService) DescribeRumLogListByFilter(ctx context.Context, param map[string]interface{}) (logList *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeRumLogListRequest() ) @@ -1977,7 +1984,7 @@ func (me *RumService) DescribeRumLogListByFilter(ctx context.Context, param map[ } func (me *RumService) DescribeRumLogStatsLogListByFilter(ctx context.Context, param map[string]interface{}) (logStatsLogList *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeRumStatsLogListRequest() ) @@ -2020,7 +2027,7 @@ func (me *RumService) DescribeRumLogStatsLogListByFilter(ctx context.Context, pa } func (me *RumService) DescribeRumSignByFilter(ctx context.Context, param map[string]interface{}) (sign *rum.DescribeReleaseFileSignResponseParams, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeReleaseFileSignRequest() ) @@ -2057,7 +2064,7 @@ func (me *RumService) DescribeRumSignByFilter(ctx context.Context, param map[str } func (me *RumService) DescribeRumScoresByFilter(ctx context.Context, param map[string]interface{}) (scores []*rum.ScoreInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeScoresRequest() ) @@ -2101,7 +2108,7 @@ func (me *RumService) DescribeRumScoresByFilter(ctx context.Context, param map[s func (me *RumService) DescribeRumTawAreaByFilter(ctx context.Context, param map[string]interface{}) (tawArea []*rum.RumAreaInfo, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeTawAreasRequest() ) @@ -2154,7 +2161,7 @@ func (me *RumService) DescribeRumTawAreaByFilter(ctx context.Context, param map[ } func (me *RumService) DescribeRumInstanceStatusConfigById(ctx context.Context, instanceId string) (instanceStatusConfig *rum.RumInstanceInfo, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := rum.NewDescribeTawInstancesRequest() request.Filters = append( @@ -2189,7 +2196,7 @@ func (me *RumService) DescribeRumInstanceStatusConfigById(ctx context.Context, i } func (me *RumService) DescribeRumProjectStatusConfigById(ctx context.Context, projectId string) (projectStatusConfig *rum.RumProject, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := rum.NewDescribeProjectsRequest() request.Filters = append( @@ -2232,7 +2239,7 @@ func (me *RumService) DescribeRumProjectStatusConfigById(ctx context.Context, pr } func (me *RumService) DescribeRumReleaseFileById(ctx context.Context, projectID, releaseFileId int64) (releaseFile *rum.ReleaseFile, errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := rum.NewDescribeReleaseFilesRequest() request.ProjectID = &projectID @@ -2267,7 +2274,7 @@ func (me *RumService) DescribeRumReleaseFileById(ctx context.Context, projectID, } func (me *RumService) DeleteRumReleaseFileById(ctx context.Context, releaseFileId int64) (errRet error) { - logId := getLogId(ctx) + logId := tccommon.GetLogId(ctx) request := rum.NewDeleteReleaseFileRequest() request.ID = &releaseFileId @@ -2292,7 +2299,7 @@ func (me *RumService) DeleteRumReleaseFileById(ctx context.Context, releaseFileI func (me *RumService) DescribeRumLogExportByFilter(ctx context.Context, param map[string]interface{}) (logExport *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeRumLogExportRequest() ) @@ -2342,7 +2349,7 @@ func (me *RumService) DescribeRumLogExportByFilter(ctx context.Context, param ma func (me *RumService) DescribeRumLogExportListByFilter(ctx context.Context, param map[string]interface{}) (logExportList *string, errRet error) { var ( - logId = getLogId(ctx) + logId = tccommon.GetLogId(ctx) request = rum.NewDescribeRumLogExportsRequest() ) diff --git a/tencentcloud/services/rum/service_tencentcloud_tag.go b/tencentcloud/services/rum/service_tencentcloud_tag.go new file mode 100644 index 0000000000..8d350939d3 --- /dev/null +++ b/tencentcloud/services/rum/service_tencentcloud_tag.go @@ -0,0 +1,415 @@ +package rum + +import ( + "context" + "log" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/pkg/errors" + tag "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tag/v20180813" + + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" + "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit" +) + +//internal version: replace tagFmt begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace tagFmt end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +type TagService struct { + client *connectivity.TencentCloudClient +} + +func (me *TagService) ModifyTags(ctx context.Context, resourceName string, replaceTags map[string]string, deleteKeys []string) error { + request := tag.NewModifyResourceTagsRequest() + request.Resource = &resourceName + if len(replaceTags) > 0 { + request.ReplaceTags = make([]*tag.Tag, 0, len(replaceTags)) + for k, v := range replaceTags { + key := k + value := v + replaceTag := &tag.Tag{ + TagKey: &key, + TagValue: &value, + } + request.ReplaceTags = append(request.ReplaceTags, replaceTag) + } + } + if len(deleteKeys) > 0 { + request.DeleteTags = make([]*tag.TagKeyObject, 0, len(deleteKeys)) + for _, v := range deleteKeys { + key := v + deleteKey := &tag.TagKeyObject{ + TagKey: &key, + } + request.DeleteTags = append(request.DeleteTags, deleteKey) + } + } + + return resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + if _, err := me.client.UseTagClient().ModifyResourceTags(request); err != nil { + return tccommon.RetryError(errors.WithStack(err)) + } + + return nil + }) +} + +func (me *TagService) DescribeResourceTags(ctx context.Context, serviceType, resourceType, region, resourceId string) (tags map[string]string, err error) { + request := tag.NewDescribeResourceTagsByResourceIdsRequest() + request.ServiceType = &serviceType + request.ResourcePrefix = &resourceType + request.ResourceRegion = ®ion + request.ResourceIds = []*string{&resourceId} + request.Limit = helper.IntUint64(DESCRIBE_TAGS_LIMIT) + + var offset uint64 + request.Offset = &offset + + // for run loop at least once + count := DESCRIBE_TAGS_LIMIT + for count == DESCRIBE_TAGS_LIMIT { + if err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DescribeResourceTagsByResourceIds(request) + if err != nil { + count = 0 + + return tccommon.RetryError(errors.WithStack(err)) + } + + allTags := response.Response.Tags + count = len(allTags) + + for _, t := range allTags { + if *t.ResourceId != resourceId { + continue + } + if tags == nil { + tags = make(map[string]string) + } + + tags[*t.TagKey] = *t.TagValue + } + + return nil + }); err != nil { + return nil, err + } + + offset += uint64(count) + } + + return +} + +//internal version: replace waitTag begin, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. +//internal version: replace waitTag end, please do not modify this annotation and refrain from inserting any code between the beginning and end lines of the annotation. + +func diffTags(oldTags, newTags map[string]interface{}) (replaceTags map[string]string, deleteTags []string) { + replaceTags = make(map[string]string) + deleteTags = make([]string, 0) + for k, v := range newTags { + _, ok := oldTags[k] + if !ok || oldTags[k].(string) != v.(string) { + replaceTags[k] = v.(string) + } + } + for k := range oldTags { + _, ok := newTags[k] + if !ok { + deleteTags = append(deleteTags, k) + } + } + return +} + +func (me *TagService) DescribeProjectById(ctx context.Context, projectId uint64) (project *tag.Project, disable *uint64, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDescribeProjectsRequest() + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + // query enable project + request.AllList = helper.Uint64(0) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + instances := make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(0) + break + } + } + + if project != nil { + return + } + + // query all project + offset = 0 + limit = 20 + + request.AllList = helper.Uint64(1) + instances = make([]*tag.Project, 0) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + instances = append(instances, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + offset += limit + } + + for _, instance := range instances { + if *instance.ProjectId == projectId { + project = instance + disable = helper.Uint64(1) + break + } + } + + return +} + +func (me *TagService) DisableProjectById(ctx context.Context, projectId uint64) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewUpdateProjectRequest() + request.ProjectId = &projectId + request.Disable = helper.Int64(1) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().UpdateProject(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} + +func (me *TagService) DescribeProjects(ctx context.Context, param map[string]interface{}) (project []*tag.Project, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = tag.NewDescribeProjectsRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "AllList" { + request.AllList = v.(*uint64) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset uint64 = 0 + limit uint64 = 20 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UseTagClient().DescribeProjects(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.Projects) < 1 { + break + } + project = append(project, response.Response.Projects...) + if len(response.Response.Projects) < int(limit) { + break + } + + offset += limit + } + + return +} + +func (me *TagService) DescribeTagResourceById(ctx context.Context, tagKey string, tagValue string) (tagRes *tag.Tag, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetTagsRequest() + request.TagKeys = []*string{&tagKey} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetTags(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.Tags) < 1 { + return + } + for _, v := range response.Response.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + tagRes = v + } + } + return +} + +func (me *TagService) DeleteTagResourceById(ctx context.Context, tagKey string, tagValue string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteTagRequest() + request.TagKey = &tagKey + request.TagValue = &tagValue + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +} +func (me *TagService) DescribeTagTagAttachmentById(ctx context.Context, tagKey string, tagValue string, resource string) (resourceTag *tag.ResourceTagMapping, errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewGetResourcesRequest() + request.ResourceList = []*string{&resource} + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().GetResources(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || response.Response == nil || len(response.Response.ResourceTagMappingList) < 1 { + return + } + for _, resourceTagMap := range response.Response.ResourceTagMappingList { + if *resourceTagMap.Resource == resource { + for _, v := range resourceTagMap.Tags { + if *v.TagKey == tagKey && *v.TagValue == tagValue { + resourceTag = &tag.ResourceTagMapping{ + Resource: &resource, + Tags: []*tag.Tag{ + {TagKey: v.TagKey, TagValue: &tagValue}, + }, + } + } + } + } + } + return +} + +func (me *TagService) DeleteTagTagAttachmentById(ctx context.Context, tagKey string, resource string) (errRet error) { + logId := tccommon.GetLogId(ctx) + + request := tag.NewDeleteResourceTagRequest() + request.TagKey = &tagKey + request.Resource = &resource + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + ratelimit.Check(request.GetAction()) + + response, err := me.client.UseTagClient().DeleteResourceTag(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + return +}