func()

in pkg/cloudmap/client.go [105:137]


func (sdc *serviceDiscoveryClient) GetService(ctx context.Context, nsName string, svcName string) (svc *model.Service, err error) {
	sdc.log.Info("fetching a service", "namespace", nsName, "name", svcName)
	endpts, cacheHit := sdc.cache.GetEndpoints(nsName, svcName)

	if cacheHit {
		return &model.Service{
			Namespace: nsName,
			Name:      svcName,
			Endpoints: endpts,
		}, nil
	}

	svcIdMap, err := sdc.getServiceIds(ctx, nsName)
	if err != nil {
		return nil, err
	}
	_, found := svcIdMap[svcName]
	if !found {
		return nil, nil
	}

	endpts, err = sdc.getEndpoints(ctx, nsName, svcName)

	if err != nil {
		return nil, err
	}

	return &model.Service{
		Namespace: nsName,
		Name:      svcName,
		Endpoints: endpts,
	}, nil
}