in pkg/cloudmap/client.go [139:180]
func (sdc *serviceDiscoveryClient) RegisterEndpoints(ctx context.Context, nsName string, svcName string, endpts []*model.Endpoint) (err error) {
if len(endpts) == 0 {
sdc.log.Info("skipping endpoint registration for empty endpoint list", "serviceName", svcName)
return nil
}
sdc.log.Info("registering endpoints", "namespaceName", nsName, "serviceName", svcName, "endpoints", endpts)
svcIdMap, err := sdc.getServiceIds(ctx, nsName)
if err != nil {
return err
}
svcId, found := svcIdMap[svcName]
if !found {
return fmt.Errorf("service not found in Cloud Map: %s", svcName)
}
opCollector := NewOperationCollector()
for _, endpt := range endpts {
endptId := endpt.Id
endptAttrs := endpt.GetCloudMapAttributes()
opCollector.Add(func() (opId string, err error) {
return sdc.sdApi.RegisterInstance(ctx, svcId, endptId, endptAttrs)
})
}
err = NewRegisterInstancePoller(sdc.sdApi, svcId, opCollector.Collect(), opCollector.GetStartTime()).Poll(ctx)
// Evict cache entry so next list call reflects changes
sdc.cache.EvictEndpoints(nsName, svcName)
if err != nil {
return err
}
if !opCollector.IsAllOperationsCreated() {
return errors.New("failure while registering endpoints")
}
return nil
}