|
|
@ -308,16 +308,20 @@ func (c *Client) Delete(resources ResourceList) (*Result, []error) {
|
|
|
|
mtx := sync.Mutex{}
|
|
|
|
mtx := sync.Mutex{}
|
|
|
|
err := perform(resources, func(info *resource.Info) error {
|
|
|
|
err := perform(resources, func(info *resource.Info) error {
|
|
|
|
c.Log("Starting delete for %q %s", info.Name, info.Mapping.GroupVersionKind.Kind)
|
|
|
|
c.Log("Starting delete for %q %s", info.Name, info.Mapping.GroupVersionKind.Kind)
|
|
|
|
if err := c.skipIfNotFound(deleteResource(info)); err != nil {
|
|
|
|
err := deleteResource(info)
|
|
|
|
mtx.Lock()
|
|
|
|
if err == nil || apierrors.IsNotFound(err) {
|
|
|
|
defer mtx.Unlock()
|
|
|
|
if err != nil {
|
|
|
|
// Collect the error and continue on
|
|
|
|
c.Log("Ignoring delete failure for %q %s: %v", info.Name, info.Mapping.GroupVersionKind, err)
|
|
|
|
errs = append(errs, err)
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
|
|
|
|
mtx.Lock()
|
|
|
|
mtx.Lock()
|
|
|
|
defer mtx.Unlock()
|
|
|
|
defer mtx.Unlock()
|
|
|
|
res.Deleted = append(res.Deleted, info)
|
|
|
|
res.Deleted = append(res.Deleted, info)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mtx.Lock()
|
|
|
|
|
|
|
|
defer mtx.Unlock()
|
|
|
|
|
|
|
|
// Collect the error and continue on
|
|
|
|
|
|
|
|
errs = append(errs, err)
|
|
|
|
return nil
|
|
|
|
return nil
|
|
|
|
})
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
@ -334,14 +338,6 @@ func (c *Client) Delete(resources ResourceList) (*Result, []error) {
|
|
|
|
return res, nil
|
|
|
|
return res, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *Client) skipIfNotFound(err error) error {
|
|
|
|
|
|
|
|
if apierrors.IsNotFound(err) {
|
|
|
|
|
|
|
|
c.Log("%v", err)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (c *Client) watchTimeout(t time.Duration) func(*resource.Info) error {
|
|
|
|
func (c *Client) watchTimeout(t time.Duration) func(*resource.Info) error {
|
|
|
|
return func(info *resource.Info) error {
|
|
|
|
return func(info *resource.Info) error {
|
|
|
|
return c.watchUntilReady(t, info)
|
|
|
|
return c.watchUntilReady(t, info)
|
|
|
|