@@ -234,6 +234,17 @@ def get_status(linode: Instance, status: str):
234234def instance_type_condition (linode : Instance , type : str ):
235235 return type in str (linode .type )
236236
237+ def test_get_linodes_verify_alerts (test_linode_client ):
238+ linodes_list = test_linode_client .linode .instances ().lists [0 ]
239+ assert len (linodes_list ) > 0
240+ assert linodes_list [0 ].alerts .cpu >= 0
241+ assert linodes_list [0 ].alerts .io >= 0
242+ assert linodes_list [0 ].alerts .network_in >= 0
243+ assert linodes_list [0 ].alerts .network_out >= 0
244+ assert linodes_list [0 ].alerts .transfer_quota >= 0
245+ assert isinstance (linodes_list [0 ].alerts .system_alerts , list )
246+ assert isinstance (linodes_list [0 ].alerts .user_alerts , list )
247+
237248
238249def test_get_linode (test_linode_client , linode_with_volume_firewall ):
239250 linode = test_linode_client .load (Instance , linode_with_volume_firewall .id )
@@ -283,6 +294,8 @@ def test_linode_rebuild(test_linode_client):
283294
284295 assert linode .status == "rebuilding"
285296 assert linode .image .id == "linode/debian12"
297+ assert linode .alerts .cpu >= 0
298+ assert linode .alerts .io >= 0
286299
287300 assert linode .disk_encryption == InstanceDiskEncryptionType .disabled
288301
@@ -346,6 +359,65 @@ def test_linode_reboot(create_linode):
346359 assert linode .status == "running"
347360
348361
362+ def test_linode_alerts_workflow (test_linode_client , create_linode ):
363+ linode = create_linode
364+ parent_linode_id = create_linode .id
365+ assert linode .alerts .cpu == 90
366+ assert linode .alerts .io == 10000
367+ assert linode .alerts .network_in == 10
368+ assert linode .alerts .network_out == 10
369+ assert linode .alerts .transfer_quota == 80
370+ assert isinstance (linode .alerts .system_alerts , list )
371+ assert isinstance (linode .alerts .user_alerts , list )
372+
373+ linode = test_linode_client .load (Instance , parent_linode_id )
374+ assert linode .alerts .cpu == 90
375+ assert linode .alerts .io == 10000
376+ assert linode .alerts .network_in == 10
377+ assert linode .alerts .network_out == 10
378+ assert linode .alerts .transfer_quota == 80
379+ assert isinstance (linode .alerts .system_alerts , list )
380+ assert isinstance (linode .alerts .user_alerts , list )
381+
382+ linode .alerts = {
383+ "cpu" : 50 ,
384+ "io" : 6000 ,
385+ "network_in" : 20 ,
386+ "network_out" : 20 ,
387+ "transfer" : 80 ,
388+ }
389+ linode .save ()
390+
391+ wait_for_condition (10 , 100 , get_status , linode , "running" )
392+ new_linode = retry_sending_request (5 , linode .clone , parent_linode_id )
393+ assert new_linode .alerts .cpu == 50
394+ assert new_linode .alerts .io == 6000
395+ assert new_linode .alerts .network_in == 20
396+ assert new_linode .alerts .network_out == 20
397+ assert new_linode .alerts .transfer_quota == 80
398+ assert isinstance (new_linode .alerts .system_alerts , list )
399+ assert isinstance (new_linode .alerts .user_alerts , list )
400+
401+
402+ def test_try_to_update_linode_alerts_legacy_and_aclp_at_the_same_time (create_linode ):
403+ linode = create_linode
404+
405+ linode .alerts = {
406+ "cpu" : 50 ,
407+ "io" : 6000 ,
408+ "network_in" : 20 ,
409+ "network_out" : 20 ,
410+ "transfer" : 50 ,
411+ "system_alerts" : [1 ,436 ],
412+ "user_alerts" : [555 ],
413+ }
414+
415+ with pytest .raises (RuntimeError ) as err :
416+ linode .save ()
417+ assert "Cannot set both legacy and ACLP alerts simultaneously" in str (err .value )
418+ assert "[400] alerts" in str (err .value )
419+
420+
349421def test_linode_shutdown (create_linode ):
350422 linode = create_linode
351423
0 commit comments