88
99
1010@pytest .fixture (scope = "session" )
11- def linode_fw (test_linode_client ):
11+ def linode_fw (test_linode_client , test_firewall ):
1212 client = test_linode_client
1313 region = get_region (client , {"Linodes" , "Cloud Firewall" }, site_type = "core" )
1414 label = get_test_label ()
1515
16- linode_instance , password = client .linode .instance_create (
16+ linode_instance , _ = client .linode .instance_create (
1717 "g6-nanode-1" , region , image = "linode/debian12" , label = label
1818 )
1919
20- yield linode_instance
20+ for fw in linode_instance .firewalls ():
21+ fw_device = next ((d for d in fw .devices if d .entity .id == linode_instance .id ), None )
22+ if fw_device :
23+ fw_device .delete ()
24+
25+ firewall = client .networking .firewall_create (
26+ label = f"{ label } -fw" ,
27+ rules = {
28+ "inbound" : [],
29+ "inbound_policy" : "DROP" ,
30+ "outbound" : [],
31+ "outbound_policy" : "ACCEPT" ,
32+ },
33+ )
34+
35+ client .post (
36+ f"/networking/firewalls/{ firewall .id } /devices" ,
37+ data = {"id" : linode_instance .id , "type" : "linode" },
38+ )
2139
22- linode_instance .delete ()
40+ try :
41+ yield linode_instance , firewall
42+ finally :
43+ for obj , name in ((firewall , "firewall" ), (linode_instance , "Linode" )):
44+ try :
45+ obj .delete ()
46+ except Exception as e :
47+ print (f"Warning: failed to delete { name } { obj .id } : { e } " )
2348
2449
2550@pytest .mark .smoke
@@ -64,34 +89,18 @@ def test_update_firewall_rules(test_linode_client, test_firewall):
6489
6590
6691def test_get_devices (test_linode_client , linode_fw ):
67- linode = linode_fw
68-
69- firewalls = list (linode .firewalls ())
70- assert len (firewalls ) > 0
71-
72- firewall = test_linode_client .load (Firewall , firewalls [0 ].id )
73-
74- devices = list (firewall .devices )
92+ linode , firewall = linode_fw
93+ devices = list (test_linode_client .load (Firewall , firewall .id ).devices )
7594 assert any (d .entity .id == linode .id for d in devices )
7695
7796
7897def test_get_device (test_linode_client , linode_fw ):
79- linode = linode_fw
80-
81- firewalls = list (linode .firewalls ())
82- assert firewalls , "No firewalls found on Linode"
83-
84- firewall = test_linode_client .load (Firewall , firewalls [0 ].id )
85-
86- devices = list (firewall .devices )
98+ linode , firewall = linode_fw
99+ devices = list (test_linode_client .load (Firewall , firewall .id ).devices )
87100 assert devices , "No devices found on Firewall"
88101
89- device = next ((d for d in devices if d .entity .id == linode .id ), None )
90- assert device is not None , f"No FirewallDevice found for Linode { linode .id } "
91-
92- firewall_device = test_linode_client .load (
93- FirewallDevice , device .id , firewall .id
94- )
102+ device = next (d for d in devices if d .entity .id == linode .id )
103+ fw_device = test_linode_client .load (FirewallDevice , device .id , firewall .id )
95104
96- assert firewall_device .entity .type == "linode"
97- assert f"/v4/linode/instances/{ linode .id } " in firewall_device .entity .url
105+ assert fw_device .entity .type == "linode"
106+ assert f"/v4/linode/instances/{ linode .id } " in fw_device .entity .url
0 commit comments