22
22
from src .interface import Interface
23
23
from src import comms_config_store
24
24
from src .bat_ctrl_utils import BatCtrlUtils
25
+ from src .comms_service_refresh import CommsServiceRefresh
25
26
26
27
from controller import CBMAController
27
28
from models .certificates import CBMACertificates
@@ -85,6 +86,7 @@ def __init__(
85
86
if self .__config is not None :
86
87
self .__cbma_config = self .__config .read ("CBMA" )
87
88
self .__vlan_config = self .__config .read ("VLAN" )
89
+ self .__hostname = self .__config .read ("hostname" )
88
90
89
91
# Create VLAN interfaces if configured
90
92
self .__create_vlan_interfaces ()
@@ -106,6 +108,9 @@ def __init__(
106
108
self .__red_interfaces .extend (red_interfaces )
107
109
self .__na_cbma_interfaces .extend (exclude_interfaces )
108
110
111
+ self .__service_refresh = CommsServiceRefresh (self .__hostname , logger )
112
+ self .__service_thread = None
113
+
109
114
def __validate_cbma_config (
110
115
self ,
111
116
exclude_interfaces : List [str ],
@@ -280,6 +285,24 @@ def __delete_vlan_interfaces(self) -> bool:
280
285
success = False
281
286
return success
282
287
288
+ def __set_hostname (self ) -> None :
289
+ """
290
+ Set hostname for device configured in ms_config.yaml.
291
+ """
292
+ try :
293
+ subprocess .run (["hostname" , self .__hostname ], check = True )
294
+ except subprocess .CalledProcessError as e :
295
+ self .logger .error (f"Error setting hostname { self .__hostname } : { e } " )
296
+
297
+ def __update_avahi_hostname (self ) -> None :
298
+ """
299
+ Update avahi hostname for device configured in ms_config.yaml.
300
+ """
301
+ try :
302
+ subprocess .run (["avahi-set-host-name" , self .__hostname ], check = True )
303
+ except subprocess .CalledProcessError as e :
304
+ self .logger .error (f"Error updating avahi hostname { self .__hostname } : { e } " )
305
+
283
306
def __get_interfaces (self ) -> None :
284
307
interfaces = []
285
308
ip = IPRoute ()
@@ -809,6 +832,10 @@ def setup_cbma(self) -> bool:
809
832
:return: True if both lower and upper CBMA was setup
810
833
successfully. Returns False otherwise.
811
834
"""
835
+ # hostname updates
836
+ self .__set_hostname ()
837
+ self .__update_avahi_hostname ()
838
+
812
839
self .__init_batman_and_bridge ()
813
840
814
841
self .__update_cbma_interface_lists ()
@@ -841,6 +868,10 @@ def setup_cbma(self) -> bool:
841
868
# Set batman hop penalty
842
869
self .__batman .set_hop_penalty ()
843
870
871
+ # Start the service publisher thread
872
+ self .__service_thread = threading .Thread (target = self .__service_refresh .dns_service_refresh )
873
+ self .__service_thread .start ()
874
+
844
875
return True
845
876
846
877
def __is_valid_ipv6_local (self , address : tuple [str , int ]) -> bool :
@@ -1090,4 +1121,8 @@ def stop_cbma(self) -> bool:
1090
1121
self .__cleanup_cbma ()
1091
1122
self .stop_radios ()
1092
1123
1124
+ self .__service_refresh .shutdown_service ()
1125
+ if self .__service_thread is not None :
1126
+ self .__service_thread .join ()
1127
+
1093
1128
return lower_stopped and upper_stopped
0 commit comments