in alicloud/resource_alicloud_oss_bucket_website.go [1120:1519]
func resourceAliCloudOssBucketWebsiteUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AliyunClient)
var request map[string]interface{}
var response map[string]interface{}
var query map[string]*string
var body map[string]interface{}
update := false
action := fmt.Sprintf("/?website")
var err error
request = make(map[string]interface{})
query = make(map[string]*string)
body = make(map[string]interface{})
hostMap := make(map[string]*string)
hostMap["bucket"] = StringPointer(d.Id())
objectDataLocalMap := make(map[string]interface{})
if d.HasChange("routing_rules") {
update = true
}
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{})
if !IsNil(dataLoopTmp["lua_config"]) {
localData1 := make(map[string]interface{})
script1, _ := jsonpath.Get("$[0].script", dataLoopTmp["lua_config"])
if script1 != nil && script1 != "" {
localData1["Script"] = script1
}
dataLoopMap["LuaConfig"] = localData1
}
if !IsNil(dataLoopTmp["redirect"]) {
localData2 := make(map[string]interface{})
mirrorMultiAlternates := make(map[string]interface{})
if v, ok := dataLoopTmp["redirect"]; ok {
localData3, err := jsonpath.Get("$[0].mirror_multi_alternates[0].mirror_multi_alternate", v)
if err != nil {
localData3 = make([]interface{}, 0)
}
localMaps3 := make([]interface{}, 0)
for _, dataLoop3 := range localData3.([]interface{}) {
dataLoop3Tmp := make(map[string]interface{})
if dataLoop3 != nil {
dataLoop3Tmp = dataLoop3.(map[string]interface{})
}
dataLoop3Map := make(map[string]interface{})
dataLoop3Map["MirrorMultiAlternateNumber"] = dataLoop3Tmp["mirror_multi_alternate_number"]
dataLoop3Map["MirrorMultiAlternateURL"] = dataLoop3Tmp["mirror_multi_alternate_url"]
dataLoop3Map["MirrorMultiAlternateVpcId"] = dataLoop3Tmp["mirror_multi_alternate_vpc_id"]
dataLoop3Map["MirrorMultiAlternateDstRegion"] = dataLoop3Tmp["mirror_multi_alternate_dst_region"]
localMaps3 = append(localMaps3, dataLoop3Map)
}
mirrorMultiAlternates["MirrorMultiAlternate"] = localMaps3
}
localData2["MirrorMultiAlternates"] = mirrorMultiAlternates
mirrorAuth := make(map[string]interface{})
accessKeySecret1, _ := jsonpath.Get("$[0].mirror_auth[0].access_key_secret", dataLoopTmp["redirect"])
if accessKeySecret1 != nil && accessKeySecret1 != "" {
mirrorAuth["AccessKeySecret"] = accessKeySecret1
}
accessKeyId1, _ := jsonpath.Get("$[0].mirror_auth[0].access_key_id", dataLoopTmp["redirect"])
if accessKeyId1 != nil && accessKeyId1 != "" {
mirrorAuth["AccessKeyId"] = accessKeyId1
}
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
}
localData2["MirrorAuth"] = mirrorAuth
mirrorReturnHeaders := make(map[string]interface{})
if v, ok := dataLoopTmp["redirect"]; ok {
localData4, err := jsonpath.Get("$[0].mirror_return_headers[0].return_header", 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)
}
mirrorReturnHeaders["ReturnHeader"] = localMaps4
}
localData2["MirrorReturnHeaders"] = mirrorReturnHeaders
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
}
localData2["MirrorTaggings"] = mirrorTaggings
mirrorAsyncStatus1, _ := jsonpath.Get("$[0].mirror_async_status", dataLoopTmp["redirect"])
if mirrorAsyncStatus1 != nil && mirrorAsyncStatus1 != "" {
localData2["MirrorAsyncStatus"] = mirrorAsyncStatus1
}
transparentMirrorResponseCodes1, _ := jsonpath.Get("$[0].transparent_mirror_response_codes", dataLoopTmp["redirect"])
if transparentMirrorResponseCodes1 != nil && transparentMirrorResponseCodes1 != "" {
localData2["TransparentMirrorResponseCodes"] = transparentMirrorResponseCodes1
}
mirrorAllowHeadObject1, _ := jsonpath.Get("$[0].mirror_allow_head_object", dataLoopTmp["redirect"])
if mirrorAllowHeadObject1 != nil && mirrorAllowHeadObject1 != "" {
localData2["MirrorAllowHeadObject"] = mirrorAllowHeadObject1
}
mirrorRole1, _ := jsonpath.Get("$[0].mirror_role", dataLoopTmp["redirect"])
if mirrorRole1 != nil && mirrorRole1 != "" {
localData2["MirrorRole"] = mirrorRole1
}
mirrorUsingRole1, _ := jsonpath.Get("$[0].mirror_using_role", dataLoopTmp["redirect"])
if mirrorUsingRole1 != nil && mirrorUsingRole1 != "" {
localData2["MirrorUsingRole"] = mirrorUsingRole1
}
mirrorTunnelId1, _ := jsonpath.Get("$[0].mirror_tunnel_id", dataLoopTmp["redirect"])
if mirrorTunnelId1 != nil && mirrorTunnelId1 != "" {
localData2["MirrorTunnelId"] = mirrorTunnelId1
}
mirrorSwitchAllErrors1, _ := jsonpath.Get("$[0].mirror_switch_all_errors", dataLoopTmp["redirect"])
if mirrorSwitchAllErrors1 != nil && mirrorSwitchAllErrors1 != "" {
localData2["MirrorSwitchAllErrors"] = mirrorSwitchAllErrors1
}
mirrorUserLastModified1, _ := jsonpath.Get("$[0].mirror_user_last_modified", dataLoopTmp["redirect"])
if mirrorUserLastModified1 != nil && mirrorUserLastModified1 != "" {
localData2["MirrorUserLastModified"] = mirrorUserLastModified1
}
mirrorDstSlaveVpcId1, _ := jsonpath.Get("$[0].mirror_dst_slave_vpc_id", dataLoopTmp["redirect"])
if mirrorDstSlaveVpcId1 != nil && mirrorDstSlaveVpcId1 != "" {
localData2["MirrorDstSlaveVpcId"] = mirrorDstSlaveVpcId1
}
mirrorDstVpcId1, _ := jsonpath.Get("$[0].mirror_dst_vpc_id", dataLoopTmp["redirect"])
if mirrorDstVpcId1 != nil && mirrorDstVpcId1 != "" {
localData2["MirrorDstVpcId"] = mirrorDstVpcId1
}
mirrorDstRegion1, _ := jsonpath.Get("$[0].mirror_dst_region", dataLoopTmp["redirect"])
if mirrorDstRegion1 != nil && mirrorDstRegion1 != "" {
localData2["MirrorDstRegion"] = mirrorDstRegion1
}
mirrorIsExpressTunnel1, _ := jsonpath.Get("$[0].mirror_is_express_tunnel", dataLoopTmp["redirect"])
if mirrorIsExpressTunnel1 != nil && mirrorIsExpressTunnel1 != "" {
localData2["MirrorIsExpressTunnel"] = mirrorIsExpressTunnel1
}
mirrorAllowVideoSnapshot1, _ := jsonpath.Get("$[0].mirror_allow_video_snapshot", dataLoopTmp["redirect"])
if mirrorAllowVideoSnapshot1 != nil && mirrorAllowVideoSnapshot1 != "" {
localData2["MirrorAllowVideoSnapshot"] = mirrorAllowVideoSnapshot1
}
mirrorAllowGetImageInfo1, _ := jsonpath.Get("$[0].mirror_allow_get_image_info", dataLoopTmp["redirect"])
if mirrorAllowGetImageInfo1 != nil && mirrorAllowGetImageInfo1 != "" {
localData2["MirrorAllowGetImageInfo"] = mirrorAllowGetImageInfo1
}
mirrorProxyPass1, _ := jsonpath.Get("$[0].mirror_proxy_pass", dataLoopTmp["redirect"])
if mirrorProxyPass1 != nil && mirrorProxyPass1 != "" {
localData2["MirrorProxyPass"] = mirrorProxyPass1
}
mirrorSaveOssMeta1, _ := jsonpath.Get("$[0].mirror_save_oss_meta", dataLoopTmp["redirect"])
if mirrorSaveOssMeta1 != nil && mirrorSaveOssMeta1 != "" {
localData2["MirrorSaveOssMeta"] = mirrorSaveOssMeta1
}
mirrorUrlProbe, _ := jsonpath.Get("$[0].mirror_url_probe", dataLoopTmp["redirect"])
if mirrorUrlProbe != nil && mirrorUrlProbe != "" {
localData2["MirrorURLProbe"] = mirrorUrlProbe
}
mirrorUrlSlave, _ := jsonpath.Get("$[0].mirror_url_slave", dataLoopTmp["redirect"])
if mirrorUrlSlave != nil && mirrorUrlSlave != "" {
localData2["MirrorURLSlave"] = mirrorUrlSlave
}
mirrorUrl, _ := jsonpath.Get("$[0].mirror_url", dataLoopTmp["redirect"])
if mirrorUrl != nil && mirrorUrl != "" {
localData2["MirrorURL"] = mirrorUrl
}
mirrorSni, _ := jsonpath.Get("$[0].mirror_sni", dataLoopTmp["redirect"])
if mirrorSni != nil && mirrorSni != "" {
localData2["MirrorSNI"] = mirrorSni
}
mirrorPassOriginalSlashes1, _ := jsonpath.Get("$[0].mirror_pass_original_slashes", dataLoopTmp["redirect"])
if mirrorPassOriginalSlashes1 != nil && mirrorPassOriginalSlashes1 != "" {
localData2["MirrorPassOriginalSlashes"] = mirrorPassOriginalSlashes1
}
httpRedirectCode1, _ := jsonpath.Get("$[0].http_redirect_code", dataLoopTmp["redirect"])
if httpRedirectCode1 != nil && httpRedirectCode1 != "" {
localData2["HttpRedirectCode"] = httpRedirectCode1
}
replaceKeyWith1, _ := jsonpath.Get("$[0].replace_key_with", dataLoopTmp["redirect"])
if replaceKeyWith1 != nil && replaceKeyWith1 != "" {
localData2["ReplaceKeyWith"] = replaceKeyWith1
}
enableReplacePrefix1, _ := jsonpath.Get("$[0].enable_replace_prefix", dataLoopTmp["redirect"])
if enableReplacePrefix1 != nil && enableReplacePrefix1 != "" {
localData2["EnableReplacePrefix"] = enableReplacePrefix1
}
replaceKeyPrefixWith1, _ := jsonpath.Get("$[0].replace_key_prefix_with", dataLoopTmp["redirect"])
if replaceKeyPrefixWith1 != nil && replaceKeyPrefixWith1 != "" {
localData2["ReplaceKeyPrefixWith"] = replaceKeyPrefixWith1
}
hostName1, _ := jsonpath.Get("$[0].host_name", dataLoopTmp["redirect"])
if hostName1 != nil && hostName1 != "" {
localData2["HostName"] = hostName1
}
protocol1, _ := jsonpath.Get("$[0].protocol", dataLoopTmp["redirect"])
if protocol1 != nil && protocol1 != "" {
localData2["Protocol"] = protocol1
}
mirrorHeaders := make(map[string]interface{})
if v, ok := dataLoopTmp["redirect"]; ok {
localData6, err := jsonpath.Get("$[0].mirror_headers[0].set", 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["Key"] = dataLoop6Tmp["key"]
dataLoop6Map["Value"] = dataLoop6Tmp["value"]
localMaps6 = append(localMaps6, dataLoop6Map)
}
mirrorHeaders["Set"] = localMaps6
}
remove1, _ := jsonpath.Get("$[0].mirror_headers[0].remove", dataLoopTmp["redirect"])
if remove1 != nil && remove1 != "" {
mirrorHeaders["Remove"] = remove1
}
pass1, _ := jsonpath.Get("$[0].mirror_headers[0].pass", dataLoopTmp["redirect"])
if pass1 != nil && pass1 != "" {
mirrorHeaders["Pass"] = pass1
}
passAll1, _ := jsonpath.Get("$[0].mirror_headers[0].pass_all", dataLoopTmp["redirect"])
if passAll1 != nil && passAll1 != "" {
mirrorHeaders["PassAll"] = passAll1
}
localData2["MirrorHeaders"] = mirrorHeaders
mirrorCheckMd51, _ := jsonpath.Get("$[0].mirror_check_md5", dataLoopTmp["redirect"])
if mirrorCheckMd51 != nil && mirrorCheckMd51 != "" {
localData2["MirrorCheckMd5"] = mirrorCheckMd51
}
mirrorFollowRedirect1, _ := jsonpath.Get("$[0].mirror_follow_redirect", dataLoopTmp["redirect"])
if mirrorFollowRedirect1 != nil && mirrorFollowRedirect1 != "" {
localData2["MirrorFollowRedirect"] = mirrorFollowRedirect1
}
mirrorPassQueryString1, _ := jsonpath.Get("$[0].mirror_pass_query_string", dataLoopTmp["redirect"])
if mirrorPassQueryString1 != nil && mirrorPassQueryString1 != "" {
localData2["MirrorPassQueryString"] = mirrorPassQueryString1
}
passQueryString1, _ := jsonpath.Get("$[0].pass_query_string", dataLoopTmp["redirect"])
if passQueryString1 != nil && passQueryString1 != "" {
localData2["PassQueryString"] = passQueryString1
}
redirectType1, _ := jsonpath.Get("$[0].redirect_type", dataLoopTmp["redirect"])
if redirectType1 != nil && redirectType1 != "" {
localData2["RedirectType"] = redirectType1
}
dataLoopMap["Redirect"] = localData2
}
if !IsNil(dataLoopTmp["condition"]) {
localData7 := make(map[string]interface{})
if v, ok := dataLoopTmp["condition"]; ok {
localData8, err := jsonpath.Get("$[0].include_headers", v)
if err != nil {
localData8 = make([]interface{}, 0)
}
localMaps8 := make([]interface{}, 0)
for _, dataLoop8 := range localData8.([]interface{}) {
dataLoop8Tmp := make(map[string]interface{})
if dataLoop8 != nil {
dataLoop8Tmp = dataLoop8.(map[string]interface{})
}
dataLoop8Map := make(map[string]interface{})
dataLoop8Map["EndsWith"] = dataLoop8Tmp["ends_with"]
dataLoop8Map["StartsWith"] = dataLoop8Tmp["starts_with"]
dataLoop8Map["Equals"] = dataLoop8Tmp["equals"]
dataLoop8Map["Key"] = dataLoop8Tmp["key"]
localMaps8 = append(localMaps8, dataLoop8Map)
}
localData7["IncludeHeader"] = localMaps8
}
httpErrorCodeReturnedEquals1, _ := jsonpath.Get("$[0].http_error_code_returned_equals", dataLoopTmp["condition"])
if httpErrorCodeReturnedEquals1 != nil && httpErrorCodeReturnedEquals1 != "" {
localData7["HttpErrorCodeReturnedEquals"] = httpErrorCodeReturnedEquals1
}
keySuffixEquals1, _ := jsonpath.Get("$[0].key_suffix_equals", dataLoopTmp["condition"])
if keySuffixEquals1 != nil && keySuffixEquals1 != "" {
localData7["KeySuffixEquals"] = keySuffixEquals1
}
keyPrefixEquals1, _ := jsonpath.Get("$[0].key_prefix_equals", dataLoopTmp["condition"])
if keyPrefixEquals1 != nil && keyPrefixEquals1 != "" {
localData7["KeyPrefixEquals"] = keyPrefixEquals1
}
dataLoopMap["Condition"] = localData7
}
dataLoopMap["RuleNumber"] = dataLoopTmp["rule_number"]
localMaps = append(localMaps, dataLoopMap)
}
routingRules["RoutingRule"] = localMaps
}
objectDataLocalMap["RoutingRules"] = routingRules
}
if d.HasChange("error_document") {
update = true
}
if v := d.Get("error_document"); !IsNil(v) {
errorDocument := make(map[string]interface{})
httpStatus1, _ := jsonpath.Get("$[0].http_status", v)
if httpStatus1 != nil && (d.HasChange("error_document.0.http_status") || httpStatus1 != "") {
errorDocument["HttpStatus"] = httpStatus1
}
key9, _ := jsonpath.Get("$[0].key", v)
if key9 != nil && (d.HasChange("error_document.0.key") || key9 != "") {
errorDocument["Key"] = key9
}
objectDataLocalMap["ErrorDocument"] = errorDocument
}
if d.HasChange("index_document") {
update = true
}
if v := d.Get("index_document"); !IsNil(v) {
indexDocument := make(map[string]interface{})
type1, _ := jsonpath.Get("$[0].type", v)
if type1 != nil && (d.HasChange("index_document.0.type") || type1 != "") {
indexDocument["Type"] = type1
}
suffix1, _ := jsonpath.Get("$[0].suffix", v)
if suffix1 != nil && (d.HasChange("index_document.0.suffix") || suffix1 != "") {
indexDocument["Suffix"] = suffix1
}
supportSubDir1, _ := jsonpath.Get("$[0].support_sub_dir", v)
if supportSubDir1 != nil && (d.HasChange("index_document.0.support_sub_dir") || supportSubDir1 != "") {
indexDocument["SupportSubDir"] = supportSubDir1
}
objectDataLocalMap["IndexDocument"] = indexDocument
}
request["WebsiteConfiguration"] = objectDataLocalMap
body = request
if update {
wait := incrementalWait(3*time.Second, 5*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), 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, d.Id(), action, AlibabaCloudSdkGoERROR)
}
}
return resourceAliCloudOssBucketWebsiteRead(d, meta)
}