in alicloud/resource_alicloud_oss_bucket_website.go [445:827]
func resourceAliCloudOssBucketWebsiteCreate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AliyunClient)
action := fmt.Sprintf("/?website")
var request map[string]interface{}
var response map[string]interface{}
query := make(map[string]*string)
body := make(map[string]interface{})
hostMap := make(map[string]*string)
var err error
request = make(map[string]interface{})
hostMap["bucket"] = StringPointer(d.Get("bucket").(string))
objectDataLocalMap := make(map[string]interface{})
if v := d.Get("index_document"); !IsNil(v) {
indexDocument := make(map[string]interface{})
suffix1, _ := jsonpath.Get("$[0].suffix", d.Get("index_document"))
if suffix1 != nil && suffix1 != "" {
indexDocument["Suffix"] = suffix1
}
supportSubDir1, _ := jsonpath.Get("$[0].support_sub_dir", d.Get("index_document"))
if supportSubDir1 != nil && supportSubDir1 != "" {
indexDocument["SupportSubDir"] = supportSubDir1
}
type1, _ := jsonpath.Get("$[0].type", d.Get("index_document"))
if type1 != nil && type1 != "" {
indexDocument["Type"] = type1
}
objectDataLocalMap["IndexDocument"] = indexDocument
}
if v := d.Get("error_document"); !IsNil(v) {
errorDocument := make(map[string]interface{})
httpStatus1, _ := jsonpath.Get("$[0].http_status", d.Get("error_document"))
if httpStatus1 != nil && httpStatus1 != "" {
errorDocument["HttpStatus"] = httpStatus1
}
key1, _ := jsonpath.Get("$[0].key", d.Get("error_document"))
if key1 != nil && key1 != "" {
errorDocument["Key"] = key1
}
objectDataLocalMap["ErrorDocument"] = errorDocument
}
if v := d.Get("routing_rules"); !IsNil(v) {
routingRules := make(map[string]interface{})
if v, ok := d.GetOk("routing_rules"); ok {
localData, err := jsonpath.Get("$[0].routing_rule", v)
if err != nil {
localData = make([]interface{}, 0)
}
localMaps := make([]interface{}, 0)
for _, dataLoop := range localData.([]interface{}) {
dataLoopTmp := make(map[string]interface{})
if dataLoop != nil {
dataLoopTmp = dataLoop.(map[string]interface{})
}
dataLoopMap := make(map[string]interface{})
dataLoopMap["RuleNumber"] = dataLoopTmp["rule_number"]
localData1 := make(map[string]interface{})
keyPrefixEquals1, _ := jsonpath.Get("$[0].key_prefix_equals", dataLoopTmp["condition"])
if keyPrefixEquals1 != nil && keyPrefixEquals1 != "" {
localData1["KeyPrefixEquals"] = keyPrefixEquals1
}
keySuffixEquals1, _ := jsonpath.Get("$[0].key_suffix_equals", dataLoopTmp["condition"])
if keySuffixEquals1 != nil && keySuffixEquals1 != "" {
localData1["KeySuffixEquals"] = keySuffixEquals1
}
httpErrorCodeReturnedEquals1, _ := jsonpath.Get("$[0].http_error_code_returned_equals", dataLoopTmp["condition"])
if httpErrorCodeReturnedEquals1 != nil && httpErrorCodeReturnedEquals1 != "" {
localData1["HttpErrorCodeReturnedEquals"] = httpErrorCodeReturnedEquals1
}
if v, ok := dataLoopTmp["condition"]; ok {
localData2, err := jsonpath.Get("$[0].include_headers", v)
if err != nil {
localData2 = make([]interface{}, 0)
}
localMaps2 := make([]interface{}, 0)
for _, dataLoop2 := range localData2.([]interface{}) {
dataLoop2Tmp := make(map[string]interface{})
if dataLoop2 != nil {
dataLoop2Tmp = dataLoop2.(map[string]interface{})
}
dataLoop2Map := make(map[string]interface{})
dataLoop2Map["Key"] = dataLoop2Tmp["key"]
dataLoop2Map["Equals"] = dataLoop2Tmp["equals"]
dataLoop2Map["StartsWith"] = dataLoop2Tmp["starts_with"]
dataLoop2Map["EndsWith"] = dataLoop2Tmp["ends_with"]
localMaps2 = append(localMaps2, dataLoop2Map)
}
localData1["IncludeHeader"] = localMaps2
}
dataLoopMap["Condition"] = localData1
localData3 := make(map[string]interface{})
redirectType1, _ := jsonpath.Get("$[0].redirect_type", dataLoopTmp["redirect"])
if redirectType1 != nil && redirectType1 != "" {
localData3["RedirectType"] = redirectType1
}
passQueryString1, _ := jsonpath.Get("$[0].pass_query_string", dataLoopTmp["redirect"])
if passQueryString1 != nil && passQueryString1 != "" {
localData3["PassQueryString"] = passQueryString1
}
mirrorUrl, _ := jsonpath.Get("$[0].mirror_url", dataLoopTmp["redirect"])
if mirrorUrl != nil && mirrorUrl != "" {
localData3["MirrorURL"] = mirrorUrl
}
mirrorSni, _ := jsonpath.Get("$[0].mirror_sni", dataLoopTmp["redirect"])
if mirrorSni != nil && mirrorSni != "" {
localData3["MirrorSNI"] = mirrorSni
}
mirrorPassQueryString1, _ := jsonpath.Get("$[0].mirror_pass_query_string", dataLoopTmp["redirect"])
if mirrorPassQueryString1 != nil && mirrorPassQueryString1 != "" {
localData3["MirrorPassQueryString"] = mirrorPassQueryString1
}
mirrorFollowRedirect1, _ := jsonpath.Get("$[0].mirror_follow_redirect", dataLoopTmp["redirect"])
if mirrorFollowRedirect1 != nil && mirrorFollowRedirect1 != "" {
localData3["MirrorFollowRedirect"] = mirrorFollowRedirect1
}
mirrorCheckMd51, _ := jsonpath.Get("$[0].mirror_check_md5", dataLoopTmp["redirect"])
if mirrorCheckMd51 != nil && mirrorCheckMd51 != "" {
localData3["MirrorCheckMd5"] = mirrorCheckMd51
}
mirrorHeaders := make(map[string]interface{})
passAll1, _ := jsonpath.Get("$[0].mirror_headers[0].pass_all", dataLoopTmp["redirect"])
if passAll1 != nil && passAll1 != "" {
mirrorHeaders["PassAll"] = passAll1
}
pass1, _ := jsonpath.Get("$[0].mirror_headers[0].pass", dataLoopTmp["redirect"])
if pass1 != nil && pass1 != "" {
mirrorHeaders["Pass"] = pass1
}
remove1, _ := jsonpath.Get("$[0].mirror_headers[0].remove", dataLoopTmp["redirect"])
if remove1 != nil && remove1 != "" {
mirrorHeaders["Remove"] = remove1
}
if v, ok := dataLoopTmp["redirect"]; ok {
localData4, err := jsonpath.Get("$[0].mirror_headers[0].set", v)
if err != nil {
localData4 = make([]interface{}, 0)
}
localMaps4 := make([]interface{}, 0)
for _, dataLoop4 := range localData4.([]interface{}) {
dataLoop4Tmp := make(map[string]interface{})
if dataLoop4 != nil {
dataLoop4Tmp = dataLoop4.(map[string]interface{})
}
dataLoop4Map := make(map[string]interface{})
dataLoop4Map["Value"] = dataLoop4Tmp["value"]
dataLoop4Map["Key"] = dataLoop4Tmp["key"]
localMaps4 = append(localMaps4, dataLoop4Map)
}
mirrorHeaders["Set"] = localMaps4
}
localData3["MirrorHeaders"] = mirrorHeaders
protocol1, _ := jsonpath.Get("$[0].protocol", dataLoopTmp["redirect"])
if protocol1 != nil && protocol1 != "" {
localData3["Protocol"] = protocol1
}
hostName1, _ := jsonpath.Get("$[0].host_name", dataLoopTmp["redirect"])
if hostName1 != nil && hostName1 != "" {
localData3["HostName"] = hostName1
}
replaceKeyPrefixWith1, _ := jsonpath.Get("$[0].replace_key_prefix_with", dataLoopTmp["redirect"])
if replaceKeyPrefixWith1 != nil && replaceKeyPrefixWith1 != "" {
localData3["ReplaceKeyPrefixWith"] = replaceKeyPrefixWith1
}
enableReplacePrefix1, _ := jsonpath.Get("$[0].enable_replace_prefix", dataLoopTmp["redirect"])
if enableReplacePrefix1 != nil && enableReplacePrefix1 != "" {
localData3["EnableReplacePrefix"] = enableReplacePrefix1
}
replaceKeyWith1, _ := jsonpath.Get("$[0].replace_key_with", dataLoopTmp["redirect"])
if replaceKeyWith1 != nil && replaceKeyWith1 != "" {
localData3["ReplaceKeyWith"] = replaceKeyWith1
}
httpRedirectCode1, _ := jsonpath.Get("$[0].http_redirect_code", dataLoopTmp["redirect"])
if httpRedirectCode1 != nil && httpRedirectCode1 != "" {
localData3["HttpRedirectCode"] = httpRedirectCode1
}
mirrorPassOriginalSlashes1, _ := jsonpath.Get("$[0].mirror_pass_original_slashes", dataLoopTmp["redirect"])
if mirrorPassOriginalSlashes1 != nil && mirrorPassOriginalSlashes1 != "" {
localData3["MirrorPassOriginalSlashes"] = mirrorPassOriginalSlashes1
}
mirrorUrlSlave, _ := jsonpath.Get("$[0].mirror_url_slave", dataLoopTmp["redirect"])
if mirrorUrlSlave != nil && mirrorUrlSlave != "" {
localData3["MirrorURLSlave"] = mirrorUrlSlave
}
mirrorUrlProbe, _ := jsonpath.Get("$[0].mirror_url_probe", dataLoopTmp["redirect"])
if mirrorUrlProbe != nil && mirrorUrlProbe != "" {
localData3["MirrorURLProbe"] = mirrorUrlProbe
}
mirrorSaveOssMeta1, _ := jsonpath.Get("$[0].mirror_save_oss_meta", dataLoopTmp["redirect"])
if mirrorSaveOssMeta1 != nil && mirrorSaveOssMeta1 != "" {
localData3["MirrorSaveOssMeta"] = mirrorSaveOssMeta1
}
mirrorProxyPass1, _ := jsonpath.Get("$[0].mirror_proxy_pass", dataLoopTmp["redirect"])
if mirrorProxyPass1 != nil && mirrorProxyPass1 != "" {
localData3["MirrorProxyPass"] = mirrorProxyPass1
}
mirrorAllowGetImageInfo1, _ := jsonpath.Get("$[0].mirror_allow_get_image_info", dataLoopTmp["redirect"])
if mirrorAllowGetImageInfo1 != nil && mirrorAllowGetImageInfo1 != "" {
localData3["MirrorAllowGetImageInfo"] = mirrorAllowGetImageInfo1
}
mirrorAllowVideoSnapshot1, _ := jsonpath.Get("$[0].mirror_allow_video_snapshot", dataLoopTmp["redirect"])
if mirrorAllowVideoSnapshot1 != nil && mirrorAllowVideoSnapshot1 != "" {
localData3["MirrorAllowVideoSnapshot"] = mirrorAllowVideoSnapshot1
}
mirrorIsExpressTunnel1, _ := jsonpath.Get("$[0].mirror_is_express_tunnel", dataLoopTmp["redirect"])
if mirrorIsExpressTunnel1 != nil && mirrorIsExpressTunnel1 != "" {
localData3["MirrorIsExpressTunnel"] = mirrorIsExpressTunnel1
}
mirrorDstRegion1, _ := jsonpath.Get("$[0].mirror_dst_region", dataLoopTmp["redirect"])
if mirrorDstRegion1 != nil && mirrorDstRegion1 != "" {
localData3["MirrorDstRegion"] = mirrorDstRegion1
}
mirrorDstVpcId1, _ := jsonpath.Get("$[0].mirror_dst_vpc_id", dataLoopTmp["redirect"])
if mirrorDstVpcId1 != nil && mirrorDstVpcId1 != "" {
localData3["MirrorDstVpcId"] = mirrorDstVpcId1
}
mirrorDstSlaveVpcId1, _ := jsonpath.Get("$[0].mirror_dst_slave_vpc_id", dataLoopTmp["redirect"])
if mirrorDstSlaveVpcId1 != nil && mirrorDstSlaveVpcId1 != "" {
localData3["MirrorDstSlaveVpcId"] = mirrorDstSlaveVpcId1
}
mirrorUserLastModified1, _ := jsonpath.Get("$[0].mirror_user_last_modified", dataLoopTmp["redirect"])
if mirrorUserLastModified1 != nil && mirrorUserLastModified1 != "" {
localData3["MirrorUserLastModified"] = mirrorUserLastModified1
}
mirrorSwitchAllErrors1, _ := jsonpath.Get("$[0].mirror_switch_all_errors", dataLoopTmp["redirect"])
if mirrorSwitchAllErrors1 != nil && mirrorSwitchAllErrors1 != "" {
localData3["MirrorSwitchAllErrors"] = mirrorSwitchAllErrors1
}
mirrorTunnelId1, _ := jsonpath.Get("$[0].mirror_tunnel_id", dataLoopTmp["redirect"])
if mirrorTunnelId1 != nil && mirrorTunnelId1 != "" {
localData3["MirrorTunnelId"] = mirrorTunnelId1
}
mirrorUsingRole1, _ := jsonpath.Get("$[0].mirror_using_role", dataLoopTmp["redirect"])
if mirrorUsingRole1 != nil && mirrorUsingRole1 != "" {
localData3["MirrorUsingRole"] = mirrorUsingRole1
}
mirrorRole1, _ := jsonpath.Get("$[0].mirror_role", dataLoopTmp["redirect"])
if mirrorRole1 != nil && mirrorRole1 != "" {
localData3["MirrorRole"] = mirrorRole1
}
mirrorAllowHeadObject1, _ := jsonpath.Get("$[0].mirror_allow_head_object", dataLoopTmp["redirect"])
if mirrorAllowHeadObject1 != nil && mirrorAllowHeadObject1 != "" {
localData3["MirrorAllowHeadObject"] = mirrorAllowHeadObject1
}
transparentMirrorResponseCodes1, _ := jsonpath.Get("$[0].transparent_mirror_response_codes", dataLoopTmp["redirect"])
if transparentMirrorResponseCodes1 != nil && transparentMirrorResponseCodes1 != "" {
localData3["TransparentMirrorResponseCodes"] = transparentMirrorResponseCodes1
}
mirrorAsyncStatus1, _ := jsonpath.Get("$[0].mirror_async_status", dataLoopTmp["redirect"])
if mirrorAsyncStatus1 != nil && mirrorAsyncStatus1 != "" {
localData3["MirrorAsyncStatus"] = mirrorAsyncStatus1
}
mirrorTaggings := make(map[string]interface{})
if v, ok := dataLoopTmp["redirect"]; ok {
localData5, err := jsonpath.Get("$[0].mirror_taggings[0].taggings", v)
if err != nil {
localData5 = make([]interface{}, 0)
}
localMaps5 := make([]interface{}, 0)
for _, dataLoop5 := range localData5.([]interface{}) {
dataLoop5Tmp := make(map[string]interface{})
if dataLoop5 != nil {
dataLoop5Tmp = dataLoop5.(map[string]interface{})
}
dataLoop5Map := make(map[string]interface{})
dataLoop5Map["Key"] = dataLoop5Tmp["key"]
dataLoop5Map["Value"] = dataLoop5Tmp["value"]
localMaps5 = append(localMaps5, dataLoop5Map)
}
mirrorTaggings["Taggings"] = localMaps5
}
localData3["MirrorTaggings"] = mirrorTaggings
mirrorReturnHeaders := make(map[string]interface{})
if v, ok := dataLoopTmp["redirect"]; ok {
localData6, err := jsonpath.Get("$[0].mirror_return_headers[0].return_header", v)
if err != nil {
localData6 = make([]interface{}, 0)
}
localMaps6 := make([]interface{}, 0)
for _, dataLoop6 := range localData6.([]interface{}) {
dataLoop6Tmp := make(map[string]interface{})
if dataLoop6 != nil {
dataLoop6Tmp = dataLoop6.(map[string]interface{})
}
dataLoop6Map := make(map[string]interface{})
dataLoop6Map["Value"] = dataLoop6Tmp["value"]
dataLoop6Map["Key"] = dataLoop6Tmp["key"]
localMaps6 = append(localMaps6, dataLoop6Map)
}
mirrorReturnHeaders["ReturnHeader"] = localMaps6
}
localData3["MirrorReturnHeaders"] = mirrorReturnHeaders
mirrorAuth := make(map[string]interface{})
authType1, _ := jsonpath.Get("$[0].mirror_auth[0].auth_type", dataLoopTmp["redirect"])
if authType1 != nil && authType1 != "" {
mirrorAuth["AuthType"] = authType1
}
region1, _ := jsonpath.Get("$[0].mirror_auth[0].region", dataLoopTmp["redirect"])
if region1 != nil && region1 != "" {
mirrorAuth["Region"] = region1
}
accessKeyId1, _ := jsonpath.Get("$[0].mirror_auth[0].access_key_id", dataLoopTmp["redirect"])
if accessKeyId1 != nil && accessKeyId1 != "" {
mirrorAuth["AccessKeyId"] = accessKeyId1
}
accessKeySecret1, _ := jsonpath.Get("$[0].mirror_auth[0].access_key_secret", dataLoopTmp["redirect"])
if accessKeySecret1 != nil && accessKeySecret1 != "" {
mirrorAuth["AccessKeySecret"] = accessKeySecret1
}
localData3["MirrorAuth"] = mirrorAuth
mirrorMultiAlternates := make(map[string]interface{})
if v, ok := dataLoopTmp["redirect"]; ok {
localData7, err := jsonpath.Get("$[0].mirror_multi_alternates[0].mirror_multi_alternate", v)
if err != nil {
localData7 = make([]interface{}, 0)
}
localMaps7 := make([]interface{}, 0)
for _, dataLoop7 := range localData7.([]interface{}) {
dataLoop7Tmp := make(map[string]interface{})
if dataLoop7 != nil {
dataLoop7Tmp = dataLoop7.(map[string]interface{})
}
dataLoop7Map := make(map[string]interface{})
dataLoop7Map["MirrorMultiAlternateNumber"] = dataLoop7Tmp["mirror_multi_alternate_number"]
dataLoop7Map["MirrorMultiAlternateURL"] = dataLoop7Tmp["mirror_multi_alternate_url"]
dataLoop7Map["MirrorMultiAlternateVpcId"] = dataLoop7Tmp["mirror_multi_alternate_vpc_id"]
dataLoop7Map["MirrorMultiAlternateDstRegion"] = dataLoop7Tmp["mirror_multi_alternate_dst_region"]
localMaps7 = append(localMaps7, dataLoop7Map)
}
mirrorMultiAlternates["MirrorMultiAlternate"] = localMaps7
}
localData3["MirrorMultiAlternates"] = mirrorMultiAlternates
dataLoopMap["Redirect"] = localData3
localData8 := make(map[string]interface{})
script1, _ := jsonpath.Get("$[0].script", dataLoopTmp["lua_config"])
if script1 != nil && script1 != "" {
localData8["Script"] = script1
}
dataLoopMap["LuaConfig"] = localData8
localMaps = append(localMaps, dataLoopMap)
}
routingRules["RoutingRule"] = localMaps
}
objectDataLocalMap["RoutingRules"] = routingRules
}
request["WebsiteConfiguration"] = objectDataLocalMap
body = request
wait := incrementalWait(3*time.Second, 5*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutCreate), func() *resource.RetryError {
response, err = client.Do("Oss", xmlParam("PUT", "2019-05-17", "PutBucketWebsite", action), query, body, nil, hostMap, false)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
return nil
})
addDebug(action, response, request)
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, "alicloud_oss_bucket_website", action, AlibabaCloudSdkGoERROR)
}
d.SetId(fmt.Sprint(*hostMap["bucket"]))
return resourceAliCloudOssBucketWebsiteRead(d, meta)
}