func()

in api/api_datasource.go [21:84]


func (a *DatasourceApiService) DatasourceDatasourceIdGet(datasourceId int, hologresPort int, hologresPublicAddress string) (GetDatasourceResponse, error) {

	var (
		localVarReturnValue GetDatasourceResponse
	)

	datasourceIdStr := strconv.Itoa(datasourceId)
	response, err := a.client.GetDatasource(&a.client.instanceId, &datasourceIdStr)
	if err != nil {
		return localVarReturnValue, err
	}

	datasource := Datasource{
		DatasourceId: datasourceId,
		Type:         *response.Body.Type,
		Name:         *response.Body.Name,
		Region:       a.client.cfg.regionId,
		WorkspaceId:  *response.Body.WorkspaceId,
	}
	switch *response.Body.Type {
	case "Hologres":
		datasource.Type = constants.Datasource_Type_Hologres
		uris := strings.Split(*response.Body.Uri, "/")
		datasource.Database = uris[1]
		datasource.VpcAddress = fmt.Sprintf("%s-%s-vpc-st.hologres.aliyuncs.com:%d", uris[0], a.client.cfg.regionId, hologresPort)
		if hologresPublicAddress != "" {
			datasource.PublicAddress = hologresPublicAddress
		} else {
			datasource.PublicAddress = fmt.Sprintf("%s-%s.hologres.aliyuncs.com:%d", uris[0], a.client.cfg.regionId, hologresPort)
		}
		//datasource.VpcAddress = fmt.Sprintf("%s-%s.hologres.aliyuncs.com:80", uris[0], a.client.cfg.regionId)
	case "GraphCompute":
		datasource.Type = constants.Datasource_Type_IGraph
		var config map[string]string
		if err := json.Unmarshal([]byte(*response.Body.Config), &config); err == nil {
			datasource.VpcAddress = config["address"]
			datasource.User = config["username"]
			datasource.Pwd = config["password"]
			datasource.PublicAddress = strings.ReplaceAll(config["address"], ".igraph.aliyuncs.com", ".public.igraph.aliyuncs.com")
		}
		datasource.RdsInstanceId = *response.Body.Uri
	case "Tablestore":
		datasource.Type = constants.Datasource_Type_TableStore
		datasource.VpcAddress = fmt.Sprintf("https://%s.%s.vpc.tablestore.aliyuncs.com", *response.Body.Uri, a.client.cfg.regionId)
		datasource.PublicAddress = fmt.Sprintf("https://%s.%s.ots.aliyuncs.com", *response.Body.Uri, a.client.cfg.regionId)
		datasource.RdsInstanceId = *response.Body.Uri
	case "MaxCompute":
		datasource.Type = constants.Datasource_Type_MaxCompute
		datasource.Project = *response.Body.Uri
	case "FeatureDB":
		datasource.Type = constants.Datasource_Type_FeatureDB
		var config map[string]string
		if err := json.Unmarshal([]byte(*response.Body.Config), &config); err == nil {
			datasource.VpcAddress = config["fdb_vpc_address"]
			datasource.PublicAddress = config["fdb_public_address"]
			datasource.Token = config["token"]
			datasource.FdbVpcAddress = config["fdb_vpc_plk_address"]
		}
	}

	localVarReturnValue.Datasource = &datasource

	return localVarReturnValue, nil
}