import urllib import logging import simplejson from modules.communication.liquidsoap.communicator import LiquidSoapCommunicator from libraries.database.broadcasts import ScheduleEntry from libraries.base.config import AuraConfig from libraries.exceptions.auraexceptions import LQConnectionError class ConnectionTester(AuraConfig): def __init__(self): super(ConnectionTester, self).__init__() def get_connection_status(self): status = dict() status["db"] = self.test_db_conn() status["pv"] = self.test_pv_conn() status["lqs"] = self.test_lqs_conn() status["lqsr"] = self.test_lqsr_conn() status["tank"] = self.test_tank_conn() status["redis"] = self.test_redis_conn() return simplejson.dumps(status) def test_db_conn(self): try: ScheduleEntry.select_all() except: return False return True def test_lqs_conn(self): try: lsc = LiquidSoapCommunicator(self.config) lsc.get_mixer_status() return True except Exception as e: logger = logging.getLogger("AuraEngine") logger.warning(str(e)) return False def test_lqsr_conn(self): try: lsc = LiquidSoapCommunicator(self.config) lsc.get_recorder_status() return True except Exception as e: logger = logging.getLogger("AuraEngine") logger.warning(str(e)) return False def test_pv_conn(self): return self.test_url_connection(self.config.get("calendarurl")) def test_tank_conn(self): # test load of playlist 1 return self.test_url_connection(self.config.get("importerurl")+"1") def test_redis_conn(self): from modules.communication.redis.adapter import ClientRedisAdapter try: cra = ClientRedisAdapter() cra.publish("aura", "status") except: return False return True def test_url_connection(self, url): try: request = urllib.request.Request(url) response = urllib.request.urlopen(request) response.read() except Exception as e: print(e) return False return True