backend/oss: Changes the DescribeEndpoint to DescribeEndpoints to fixes the unsupported sts bug
This commit is contained in:
parent
3e5bfa7364
commit
c495caafeb
|
@ -319,20 +319,14 @@ func (b *Backend) configure(ctx context.Context) error {
|
|||
}
|
||||
|
||||
if endpoint == "" {
|
||||
endpointItem, _ := b.getOSSEndpointByRegion(accessKey, secretKey, securityToken, region)
|
||||
if endpointItem != nil && len(endpointItem.Endpoint) > 0 {
|
||||
if len(endpointItem.Protocols.Protocols) > 0 {
|
||||
// HTTP or HTTPS
|
||||
schma = strings.ToLower(endpointItem.Protocols.Protocols[0])
|
||||
for _, p := range endpointItem.Protocols.Protocols {
|
||||
if strings.ToLower(p) == "https" {
|
||||
schma = strings.ToLower(p)
|
||||
break
|
||||
}
|
||||
}
|
||||
endpointsResponse, _ := b.getOSSEndpointByRegion(accessKey, secretKey, securityToken, region)
|
||||
for _, endpointItem := range endpointsResponse.Endpoints.Endpoint {
|
||||
if endpointItem.Type == "openAPI" {
|
||||
endpoint = endpointItem.Endpoint
|
||||
break
|
||||
}
|
||||
endpoint = endpointItem.Endpoint
|
||||
} else {
|
||||
}
|
||||
if endpoint == "" {
|
||||
endpoint = fmt.Sprintf("oss-%s.aliyuncs.com", region)
|
||||
}
|
||||
}
|
||||
|
@ -367,8 +361,8 @@ func (b *Backend) configure(ctx context.Context) error {
|
|||
return err
|
||||
}
|
||||
|
||||
func (b *Backend) getOSSEndpointByRegion(access_key, secret_key, security_token, region string) (*location.DescribeEndpointResponse, error) {
|
||||
args := location.CreateDescribeEndpointRequest()
|
||||
func (b *Backend) getOSSEndpointByRegion(access_key, secret_key, security_token, region string) (*location.DescribeEndpointsResponse, error) {
|
||||
args := location.CreateDescribeEndpointsRequest()
|
||||
args.ServiceCode = "oss"
|
||||
args.Id = region
|
||||
args.Domain = "location-readonly.aliyuncs.com"
|
||||
|
@ -379,7 +373,7 @@ func (b *Backend) getOSSEndpointByRegion(access_key, secret_key, security_token,
|
|||
|
||||
}
|
||||
locationClient.AppendUserAgent(TerraformUA, TerraformVersion)
|
||||
endpointsResponse, err := locationClient.DescribeEndpoint(args)
|
||||
endpointsResponse, err := locationClient.DescribeEndpoints(args)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Describe oss endpoint using region: %#v got an error: %#v.", region, err)
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package oss
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
@ -69,9 +70,10 @@ func TestBackendConfig(t *testing.T) {
|
|||
|
||||
func TestBackendConfigWorkSpace(t *testing.T) {
|
||||
testACC(t)
|
||||
bucketName := fmt.Sprintf("terraform-backend-oss-test-%d", rand.Intn(1000))
|
||||
config := map[string]interface{}{
|
||||
"region": "cn-beijing",
|
||||
"bucket": "terraform-backend-oss-test",
|
||||
"bucket": bucketName,
|
||||
"prefix": "mystate",
|
||||
"key": "first.tfstate",
|
||||
"tablestore_endpoint": "https://terraformstate.cn-beijing.ots.aliyuncs.com",
|
||||
|
@ -79,15 +81,15 @@ func TestBackendConfigWorkSpace(t *testing.T) {
|
|||
}
|
||||
|
||||
b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(config)).(*Backend)
|
||||
createOSSBucket(t, b.ossClient, "terraform-backend-oss-test")
|
||||
defer deleteOSSBucket(t, b.ossClient, "terraform-backend-oss-test")
|
||||
createOSSBucket(t, b.ossClient, bucketName)
|
||||
defer deleteOSSBucket(t, b.ossClient, bucketName)
|
||||
if _, err := b.Workspaces(); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
if !strings.HasPrefix(b.ossClient.Config.Endpoint, "https://oss-cn-beijing") {
|
||||
t.Fatalf("Incorrect region was provided")
|
||||
}
|
||||
if b.bucketName != "terraform-backend-oss-test" {
|
||||
if b.bucketName != bucketName {
|
||||
t.Fatalf("Incorrect bucketName was provided")
|
||||
}
|
||||
if b.statePrefix != "mystate" {
|
||||
|
|
Loading…
Reference in New Issue