alicloud/resource_alicloud_arms_synthetic_task.go (1,881 lines of code) (raw):

// Package alicloud. This file is generated automatically. Please do not modify it manually, thank you! package alicloud import ( "fmt" "log" "time" "github.com/PaesslerAG/jsonpath" "github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) func resourceAliCloudArmsSyntheticTask() *schema.Resource { return &schema.Resource{ Create: resourceAliCloudArmsSyntheticTaskCreate, Read: resourceAliCloudArmsSyntheticTaskRead, Update: resourceAliCloudArmsSyntheticTaskUpdate, Delete: resourceAliCloudArmsSyntheticTaskDelete, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, }, Timeouts: &schema.ResourceTimeout{ Create: schema.DefaultTimeout(5 * time.Minute), Update: schema.DefaultTimeout(5 * time.Minute), Delete: schema.DefaultTimeout(5 * time.Minute), }, Schema: map[string]*schema.Schema{ "available_assertions": { Type: schema.TypeList, Optional: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "operator": { Type: schema.TypeString, Required: true, }, "type": { Type: schema.TypeString, Required: true, }, "target": { Type: schema.TypeString, Optional: true, }, "expect": { Type: schema.TypeString, Required: true, }, }, }, }, "common_setting": { Type: schema.TypeList, Optional: true, Computed: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "ip_type": { Type: schema.TypeInt, Optional: true, }, "is_open_trace": { Type: schema.TypeBool, Optional: true, }, "trace_client_type": { Type: schema.TypeInt, Optional: true, }, "xtrace_region": { Type: schema.TypeString, Optional: true, }, "custom_host": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "hosts": { Type: schema.TypeList, Required: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "ip_type": { Type: schema.TypeInt, Required: true, }, "domain": { Type: schema.TypeString, Required: true, }, "ips": { Type: schema.TypeList, Required: true, Elem: &schema.Schema{Type: schema.TypeString}, }, }, }, }, "select_type": { Type: schema.TypeInt, Required: true, }, }, }, }, "monitor_samples": { Type: schema.TypeInt, Optional: true, }, }, }, }, "custom_period": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "start_hour": { Type: schema.TypeInt, Optional: true, }, "end_hour": { Type: schema.TypeInt, Optional: true, }, }, }, }, "frequency": { Type: schema.TypeString, Required: true, }, "monitor_category": { Type: schema.TypeInt, Required: true, ForceNew: true, }, "monitor_conf": { Type: schema.TypeList, Required: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "net_dns": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "query_method": { Type: schema.TypeInt, Optional: true, }, "timeout": { Type: schema.TypeInt, Optional: true, }, "ns_server": { Type: schema.TypeString, Optional: true, }, "dns_server_ip_type": { Type: schema.TypeInt, Optional: true, }, "target_url": { Type: schema.TypeString, Required: true, }, }, }, }, "file_download": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "connection_timeout": { Type: schema.TypeInt, Optional: true, }, "custom_header_content": { Type: schema.TypeMap, Optional: true, }, "transmission_size": { Type: schema.TypeInt, Optional: true, }, "ignore_certificate_out_of_date_error": { Type: schema.TypeInt, Optional: true, }, "ignore_certificate_using_error": { Type: schema.TypeInt, Optional: true, }, "white_list": { Type: schema.TypeString, Optional: true, }, "verify_way": { Type: schema.TypeInt, Optional: true, }, "target_url": { Type: schema.TypeString, Required: true, }, "ignore_certificate_status_error": { Type: schema.TypeInt, Optional: true, }, "ignore_certificate_canceled_error": { Type: schema.TypeInt, Optional: true, }, "monitor_timeout": { Type: schema.TypeInt, Optional: true, }, "validate_keywords": { Type: schema.TypeString, Optional: true, }, "ignore_certificate_untrustworthy_error": { Type: schema.TypeInt, Optional: true, }, "redirection": { Type: schema.TypeInt, Optional: true, }, "ignore_certificate_auth_error": { Type: schema.TypeInt, Optional: true, }, "quick_protocol": { Type: schema.TypeInt, Optional: true, }, "download_kernel": { Type: schema.TypeInt, Optional: true, }, "ignore_invalid_host_error": { Type: schema.TypeInt, Optional: true, }, }, }, }, "website": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "disable_compression": { Type: schema.TypeInt, Optional: true, }, "custom_header_content": { Type: schema.TypeMap, Optional: true, }, "automatic_scrolling": { Type: schema.TypeInt, Optional: true, }, "slow_element_threshold": { Type: schema.TypeInt, Optional: true, }, "verify_string_whitelist": { Type: schema.TypeString, Optional: true, }, "ignore_certificate_error": { Type: schema.TypeInt, Optional: true, }, "target_url": { Type: schema.TypeString, Required: true, }, "flow_hijack_jump_times": { Type: schema.TypeInt, Optional: true, }, "disable_cache": { Type: schema.TypeInt, Optional: true, }, "monitor_timeout": { Type: schema.TypeInt, Optional: true, }, "wait_completion_time": { Type: schema.TypeInt, Optional: true, }, "verify_string_blacklist": { Type: schema.TypeString, Optional: true, }, "flow_hijack_logo": { Type: schema.TypeString, Optional: true, }, "element_blacklist": { Type: schema.TypeString, Optional: true, }, "redirection": { Type: schema.TypeInt, Optional: true, }, "custom_header": { Type: schema.TypeInt, Optional: true, }, "dns_hijack_whitelist": { Type: schema.TypeString, Optional: true, }, "page_tamper": { Type: schema.TypeString, Optional: true, }, "filter_invalid_ip": { Type: schema.TypeInt, Optional: true, }, }, }, }, "stream": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "stream_type": { Type: schema.TypeInt, Optional: true, }, "custom_header_content": { Type: schema.TypeMap, Optional: true, }, "stream_address_type": { Type: schema.TypeInt, Optional: true, }, "stream_monitor_timeout": { Type: schema.TypeInt, Optional: true, }, "player_type": { Type: schema.TypeInt, Optional: true, }, "white_list": { Type: schema.TypeString, Optional: true, }, "target_url": { Type: schema.TypeString, Optional: true, }, }, }, }, "net_tcp": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "tracert_enable": { Type: schema.TypeBool, Optional: true, }, "timeout": { Type: schema.TypeInt, Optional: true, }, "tracert_timeout": { Type: schema.TypeInt, Optional: true, }, "target_url": { Type: schema.TypeString, Required: true, }, "tracert_num_max": { Type: schema.TypeInt, Optional: true, }, "connect_times": { Type: schema.TypeInt, Optional: true, }, "interval": { Type: schema.TypeInt, Optional: true, }, }, }, }, "net_icmp": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "tracert_enable": { Type: schema.TypeBool, Optional: true, }, "package_num": { Type: schema.TypeInt, Optional: true, }, "package_size": { Type: schema.TypeInt, Optional: true, }, "split_package": { Type: schema.TypeBool, Optional: true, }, "timeout": { Type: schema.TypeInt, Optional: true, }, "tracert_timeout": { Type: schema.TypeInt, Optional: true, }, "tracert_num_max": { Type: schema.TypeInt, Optional: true, }, "target_url": { Type: schema.TypeString, Required: true, }, "interval": { Type: schema.TypeInt, Optional: true, }, }, }, }, "api_http": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "connect_timeout": { Type: schema.TypeInt, Optional: true, }, "timeout": { Type: schema.TypeInt, Optional: true, }, "target_url": { Type: schema.TypeString, Required: true, }, "method": { Type: schema.TypeString, Optional: true, }, "request_headers": { Type: schema.TypeMap, Optional: true, }, "request_body": { Type: schema.TypeList, Optional: true, MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "type": { Type: schema.TypeString, Optional: true, }, "content": { Type: schema.TypeString, Optional: true, }, }, }, }, }, }, }, }, }, }, "monitors": { Type: schema.TypeList, Required: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "city_code": { Type: schema.TypeString, Required: true, }, "client_type": { Type: schema.TypeInt, Required: true, }, "operator_code": { Type: schema.TypeString, Required: true, }, }, }, }, "resource_group_id": { Type: schema.TypeString, Optional: true, Computed: true, }, "status": { Type: schema.TypeString, Optional: true, Computed: true, }, "synthetic_task_name": { Type: schema.TypeString, Required: true, }, "tags": tagsSchema(), "task_type": { Type: schema.TypeInt, Required: true, ForceNew: true, }, }, } } func resourceAliCloudArmsSyntheticTaskCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AliyunClient) action := "CreateTimingSyntheticTask" var request map[string]interface{} var response map[string]interface{} query := make(map[string]interface{}) var err error request = make(map[string]interface{}) request["RegionId"] = client.RegionId request["TaskType"] = d.Get("task_type") if v, ok := d.GetOk("resource_group_id"); ok { request["ResourceGroupId"] = v } if v, ok := d.GetOk("tags"); ok { tagsMap := ConvertTags(v.(map[string]interface{})) request["Tags"] = tagsMap } if v, ok := d.GetOk("monitors"); ok { monitorsMaps := make([]map[string]interface{}, 0) for _, dataLoop1 := range v.([]interface{}) { dataLoop1Tmp := dataLoop1.(map[string]interface{}) dataLoop1Map := make(map[string]interface{}) dataLoop1Map["OperatorCode"] = dataLoop1Tmp["operator_code"] dataLoop1Map["CityCode"] = dataLoop1Tmp["city_code"] dataLoop1Map["ClientType"] = dataLoop1Tmp["client_type"] monitorsMaps = append(monitorsMaps, dataLoop1Map) } request["Monitors"], _ = convertListMapToJsonString(monitorsMaps) } request["MonitorCategory"] = d.Get("monitor_category") request["Name"] = d.Get("synthetic_task_name") request["Frequency"] = d.Get("frequency") objectDataLocalMap := make(map[string]interface{}) if v := d.Get("monitor_conf"); !IsNil(v) { netICMP_map, _ := jsonpath.Get("$[0].net_icmp[0]", v) if !IsNil(netICMP_map) { netICMP := make(map[string]interface{}) nodeNative5, _ := jsonpath.Get("$[0].net_icmp[0].package_num", d.Get("monitor_conf")) if nodeNative5 != "" { netICMP["PackageNum"] = nodeNative5 } nodeNative6, _ := jsonpath.Get("$[0].net_icmp[0].package_size", d.Get("monitor_conf")) if nodeNative6 != "" { netICMP["PackageSize"] = nodeNative6 } nodeNative7, _ := jsonpath.Get("$[0].net_icmp[0].split_package", d.Get("monitor_conf")) if nodeNative7 != "" { netICMP["SplitPackage"] = nodeNative7 } nodeNative8, _ := jsonpath.Get("$[0].net_icmp[0].interval", d.Get("monitor_conf")) if nodeNative8 != "" { netICMP["Interval"] = nodeNative8 } nodeNative9, _ := jsonpath.Get("$[0].net_icmp[0].tracert_enable", d.Get("monitor_conf")) if nodeNative9 != "" { netICMP["TracertEnable"] = nodeNative9 } nodeNative10, _ := jsonpath.Get("$[0].net_icmp[0].tracert_num_max", d.Get("monitor_conf")) if nodeNative10 != "" { netICMP["TracertNumMax"] = nodeNative10 } nodeNative11, _ := jsonpath.Get("$[0].net_icmp[0].tracert_timeout", d.Get("monitor_conf")) if nodeNative11 != "" { netICMP["TracertTimeout"] = nodeNative11 } nodeNative12, _ := jsonpath.Get("$[0].net_icmp[0].timeout", d.Get("monitor_conf")) if nodeNative12 != "" { netICMP["Timeout"] = nodeNative12 } nodeNative13, _ := jsonpath.Get("$[0].net_icmp[0].target_url", d.Get("monitor_conf")) if nodeNative13 != "" { netICMP["TargetUrl"] = nodeNative13 } objectDataLocalMap["NetICMP"] = netICMP } netTCP_map, _ := jsonpath.Get("$[0].net_tcp[0]", v) if !IsNil(netTCP_map) { netTCP := make(map[string]interface{}) nodeNative14, _ := jsonpath.Get("$[0].net_tcp[0].connect_times", d.Get("monitor_conf")) if nodeNative14 != "" { netTCP["ConnectTimes"] = nodeNative14 } nodeNative15, _ := jsonpath.Get("$[0].net_tcp[0].interval", d.Get("monitor_conf")) if nodeNative15 != "" { netTCP["Interval"] = nodeNative15 } nodeNative16, _ := jsonpath.Get("$[0].net_tcp[0].tracert_enable", d.Get("monitor_conf")) if nodeNative16 != "" { netTCP["TracertEnable"] = nodeNative16 } nodeNative17, _ := jsonpath.Get("$[0].net_tcp[0].tracert_num_max", d.Get("monitor_conf")) if nodeNative17 != "" { netTCP["TracertNumMax"] = nodeNative17 } nodeNative18, _ := jsonpath.Get("$[0].net_tcp[0].tracert_timeout", d.Get("monitor_conf")) if nodeNative18 != "" { netTCP["TracertTimeout"] = nodeNative18 } nodeNative19, _ := jsonpath.Get("$[0].net_tcp[0].timeout", d.Get("monitor_conf")) if nodeNative19 != "" { netTCP["Timeout"] = nodeNative19 } nodeNative20, _ := jsonpath.Get("$[0].net_tcp[0].target_url", d.Get("monitor_conf")) if nodeNative20 != "" { netTCP["TargetUrl"] = nodeNative20 } objectDataLocalMap["NetTCP"] = netTCP } netDNS_map, _ := jsonpath.Get("$[0].net_dns[0]", v) if !IsNil(netDNS_map) { netDNS := make(map[string]interface{}) nodeNative21, _ := jsonpath.Get("$[0].net_dns[0].dns_server_ip_type", d.Get("monitor_conf")) if nodeNative21 != "" { netDNS["DnsServerIpType"] = nodeNative21 } nodeNative22, _ := jsonpath.Get("$[0].net_dns[0].ns_server", d.Get("monitor_conf")) if nodeNative22 != "" { netDNS["NsServer"] = nodeNative22 } nodeNative23, _ := jsonpath.Get("$[0].net_dns[0].query_method", d.Get("monitor_conf")) if nodeNative23 != "" { netDNS["QueryMethod"] = nodeNative23 } nodeNative24, _ := jsonpath.Get("$[0].net_dns[0].timeout", d.Get("monitor_conf")) if nodeNative24 != "" { netDNS["Timeout"] = nodeNative24 } nodeNative25, _ := jsonpath.Get("$[0].net_dns[0].target_url", d.Get("monitor_conf")) if nodeNative25 != "" { netDNS["TargetUrl"] = nodeNative25 } objectDataLocalMap["NetDNS"] = netDNS } apiHTTP_map, _ := jsonpath.Get("$[0].api_http[0]", v) if !IsNil(apiHTTP_map) { apiHTTP := make(map[string]interface{}) nodeNative26, _ := jsonpath.Get("$[0].api_http[0].target_url", d.Get("monitor_conf")) if nodeNative26 != "" { apiHTTP["TargetUrl"] = nodeNative26 } nodeNative27, _ := jsonpath.Get("$[0].api_http[0].method", d.Get("monitor_conf")) if nodeNative27 != "" { apiHTTP["Method"] = nodeNative27 } requestBody_map, _ := jsonpath.Get("$[0].api_http[0].request_body[0]", v) if !IsNil(requestBody_map) { requestBody := make(map[string]interface{}) nodeNative28, _ := jsonpath.Get("$[0].api_http[0].request_body[0].content", d.Get("monitor_conf")) if nodeNative28 != "" { requestBody["Content"] = nodeNative28 } nodeNative29, _ := jsonpath.Get("$[0].api_http[0].request_body[0].type", d.Get("monitor_conf")) if nodeNative29 != "" { requestBody["Type"] = nodeNative29 } apiHTTP["RequestBody"] = requestBody } nodeNative30, _ := jsonpath.Get("$[0].api_http[0].connect_timeout", d.Get("monitor_conf")) if nodeNative30 != "" { apiHTTP["ConnectTimeout"] = nodeNative30 } nodeNative31, _ := jsonpath.Get("$[0].api_http[0].request_headers", d.Get("monitor_conf")) if nodeNative31 != "" { apiHTTP["RequestHeaders"] = nodeNative31 } nodeNative32, _ := jsonpath.Get("$[0].api_http[0].timeout", d.Get("monitor_conf")) if nodeNative32 != "" { apiHTTP["Timeout"] = nodeNative32 } objectDataLocalMap["ApiHTTP"] = apiHTTP } website_map, _ := jsonpath.Get("$[0].website[0]", v) if !IsNil(website_map) { website := make(map[string]interface{}) nodeNative33, _ := jsonpath.Get("$[0].website[0].automatic_scrolling", d.Get("monitor_conf")) if nodeNative33 != "" { website["AutomaticScrolling"] = nodeNative33 } nodeNative34, _ := jsonpath.Get("$[0].website[0].custom_header", d.Get("monitor_conf")) if nodeNative34 != "" { website["CustomHeader"] = nodeNative34 } nodeNative35, _ := jsonpath.Get("$[0].website[0].disable_cache", d.Get("monitor_conf")) if nodeNative35 != "" { website["DisableCache"] = nodeNative35 } nodeNative36, _ := jsonpath.Get("$[0].website[0].disable_compression", d.Get("monitor_conf")) if nodeNative36 != "" { website["DisableCompression"] = nodeNative36 } nodeNative37, _ := jsonpath.Get("$[0].website[0].filter_invalid_ip", d.Get("monitor_conf")) if nodeNative37 != "" { website["FilterInvalidIP"] = nodeNative37 } nodeNative38, _ := jsonpath.Get("$[0].website[0].ignore_certificate_error", d.Get("monitor_conf")) if nodeNative38 != "" { website["IgnoreCertificateError"] = nodeNative38 } nodeNative39, _ := jsonpath.Get("$[0].website[0].slow_element_threshold", d.Get("monitor_conf")) if nodeNative39 != "" { website["SlowElementThreshold"] = nodeNative39 } nodeNative40, _ := jsonpath.Get("$[0].website[0].wait_completion_time", d.Get("monitor_conf")) if nodeNative40 != "" { website["WaitCompletionTime"] = nodeNative40 } nodeNative41, _ := jsonpath.Get("$[0].website[0].verify_string_blacklist", d.Get("monitor_conf")) if nodeNative41 != "" { website["VerifyStringBlacklist"] = nodeNative41 } nodeNative42, _ := jsonpath.Get("$[0].website[0].verify_string_whitelist", d.Get("monitor_conf")) if nodeNative42 != "" { website["VerifyStringWhitelist"] = nodeNative42 } nodeNative43, _ := jsonpath.Get("$[0].website[0].element_blacklist", d.Get("monitor_conf")) if nodeNative43 != "" { website["ElementBlacklist"] = nodeNative43 } nodeNative44, _ := jsonpath.Get("$[0].website[0].dns_hijack_whitelist", d.Get("monitor_conf")) if nodeNative44 != "" { website["DNSHijackWhitelist"] = nodeNative44 } nodeNative45, _ := jsonpath.Get("$[0].website[0].page_tamper", d.Get("monitor_conf")) if nodeNative45 != "" { website["PageTamper"] = nodeNative45 } nodeNative46, _ := jsonpath.Get("$[0].website[0].flow_hijack_jump_times", d.Get("monitor_conf")) if nodeNative46 != "" { website["FlowHijackJumpTimes"] = nodeNative46 } nodeNative47, _ := jsonpath.Get("$[0].website[0].flow_hijack_logo", d.Get("monitor_conf")) if nodeNative47 != "" { website["FlowHijackLogo"] = nodeNative47 } nodeNative48, _ := jsonpath.Get("$[0].website[0].target_url", d.Get("monitor_conf")) if nodeNative48 != "" { website["TargetUrl"] = nodeNative48 } nodeNative49, _ := jsonpath.Get("$[0].website[0].custom_header_content", d.Get("monitor_conf")) if nodeNative49 != "" { website["CustomHeaderContent"] = nodeNative49 } nodeNative50, _ := jsonpath.Get("$[0].website[0].monitor_timeout", d.Get("monitor_conf")) if nodeNative50 != "" { website["MonitorTimeout"] = nodeNative50 } nodeNative51, _ := jsonpath.Get("$[0].website[0].redirection", d.Get("monitor_conf")) if nodeNative51 != "" { website["Redirection"] = nodeNative51 } objectDataLocalMap["Website"] = website } fileDownload_map, _ := jsonpath.Get("$[0].file_download[0]", v) if !IsNil(fileDownload_map) { fileDownload := make(map[string]interface{}) nodeNative52, _ := jsonpath.Get("$[0].file_download[0].download_kernel", d.Get("monitor_conf")) if nodeNative52 != "" { fileDownload["DownloadKernel"] = nodeNative52 } nodeNative53, _ := jsonpath.Get("$[0].file_download[0].quick_protocol", d.Get("monitor_conf")) if nodeNative53 != "" { fileDownload["QuickProtocol"] = nodeNative53 } nodeNative54, _ := jsonpath.Get("$[0].file_download[0].connection_timeout", d.Get("monitor_conf")) if nodeNative54 != "" { fileDownload["ConnectionTimeout"] = nodeNative54 } nodeNative55, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_status_error", d.Get("monitor_conf")) if nodeNative55 != "" { fileDownload["IgnoreCertificateStatusError"] = nodeNative55 } nodeNative56, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_untrustworthy_error", d.Get("monitor_conf")) if nodeNative56 != "" { fileDownload["IgnoreCertificateUntrustworthyError"] = nodeNative56 } nodeNative57, _ := jsonpath.Get("$[0].file_download[0].ignore_invalid_host_error", d.Get("monitor_conf")) if nodeNative57 != "" { fileDownload["IgnoreInvalidHostError"] = nodeNative57 } nodeNative58, _ := jsonpath.Get("$[0].file_download[0].transmission_size", d.Get("monitor_conf")) if nodeNative58 != "" { fileDownload["TransmissionSize"] = nodeNative58 } nodeNative59, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_canceled_error", d.Get("monitor_conf")) if nodeNative59 != "" { fileDownload["IgnoreCertificateCanceledError"] = nodeNative59 } nodeNative60, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_auth_error", d.Get("monitor_conf")) if nodeNative60 != "" { fileDownload["IgnoreCertificateAuthError"] = nodeNative60 } nodeNative61, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_out_of_date_error", d.Get("monitor_conf")) if nodeNative61 != "" { fileDownload["IgnoreCertificateOutOfDateError"] = nodeNative61 } nodeNative62, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_using_error", d.Get("monitor_conf")) if nodeNative62 != "" { fileDownload["IgnoreCertificateUsingError"] = nodeNative62 } nodeNative63, _ := jsonpath.Get("$[0].file_download[0].verify_way", d.Get("monitor_conf")) if nodeNative63 != "" { fileDownload["VerifyWay"] = nodeNative63 } nodeNative64, _ := jsonpath.Get("$[0].file_download[0].validate_keywords", d.Get("monitor_conf")) if nodeNative64 != "" { fileDownload["ValidateKeywords"] = nodeNative64 } nodeNative65, _ := jsonpath.Get("$[0].file_download[0].target_url", d.Get("monitor_conf")) if nodeNative65 != "" { fileDownload["TargetUrl"] = nodeNative65 } nodeNative66, _ := jsonpath.Get("$[0].file_download[0].monitor_timeout", d.Get("monitor_conf")) if nodeNative66 != "" { fileDownload["MonitorTimeout"] = nodeNative66 } nodeNative67, _ := jsonpath.Get("$[0].file_download[0].custom_header_content", d.Get("monitor_conf")) if nodeNative67 != "" { fileDownload["CustomHeaderContent"] = nodeNative67 } nodeNative68, _ := jsonpath.Get("$[0].file_download[0].redirection", d.Get("monitor_conf")) if nodeNative68 != "" { fileDownload["Redirection"] = nodeNative68 } nodeNative69, _ := jsonpath.Get("$[0].file_download[0].white_list", d.Get("monitor_conf")) if nodeNative69 != "" { fileDownload["WhiteList"] = nodeNative69 } objectDataLocalMap["FileDownload"] = fileDownload } stream_map, _ := jsonpath.Get("$[0].stream[0]", v) if !IsNil(stream_map) { stream := make(map[string]interface{}) nodeNative70, _ := jsonpath.Get("$[0].stream[0].stream_type", d.Get("monitor_conf")) if nodeNative70 != "" { stream["StreamType"] = nodeNative70 } nodeNative71, _ := jsonpath.Get("$[0].stream[0].stream_monitor_timeout", d.Get("monitor_conf")) if nodeNative71 != "" { stream["StreamMonitorTimeout"] = nodeNative71 } nodeNative72, _ := jsonpath.Get("$[0].stream[0].stream_address_type", d.Get("monitor_conf")) if nodeNative72 != "" { stream["StreamAddressType"] = nodeNative72 } nodeNative73, _ := jsonpath.Get("$[0].stream[0].player_type", d.Get("monitor_conf")) if nodeNative73 != "" { stream["PlayerType"] = nodeNative73 } nodeNative74, _ := jsonpath.Get("$[0].stream[0].white_list", d.Get("monitor_conf")) if nodeNative74 != "" { stream["WhiteList"] = nodeNative74 } nodeNative75, _ := jsonpath.Get("$[0].stream[0].custom_header_content", d.Get("monitor_conf")) if nodeNative75 != "" { stream["CustomHeaderContent"] = nodeNative75 } nodeNative76, _ := jsonpath.Get("$[0].stream[0].target_url", d.Get("monitor_conf")) if nodeNative76 != "" { stream["TargetUrl"] = nodeNative76 } objectDataLocalMap["Stream"] = stream } request["MonitorConf"] = convertMapToJsonStringIgnoreError(objectDataLocalMap) } objectDataLocalMap1 := make(map[string]interface{}) if v := d.Get("custom_period"); !IsNil(v) { nodeNative77, _ := jsonpath.Get("$[0].end_hour", d.Get("custom_period")) if nodeNative77 != "" { objectDataLocalMap1["EndHour"] = nodeNative77 } nodeNative78, _ := jsonpath.Get("$[0].start_hour", d.Get("custom_period")) if nodeNative78 != "" { objectDataLocalMap1["StartHour"] = nodeNative78 } request["CustomPeriod"] = convertMapToJsonStringIgnoreError(objectDataLocalMap1) } objectDataLocalMap2 := make(map[string]interface{}) if v := d.Get("common_setting"); !IsNil(v) { customHost_map, _ := jsonpath.Get("$[0].custom_host[0]", v) if !IsNil(customHost_map) { customHost := make(map[string]interface{}) if v, ok := d.GetOk("common_setting"); ok { localData2, err := jsonpath.Get("$[0].custom_host[0].hosts", v) if err != nil { return WrapError(err) } localMaps := make([]map[string]interface{}, 0) for _, dataLoop2 := range localData2.([]interface{}) { dataLoop2Tmp := dataLoop2.(map[string]interface{}) dataLoop2Map := make(map[string]interface{}) dataLoop2Map["Domain"] = dataLoop2Tmp["domain"] dataLoop2Map["Ips"] = dataLoop2Tmp["ips"] dataLoop2Map["IpType"] = dataLoop2Tmp["ip_type"] localMaps = append(localMaps, dataLoop2Map) } customHost["Hosts"] = localMaps } nodeNative82, _ := jsonpath.Get("$[0].custom_host[0].select_type", d.Get("common_setting")) if nodeNative82 != "" { customHost["SelectType"] = nodeNative82 } objectDataLocalMap2["CustomHost"] = customHost } nodeNative83, _ := jsonpath.Get("$[0].monitor_samples", d.Get("common_setting")) if nodeNative83 != "" { objectDataLocalMap2["MonitorSamples"] = nodeNative83 } nodeNative84, _ := jsonpath.Get("$[0].is_open_trace", d.Get("common_setting")) if nodeNative84 != "" { objectDataLocalMap2["IsOpenTrace"] = nodeNative84 } nodeNative85, _ := jsonpath.Get("$[0].trace_client_type", d.Get("common_setting")) if nodeNative85 != "" { objectDataLocalMap2["TraceClientType"] = nodeNative85 } nodeNative86, _ := jsonpath.Get("$[0].xtrace_region", d.Get("common_setting")) if nodeNative86 != "" { objectDataLocalMap2["XtraceRegion"] = nodeNative86 } nodeNative87, _ := jsonpath.Get("$[0].ip_type", d.Get("common_setting")) if nodeNative87 != "" { objectDataLocalMap2["IpType"] = nodeNative87 } request["CommonSetting"] = convertMapToJsonStringIgnoreError(objectDataLocalMap2) } if v, ok := d.GetOk("available_assertions"); ok { availableAssertionsMaps := make([]map[string]interface{}, 0) for _, dataLoop3 := range v.([]interface{}) { dataLoop3Tmp := dataLoop3.(map[string]interface{}) dataLoop3Map := make(map[string]interface{}) dataLoop3Map["Type"] = dataLoop3Tmp["type"] dataLoop3Map["Target"] = dataLoop3Tmp["target"] dataLoop3Map["Operator"] = dataLoop3Tmp["operator"] dataLoop3Map["Expect"] = dataLoop3Tmp["expect"] availableAssertionsMaps = append(availableAssertionsMaps, dataLoop3Map) } request["AvailableAssertions"], _ = convertListMapToJsonString(availableAssertionsMaps) } wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutCreate), func() *resource.RetryError { response, err = client.RpcPost("ARMS", "2019-08-08", action, query, request, true) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } addDebug(action, response, request) return nil }) if err != nil { return WrapErrorf(err, DefaultErrorMsg, "alicloud_arms_synthetic_task", action, AlibabaCloudSdkGoERROR) } id, _ := jsonpath.Get("$.Data.TaskId", response) d.SetId(fmt.Sprint(id)) return resourceAliCloudArmsSyntheticTaskUpdate(d, meta) } func resourceAliCloudArmsSyntheticTaskRead(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AliyunClient) armsServiceV2 := ArmsServiceV2{client} objectRaw, err := armsServiceV2.DescribeArmsSyntheticTask(d.Id()) if err != nil { if !d.IsNewResource() && NotFoundError(err) { log.Printf("[DEBUG] Resource alicloud_arms_synthetic_task DescribeArmsSyntheticTask Failed!!! %s", err) d.SetId("") return nil } return WrapError(err) } d.Set("frequency", objectRaw["Frequency"]) d.Set("monitor_category", objectRaw["MonitorCategory"]) d.Set("resource_group_id", objectRaw["ResourceGroupId"]) d.Set("status", objectRaw["Status"]) d.Set("synthetic_task_name", objectRaw["Name"]) d.Set("task_type", objectRaw["TaskType"]) availableAssertions1Raw := objectRaw["AvailableAssertions"] availableAssertionsMaps := make([]map[string]interface{}, 0) if availableAssertions1Raw != nil { for _, availableAssertionsChild1Raw := range availableAssertions1Raw.([]interface{}) { availableAssertionsMap := make(map[string]interface{}) availableAssertionsChild1Raw := availableAssertionsChild1Raw.(map[string]interface{}) availableAssertionsMap["expect"] = availableAssertionsChild1Raw["Expect"] availableAssertionsMap["operator"] = availableAssertionsChild1Raw["Operator"] availableAssertionsMap["target"] = availableAssertionsChild1Raw["Target"] availableAssertionsMap["type"] = availableAssertionsChild1Raw["Type"] availableAssertionsMaps = append(availableAssertionsMaps, availableAssertionsMap) } } d.Set("available_assertions", availableAssertionsMaps) commonSettingMaps := make([]map[string]interface{}, 0) commonSettingMap := make(map[string]interface{}) commonSetting1Raw := make(map[string]interface{}) if objectRaw["CommonSetting"] != nil { commonSetting1Raw = objectRaw["CommonSetting"].(map[string]interface{}) } if len(commonSetting1Raw) > 0 { commonSettingMap["custom_host"] = commonSetting1Raw["CustomHost"] commonSettingMap["ip_type"] = commonSetting1Raw["IpType"] commonSettingMap["is_open_trace"] = commonSetting1Raw["IsOpenTrace"] commonSettingMap["monitor_samples"] = commonSetting1Raw["MonitorSamples"] commonSettingMap["trace_client_type"] = commonSetting1Raw["TraceClientType"] commonSettingMap["xtrace_region"] = commonSetting1Raw["XtraceRegion"] customHostMaps := make([]map[string]interface{}, 0) customHostMap := make(map[string]interface{}) customHost3Raw := make(map[string]interface{}) if commonSetting1Raw["CustomHost"] != nil { customHost3Raw = commonSetting1Raw["CustomHost"].(map[string]interface{}) } if len(customHost3Raw) > 0 { customHostMap["hosts"] = customHost3Raw["Hosts"] customHostMap["select_type"] = customHost3Raw["SelectType"] hosts3Raw := customHost3Raw["Hosts"] hostsMaps := make([]map[string]interface{}, 0) if hosts3Raw != nil { for _, hostsChild1Raw := range hosts3Raw.([]interface{}) { hostsMap := make(map[string]interface{}) hostsChild1Raw := hostsChild1Raw.(map[string]interface{}) hostsMap["domain"] = hostsChild1Raw["Domain"] hostsMap["ip_type"] = hostsChild1Raw["IpType"] ips1Raw := make([]interface{}, 0) if hostsChild1Raw["Ips"] != nil { ips1Raw = hostsChild1Raw["Ips"].([]interface{}) } hostsMap["ips"] = ips1Raw hostsMaps = append(hostsMaps, hostsMap) } } customHostMap["hosts"] = hostsMaps customHostMaps = append(customHostMaps, customHostMap) } commonSettingMap["custom_host"] = customHostMaps commonSettingMaps = append(commonSettingMaps, commonSettingMap) } d.Set("common_setting", commonSettingMaps) customPeriodMaps := make([]map[string]interface{}, 0) customPeriodMap := make(map[string]interface{}) customPeriod1Raw := make(map[string]interface{}) if objectRaw["CustomPeriod"] != nil { customPeriod1Raw = objectRaw["CustomPeriod"].(map[string]interface{}) } if len(customPeriod1Raw) > 0 { customPeriodMap["end_hour"] = customPeriod1Raw["EndHour"] customPeriodMap["start_hour"] = customPeriod1Raw["StartHour"] customPeriodMaps = append(customPeriodMaps, customPeriodMap) } d.Set("custom_period", customPeriodMaps) monitorConfMaps := make([]map[string]interface{}, 0) monitorConfMap := make(map[string]interface{}) monitorConf1Raw := make(map[string]interface{}) if objectRaw["MonitorConf"] != nil { monitorConf1Raw = objectRaw["MonitorConf"].(map[string]interface{}) } if len(monitorConf1Raw) > 0 { apiHTTPMaps := make([]map[string]interface{}, 0) apiHTTPMap := make(map[string]interface{}) apiHTTP1Raw := make(map[string]interface{}) if monitorConf1Raw["ApiHTTP"] != nil { apiHTTP1Raw = monitorConf1Raw["ApiHTTP"].(map[string]interface{}) } if len(apiHTTP1Raw) > 0 { apiHTTPMap["connect_timeout"] = apiHTTP1Raw["ConnectTimeout"] apiHTTPMap["method"] = apiHTTP1Raw["Method"] apiHTTPMap["request_headers"] = apiHTTP1Raw["RequestHeaders"] apiHTTPMap["target_url"] = apiHTTP1Raw["TargetUrl"] apiHTTPMap["timeout"] = apiHTTP1Raw["Timeout"] requestBodyMaps := make([]map[string]interface{}, 0) requestBodyMap := make(map[string]interface{}) requestBody1Raw := make(map[string]interface{}) if apiHTTP1Raw["RequestBody"] != nil { requestBody1Raw = apiHTTP1Raw["RequestBody"].(map[string]interface{}) } if len(requestBody1Raw) > 0 { requestBodyMap["content"] = requestBody1Raw["Content"] requestBodyMap["type"] = requestBody1Raw["Type"] requestBodyMaps = append(requestBodyMaps, requestBodyMap) } apiHTTPMap["request_body"] = requestBodyMaps apiHTTPMaps = append(apiHTTPMaps, apiHTTPMap) } monitorConfMap["api_http"] = apiHTTPMaps fileDownloadMaps := make([]map[string]interface{}, 0) fileDownloadMap := make(map[string]interface{}) fileDownload1Raw := make(map[string]interface{}) if monitorConf1Raw["FileDownload"] != nil { fileDownload1Raw = monitorConf1Raw["FileDownload"].(map[string]interface{}) } if len(fileDownload1Raw) > 0 { fileDownloadMap["connection_timeout"] = fileDownload1Raw["ConnectionTimeout"] fileDownloadMap["custom_header_content"] = fileDownload1Raw["CustomHeaderContent"] fileDownloadMap["download_kernel"] = fileDownload1Raw["DownloadKernel"] fileDownloadMap["ignore_certificate_auth_error"] = fileDownload1Raw["IgnoreCertificateAuthError"] fileDownloadMap["ignore_certificate_canceled_error"] = fileDownload1Raw["IgnoreCertificateCanceledError"] fileDownloadMap["ignore_certificate_out_of_date_error"] = fileDownload1Raw["IgnoreCertificateOutOfDateError"] fileDownloadMap["ignore_certificate_status_error"] = fileDownload1Raw["IgnoreCertificateStatusError"] fileDownloadMap["ignore_certificate_untrustworthy_error"] = fileDownload1Raw["IgnoreCertificateUntrustworthyError"] fileDownloadMap["ignore_certificate_using_error"] = fileDownload1Raw["IgnoreCertificateUsingError"] fileDownloadMap["ignore_invalid_host_error"] = fileDownload1Raw["IgnoreInvalidHostError"] fileDownloadMap["monitor_timeout"] = fileDownload1Raw["MonitorTimeout"] fileDownloadMap["quick_protocol"] = fileDownload1Raw["QuickProtocol"] fileDownloadMap["redirection"] = fileDownload1Raw["Redirection"] fileDownloadMap["target_url"] = fileDownload1Raw["TargetUrl"] fileDownloadMap["transmission_size"] = fileDownload1Raw["TransmissionSize"] fileDownloadMap["validate_keywords"] = fileDownload1Raw["ValidateKeywords"] fileDownloadMap["verify_way"] = fileDownload1Raw["VerifyWay"] fileDownloadMap["white_list"] = fileDownload1Raw["WhiteList"] fileDownloadMaps = append(fileDownloadMaps, fileDownloadMap) } monitorConfMap["file_download"] = fileDownloadMaps netDnsMaps := make([]map[string]interface{}, 0) netDnsMap := make(map[string]interface{}) netDNS1Raw := make(map[string]interface{}) if monitorConf1Raw["NetDNS"] != nil { netDNS1Raw = monitorConf1Raw["NetDNS"].(map[string]interface{}) } if len(netDNS1Raw) > 0 { netDnsMap["dns_server_ip_type"] = netDNS1Raw["DnsServerIpType"] netDnsMap["ns_server"] = netDNS1Raw["NsServer"] netDnsMap["query_method"] = netDNS1Raw["QueryMethod"] netDnsMap["target_url"] = netDNS1Raw["TargetUrl"] netDnsMap["timeout"] = netDNS1Raw["Timeout"] netDnsMaps = append(netDnsMaps, netDnsMap) } monitorConfMap["net_dns"] = netDnsMaps netIcmpMaps := make([]map[string]interface{}, 0) netIcmpMap := make(map[string]interface{}) netICMP1Raw := make(map[string]interface{}) if monitorConf1Raw["NetICMP"] != nil { netICMP1Raw = monitorConf1Raw["NetICMP"].(map[string]interface{}) } if len(netICMP1Raw) > 0 { netIcmpMap["interval"] = netICMP1Raw["Interval"] netIcmpMap["package_num"] = netICMP1Raw["PackageNum"] netIcmpMap["package_size"] = netICMP1Raw["PackageSize"] netIcmpMap["split_package"] = netICMP1Raw["SplitPackage"] netIcmpMap["target_url"] = netICMP1Raw["TargetUrl"] netIcmpMap["timeout"] = netICMP1Raw["Timeout"] netIcmpMap["tracert_enable"] = netICMP1Raw["TracertEnable"] netIcmpMap["tracert_num_max"] = netICMP1Raw["TracertNumMax"] netIcmpMap["tracert_timeout"] = netICMP1Raw["TracertTimeout"] netIcmpMaps = append(netIcmpMaps, netIcmpMap) } monitorConfMap["net_icmp"] = netIcmpMaps netTCPMaps := make([]map[string]interface{}, 0) netTCPMap := make(map[string]interface{}) netTCP1Raw := make(map[string]interface{}) if monitorConf1Raw["NetTCP"] != nil { netTCP1Raw = monitorConf1Raw["NetTCP"].(map[string]interface{}) } if len(netTCP1Raw) > 0 { netTCPMap["connect_times"] = netTCP1Raw["ConnectTimes"] netTCPMap["interval"] = netTCP1Raw["Interval"] netTCPMap["target_url"] = netTCP1Raw["TargetUrl"] netTCPMap["timeout"] = netTCP1Raw["Timeout"] netTCPMap["tracert_enable"] = netTCP1Raw["TracertEnable"] netTCPMap["tracert_num_max"] = netTCP1Raw["TracertNumMax"] netTCPMap["tracert_timeout"] = netTCP1Raw["TracertTimeout"] netTCPMaps = append(netTCPMaps, netTCPMap) } monitorConfMap["net_tcp"] = netTCPMaps streamMaps := make([]map[string]interface{}, 0) streamMap := make(map[string]interface{}) stream1Raw := make(map[string]interface{}) if monitorConf1Raw["Stream"] != nil { stream1Raw = monitorConf1Raw["Stream"].(map[string]interface{}) } if len(stream1Raw) > 0 { streamMap["custom_header_content"] = stream1Raw["CustomHeaderContent"] streamMap["player_type"] = stream1Raw["PlayerType"] streamMap["stream_address_type"] = stream1Raw["StreamAddressType"] streamMap["stream_monitor_timeout"] = stream1Raw["StreamMonitorTimeout"] streamMap["stream_type"] = stream1Raw["StreamType"] streamMap["target_url"] = stream1Raw["TargetUrl"] streamMap["white_list"] = stream1Raw["WhiteList"] streamMaps = append(streamMaps, streamMap) } monitorConfMap["stream"] = streamMaps websiteMaps := make([]map[string]interface{}, 0) websiteMap := make(map[string]interface{}) website1Raw := make(map[string]interface{}) if monitorConf1Raw["Website"] != nil { website1Raw = monitorConf1Raw["Website"].(map[string]interface{}) } if len(website1Raw) > 0 { websiteMap["automatic_scrolling"] = website1Raw["AutomaticScrolling"] websiteMap["custom_header"] = website1Raw["CustomHeader"] websiteMap["custom_header_content"] = website1Raw["CustomHeaderContent"] websiteMap["disable_cache"] = website1Raw["DisableCache"] websiteMap["disable_compression"] = website1Raw["DisableCompression"] websiteMap["dns_hijack_whitelist"] = website1Raw["DNSHijackWhitelist"] websiteMap["element_blacklist"] = website1Raw["ElementBlacklist"] websiteMap["filter_invalid_ip"] = website1Raw["FilterInvalidIP"] websiteMap["flow_hijack_jump_times"] = website1Raw["FlowHijackJumpTimes"] websiteMap["flow_hijack_logo"] = website1Raw["FlowHijackLogo"] websiteMap["ignore_certificate_error"] = website1Raw["IgnoreCertificateError"] websiteMap["monitor_timeout"] = website1Raw["MonitorTimeout"] websiteMap["page_tamper"] = website1Raw["PageTamper"] websiteMap["redirection"] = website1Raw["Redirection"] websiteMap["slow_element_threshold"] = website1Raw["SlowElementThreshold"] websiteMap["target_url"] = website1Raw["TargetUrl"] websiteMap["verify_string_blacklist"] = website1Raw["VerifyStringBlacklist"] websiteMap["verify_string_whitelist"] = website1Raw["VerifyStringWhitelist"] websiteMap["wait_completion_time"] = website1Raw["WaitCompletionTime"] websiteMaps = append(websiteMaps, websiteMap) } monitorConfMap["website"] = websiteMaps monitorConfMaps = append(monitorConfMaps, monitorConfMap) } d.Set("monitor_conf", monitorConfMaps) monitors1Raw := objectRaw["Monitors"] monitorsMaps := make([]map[string]interface{}, 0) if monitors1Raw != nil { for _, monitorsChild1Raw := range monitors1Raw.([]interface{}) { monitorsMap := make(map[string]interface{}) monitorsChild1Raw := monitorsChild1Raw.(map[string]interface{}) monitorsMap["city_code"] = monitorsChild1Raw["CityCode"] monitorsMap["client_type"] = monitorsChild1Raw["ClientType"] monitorsMap["operator_code"] = monitorsChild1Raw["OperatorCode"] monitorsMaps = append(monitorsMaps, monitorsMap) } } d.Set("monitors", monitorsMaps) tagsMaps := objectRaw["Tags"] d.Set("tags", tagsToMap(tagsMaps)) return nil } func resourceAliCloudArmsSyntheticTaskUpdate(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AliyunClient) var request map[string]interface{} var response map[string]interface{} var query map[string]interface{} update := false d.Partial(true) action := "UpdateTimingSyntheticTask" var err error request = make(map[string]interface{}) query = make(map[string]interface{}) query["TaskId"] = d.Id() request["RegionId"] = client.RegionId if !d.IsNewResource() && d.HasChange("monitors") { update = true } if v, ok := d.GetOk("monitors"); ok { monitorsMaps := make([]map[string]interface{}, 0) for _, dataLoop := range v.([]interface{}) { dataLoopTmp := dataLoop.(map[string]interface{}) dataLoopMap := make(map[string]interface{}) dataLoopMap["CityCode"] = dataLoopTmp["city_code"] dataLoopMap["OperatorCode"] = dataLoopTmp["operator_code"] dataLoopMap["ClientType"] = dataLoopTmp["client_type"] monitorsMaps = append(monitorsMaps, dataLoopMap) } request["Monitors"], _ = convertListMapToJsonString(monitorsMaps) } if !d.IsNewResource() && d.HasChange("synthetic_task_name") { update = true } request["Name"] = d.Get("synthetic_task_name") if !d.IsNewResource() && d.HasChange("frequency") { update = true } request["Frequency"] = d.Get("frequency") if !d.IsNewResource() && d.HasChange("monitor_conf") { update = true } objectDataLocalMap := make(map[string]interface{}) if v := d.Get("monitor_conf"); !IsNil(v) { stream_map, _ := jsonpath.Get("$[0].stream[0]", v) if !IsNil(stream_map) { stream := make(map[string]interface{}) nodeNative3, _ := jsonpath.Get("$[0].stream[0].target_url", v) if nodeNative3 != "" { stream["TargetUrl"] = nodeNative3 } nodeNative4, _ := jsonpath.Get("$[0].stream[0].white_list", v) if nodeNative4 != "" { stream["WhiteList"] = nodeNative4 } nodeNative5, _ := jsonpath.Get("$[0].stream[0].stream_type", v) if nodeNative5 != "" { stream["StreamType"] = nodeNative5 } nodeNative6, _ := jsonpath.Get("$[0].stream[0].stream_monitor_timeout", v) if nodeNative6 != "" { stream["StreamMonitorTimeout"] = nodeNative6 } nodeNative7, _ := jsonpath.Get("$[0].stream[0].stream_address_type", v) if nodeNative7 != "" { stream["StreamAddressType"] = nodeNative7 } nodeNative8, _ := jsonpath.Get("$[0].stream[0].player_type", v) if nodeNative8 != "" { stream["PlayerType"] = nodeNative8 } nodeNative9, _ := jsonpath.Get("$[0].stream[0].custom_header_content", v) if nodeNative9 != "" { stream["CustomHeaderContent"] = nodeNative9 } objectDataLocalMap["Stream"] = stream } netICMP_map, _ := jsonpath.Get("$[0].net_icmp[0]", v) if !IsNil(netICMP_map) { netICMP := make(map[string]interface{}) nodeNative10, _ := jsonpath.Get("$[0].net_icmp[0].package_num", v) if nodeNative10 != "" { netICMP["PackageNum"] = nodeNative10 } nodeNative11, _ := jsonpath.Get("$[0].net_icmp[0].package_size", v) if nodeNative11 != "" { netICMP["PackageSize"] = nodeNative11 } nodeNative12, _ := jsonpath.Get("$[0].net_icmp[0].split_package", v) if nodeNative12 != "" { netICMP["SplitPackage"] = nodeNative12 } nodeNative13, _ := jsonpath.Get("$[0].net_icmp[0].interval", v) if nodeNative13 != "" { netICMP["Interval"] = nodeNative13 } nodeNative14, _ := jsonpath.Get("$[0].net_icmp[0].timeout", v) if nodeNative14 != "" { netICMP["Timeout"] = nodeNative14 } nodeNative15, _ := jsonpath.Get("$[0].net_icmp[0].tracert_enable", v) if nodeNative15 != "" { netICMP["TracertEnable"] = nodeNative15 } nodeNative16, _ := jsonpath.Get("$[0].net_icmp[0].tracert_num_max", v) if nodeNative16 != "" { netICMP["TracertNumMax"] = nodeNative16 } nodeNative17, _ := jsonpath.Get("$[0].net_icmp[0].tracert_timeout", v) if nodeNative17 != "" { netICMP["TracertTimeout"] = nodeNative17 } nodeNative18, _ := jsonpath.Get("$[0].net_icmp[0].target_url", v) if nodeNative18 != "" { netICMP["TargetUrl"] = nodeNative18 } objectDataLocalMap["NetICMP"] = netICMP } apiHTTP_map, _ := jsonpath.Get("$[0].api_http[0]", v) if !IsNil(apiHTTP_map) { apiHTTP := make(map[string]interface{}) nodeNative19, _ := jsonpath.Get("$[0].api_http[0].timeout", v) if nodeNative19 != "" { apiHTTP["Timeout"] = nodeNative19 } nodeNative20, _ := jsonpath.Get("$[0].api_http[0].target_url", v) if nodeNative20 != "" { apiHTTP["TargetUrl"] = nodeNative20 } nodeNative21, _ := jsonpath.Get("$[0].api_http[0].method", v) if nodeNative21 != "" { apiHTTP["Method"] = nodeNative21 } requestBody_map, _ := jsonpath.Get("$[0].api_http[0].request_body[0]", v) if !IsNil(requestBody_map) { requestBody := make(map[string]interface{}) nodeNative22, _ := jsonpath.Get("$[0].api_http[0].request_body[0].content", v) if nodeNative22 != "" { requestBody["Content"] = nodeNative22 } nodeNative23, _ := jsonpath.Get("$[0].api_http[0].request_body[0].type", v) if nodeNative23 != "" { requestBody["Type"] = nodeNative23 } apiHTTP["RequestBody"] = requestBody } nodeNative24, _ := jsonpath.Get("$[0].api_http[0].connect_timeout", v) if nodeNative24 != "" { apiHTTP["ConnectTimeout"] = nodeNative24 } nodeNative25, _ := jsonpath.Get("$[0].api_http[0].request_headers", v) if nodeNative25 != "" { apiHTTP["RequestHeaders"] = nodeNative25 } objectDataLocalMap["ApiHTTP"] = apiHTTP } fileDownload_map, _ := jsonpath.Get("$[0].file_download[0]", v) if !IsNil(fileDownload_map) { fileDownload := make(map[string]interface{}) nodeNative26, _ := jsonpath.Get("$[0].file_download[0].target_url", v) if nodeNative26 != "" { fileDownload["TargetUrl"] = nodeNative26 } nodeNative27, _ := jsonpath.Get("$[0].file_download[0].monitor_timeout", v) if nodeNative27 != "" { fileDownload["MonitorTimeout"] = nodeNative27 } nodeNative28, _ := jsonpath.Get("$[0].file_download[0].redirection", v) if nodeNative28 != "" { fileDownload["Redirection"] = nodeNative28 } nodeNative29, _ := jsonpath.Get("$[0].file_download[0].download_kernel", v) if nodeNative29 != "" { fileDownload["DownloadKernel"] = nodeNative29 } nodeNative30, _ := jsonpath.Get("$[0].file_download[0].quick_protocol", v) if nodeNative30 != "" { fileDownload["QuickProtocol"] = nodeNative30 } nodeNative31, _ := jsonpath.Get("$[0].file_download[0].connection_timeout", v) if nodeNative31 != "" { fileDownload["ConnectionTimeout"] = nodeNative31 } nodeNative32, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_status_error", v) if nodeNative32 != "" { fileDownload["IgnoreCertificateStatusError"] = nodeNative32 } nodeNative33, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_untrustworthy_error", v) if nodeNative33 != "" { fileDownload["IgnoreCertificateUntrustworthyError"] = nodeNative33 } nodeNative34, _ := jsonpath.Get("$[0].file_download[0].ignore_invalid_host_error", v) if nodeNative34 != "" { fileDownload["IgnoreInvalidHostError"] = nodeNative34 } nodeNative35, _ := jsonpath.Get("$[0].file_download[0].transmission_size", v) if nodeNative35 != "" { fileDownload["TransmissionSize"] = nodeNative35 } nodeNative36, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_canceled_error", v) if nodeNative36 != "" { fileDownload["IgnoreCertificateCanceledError"] = nodeNative36 } nodeNative37, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_auth_error", v) if nodeNative37 != "" { fileDownload["IgnoreCertificateAuthError"] = nodeNative37 } nodeNative38, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_out_of_date_error", v) if nodeNative38 != "" { fileDownload["IgnoreCertificateOutOfDateError"] = nodeNative38 } nodeNative39, _ := jsonpath.Get("$[0].file_download[0].ignore_certificate_using_error", v) if nodeNative39 != "" { fileDownload["IgnoreCertificateUsingError"] = nodeNative39 } nodeNative40, _ := jsonpath.Get("$[0].file_download[0].verify_way", v) if nodeNative40 != "" { fileDownload["VerifyWay"] = nodeNative40 } nodeNative41, _ := jsonpath.Get("$[0].file_download[0].validate_keywords", v) if nodeNative41 != "" { fileDownload["ValidateKeywords"] = nodeNative41 } nodeNative42, _ := jsonpath.Get("$[0].file_download[0].white_list", v) if nodeNative42 != "" { fileDownload["WhiteList"] = nodeNative42 } nodeNative43, _ := jsonpath.Get("$[0].file_download[0].custom_header_content", v) if nodeNative43 != "" { fileDownload["CustomHeaderContent"] = nodeNative43 } objectDataLocalMap["FileDownload"] = fileDownload } netTCP_map, _ := jsonpath.Get("$[0].net_tcp[0]", v) if !IsNil(netTCP_map) { netTCP := make(map[string]interface{}) nodeNative44, _ := jsonpath.Get("$[0].net_tcp[0].connect_times", v) if nodeNative44 != "" { netTCP["ConnectTimes"] = nodeNative44 } nodeNative45, _ := jsonpath.Get("$[0].net_tcp[0].target_url", v) if nodeNative45 != "" { netTCP["TargetUrl"] = nodeNative45 } nodeNative46, _ := jsonpath.Get("$[0].net_tcp[0].interval", v) if nodeNative46 != "" { netTCP["Interval"] = nodeNative46 } nodeNative47, _ := jsonpath.Get("$[0].net_tcp[0].timeout", v) if nodeNative47 != "" { netTCP["Timeout"] = nodeNative47 } nodeNative48, _ := jsonpath.Get("$[0].net_tcp[0].tracert_enable", v) if nodeNative48 != "" { netTCP["TracertEnable"] = nodeNative48 } nodeNative49, _ := jsonpath.Get("$[0].net_tcp[0].tracert_num_max", v) if nodeNative49 != "" { netTCP["TracertNumMax"] = nodeNative49 } nodeNative50, _ := jsonpath.Get("$[0].net_tcp[0].tracert_timeout", v) if nodeNative50 != "" { netTCP["TracertTimeout"] = nodeNative50 } objectDataLocalMap["NetTCP"] = netTCP } netDNS_map, _ := jsonpath.Get("$[0].net_dns[0]", v) if !IsNil(netDNS_map) { netDNS := make(map[string]interface{}) nodeNative51, _ := jsonpath.Get("$[0].net_dns[0].timeout", v) if nodeNative51 != "" { netDNS["Timeout"] = nodeNative51 } nodeNative52, _ := jsonpath.Get("$[0].net_dns[0].dns_server_ip_type", v) if nodeNative52 != "" { netDNS["DnsServerIpType"] = nodeNative52 } nodeNative53, _ := jsonpath.Get("$[0].net_dns[0].ns_server", v) if nodeNative53 != "" { netDNS["NsServer"] = nodeNative53 } nodeNative54, _ := jsonpath.Get("$[0].net_dns[0].query_method", v) if nodeNative54 != "" { netDNS["QueryMethod"] = nodeNative54 } nodeNative55, _ := jsonpath.Get("$[0].net_dns[0].target_url", v) if nodeNative55 != "" { netDNS["TargetUrl"] = nodeNative55 } objectDataLocalMap["NetDNS"] = netDNS } website_map, _ := jsonpath.Get("$[0].website[0]", v) if !IsNil(website_map) { website := make(map[string]interface{}) nodeNative56, _ := jsonpath.Get("$[0].website[0].target_url", v) if nodeNative56 != "" { website["TargetUrl"] = nodeNative56 } nodeNative57, _ := jsonpath.Get("$[0].website[0].automatic_scrolling", v) if nodeNative57 != "" { website["AutomaticScrolling"] = nodeNative57 } nodeNative58, _ := jsonpath.Get("$[0].website[0].custom_header", v) if nodeNative58 != "" { website["CustomHeader"] = nodeNative58 } nodeNative59, _ := jsonpath.Get("$[0].website[0].disable_cache", v) if nodeNative59 != "" { website["DisableCache"] = nodeNative59 } nodeNative60, _ := jsonpath.Get("$[0].website[0].disable_compression", v) if nodeNative60 != "" { website["DisableCompression"] = nodeNative60 } nodeNative61, _ := jsonpath.Get("$[0].website[0].filter_invalid_ip", v) if nodeNative61 != "" { website["FilterInvalidIP"] = nodeNative61 } nodeNative62, _ := jsonpath.Get("$[0].website[0].ignore_certificate_error", v) if nodeNative62 != "" { website["IgnoreCertificateError"] = nodeNative62 } nodeNative63, _ := jsonpath.Get("$[0].website[0].slow_element_threshold", v) if nodeNative63 != "" { website["SlowElementThreshold"] = nodeNative63 } nodeNative64, _ := jsonpath.Get("$[0].website[0].wait_completion_time", v) if nodeNative64 != "" { website["WaitCompletionTime"] = nodeNative64 } nodeNative65, _ := jsonpath.Get("$[0].website[0].verify_string_blacklist", v) if nodeNative65 != "" { website["VerifyStringBlacklist"] = nodeNative65 } nodeNative66, _ := jsonpath.Get("$[0].website[0].verify_string_whitelist", v) if nodeNative66 != "" { website["VerifyStringWhitelist"] = nodeNative66 } nodeNative67, _ := jsonpath.Get("$[0].website[0].element_blacklist", v) if nodeNative67 != "" { website["ElementBlacklist"] = nodeNative67 } nodeNative68, _ := jsonpath.Get("$[0].website[0].dns_hijack_whitelist", v) if nodeNative68 != "" { website["DNSHijackWhitelist"] = nodeNative68 } nodeNative69, _ := jsonpath.Get("$[0].website[0].page_tamper", v) if nodeNative69 != "" { website["PageTamper"] = nodeNative69 } nodeNative70, _ := jsonpath.Get("$[0].website[0].flow_hijack_jump_times", v) if nodeNative70 != "" { website["FlowHijackJumpTimes"] = nodeNative70 } nodeNative71, _ := jsonpath.Get("$[0].website[0].flow_hijack_logo", v) if nodeNative71 != "" { website["FlowHijackLogo"] = nodeNative71 } nodeNative72, _ := jsonpath.Get("$[0].website[0].monitor_timeout", v) if nodeNative72 != "" { website["MonitorTimeout"] = nodeNative72 } nodeNative73, _ := jsonpath.Get("$[0].website[0].redirection", v) if nodeNative73 != "" { website["Redirection"] = nodeNative73 } nodeNative74, _ := jsonpath.Get("$[0].website[0].custom_header_content", v) if nodeNative74 != "" { website["CustomHeaderContent"] = nodeNative74 } objectDataLocalMap["Website"] = website } request["MonitorConf"] = convertMapToJsonStringIgnoreError(objectDataLocalMap) } if !d.IsNewResource() && d.HasChange("available_assertions") { update = true } if v, ok := d.GetOk("available_assertions"); ok { availableAssertionsMaps := make([]map[string]interface{}, 0) for _, dataLoop1 := range v.([]interface{}) { dataLoop1Tmp := dataLoop1.(map[string]interface{}) dataLoop1Map := make(map[string]interface{}) dataLoop1Map["Type"] = dataLoop1Tmp["type"] dataLoop1Map["Target"] = dataLoop1Tmp["target"] dataLoop1Map["Operator"] = dataLoop1Tmp["operator"] dataLoop1Map["Expect"] = dataLoop1Tmp["expect"] availableAssertionsMaps = append(availableAssertionsMaps, dataLoop1Map) } request["AvailableAssertions"], _ = convertListMapToJsonString(availableAssertionsMaps) } if !d.IsNewResource() && d.HasChange("custom_period") { update = true } objectDataLocalMap1 := make(map[string]interface{}) if v := d.Get("custom_period"); !IsNil(v) { nodeNative79, _ := jsonpath.Get("$[0].end_hour", v) if nodeNative79 != "" { objectDataLocalMap1["EndHour"] = nodeNative79 } nodeNative80, _ := jsonpath.Get("$[0].start_hour", v) if nodeNative80 != "" { objectDataLocalMap1["StartHour"] = nodeNative80 } request["CustomPeriod"] = convertMapToJsonStringIgnoreError(objectDataLocalMap1) } if !d.IsNewResource() && d.HasChange("common_setting") { update = true } objectDataLocalMap2 := make(map[string]interface{}) if v := d.Get("common_setting"); !IsNil(v) { nodeNative81, _ := jsonpath.Get("$[0].ip_type", v) if nodeNative81 != "" { objectDataLocalMap2["IpType"] = nodeNative81 } customHost_map, _ := jsonpath.Get("$[0].custom_host[0]", v) if !IsNil(customHost_map) { customHost := make(map[string]interface{}) if v, ok := d.GetOk("common_setting"); ok { localData2, err := jsonpath.Get("$[0].custom_host[0].hosts", v) if err != nil { return WrapError(err) } localMaps := make([]map[string]interface{}, 0) for _, dataLoop2 := range localData2.([]interface{}) { dataLoop2Tmp := dataLoop2.(map[string]interface{}) dataLoop2Map := make(map[string]interface{}) dataLoop2Map["Domain"] = dataLoop2Tmp["domain"] dataLoop2Map["Ips"] = dataLoop2Tmp["ips"] dataLoop2Map["IpType"] = dataLoop2Tmp["ip_type"] localMaps = append(localMaps, dataLoop2Map) } customHost["Hosts"] = localMaps } nodeNative86, _ := jsonpath.Get("$[0].custom_host[0].select_type", v) if nodeNative86 != "" { customHost["SelectType"] = nodeNative86 } objectDataLocalMap2["CustomHost"] = customHost } nodeNative88, _ := jsonpath.Get("$[0].monitor_samples", v) if nodeNative88 != "" { objectDataLocalMap2["MonitorSamples"] = nodeNative88 } nodeNative89, _ := jsonpath.Get("$[0].is_open_trace", v) if nodeNative89 != "" { objectDataLocalMap2["IsOpenTrace"] = nodeNative89 } nodeNative90, _ := jsonpath.Get("$[0].trace_client_type", v) if nodeNative90 != "" { objectDataLocalMap2["TraceClientType"] = nodeNative90 } nodeNative91, _ := jsonpath.Get("$[0].xtrace_region", v) if nodeNative91 != "" { objectDataLocalMap2["XtraceRegion"] = nodeNative91 } request["CommonSetting"] = convertMapToJsonStringIgnoreError(objectDataLocalMap2) } if _, ok := d.GetOk("resource_group_id"); ok && !d.IsNewResource() && d.HasChange("resource_group_id") { update = true request["ResourceGroupId"] = d.Get("resource_group_id") } if update { wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { response, err = client.RpcPost("ARMS", "2019-08-08", action, query, request, true) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } addDebug(action, response, request) return nil }) if err != nil { return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR) } d.SetPartial("synthetic_task_name") d.SetPartial("frequency") d.SetPartial("resource_group_id") } update = false action = "ChangeResourceGroup" request = make(map[string]interface{}) query = make(map[string]interface{}) query["ResourceId"] = d.Id() request["RegionId"] = client.RegionId if _, ok := d.GetOk("resource_group_id"); ok && !d.IsNewResource() && d.HasChange("resource_group_id") { update = true request["NewResourceGroupId"] = d.Get("resource_group_id") } request["ResourceType"] = "SYNTHETICTASK" if update { wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { response, err = client.RpcPost("ARMS", "2019-08-08", action, query, request, true) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } addDebug(action, response, request) return nil }) if err != nil { return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR) } d.SetPartial("resource_group_id") } if d.HasChange("status") { client := meta.(*connectivity.AliyunClient) armsServiceV2 := ArmsServiceV2{client} object, err := armsServiceV2.DescribeArmsSyntheticTask(d.Id()) if err != nil { return WrapError(err) } target := d.Get("status").(string) if object["Status"].(string) != target { if target == "RUNNING" { action = "StartTimingSyntheticTask" request = make(map[string]interface{}) query = make(map[string]interface{}) query["TaskIds"] = "[\"" + d.Id() + "\"]" request["RegionId"] = client.RegionId wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { response, err = client.RpcPost("ARMS", "2019-08-08", action, query, request, true) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } addDebug(action, response, request) return nil }) if err != nil { return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR) } } if target == "STOP" { action = "StopTimingSyntheticTask" request = make(map[string]interface{}) query = make(map[string]interface{}) query["TaskIds"] = "[\"" + d.Id() + "\"]" request["RegionId"] = client.RegionId wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { response, err = client.RpcPost("ARMS", "2019-08-08", action, query, request, true) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } addDebug(action, response, request) return nil }) if err != nil { return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR) } } } } if d.HasChange("tags") { armsServiceV2 := ArmsServiceV2{client} if err := armsServiceV2.SetResourceTags(d, "SYNTHETICTASK"); err != nil { return WrapError(err) } d.SetPartial("tags") } d.Partial(false) return resourceAliCloudArmsSyntheticTaskRead(d, meta) } func resourceAliCloudArmsSyntheticTaskDelete(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AliyunClient) action := "DeleteTimingSyntheticTask" var request map[string]interface{} var response map[string]interface{} query := make(map[string]interface{}) var err error request = make(map[string]interface{}) query["TaskId"] = d.Id() request["RegionId"] = client.RegionId wait := incrementalWait(3*time.Second, 5*time.Second) err = resource.Retry(d.Timeout(schema.TimeoutDelete), func() *resource.RetryError { response, err = client.RpcPost("ARMS", "2019-08-08", action, query, request, true) if err != nil { if NeedRetry(err) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } addDebug(action, response, request) return nil }) if err != nil { return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR) } return nil }