From 9d26526f2e27fb1f299eb78c0359a0a351c894df Mon Sep 17 00:00:00 2001
From: Sinisa Veseli <sveseli@aps.anl.gov>
Date: Mon, 13 Apr 2015 13:17:04 +0000
Subject: [PATCH] changes needed to allow proper configuration for both DAQ and
 DS web services

---
 .../dm/common/utility/configurationManager.py | 93 +++++++++++++------
 1 file changed, 67 insertions(+), 26 deletions(-)

diff --git a/src/python/dm/common/utility/configurationManager.py b/src/python/dm/common/utility/configurationManager.py
index 9f4afe20..156b73af 100755
--- a/src/python/dm/common/utility/configurationManager.py
+++ b/src/python/dm/common/utility/configurationManager.py
@@ -36,11 +36,14 @@ DEFAULT_DM_CHERRYPY_LOG_LEVEL = 'ERROR'
 DEFAULT_DM_CHERRYPY_LOG_FILE = '%s/var/log/%s.%s.cherrypy.error'     # requires install dir/db name/service name
 DEFAULT_DM_CHERRYPY_ACCESS_FILE = '%s/var/log/%s.%s.cherrypy.access' # requires install dir/db name/service name
 
-DEFAULT_DM_SERVICE_PORT = 22236           # 222DM
-DEFAULT_DM_SERVICE_HOST = '127.0.0.1'
+DEFAULT_DM_SERVICE_PORT = 22236    # 222DM
+DEFAULT_DM_SERVICE_HOST = '0.0.0.0'
 DEFAULT_DM_SERVICE_PROTOCOL = dmServiceConstants.DM_SERVICE_PROTOCOL_HTTP
-DEFAULT_DM_SERVICE_USERNAME = ''
-DEFAULT_DM_SERVICE_PASSWORD = ''
+
+DEFAULT_DM_DS_WEB_SERVICE_PORT = 22236    # 222DM
+DEFAULT_DM_DS_WEB_SERVICE_HOST = '127.0.0.1'
+DEFAULT_DM_DAQ_WEB_SERVICE_PORT = 33336    # 333DM
+DEFAULT_DM_DAQ_WEB_SERVICE_HOST = '127.0.0.1'
 
 DEFAULT_DM_DB = 'postgresql'
 DEFAULT_DM_DB_HOST = '127.0.0.1'
@@ -121,8 +124,12 @@ class ConfigurationManager(UserDict.UserDict):
         self['defaultServicePort'] = DEFAULT_DM_SERVICE_PORT
         self['defaultServiceHost'] = DEFAULT_DM_SERVICE_HOST
         self['defaultServiceProtocol'] = DEFAULT_DM_SERVICE_PROTOCOL
-        self['defaultServiceUsername'] = DEFAULT_DM_SERVICE_USERNAME  
-        self['defaultServicePassword'] = DEFAULT_DM_SERVICE_PASSWORD
+
+        self['defaultDaqWebServicePort'] = DEFAULT_DM_DAQ_WEB_SERVICE_PORT
+        self['defaultDaqWebServiceHost'] = DEFAULT_DM_DAQ_WEB_SERVICE_HOST
+        self['defaultDsWebServicePort'] = DEFAULT_DM_DS_WEB_SERVICE_PORT
+        self['defaultDsWebServiceHost'] = DEFAULT_DM_DS_WEB_SERVICE_HOST
+
         self['defaultDb'] = DEFAULT_DM_DB
         self['defaultDbHost'] = DEFAULT_DM_DB_HOST
         self['defaultDbPort'] = DEFAULT_DM_DB_PORT
@@ -147,11 +154,14 @@ class ConfigurationManager(UserDict.UserDict):
         self.__setFromEnvVar('cherrypyLogFile', 'DM_CHERRYPY_LOG_FILE')
         self.__setFromEnvVar('cherrypyAccessFile', 'DM_CHERRYPY_ACCESS_FILE')
 
-        self.__setFromEnvVar('serviceProtocol', 'DM_SERVICE_PROTOCOL')
         self.__setFromEnvVar('serviceHost', 'DM_SERVICE_HOST')
         self.__setFromEnvVar('servicePort', 'DM_SERVICE_PORT')
-        self.__setFromEnvVar('serviceUsername', 'DM_SERVICE_USERNAME')
-        self.__setFromEnvVar('servicePassword', 'DM_SERVICE_PASSWORD')
+        self.__setFromEnvVar('serviceProtocol', 'DM_SERVICE_PROTOCOL')
+
+        self.__setFromEnvVar('daqWebServiceHost', 'DM_DAQ_WEB_SERVICE_HOST')
+        self.__setFromEnvVar('daqWebServicePort', 'DM_DAQ_WEB_SERVICE_PORT')
+        self.__setFromEnvVar('dsWebServiceHost', 'DM_DS_WEB_SERVICE_HOST')
+        self.__setFromEnvVar('dsWebServicePort', 'DM_DS_WEB_SERVICE_PORT')
 
         self.__setFromEnvVar('contextRoot', 'DM_CONTEXT_ROOT')
 
@@ -297,7 +307,7 @@ class ConfigurationManager(UserDict.UserDict):
         return []
 
     @classmethod
-    def getModuleClassConstructorTuple(cls, value):
+    def getModuleClassConstructorTuple(cls, value, creatorClass=None):
         """ Extract (module,class,constructor) tuple from the given value. """
         itemList = value.split('(')
         if not itemList:
@@ -306,6 +316,13 @@ class ConfigurationManager(UserDict.UserDict):
         moduleNameList = itemList2[0:-1]
         className = itemList2[-1]
         moduleName = className[0].lower() + className[1:]
+
+        # If module name list is empty, use convention
+        # for determining import module name (use creator class module)
+        if not len(moduleNameList) and creatorClass is not None:
+            moduleNameList = creatorClass.__module__.split('.')
+            moduleNameList[-1] = moduleName
+
         if len(moduleNameList): 
             moduleName = '.'.join(moduleNameList)
         constructor = '%s(%s' % (className, ''.join(itemList[1:]))
@@ -496,29 +513,53 @@ class ConfigurationManager(UserDict.UserDict):
     def hasServiceHost(self):
         return self.has_key('serviceHost')
 
-    def getDefaultServiceUsername(self):
-        return self['defaultServiceUsername']
+    def getDefaultDaqWebServicePort(self):
+        return self['defaultDaqWebServicePort']
+
+    def setDaqWebServicePort(self, daqWebServicePort):
+        self['daqWebServicePort'] = daqWebServicePort 
+
+    def getDaqWebServicePort(self, default='__dm_default__'):
+        return int(self.__getKeyValue('daqWebServicePort', default))
+
+    def hasDaqWebServicePort(self):
+        return self.has_key('daqWebServicePort')
+
+    def getDefaultDaqWebServiceHost(self):
+        return self['defaultDaqWebServiceHost']
+
+    def setDaqWebServiceHost(self, daqWebServiceHost):
+        self['daqWebServiceHost'] = daqWebServiceHost
+
+    def getDaqWebServiceHost(self, default='__dm_default__'):
+        return self.__getKeyValue('daqWebServiceHost', default)
+
+    def hasDaqWebServiceHost(self):
+        return self.has_key('daqWebServiceHost')
+
+    def getDefaultDsWebServicePort(self):
+        return self['defaultDsWebServicePort']
 
-    def setServiceUsername(self, serviceUsername):
-        self['serviceUsername'] = serviceUsername 
+    def setDsWebServicePort(self, dsWebServicePort):
+        self['dsWebServicePort'] = dsWebServicePort 
 
-    def getServiceUsername(self, default='__dm_default__'):
-        return self.__getKeyValue('serviceUsername', default)
+    def getDsWebServicePort(self, default='__dm_default__'):
+        return int(self.__getKeyValue('dsWebServicePort', default))
 
-    def hasServiceUsername(self):
-        return self.has_key('serviceUsername')
+    def hasDsWebServicePort(self):
+        return self.has_key('dsWebServicePort')
 
-    def getDefaultServicePassword(self):
-        return self['defaultServicePassword']
+    def getDefaultDsWebServiceHost(self):
+        return self['defaultDsWebServiceHost']
 
-    def setServicePassword(self, servicePassword):
-        self['servicePassword'] = servicePassword 
+    def setDsWebServiceHost(self, dsWebServiceHost):
+        self['dsWebServiceHost'] = dsWebServiceHost
 
-    def getServicePassword(self, default='__dm_default__'):
-        return self.__getKeyValue('servicePassword', default)
+    def getDsWebServiceHost(self, default='__dm_default__'):
+        return self.__getKeyValue('dsWebServiceHost', default)
 
-    def hasServicePassword(self):
-        return self.has_key('servicePassword')
+    def hasDsWebServiceHost(self):
+        return self.has_key('dsWebServiceHost')
 
     def getDefaultDb(self):
         return self['defaultDb']
-- 
GitLab