github.com/GoogleCloudPlatform/terraformer@v0.8.18/providers/tencentcloud/gaap.go (about)

     1  // Copyright 2021 The Terraformer Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package tencentcloud
    16  
    17  import (
    18  	"github.com/GoogleCloudPlatform/terraformer/terraformutils"
    19  	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
    20  	gaap "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap/v20180529"
    21  )
    22  
    23  type GaapGenerator struct {
    24  	TencentCloudService
    25  }
    26  
    27  func (g *GaapGenerator) InitResources() error {
    28  	args := g.GetArgs()
    29  	region := args["region"].(string)
    30  	credential := args["credential"].(common.Credential)
    31  	profile := NewTencentCloudClientProfile()
    32  	client, err := gaap.NewClient(&credential, region, profile)
    33  	if err != nil {
    34  		return err
    35  	}
    36  
    37  	if err := g.loadProxy(client); err != nil {
    38  		return err
    39  	}
    40  	if err := g.loadRealServer(client); err != nil {
    41  		return err
    42  	}
    43  
    44  	return nil
    45  }
    46  
    47  func (g *GaapGenerator) loadProxy(client *gaap.Client) error {
    48  	request := gaap.NewDescribeProxiesRequest()
    49  
    50  	var offset uint64 = 0
    51  	var pageSize uint64 = 50
    52  	allInstances := make([]*gaap.ProxyInfo, 0)
    53  
    54  	for {
    55  		request.Offset = &offset
    56  		request.Limit = &pageSize
    57  		response, err := client.DescribeProxies(request)
    58  		if err != nil {
    59  			return err
    60  		}
    61  
    62  		allInstances = append(allInstances, response.Response.ProxySet...)
    63  		if len(response.Response.ProxySet) < int(pageSize) {
    64  			break
    65  		}
    66  		offset += pageSize
    67  	}
    68  
    69  	for _, instance := range allInstances {
    70  		resource := terraformutils.NewResource(
    71  			*instance.ProxyId,
    72  			*instance.ProxyName+"_"+*instance.ProxyId,
    73  			"tencentcloud_gaap_proxy",
    74  			"tencentcloud",
    75  			map[string]string{},
    76  			[]string{},
    77  			map[string]interface{}{},
    78  		)
    79  		g.Resources = append(g.Resources, resource)
    80  	}
    81  
    82  	return nil
    83  }
    84  
    85  func (g *GaapGenerator) loadRealServer(client *gaap.Client) error {
    86  	request := gaap.NewDescribeRealServersRequest()
    87  	var projectID int64 = -1
    88  	request.ProjectId = &projectID
    89  
    90  	var offset uint64 = 0
    91  	var pageSize uint64 = 50
    92  	allInstances := make([]*gaap.BindRealServerInfo, 0)
    93  
    94  	for {
    95  		request.Offset = &offset
    96  		request.Limit = &pageSize
    97  		response, err := client.DescribeRealServers(request)
    98  		if err != nil {
    99  			return err
   100  		}
   101  
   102  		allInstances = append(allInstances, response.Response.RealServerSet...)
   103  		if len(response.Response.RealServerSet) < int(pageSize) {
   104  			break
   105  		}
   106  		offset += pageSize
   107  	}
   108  
   109  	for _, instance := range allInstances {
   110  		resource := terraformutils.NewResource(
   111  			*instance.RealServerId,
   112  			*instance.RealServerName+"_"+*instance.RealServerId,
   113  			"tencentcloud_gaap_realserver",
   114  			"tencentcloud",
   115  			map[string]string{},
   116  			[]string{},
   117  			map[string]interface{}{},
   118  		)
   119  		g.Resources = append(g.Resources, resource)
   120  	}
   121  
   122  	return nil
   123  }