@@ -193,14 +193,68 @@ func (s *serverSuite) TestReconcileServerDeletion() {
193193 reqLocation := "delete/location"
194194
195195 s .mockGetServerDeletionRequestCall (exampleServerID ).Return (nil , nil )
196- s .mockDeleteServerCall (exampleServerID ).Return (reqLocation , nil )
196+ s .mockDeleteServerCall (exampleServerID , false ).Return (reqLocation , nil )
197197
198198 res , err := s .service .ReconcileServerDeletion (s .ctx , s .machineScope )
199+ s .validateSuccessfulDeletionResponse (res , err , reqLocation )
200+ }
201+
202+ func (s * serverSuite ) TestReconcileServerDeletionDeleteBootVolume () {
203+ s .mockGetServerCall (exampleServerID ).Return (& sdk.Server {
204+ Id : ptr .To (exampleServerID ),
205+ Properties : & sdk.ServerProperties {
206+ BootVolume : & sdk.ResourceReference {
207+ Id : ptr .To (exampleBootVolumeID ),
208+ },
209+ },
210+ }, nil ).Once ()
211+
212+ s .mockGetServerCall (exampleServerID ).Return (& sdk.Server {
213+ Id : ptr .To (exampleServerID ),
214+ }, nil ).Once ()
215+
216+ reqLocationVolume := "delete/location/volume"
217+ reqLocationServer := "delete/location/server"
218+
219+ s .mockDeleteVolumeCall (exampleBootVolumeID ).Return (reqLocationVolume , nil ).Once ()
220+
221+ s .mockGetServerDeletionRequestCall (exampleServerID ).Return (nil , nil )
222+ s .mockDeleteServerCall (exampleServerID , false ).Return (reqLocationServer , nil )
223+
224+ res , err := s .service .ReconcileServerDeletion (s .ctx , s .machineScope )
225+ s .validateSuccessfulDeletionResponse (res , err , reqLocationVolume )
226+
227+ res , err = s .service .ReconcileServerDeletion (s .ctx , s .machineScope )
228+ s .validateSuccessfulDeletionResponse (res , err , reqLocationServer )
229+ }
230+
231+ func (s * serverSuite ) TestReconcileServerDeletionDeleteAllVolumes () {
232+ s .clusterScope .Cluster .DeletionTimestamp = ptr .To (metav1 .Now ())
233+ s .mockGetServerCall (exampleServerID ).Return (& sdk.Server {
234+ Id : ptr .To (exampleServerID ),
235+ Properties : & sdk.ServerProperties {
236+ BootVolume : & sdk.ResourceReference {
237+ Id : ptr .To (exampleBootVolumeID ),
238+ },
239+ },
240+ }, nil ).Once ()
241+
242+ reqLocation := "delete/location"
243+ s .mockGetServerDeletionRequestCall (exampleServerID ).Return (nil , nil )
244+ s .mockDeleteServerCall (exampleServerID , true ).Return (reqLocation , nil )
245+
246+ res , err := s .service .ReconcileServerDeletion (s .ctx , s .machineScope )
247+ s .validateSuccessfulDeletionResponse (res , err , reqLocation )
248+ }
249+
250+ func (s * serverSuite ) validateSuccessfulDeletionResponse (success bool , err error , requestLocation string ) {
251+ s .T ().Helper ()
252+
199253 s .NoError (err )
200- s .True (res )
254+ s .True (success )
201255 s .NotNil (s .machineScope .IonosMachine .Status .CurrentRequest )
202256 s .Equal (http .MethodDelete , s .machineScope .IonosMachine .Status .CurrentRequest .Method )
203- s .Equal (s .machineScope .IonosMachine .Status .CurrentRequest .RequestPath , reqLocation )
257+ s .Equal (s .machineScope .IonosMachine .Status .CurrentRequest .RequestPath , requestLocation )
204258}
205259
206260func (s * serverSuite ) TestReconcileServerDeletionServerNotFound () {
@@ -281,7 +335,7 @@ func (s *serverSuite) TestReconcileServerDeletionRequestFailed() {
281335 exampleRequest := s .exampleDeleteRequest (sdk .RequestStatusFailed , exampleServerID )
282336
283337 s .mockGetServerDeletionRequestCall (exampleServerID ).Return ([]sdk.Request {exampleRequest }, nil )
284- s .mockDeleteServerCall (exampleServerID ).Return ("delete/triggered" , nil )
338+ s .mockDeleteServerCall (exampleServerID , false ).Return ("delete/triggered" , nil )
285339
286340 res , err := s .service .ReconcileServerDeletion (s .ctx , s .machineScope )
287341 s .NoError (err )
@@ -352,8 +406,12 @@ func (s *serverSuite) mockListServersCall() *clienttest.MockClient_ListServers_C
352406 return s .ionosClient .EXPECT ().ListServers (s .ctx , s .machineScope .DatacenterID ())
353407}
354408
355- func (s * serverSuite ) mockDeleteServerCall (serverID string ) * clienttest.MockClient_DeleteServer_Call {
356- return s .ionosClient .EXPECT ().DeleteServer (s .ctx , s .machineScope .DatacenterID (), serverID )
409+ func (s * serverSuite ) mockDeleteVolumeCall (volumeID string ) * clienttest.MockClient_DeleteVolume_Call {
410+ return s .ionosClient .EXPECT ().DeleteVolume (s .ctx , s .machineScope .DatacenterID (), volumeID )
411+ }
412+
413+ func (s * serverSuite ) mockDeleteServerCall (serverID string , deleteVolumes bool ) * clienttest.MockClient_DeleteServer_Call {
414+ return s .ionosClient .EXPECT ().DeleteServer (s .ctx , s .machineScope .DatacenterID (), serverID , deleteVolumes )
357415}
358416
359417func (s * serverSuite ) mockGetServerCreationRequestCall () * clienttest.MockClient_GetRequests_Call {
0 commit comments