func()

in plugins/client/grpc/resolvers/kubernetes_clients.go [49:81]


func (*kubernetesServerResolver) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (resolver.Resolver, error) {
	// convert data
	kubernetesConfig := &KubernetesConfig{}
	if err := json.Unmarshal([]byte(strings.TrimLeft(target.URL.Path, "/")), kubernetesConfig); err != nil {
		return nil, fmt.Errorf("could not analyze the address: %v", err)
	}

	// validate http config
	if kubernetesConfig.APIServer != "" {
		httpConfig, err := kubernetesConfig.HTTPClientConfig.convertHTTPConfig()
		if err != nil {
			return nil, err
		}
		if err = httpConfig.Validate(); err != nil {
			return nil, fmt.Errorf("http config validate error: %v", err)
		}
	}

	// init cache
	ctx, cancel := context.WithCancel(context.Background())
	cache, err := NewKindCache(ctx, kubernetesConfig, cc)
	if err != nil {
		cancel()
		return nil, err
	}

	// build resolver
	r := &kubernetesResolver{
		cache:  cache,
		cancel: cancel,
	}
	return r, nil
}