Skip to content

Commit 6a53a46

Browse files
progress
1 parent de371b5 commit 6a53a46

4 files changed

Lines changed: 88 additions & 67 deletions

File tree

linode_api4/objects/networking.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ def linode(self):
100100
self._set("_linode", Instance(self._client, self.linode_id))
101101
return self._linode
102102

103+
# TODO (Enhanced Interfaces): Add `interface` property method
104+
103105
def to(self, linode):
104106
"""
105107
This is a helper method for ip-assign, and should not be used outside

test/integration/groups/__init__.py

Whitespace-only changes.

test/integration/groups/test_networking.py

Lines changed: 0 additions & 66 deletions
This file was deleted.

test/integration/models/networking/test_networking.py

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@
1515

1616
from linode_api4 import Instance, LinodeClient
1717
from linode_api4.objects import Config, ConfigInterfaceIPv4, Firewall, IPAddress
18-
from linode_api4.objects.networking import NetworkTransferPrice, Price
18+
from linode_api4.objects.networking import (
19+
FirewallCreateDevicesOptions,
20+
NetworkTransferPrice,
21+
Price,
22+
)
1923

2024
TEST_REGION = get_region(
2125
LinodeClient(
@@ -73,6 +77,47 @@ def test_get_networking_rules(test_linode_client, test_firewall):
7377
assert "outbound_policy" in str(rules)
7478

7579

80+
@pytest.fixture
81+
def create_linode_without_firewall(test_linode_client):
82+
"""
83+
WARNING: This is specifically reserved for Firewall testing.
84+
Don't use this if the Linode will not be assigned to a firewall.
85+
"""
86+
87+
client = test_linode_client
88+
region = get_region(client, {"Cloud Firewall"}, "core").id
89+
90+
label = get_test_label()
91+
92+
instance = client.linode.instance_create(
93+
"g6-nanode-1",
94+
region,
95+
label=label,
96+
)
97+
98+
yield client, instance
99+
100+
instance.delete()
101+
102+
103+
@pytest.fixture
104+
def create_firewall_with_device(create_linode_without_firewall):
105+
client, target_instance = create_linode_without_firewall
106+
107+
firewall = client.networking.firewall_create(
108+
get_test_label(),
109+
rules={
110+
"inbound_policy": "DROP",
111+
"outbound_policy": "DROP",
112+
},
113+
devices=FirewallCreateDevicesOptions(linodes=[target_instance.id]),
114+
)
115+
116+
yield firewall, target_instance
117+
118+
firewall.delete()
119+
120+
76121
def test_get_networking_rule_versions(test_linode_client, test_firewall):
77122
firewall = test_linode_client.load(Firewall, test_firewall.id)
78123

@@ -263,3 +308,43 @@ def test_create_and_delete_vlan(test_linode_client, linode_for_vlan_tests):
263308
)
264309

265310
assert is_deleted is True
311+
312+
313+
def test_create_firewall_with_linode_device(create_firewall_with_device):
314+
firewall, target_instance = create_firewall_with_device
315+
316+
devices = firewall.devices
317+
318+
assert len(devices) == 1
319+
assert devices[0].entity.id == target_instance.id
320+
321+
322+
# TODO (Enhanced Interfaces): Add test for interface device
323+
324+
325+
def test_get_global_firewall_settings(test_linode_client):
326+
settings = test_linode_client.networking.firewall_settings()
327+
328+
assert settings.default_firewall_ids is not None
329+
assert all(
330+
k in {"vpc_interface", "public_interface", "linode", "nodebalancer"}
331+
for k in vars(settings.default_firewall_ids).keys()
332+
)
333+
334+
335+
def test_ip_info(test_linode_client, create_linode):
336+
linode = create_linode
337+
338+
ip_info = test_linode_client.load(IPAddress, linode.ipv4[0])
339+
340+
assert ip_info.address == linode.ipv4[0]
341+
assert ip_info.gateway is not None
342+
assert ip_info.linode_id == linode.id
343+
assert ip_info.interface_id is None
344+
assert ip_info.prefix == 24
345+
assert ip_info.public
346+
assert ip_info.rdns is not None
347+
assert ip_info.region.id == linode.region.id
348+
assert ip_info.subnet_mask is not None
349+
assert ip_info.type == "ipv4"
350+
assert ip_info.vpc_nat_1_1 is None

0 commit comments

Comments
 (0)