github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/app/rpc/nacos/utils.go (about)

     1  package nacos
     2  
     3  import (
     4  	"fmt"
     5  	"strconv"
     6  	"strings"
     7  
     8  	"github.com/nacos-group/nacos-sdk-go/clients"
     9  	"github.com/nacos-group/nacos-sdk-go/common/constant"
    10  	"github.com/nacos-group/nacos-sdk-go/model"
    11  	"github.com/nacos-group/nacos-sdk-go/vo"
    12  )
    13  
    14  func GetOneInstance(urls string, nameSpace string, param vo.SelectOneHealthInstanceParam) (instance *model.Instance, err error) {
    15  	serverConfigs, err := getServerConfigs(urls)
    16  	if err != nil {
    17  		return nil, fmt.Errorf("failed to resolve nacos server url %s: %s", urls, err.Error())
    18  	}
    19  
    20  	namingClient, err := clients.CreateNamingClient(map[string]interface{}{
    21  		"serverConfigs": serverConfigs,
    22  		"clientConfig": constant.ClientConfig{
    23  			NamespaceId:         nameSpace,
    24  			TimeoutMs:           5000,
    25  			NotLoadCacheAtStart: true,
    26  			LogDir:              "/dev/null",
    27  		},
    28  	})
    29  	if err != nil {
    30  		return nil, fmt.Errorf("failed to create nacos client when getting one service. error: %s", err.Error())
    31  	}
    32  
    33  	instance, err = namingClient.SelectOneHealthyInstance(param)
    34  	if err != nil {
    35  		return nil, fmt.Errorf("failed to get %s service in [%s, %s]. error: %s", param, urls, nameSpace, err.Error())
    36  	}
    37  	return instance, nil
    38  }
    39  
    40  func getServerConfigs(urls string) ([]constant.ServerConfig, error) {
    41  	// nolint
    42  	var configs []constant.ServerConfig
    43  	for _, url := range strings.Split(urls, ",") {
    44  		laddr := strings.Split(url, ":")
    45  		serverPort, err := strconv.Atoi(laddr[1])
    46  		if err != nil {
    47  			return nil, err
    48  		}
    49  		configs = append(configs, constant.ServerConfig{
    50  			IpAddr: laddr[0],
    51  			Port:   uint64(serverPort),
    52  		})
    53  	}
    54  	return configs, nil
    55  }