diff --git a/api/applesilicon/v1alpha1/apple_silicon_utils.go b/api/applesilicon/v1alpha1/apple_silicon_utils.go index b095a419a..f76ad4a7a 100644 --- a/api/applesilicon/v1alpha1/apple_silicon_utils.go +++ b/api/applesilicon/v1alpha1/apple_silicon_utils.go @@ -60,3 +60,19 @@ func (s *API) WaitForServer(req *WaitForServerRequest, opts ...scw.RequestOption } return server.(*Server), nil } + +func (s *API) WaitForPossibleDeletion(req *WaitForServerRequest, opts ...scw.RequestOption) (*Server, error) { + server, err := s.WaitForServer(&WaitForServerRequest{ + ServerID: req.ServerID, + Zone: req.Zone, + Timeout: scw.TimeDurationPtr(defaultTimeout), + RetryInterval: scw.TimeDurationPtr(defaultRetryInterval), + }, opts..., + ) + if err != nil { + return nil, errors.Wrap(err, "waiting for server failed") + } + timeToDelete := *server.DeletableAt + time.Sleep(timeToDelete.Sub(time.Now())) + return server, nil +}