+
+ # Create one thread for each host
+ host_test_mode = True if self.config['mode'] == 'test' or self.config['mode'] == "OF only" else False
+ host_develop_mode = True if self.config['mode'] == 'development' else False
+ host_develop_bridge_iface = self.config.get('development_bridge', None)
+
+ # get host list from data base before starting threads
+ r, hosts = self.db.get_table(SELECT=('name', 'ip_name', 'user', 'uuid', 'hypervisors', 'password', 'keyfile'),
+ FROM='hosts', WHERE={'status': 'ok'}) #Unikernels extension
+ if r < 0:
+ raise ovimException("Cannot get hosts from database {}".format(hosts))
+
+ self.config['host_threads'] = {}
+
+ for host in hosts:
+ thread = ht.host_thread(name=host['name'], user=host['user'], host=host['ip_name'], db=self.config["db"],
+ password=host['password'],
+ keyfile=host.get('keyfile', self.config["host_ssh_keyfile"]),
+ db_lock=self.config["db_lock"], test=host_test_mode,
+ image_path=self.config['host_image_path'],
+ version=self.config['version'], host_id=host['uuid'],
+ develop_mode=host_develop_mode,
+ develop_bridge_iface=host_develop_bridge_iface,
+ hypervisors=host['hypervisors'], #Unikernels extension
+ logger_name=self.logger_name + ".host." + host['name'],
+ debug=self.config.get('log_level_host'))
+
+ try:
+ thread.check_connectivity()
+ except Exception as e:
+ self.logger.critical('Error detected for compute = {} with ip = {}'
+ .format(host['name'], host['ip_name']))
+ thread.start()
+ self.config['host_threads'][host['uuid']] = thread
+