@@ -315,41 +315,49 @@ class MaintenanceGroupTest(ClientBaseCase):
315315 def test_maintenance (self ):
316316 """
317317 Tests that maintenance can be retrieved
318+ Tests that maintenance can be retrieved
318319 """
319320 with self .mock_get ("/maintenance/policies" ) as m :
320321 result = self .client .maintenance .maintenance_policies ()
321322
322323 self .assertEqual (m .call_url , "/maintenance/policies" )
323- self .assertEqual (len (result ), 2 )
324+ self .assertEqual (len (result ), 3 )
324325
325- policy_default_migrate = result [0 ]
326- policy_default_power_on_off = result [1 ]
326+ policy_migrate = result [0 ]
327+ policy_power_off_on = result [1 ]
328+ policy_custom = result [2 ]
327329
328- self .assertEqual (policy_default_migrate .id , "1" )
329- self .assertEqual (policy_default_migrate .name , "Default Migrate" )
330- self .assertEqual (
331- policy_default_migrate .description ,
332- "predefined maintenance policy default for all linodes" ,
333- )
334- self .assertEqual (policy_default_migrate .type , "migrate" )
330+ self .assertEqual (policy_migrate .slug , "linode/migrate" )
331+ self .assertEqual (policy_migrate .label , "Migrate" )
335332 self .assertEqual (
336- policy_default_migrate .notification_period_sec , 3600
333+ policy_migrate .description ,
334+ "Migrates the Linode to a new host while it remains fully operational. Recommended for maximizing availability." ,
337335 )
338- self .assertEqual (policy_default_migrate .is_default , True )
336+ self .assertEqual (policy_migrate .type , "migrate" )
337+ self .assertEqual (policy_migrate .notification_period_sec , 3600 )
338+ self .assertTrue (policy_migrate .is_default )
339339
340- self .assertEqual (policy_default_power_on_off .id , "2" )
340+ self .assertEqual (policy_power_off_on .slug , "linode/power_off_on" )
341+ self .assertEqual (policy_power_off_on .label , "Power Off/Power On" )
341342 self .assertEqual (
342- policy_default_power_on_off .name , "Default Power On/Off"
343+ policy_power_off_on .description ,
344+ "Powers off the Linode at the start of the maintenance event and reboots it once the maintenance finishes. Recommended for maximizing performance." ,
343345 )
346+ self .assertEqual (policy_power_off_on .type , "power_off_on" )
347+ self .assertEqual (policy_power_off_on .notification_period_sec , 1800 )
348+ self .assertFalse (policy_power_off_on .is_default )
349+
350+ self .assertEqual (policy_custom .slug , "private/12345" )
344351 self .assertEqual (
345- policy_default_power_on_off .description ,
346- "predefined maintenance policy for general use cases" ,
352+ policy_custom .label , "Critical Workload - Avoid Migration"
347353 )
348- self .assertEqual (policy_default_power_on_off .type , "power on/off" )
349354 self .assertEqual (
350- policy_default_power_on_off .notification_period_sec , 1800
355+ policy_custom .description ,
356+ "Custom policy designed to power off and perform maintenance during user-defined windows only." ,
351357 )
352- self .assertEqual (policy_default_power_on_off .is_default , False )
358+ self .assertEqual (policy_custom .type , "power_off_on" )
359+ self .assertEqual (policy_custom .notification_period_sec , 7200 )
360+ self .assertFalse (policy_custom .is_default )
353361
354362
355363class AccountGroupTest (ClientBaseCase ):
@@ -400,37 +408,54 @@ def test_maintenance(self):
400408 result = self .client .account .maintenance ()
401409
402410 self .assertEqual (m .call_url , "/account/maintenance" )
403- self .assertEqual (len (result ), 1 )
411+ self .assertEqual (len (result ), 2 )
412+
413+ maintenance_1 = result [0 ]
414+ maintenance_2 = result [1 ]
404415
405- maintenance = result [0 ]
416+ # First maintenance
417+ self .assertEqual (
418+ maintenance_1 .reason ,
419+ "Scheduled upgrade to faster NVMe hardware." ,
420+ )
421+ self .assertEqual (maintenance_1 .entity .id , 1234 )
422+ self .assertEqual (maintenance_1 .entity .label , "Linode #1234" )
423+ self .assertEqual (maintenance_1 .entity .type , "linode" )
424+ self .assertEqual (maintenance_1 .entity .url , "/linodes/1234" )
425+ self .assertEqual (
426+ maintenance_1 .maintenance_policy_set , "linode/power_off_on"
427+ )
428+ self .assertEqual (maintenance_1 .description , "Scheduled Maintenance" )
429+ self .assertEqual (maintenance_1 .source , "platform" )
430+ self .assertEqual (maintenance_1 .not_before , "2025-03-25T10:00:00Z" )
431+ self .assertEqual (maintenance_1 .start_time , "2025-03-25T12:00:00Z" )
432+ self .assertEqual (
433+ maintenance_1 .complete_time , "2025-03-25T14:00:00Z"
434+ )
435+ self .assertEqual (maintenance_1 .status , "scheduled" )
436+ self .assertEqual (maintenance_1 .type , "linode_migrate" )
406437
438+ # Second maintenance
407439 self .assertEqual (
408- maintenance . body ,
409- "Scheduled upgrade to faster NVMe hardware. This will affect Linode #1234 ." ,
440+ maintenance_2 . reason ,
441+ "Pending migration of Linode #1234 to a new host ." ,
410442 )
411- self .assertEqual (maintenance .entity .id , 1234 )
412- self .assertEqual (maintenance .entity .label , "Linode #1234" )
413- self .assertEqual (maintenance .entity .type , "linode" )
414- self .assertEqual (maintenance .entity .url , "/linodes/1234" )
443+ self .assertEqual (maintenance_2 .entity .id , 1234 )
444+ self .assertEqual (maintenance_2 .entity .label , "Linode #1234" )
445+ self .assertEqual (maintenance_2 .entity .type , "linode" )
446+ self .assertEqual (maintenance_2 .entity .url , "/linodes/1234" )
415447 self .assertEqual (
416- maintenance . label , "Scheduled Maintenance for Linode #1234 "
448+ maintenance_2 . maintenance_policy_set , "linode/migrate "
417449 )
450+ self .assertEqual (maintenance_2 .description , "Emergency Maintenance" )
451+ self .assertEqual (maintenance_2 .source , "user" )
452+ self .assertEqual (maintenance_2 .not_before , "2025-03-26T15:00:00Z" )
453+ self .assertEqual (maintenance_2 .start_time , "2025-03-26T15:00:00Z" )
418454 self .assertEqual (
419- maintenance .message ,
420- "Scheduled upgrade to faster NVMe hardware." ,
455+ maintenance_2 .complete_time , "2025-03-26T17:00:00Z"
421456 )
422- self .assertEqual (maintenance .severity , "major" )
423- self .assertEqual (maintenance .type , "maintenance_scheduled" )
424- self .assertEqual (maintenance .event_type , "linode_migrate" )
425- self .assertEqual (maintenance .maintenance_policy_set , "Power on/off" )
426- self .assertEqual (maintenance .description , "Scheduled Maintenance" )
427- self .assertEqual (maintenance .source , "platform" )
428- self .assertEqual (maintenance .not_before , "2025-03-25T10:00:00" )
429- self .assertEqual (maintenance .start_time , "2025-03-25T12:00:00" )
430- self .assertEqual (maintenance .complete_time , "2025-03-25T14:00:00" )
431- self .assertEqual (maintenance .status , "scheduled" )
432- self .assertEqual (maintenance .when , "2025-03-25T12:00:00" )
433- self .assertEqual (maintenance .until , "2025-03-25T14:00:00" )
457+ self .assertEqual (maintenance_2 .status , "in-progress" )
458+ self .assertEqual (maintenance_2 .type , "linode_migrate" )
434459
435460 def test_notifications (self ):
436461 """
0 commit comments