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
import psycopg2.extras as pgdefs
from lofar.messaging import Service
from lofar.common.util import waitForInterrupt
from lofar.common import dbcredentials
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logger = logging.getLogger(__name__)
DATABASE = "datamonitor"
USER = "lofarsys"
PASSWORD = "welkom001"
class SSDB:
def __init__(self,**kwargs):
self.username = kwargs.pop("username", USER)
self.password = kwargs.pop("password", PASSWORD)
self.database = kwargs.pop("database", DATABASE)
self.dbcreds = kwargs.pop("dbcreds", None)
self.conn = None
self.DBconnected = (self.conn and self.conn.status==1)
self.Qlistall="select * from hosts inner join datapaths on hosts.id = datapaths.hostid;"
......@@ -42,10 +37,14 @@ class SSDB:
self.DBconnected = (self.conn and self.conn.status==1)
if not self.DBconnected:
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)
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
def _doquery(self,q):
......
......@@ -3,6 +3,7 @@
from lofar.messaging import Service, MessageHandlerInterface
from lofar.common.util import waitForInterrupt
from lofar.sas.systemstatus.database.ssdb import SSDB
from lofar.common import dbcredentials
import logging
import sys
......@@ -11,18 +12,13 @@ logger = logging.getLogger(__name__)
SERVICENAME = "GetServerState"
BUSNAME = "simpletest"
DATABASE = "datamonitor"
USER = "lofarsys"
PASSWORD = "welkom001"
class DataMonitorQueryService(MessageHandlerInterface):
def __init__(self,**kwargs):
super(DataMonitorQueryService,self).__init__(**kwargs)
self.username = kwargs.pop("username", USER)
self.password = kwargs.pop("password", PASSWORD)
self.database = kwargs.pop("database", DATABASE)
self.dbcreds = kwargs.pop("dbcreds", None)
self.service2MethodMap = {
'GetStateNames':self.getstatenames,
......@@ -35,7 +31,7 @@ class DataMonitorQueryService(MessageHandlerInterface):
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):
self.ssdb.ensure_connected()
......@@ -99,9 +95,14 @@ class DataMonitorQueryService(MessageHandlerInterface):
jobinfo = self.ssdb.getIngestJobs()
return { "main" : maininfo, "jobs" : jobinfo };
def createService(busname=BUSNAME,servicename=SERVICENAME):
return Service(servicename,DataMonitorQueryService,busname=busname,numthreads=4,use_service_methods=True)
def createService(busname=BUSNAME,servicename=SERVICENAME, dbcreds=None):
return Service(servicename,
DataMonitorQueryService,
busname=busname,
numthreads=4,
handler_args={'dbcreds': dbcreds},
use_service_methods=True)
def runservice(busname=BUSNAME,servicename=SERVICENAME):
with createService(busname,servicename) as GetServerState:
def runservice(busname=BUSNAME,servicename=SERVICENAME, dbcreds=None):
with createService(busname,servicename,dbcreds) as GetServerState:
waitForInterrupt()
......@@ -7,6 +7,7 @@ runs the systemstatus database service
import logging
from optparse import OptionParser
from lofar.sas.systemstatus.service.SSDBQueryService import runservice
from lofar.common import dbcredentials
logger = logging.getLogger(__name__)
DEFAULT_BUSNAME="amq.topic"
......@@ -18,8 +19,18 @@ if __name__ == '__main__':
# Check the invocation arguments
parser = OptionParser("%prog [options]",
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("-s", "--servicename", dest="servicename", type="string", default=DEFAULT_SERVICENAME, help="Name for this service, default: %s" % DEFAULT_SERVICENAME)
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("-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()
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