@@ -4,28 +4,28 @@ local config = require("lime.config")
44
55local 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 }
99end
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 }
1414end
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 )
1818end
1919
2020function 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
2626end
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
4242end
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
6746function 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
8463end
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+
8687function 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 )
0 commit comments