Skip to content

Commit 1cc901c

Browse files
committed
network-nodes: refactor into a public and private api
1 parent 70446c0 commit 1cc901c

2 files changed

Lines changed: 46 additions & 45 deletions

File tree

packages/shared-state-network_nodes/files/usr/lib/lua/network-nodes.lua

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,28 @@ local config = require("lime.config")
44

55
local network_nodes = {}
66

7-
function network_nodes.node(hostname, member, fw_version, board, ipv4, ipv6)
7+
function network_nodes._node(hostname, member, fw_version, board, ipv4, ipv6)
88
return {hostname=hostname, member=member, fw_version=fw_version, board=board, ipv4=ipv4, ipv6=ipv6}
99
end
1010

11-
function network_nodes.serialize_for_network_nodes(node)
11+
function network_nodes._serialize_for_network_nodes(node)
1212
return {hostname=node.hostname, member=node.member, fw_version=node.fw_version, board=node.board,
1313
ipv4=node.ipv4, ipv6=node.ipv6}
1414
end
1515

16-
function network_nodes.deserialize_from_network_nodes(data)
17-
return network_nodes.node(data.hostname, data.member, data.fw_version, data.board, data.ipv4, data.ipv6)
16+
function network_nodes._deserialize_from_network_nodes(data)
17+
return network_nodes._node(data.hostname, data.member, data.fw_version, data.board, data.ipv4, data.ipv6)
1818
end
1919

2020
function network_nodes._nodes_from_db(db)
2121
local nodes = {}
2222
for hostname, value in pairs(db:get()) do
23-
nodes[hostname] = network_nodes.deserialize_from_network_nodes(value.data)
23+
nodes[hostname] = network_nodes._deserialize_from_network_nodes(value.data)
2424
end
2525
return nodes
2626
end
2727

28-
function network_nodes.create_node()
28+
function network_nodes._create_node()
2929
local uci = config.get_uci_cursor()
3030

3131
local hostname = utils.hostname()
@@ -35,34 +35,13 @@ function network_nodes.create_node()
3535
local ipv4 = uci:get("network", "lan", "ipaddr")
3636
local ipv6 = uci:get("network", "lan", "ip6addr")
3737
if ipv6 then ipv6 = ipv6:gsub("/.*$", "") end -- remove the netmask info
38-
local node = network_nodes.node(hostname, member, fw_version, board, ipv4, ipv6)
38+
local node = network_nodes._node(hostname, member, fw_version, board, ipv4, ipv6)
3939
node.status = "recently_reachable"
4040

4141
return node
4242
end
4343

44-
function network_nodes.publish()
45-
local node = network_nodes.create_node()
46-
local data = {
47-
[node.hostname] = network_nodes.serialize_for_network_nodes(node)
48-
}
49-
network_nodes_db = shared_state.SharedStateMultiWriter:new("network_nodes")
50-
network_nodes_db:insert(data)
51-
end
52-
53-
function network_nodes.as_human_readable_table()
54-
local nodes = network_nodes.get_nodes()
55-
local tmpl = "%-26s %-16s %-30s %-20s %-30s %-40s\n"
56-
local out = string.format(tmpl, "hostname", "ipv4", "ipv6", "status", "board", "fw_version")
57-
for _, node in pairs(nodes) do
58-
if node.member then
59-
out = out .. string.format(tmpl, node.hostname, node.ipv4, node.ipv6, node.status,
60-
node.board, node.fw_version)
61-
end
62-
end
63-
return out
64-
end
65-
44+
--! Public API
6645

6746
function network_nodes.get_nodes()
6847
local network_nodes_db = shared_state.SharedStateMultiWriter:new("network_nodes")
@@ -83,6 +62,28 @@ function network_nodes.get_nodes()
8362
return nodes
8463
end
8564

65+
function network_nodes.as_human_readable_table()
66+
local nodes = network_nodes.get_nodes()
67+
local tmpl = "%-26s %-16s %-30s %-20s %-30s %-40s\n"
68+
local out = string.format(tmpl, "hostname", "ipv4", "ipv6", "status", "board", "fw_version")
69+
for _, node in pairs(nodes) do
70+
if node.member then
71+
out = out .. string.format(tmpl, node.hostname, node.ipv4, node.ipv6, node.status,
72+
node.board, node.fw_version)
73+
end
74+
end
75+
return out
76+
end
77+
78+
function network_nodes.publish()
79+
local node = network_nodes._create_node()
80+
local data = {
81+
[node.hostname] = network_nodes._serialize_for_network_nodes(node)
82+
}
83+
network_nodes_db = shared_state.SharedStateMultiWriter:new("network_nodes")
84+
network_nodes_db:insert(data)
85+
end
86+
8687
function network_nodes.mark_nodes_as_gone(hostnames)
8788
local network_nodes_db = shared_state.SharedStateMultiWriter:new("network_nodes")
8889
local nodes = network_nodes._nodes_from_db(network_nodes_db)
@@ -91,7 +92,7 @@ function network_nodes.mark_nodes_as_gone(hostnames)
9192
local node = nodes[hostname]
9293
if node then
9394
node.member = false
94-
data[hostname] = network_nodes.serialize_for_network_nodes(node)
95+
data[hostname] = network_nodes._serialize_for_network_nodes(node)
9596
end
9697
end
9798
network_nodes_db:insert(data)

packages/shared-state-network_nodes/tests/test_network_nodes.lua

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ describe('Tests network_nodes #network_nodes', function ()
2525
uci:set('network', 'lan', 'ipaddr', '10.5.0.5')
2626
uci:set('network', 'lan', 'ip6addr', 'fd0d:fe46:8ce8::ab:cd00/64')
2727
uci:commit('network')
28-
local node = network_nodes.create_node()
28+
local node = network_nodes._create_node()
2929
assert.are.equal('devboard', node.board)
3030
assert.are.equal('2021.1', node.fw_version)
3131
assert.are.equal('recently_reachable', node.status)
3232
assert.are.equal('10.5.0.5', node.ipv4)
3333
assert.are.equal('fd0d:fe46:8ce8::ab:cd00', node.ipv6)
3434

35-
local node = network_nodes.node("node1", true, "2021.1", "librerouter-v1")
36-
assert.are.same(node, network_nodes.deserialize_from_network_nodes(network_nodes.serialize_for_network_nodes(node)))
35+
local node = network_nodes._node("node1", true, "2021.1", "librerouter-v1")
36+
assert.are.same(node, network_nodes._deserialize_from_network_nodes(network_nodes._serialize_for_network_nodes(node)))
3737

3838
end)
3939

@@ -42,17 +42,17 @@ describe('Tests network_nodes #network_nodes', function ()
4242
uci:set('network', 'lan', 'ipaddr', '10.5.0.5')
4343
uci:set('network', 'lan', 'ip6addr', 'fd0d:fe46:8ce8::ab:cd00/64')
4444
uci:commit('network')
45-
local node1 = network_nodes.node("node1", true, "2021.1", "librerouter-v1", "10.24.3.97",
45+
local node1 = network_nodes._node("node1", true, "2021.1", "librerouter-v1", "10.24.3.97",
4646
"fd0d:fe46:8ce8::ab:cd00")
47-
local node2 = network_nodes.node("node2", true, "2020.3", "librerouter-v1", "10.24.3.98",
47+
local node2 = network_nodes._node("node2", true, "2020.3", "librerouter-v1", "10.24.3.98",
4848
"fd0d:fe46:8ce8::ab:cd01")
49-
local node3 = network_nodes.node("node3", true, "2020.1", "tplink-wdr3600", "10.24.3.98",
49+
local node3 = network_nodes._node("node3", true, "2020.1", "tplink-wdr3600", "10.24.3.98",
5050
"fd0d:fe46:8ce8::ab:cd02")
5151
local network_nodes_db = shared_state.SharedStateMultiWriter:new('network_nodes')
5252
local data = {
53-
["node1"] = network_nodes.serialize_for_network_nodes(node1),
54-
["node2"] = network_nodes.serialize_for_network_nodes(node2),
55-
["node3"] = network_nodes.serialize_for_network_nodes(node3),
53+
["node1"] = network_nodes._serialize_for_network_nodes(node1),
54+
["node2"] = network_nodes._serialize_for_network_nodes(node2),
55+
["node3"] = network_nodes._serialize_for_network_nodes(node3),
5656
}
5757
network_nodes_db:insert(data)
5858

@@ -71,14 +71,14 @@ describe('Tests network_nodes #network_nodes', function ()
7171
end)
7272

7373
it('test mark_nodes_as_gone marks nodes as gone', function ()
74-
local node1 = network_nodes.node("node1", true, "2021.1", "librerouter-v1")
75-
local node2 = network_nodes.node("node2", true, "2020.3", "librerouter-v1")
76-
local node3 = network_nodes.node("node3", true, "2020.1", "tplink-wdr3600")
74+
local node1 = network_nodes._node("node1", true, "2021.1", "librerouter-v1")
75+
local node2 = network_nodes._node("node2", true, "2020.3", "librerouter-v1")
76+
local node3 = network_nodes._node("node3", true, "2020.1", "tplink-wdr3600")
7777
local network_nodes_db = shared_state.SharedStateMultiWriter:new('network_nodes')
7878
local data = {
79-
["node1"] = network_nodes.serialize_for_network_nodes(node1),
80-
["node2"] = network_nodes.serialize_for_network_nodes(node2),
81-
["node3"] = network_nodes.serialize_for_network_nodes(node3),
79+
["node1"] = network_nodes._serialize_for_network_nodes(node1),
80+
["node2"] = network_nodes._serialize_for_network_nodes(node2),
81+
["node3"] = network_nodes._serialize_for_network_nodes(node3),
8282
}
8383
network_nodes_db:insert(data)
8484

0 commit comments

Comments
 (0)