Skip to content

Commit 919f29d

Browse files
mdegat01agners
andauthored
Add route_metric field to network models (#278)
* Add route_metric field to network models * Remove the default value from `route_metric` --------- Co-authored-by: Stefan Agner <stefan@agner.ch>
1 parent 648003c commit 919f29d

4 files changed

Lines changed: 16 additions & 2 deletions

File tree

aiohasupervisor/models/network.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ class IPv4(IpBase, ResponseData):
9494
address: list[IPv4Interface]
9595
nameservers: list[IPv4Address]
9696
gateway: IPv4Address | None
97+
route_metric: int | None
9798

9899

99100
@dataclass(frozen=True, slots=True)
@@ -103,6 +104,7 @@ class IPv6(IpBase, ResponseData):
103104
address: list[IPv6Interface]
104105
nameservers: list[IPv6Address]
105106
gateway: IPv6Address | None
107+
route_metric: int | None
106108
addr_gen_mode: InterfaceAddrGenMode
107109
ip6_privacy: InterfaceIp6Privacy
108110

@@ -171,6 +173,7 @@ class IPv4Config(Request):
171173
method: InterfaceMethod | None = None
172174
gateway: IPv4Address | None = None
173175
nameservers: list[IPv4Address] | None = None
176+
route_metric: int | None = None
174177

175178

176179
@dataclass(frozen=True, slots=True)
@@ -181,6 +184,7 @@ class IPv6Config(Request):
181184
method: InterfaceMethod | None = None
182185
gateway: IPv6Address | None = None
183186
nameservers: list[IPv6Address] | None = None
187+
route_metric: int | None = None
184188
addr_gen_mode: InterfaceAddrGenMode | None = None
185189
ip6_privacy: InterfaceIp6Privacy | None = None
186190

tests/fixtures/network_info.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,16 @@
1414
"address": ["192.168.1.2/24"],
1515
"nameservers": ["192.168.1.1"],
1616
"gateway": "192.168.1.1",
17-
"ready": true
17+
"ready": true,
18+
"route_metric": 100
1819
},
1920
"ipv6": {
2021
"method": "disabled",
2122
"address": ["fe80::819d:c479:d712:7a77/64"],
2223
"nameservers": [],
2324
"gateway": null,
2425
"ready": true,
26+
"route_metric": null,
2527
"addr_gen_mode": "default",
2628
"ip6_privacy": "default"
2729
},

tests/fixtures/network_interface_info.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@
1212
"address": ["192.168.1.2/24"],
1313
"nameservers": ["192.168.1.1"],
1414
"gateway": "192.168.1.1",
15-
"ready": true
15+
"ready": true,
16+
"route_metric": 100
1617
},
1718
"ipv6": {
1819
"method": "disabled",
1920
"address": ["fe80::819d:c479:d712:7a77/64"],
2021
"nameservers": [],
2122
"gateway": null,
2223
"ready": true,
24+
"route_metric": null,
2325
"addr_gen_mode": "default",
2426
"ip6_privacy": "default"
2527
},

tests/test_network.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,14 @@ async def test_network_info(
4141
assert result.interfaces[0].ipv4.nameservers[0].compressed == "192.168.1.1"
4242
assert result.interfaces[0].ipv4.gateway.compressed == "192.168.1.1"
4343
assert result.interfaces[0].ipv4.ready is True
44+
assert result.interfaces[0].ipv4.route_metric == 100
4445
assert result.interfaces[0].ipv6.method == "disabled"
4546
assert (
4647
result.interfaces[0].ipv6.address[0].with_prefixlen
4748
== "fe80::819d:c479:d712:7a77/64"
4849
)
4950
assert result.interfaces[0].ipv6.gateway is None
51+
assert result.interfaces[0].ipv6.route_metric is None
5052
assert result.interfaces[0].ipv6.addr_gen_mode is InterfaceAddrGenMode.DEFAULT
5153
assert result.interfaces[0].ipv6.ip6_privacy is InterfaceIp6Privacy.DEFAULT
5254
assert result.interfaces[0].wifi is None
@@ -92,9 +94,11 @@ async def test_network_interface_info(
9294
assert result.ipv4.nameservers[0].compressed == "192.168.1.1"
9395
assert result.ipv4.gateway.compressed == "192.168.1.1"
9496
assert result.ipv4.ready is True
97+
assert result.ipv4.route_metric == 100
9598
assert result.ipv6.method == "disabled"
9699
assert result.ipv6.address[0].with_prefixlen == "fe80::819d:c479:d712:7a77/64"
97100
assert result.ipv6.gateway is None
101+
assert result.ipv6.route_metric is None
98102
assert result.ipv6.addr_gen_mode is InterfaceAddrGenMode.DEFAULT
99103
assert result.ipv6.ip6_privacy is InterfaceIp6Privacy.DEFAULT
100104
assert result.wifi is None
@@ -114,6 +118,7 @@ async def test_network_update_interface(
114118
address=[IPv4Interface("192.168.1.2/24")],
115119
gateway=IPv4Address("192.168.1.1"),
116120
nameservers=[IPv4Address("192.168.1.1")],
121+
route_metric=100,
117122
),
118123
ipv6=IPv6Config(
119124
method=InterfaceMethod.AUTO,
@@ -136,6 +141,7 @@ async def test_network_update_interface(
136141
"gateway": "192.168.1.1",
137142
"method": "static",
138143
"nameservers": ["192.168.1.1"],
144+
"route_metric": 100,
139145
},
140146
"ipv6": {
141147
"method": "auto",

0 commit comments

Comments
 (0)