Skip to content
Snippets Groups Projects
Commit fe819984 authored by Jorrit Schaap's avatar Jorrit Schaap
Browse files

Task #8887: use dbcreds, so we can connect to remote db host

parent f71b4f85
No related branches found
No related tags found
No related merge requests found
...@@ -5,21 +5,16 @@ import psycopg2 as pg ...@@ -5,21 +5,16 @@ import psycopg2 as pg
import psycopg2.extras as pgdefs import psycopg2.extras as pgdefs
from lofar.messaging import Service from lofar.messaging import Service
from lofar.common.util import waitForInterrupt from lofar.common.util import waitForInterrupt
from lofar.common import dbcredentials
import logging import logging
import sys import sys
logging.basicConfig(stream=sys.stdout, level=logging.INFO) logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
DATABASE = "datamonitor"
USER = "lofarsys"
PASSWORD = "welkom001"
class SSDB: class SSDB:
def __init__(self,**kwargs): def __init__(self,**kwargs):
self.username = kwargs.pop("username", USER) self.dbcreds = kwargs.pop("dbcreds", None)
self.password = kwargs.pop("password", PASSWORD)
self.database = kwargs.pop("database", DATABASE)
self.conn = None self.conn = None
self.DBconnected = (self.conn and self.conn.status==1) self.DBconnected = (self.conn and self.conn.status==1)
self.Qlistall="select * from hosts inner join datapaths on hosts.id = datapaths.hostid;" self.Qlistall="select * from hosts inner join datapaths on hosts.id = datapaths.hostid;"
...@@ -42,10 +37,14 @@ class SSDB: ...@@ -42,10 +37,14 @@ class SSDB:
self.DBconnected = (self.conn and self.conn.status==1) self.DBconnected = (self.conn and self.conn.status==1)
if not self.DBconnected: if not self.DBconnected:
try: try:
self.conn= pg.connect("dbname=%s user=%s password=%s" % (DATABASE,USER,PASSWORD)) self.conn = pg.connect(host=self.dbcreds.host,
user=self.dbcreds.user,
password=self.dbcreds.password,
database=self.dbcreds.database,
connect_timeout=5)
self.DBconnected = (self.conn and self.conn.status==1) self.DBconnected = (self.conn and self.conn.status==1)
except Exception as e: except Exception as e:
logger.error("[SSDBconnector]: DB connection could not be restored.") logger.error("[SSDBconnector]: DB connection could not be restored: %s" % (e,))
return self.DBconnected return self.DBconnected
def _doquery(self,q): def _doquery(self,q):
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
from lofar.messaging import Service, MessageHandlerInterface from lofar.messaging import Service, MessageHandlerInterface
from lofar.common.util import waitForInterrupt from lofar.common.util import waitForInterrupt
from lofar.sas.systemstatus.database.ssdb import SSDB from lofar.sas.systemstatus.database.ssdb import SSDB
from lofar.common import dbcredentials
import logging import logging
import sys import sys
...@@ -11,18 +12,13 @@ logger = logging.getLogger(__name__) ...@@ -11,18 +12,13 @@ logger = logging.getLogger(__name__)
SERVICENAME = "GetServerState" SERVICENAME = "GetServerState"
BUSNAME = "simpletest" BUSNAME = "simpletest"
DATABASE = "datamonitor"
USER = "lofarsys"
PASSWORD = "welkom001"
class DataMonitorQueryService(MessageHandlerInterface): class DataMonitorQueryService(MessageHandlerInterface):
def __init__(self,**kwargs): def __init__(self,**kwargs):
super(DataMonitorQueryService,self).__init__(**kwargs) super(DataMonitorQueryService,self).__init__(**kwargs)
self.username = kwargs.pop("username", USER) self.dbcreds = kwargs.pop("dbcreds", None)
self.password = kwargs.pop("password", PASSWORD)
self.database = kwargs.pop("database", DATABASE)
self.service2MethodMap = { self.service2MethodMap = {
'GetStateNames':self.getstatenames, 'GetStateNames':self.getstatenames,
...@@ -35,7 +31,7 @@ class DataMonitorQueryService(MessageHandlerInterface): ...@@ -35,7 +31,7 @@ class DataMonitorQueryService(MessageHandlerInterface):
def prepare_loop(self): def prepare_loop(self):
self.ssdb = SSDB(username=self.username,password=self.password,database=self.database) self.ssdb = SSDB(dbcreds=self.dbcreds)
def prepare_receive(self): def prepare_receive(self):
self.ssdb.ensure_connected() self.ssdb.ensure_connected()
...@@ -99,9 +95,14 @@ class DataMonitorQueryService(MessageHandlerInterface): ...@@ -99,9 +95,14 @@ class DataMonitorQueryService(MessageHandlerInterface):
jobinfo = self.ssdb.getIngestJobs() jobinfo = self.ssdb.getIngestJobs()
return { "main" : maininfo, "jobs" : jobinfo }; return { "main" : maininfo, "jobs" : jobinfo };
def createService(busname=BUSNAME,servicename=SERVICENAME): def createService(busname=BUSNAME,servicename=SERVICENAME, dbcreds=None):
return Service(servicename,DataMonitorQueryService,busname=busname,numthreads=4,use_service_methods=True) return Service(servicename,
DataMonitorQueryService,
busname=busname,
numthreads=4,
handler_args={'dbcreds': dbcreds},
use_service_methods=True)
def runservice(busname=BUSNAME,servicename=SERVICENAME): def runservice(busname=BUSNAME,servicename=SERVICENAME, dbcreds=None):
with createService(busname,servicename) as GetServerState: with createService(busname,servicename,dbcreds) as GetServerState:
waitForInterrupt() waitForInterrupt()
...@@ -7,6 +7,7 @@ runs the systemstatus database service ...@@ -7,6 +7,7 @@ runs the systemstatus database service
import logging import logging
from optparse import OptionParser from optparse import OptionParser
from lofar.sas.systemstatus.service.SSDBQueryService import runservice from lofar.sas.systemstatus.service.SSDBQueryService import runservice
from lofar.common import dbcredentials
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
DEFAULT_BUSNAME="amq.topic" DEFAULT_BUSNAME="amq.topic"
...@@ -18,8 +19,18 @@ if __name__ == '__main__': ...@@ -18,8 +19,18 @@ if __name__ == '__main__':
# Check the invocation arguments # Check the invocation arguments
parser = OptionParser("%prog [options]", parser = OptionParser("%prog [options]",
description='runs the systemstatus database service') description='runs the systemstatus database service')
parser.add_option("-b", "--busname", dest="busname", type="string", default=DEFAULT_BUSNAME, help="Name of the bus exchange on the qpid broker, default: %s" % DEFAULT_BUSNAME) parser.add_option("-b", "--busname", dest="busname", type="string",
parser.add_option("-s", "--servicename", dest="servicename", type="string", default=DEFAULT_SERVICENAME, help="Name for this service, default: %s" % DEFAULT_SERVICENAME) default=DEFAULT_BUSNAME,
help="Name of the bus exchange on the qpid broker, default: %s" % DEFAULT_BUSNAME)
parser.add_option("-s", "--servicename", dest="servicename", type="string",
default=DEFAULT_SERVICENAME,
help="Name for this service, default: %s" % DEFAULT_SERVICENAME)
parser.add_option_group(dbcredentials.options_group(parser))
parser.set_defaults(dbcredentials="SSDB")
(options, args) = parser.parse_args() (options, args) = parser.parse_args()
runservice(busname=options.busname, servicename=options.servicename) dbcreds = dbcredentials.parse_options(options)
logger.info("Using dbcreds: %s" % dbcreds.stringWithHiddenPassword())
runservice(busname=options.busname, servicename=options.servicename, dbcreds=dbcreds)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment