def __init__(self, config_path): """Initialise node instance. Sets up signal handling to deal with interrupts. Loads configuration file, checks validity and creates sensible defaults if values missing. Starts loaded modules. Initialises logger to handle output durring running. Creates and binds socket for inter-process communications with server instances. Allocates potential ports for server instances. Starts continuous communication with controller. Starts JSON server ready to receive commands from the controller. """ self._setup_signal_handling() self._option_check(config_path) parser = configparser.ConfigParser(delimiters='=') parser.read(config_path) self.config = self._create_config_defaults() self.config = lib.load_config(self.config, parser) lib.create_directory(self.config["cache_path"] + 'shared') self._logger = lib.setup_logger(self.config["log_path"], TAG, self.config["verbosity"]) self.database = database.State(self) self._allocate_ports(self.config["port_range"]) context = zmq.Context() self.ipc_socket = context.socket(zmq.PUB) self.ipc_socket.bind("ipc://oc") self._controller_communication = ControllerCommunication(self) self._json_server = JSONServer(self)
def __init__(self, config_path): """Initialise controller instance. Sets up signal handling to deal with interrupts. Loads configuration file, checks validity and creates sensible defaults if values missing. Initialises logger to handle output during running. Starts JSON server ready to receive commands from clients and nodes. Starts database ready to store state. """ self._setup_signal_handling() self._option_check(config_path) parser = configparser.ConfigParser(delimiters='=') parser.read(config_path) self.config = self._create_config_defaults() self.config = lib.load_config(self.config, parser) self._logger = lib.setup_logger(self.config["log_path"], TAG, self.config["verbosity"]) self._state = state.State(self, self.config) self._request_handling = request_handling.Request(self) self._api = api.Api(self, self.config) self._notification = Notification(self) self._notification.listen()