Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 16 additions & 9 deletions alicloud/connectivity/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import (
gatewayclient "github.com/alibabacloud-go/alibabacloud-gateway-sls/client"
roaCS "github.com/alibabacloud-go/cs-20151215/v5/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
"github.com/alibabacloud-go/darabonba-openapi/v2/utils"
ots "github.com/alibabacloud-go/tablestore-20201209/v3/client"
roa "github.com/alibabacloud-go/tea-roa/client"
rpc "github.com/alibabacloud-go/tea-rpc/client"
util "github.com/alibabacloud-go/tea-utils/service"
Expand Down Expand Up @@ -51,7 +53,6 @@ import (
"github.com/aliyun/alibaba-cloud-sdk-go/services/hbase"
"github.com/aliyun/alibaba-cloud-sdk-go/services/market"
"github.com/aliyun/alibaba-cloud-sdk-go/services/maxcompute"
"github.com/aliyun/alibaba-cloud-sdk-go/services/ots"
"github.com/aliyun/alibaba-cloud-sdk-go/services/polardb"
r_kvstore "github.com/aliyun/alibaba-cloud-sdk-go/services/r-kvstore"
"github.com/aliyun/alibaba-cloud-sdk-go/services/ram"
Expand All @@ -67,6 +68,7 @@ import (
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"github.com/aliyun/aliyun-tablestore-go-sdk/tablestore"
otsTunnel "github.com/aliyun/aliyun-tablestore-go-sdk/tunnel"
credential "github.com/aliyun/credentials-go/credentials"
"github.com/aliyun/fc-go-sdk"
"github.com/denverdino/aliyungo/cdn"
"github.com/denverdino/aliyungo/cs"
Expand Down Expand Up @@ -884,18 +886,21 @@ func (client *AliyunClient) WithOtsClient(do func(*ots.Client) (interface{}, err
if client.otsconn != nil && !client.config.needRefreshCredential() {
return do(client.otsconn)
}
product := "ots"
product := "tablestore"
config := new(utils.Config)
endpoint, err := client.loadApiEndpoint(product)
if err != nil {
return nil, err
}
if endpoint != "" {
endpoints.AddEndpointMapping(client.config.RegionId, product, endpoint)
}
otsconn, err := ots.NewClientWithOptions(client.config.RegionId, client.getSdkConfig(0), client.config.getAuthCredential(true))
config.SetRegionId(client.config.RegionId).SetEndpoint(endpoint)
cred, err := credential.NewCredential(client.config.getCredentialConfig(true))
if err != nil {
return nil, fmt.Errorf("unable to initialize the OTS client: %#v", err)
}
config.SetCredential(cred)

proxy, err := client.getHttpProxy()
if proxy != nil {
Expand All @@ -906,17 +911,19 @@ func (client *AliyunClient) WithOtsClient(do func(*ots.Client) (interface{}, err

if !skip {
if client.config.Protocol == "HTTPS" {
otsconn.SetHttpsProxy(proxy.String())
config.SetHttpsProxy(proxy.String())
} else {
otsconn.SetHttpProxy(proxy.String())
config.SetHttpProxy(proxy.String())
}
}
}

otsconn.SetReadTimeout(time.Duration(client.config.ClientReadTimeout) * time.Millisecond)
otsconn.SetConnectTimeout(time.Duration(client.config.ClientConnectTimeout) * time.Millisecond)
otsconn.SourceIp = client.config.SourceIp
otsconn.SecureTransport = client.config.SecureTransport
config.SetReadTimeout(client.config.ClientReadTimeout)
config.SetConnectTimeout(client.config.ClientConnectTimeout)
otsconn, err := ots.NewClient(config)
if err != nil {
return nil, fmt.Errorf("unable to initialize the OTS client: %#v", err)
}
client.otsconn = otsconn

return do(client.otsconn)
Expand Down
20 changes: 11 additions & 9 deletions alicloud/data_source_alicloud_ots_instance_attachments.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package alicloud
import (
"regexp"

"github.com/aliyun/alibaba-cloud-sdk-go/services/ots"
ots "github.com/alibabacloud-go/tablestore-20201209/v3/client"
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
Expand Down Expand Up @@ -89,11 +89,11 @@ func dataSourceAlicloudOtsInstanceAttachmentsRead(d *schema.ResourceData, meta i
return WrapError(err)
}

var filteredVpcs []ots.VpcInfo
var filteredVpcs []*ots.ListVpcInfoByInstanceResponseBodyVpcInfos
if v, ok := d.GetOk("name_regex"); ok && v.(string) != "" {
r := regexp.MustCompile(v.(string))
for _, vpc := range allVpcs {
if r.MatchString(vpc.InstanceVpcName) {
if r.MatchString(*vpc.InstanceVpcName) {
filteredVpcs = append(filteredVpcs, vpc)
}
}
Expand All @@ -103,24 +103,26 @@ func dataSourceAlicloudOtsInstanceAttachmentsRead(d *schema.ResourceData, meta i
return otsAttachmentsDescriptionAttributes(d, filteredVpcs, meta)
}

func otsAttachmentsDescriptionAttributes(d *schema.ResourceData, vpcInfos []ots.VpcInfo, meta interface{}) error {
func otsAttachmentsDescriptionAttributes(d *schema.ResourceData, vpcInfos []*ots.ListVpcInfoByInstanceResponseBodyVpcInfos, meta interface{}) error {
var ids []string
var names []string
var vpcIds []string
var s []map[string]interface{}

instanceName := d.Get("instance_name").(string)
for _, vpc := range vpcInfos {
mapping := map[string]interface{}{
"id": vpc.InstanceName,
"id": instanceName,
"domain": vpc.Domain,
"endpoint": vpc.Endpoint,
"region": vpc.RegionNo,
"instance_name": vpc.InstanceName,
"instance_name": instanceName,
"vpc_name": vpc.InstanceVpcName,
"vpc_id": vpc.VpcId,
}
names = append(names, vpc.InstanceVpcName)
ids = append(ids, vpc.InstanceName)
vpcIds = append(vpcIds, vpc.VpcId)
names = append(names, *vpc.InstanceVpcName)
ids = append(ids, instanceName)
vpcIds = append(vpcIds, *vpc.VpcId)
s = append(s, mapping)
}

Expand Down
49 changes: 27 additions & 22 deletions alicloud/data_source_alicloud_ots_instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package alicloud
import (
"regexp"

ots "github.com/alibabacloud-go/tablestore-20201209/v3/client"
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
Expand Down Expand Up @@ -145,20 +146,20 @@ func dataSourceAlicloudOtsInstancesRead(d *schema.ResourceData, meta interface{}
var filteredInstanceNames []string
for _, instanceName := range allInstanceNames {
// name_regex mismatch
if nameReg != nil && !nameReg.MatchString(instanceName) {
if nameReg != nil && !nameReg.MatchString(*instanceName) {
continue
}
// ids mismatch
if len(idsMap) != 0 {
if _, ok := idsMap[instanceName]; !ok {
if _, ok := idsMap[*instanceName]; !ok {
continue
}
}
filteredInstanceNames = append(filteredInstanceNames, instanceName)
filteredInstanceNames = append(filteredInstanceNames, *instanceName)
}

// get full instance info via GetInstance
var allInstances []RestOtsInstanceInfo
var allInstances []*ots.GetInstanceResponseBody
for _, instanceName := range filteredInstanceNames {
instanceInfo, err := otsService.DescribeOtsInstance(instanceName)
if err != nil {
Expand All @@ -168,7 +169,7 @@ func dataSourceAlicloudOtsInstancesRead(d *schema.ResourceData, meta interface{}
}

// filter by tag.
var filteredInstances []RestOtsInstanceInfo
var filteredInstances []*ots.GetInstanceResponseBody
if v, ok := d.GetOk("tags"); ok {
if vmap, ok := v.(map[string]interface{}); ok && len(vmap) > 0 {
for _, instance := range allInstances {
Expand All @@ -185,29 +186,33 @@ func dataSourceAlicloudOtsInstancesRead(d *schema.ResourceData, meta interface{}
return otsInstancesDecriptionAttributes(d, filteredInstances, meta)
}

func otsInstancesDecriptionAttributes(d *schema.ResourceData, instances []RestOtsInstanceInfo, meta interface{}) error {
func otsInstancesDecriptionAttributes(d *schema.ResourceData, instances []*ots.GetInstanceResponseBody, meta interface{}) error {
var ids []string
var names []string
var s []map[string]interface{}
for _, instance := range instances {
mapping := map[string]interface{}{
"id": instance.InstanceName,
"name": instance.InstanceName,
"status": toInstanceOuterStatus(instance.InstanceStatus),
"cluster_type": instance.InstanceSpecification,
"create_time": instance.CreateTime,
"user_id": instance.UserId,
"resource_group_id": instance.ResourceGroupId,
"network_type_acl": instance.NetworkTypeACL,
"network_source_acl": instance.NetworkSourceACL,
"policy": instance.Policy,
"policy_version": instance.PolicyVersion,
"description": instance.InstanceDescription,
"table_quota": instance.Quota.TableQuota,
"tags": otsRestTagsToMap(instance.Tags),
"id": instance.InstanceName,
"name": instance.InstanceName,
"status": toInstanceOuterStatus(*instance.InstanceStatus),
"cluster_type": instance.InstanceSpecification,
"create_time": instance.CreateTime,
"user_id": instance.UserId,
"resource_group_id": instance.ResourceGroupId,
"network_type_acl": instance.NetworkTypeACL,
"network_source_acl": instance.NetworkSourceACL,
"accessed_by": instance.Network,
"policy": instance.Policy,
"policy_version": instance.PolicyVersion,
"description": instance.InstanceDescription,
"alias_name": instance.AliasName,
"payment_type": instance.PaymentType,
"elastic_vcs_upper_limit": instance.ElasticVCUUpperLimit,
"table_quota": instance.TableQuota,
"tags": otsRestTagsToMap(instance.Tags),
}
names = append(names, instance.InstanceName)
ids = append(ids, instance.InstanceName)
names = append(names, *instance.InstanceName)
ids = append(ids, *instance.InstanceName)
s = append(s, mapping)
}

Expand Down
18 changes: 17 additions & 1 deletion alicloud/extension_ots.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,19 @@ func toInstanceInnerStatus(instanceOuterStatus Status) string {
}
}

// Takes the result of flatmap.Expand for an array of strings
// and returns a []string
func expandStringPointerList(configured []interface{}) []*string {
vs := make([]*string, 0, len(configured))
for _, v := range configured {
if v == nil {
continue
}
vs = append(vs, StringPointer(v.(string)))
}
return vs
}

type TunnelTypeString string

const (
Expand Down Expand Up @@ -202,8 +215,11 @@ type RestOtsInstanceInfo struct {
NetworkTypeACL []string `json:"NetworkTypeACL" xml:"NetworkTypeACL"`
NetworkSourceACL []string `json:"NetworkSourceACL" xml:"NetworkSourceACL"`
Policy string `json:"Policy" xml:"Policy"`
PolicyVersion int `json:"PolicyVersion" xml:"PolicyVersion"`
PolicyVersion int64 `json:"PolicyVersion" xml:"PolicyVersion"`
InstanceDescription string `json:"InstanceDescription" xml:"InstanceDescription"`
AliasName string `json:"AliasName" xml:"AliasName"`
PaymentType string `json:"PaymentType" xml:"PaymentType"`
ElasticVCUUpperLimit float64 `json:"ElasticVCUUpperLimit" xml:"ElasticVCUUpperLimit"`
Quota RestOtsQuota `json:"Quota" xml:"Quota"`
Tags []RestOtsTagInfo `json:"Tags" xml:"Tags"`
}
Expand Down
Loading