in pkg/cloudmap/client.go [182:222]
func (sdc *serviceDiscoveryClient) DeleteEndpoints(ctx context.Context, nsName string, svcName string, endpts []*model.Endpoint) (err error) {
if len(endpts) == 0 {
sdc.log.Info("skipping endpoint deletion for empty endpoint list", "serviceName", svcName)
return nil
}
sdc.log.Info("deleting 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
opCollector.Add(func() (opId string, err error) {
return sdc.sdApi.DeregisterInstance(ctx, svcId, endptId)
})
}
err = NewDeregisterInstancePoller(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 de-registering endpoints")
}
return nil
}