1818logging .basicConfig (level = logging .INFO )
1919
2020
21- # Get input DB information
22- parsed_in_jdbc_url = urlparse (urlparse (os .environ ['IN_JDBC_URL' ]).path )
23- in_jdbc_url = parsed_in_jdbc_url .scheme + \
24- "://" + os .environ ['IN_JDBC_USER' ] + ":" + os .environ ['IN_JDBC_PASSWORD' ] + \
25- "@" + parsed_in_jdbc_url .netloc + parsed_in_jdbc_url .path
26-
27-
28- # Get output DB information
29- parsed_out_jdbc_url = urlparse (urlparse (os .environ ['OUT_JDBC_URL' ]).path )
30- out_jdbc_url = parsed_out_jdbc_url .scheme + \
31- "://" + os .environ ['OUT_JDBC_USER' ] + ":" + os .environ ['OUT_JDBC_PASSWORD' ] + \
32- "@" + parsed_out_jdbc_url .netloc + parsed_out_jdbc_url .path
33-
34-
35- # Get variables meta-data
36- metadata = json .loads (os .environ ['PARAM_meta' ])
37-
38- # Get SQL query
39- query = os .environ ['PARAM_query' ]
40-
41- # Get variables code
42- var = os .environ ['PARAM_variables' ]
43- covars = list (filter (None , re .split (', |,' , os .environ ['PARAM_covariables' ]))) + \
44- list (filter (None , re .split (', |,' , os .environ ['PARAM_grouping' ])))
45-
46-
4721# *********************************************************************************************************************
4822# Public functions
4923# *********************************************************************************************************************
@@ -53,10 +27,14 @@ def fetch_data():
5327 Get all the needed algorithm inputs (data, algorithm parameters, etc).
5428 The inputs format is described in the README file.
5529 """
56- engine = sqlalchemy .create_engine (in_jdbc_url )
57- df = pandas .read_sql_query (query , engine )
30+ engine = sqlalchemy .create_engine (_get_input_jdbc_url () )
31+ df = pandas .read_sql_query (_get_query () , engine )
5832 raw_data = df .to_dict ('list' )
5933
34+ var = _get_var ()
35+ covars = _get_covars ()
36+ metadata = _get_metadata ()
37+
6038 data = dict ()
6139 data ['dependent' ] = [_format_variable (var , raw_data , metadata )]
6240 data ['independent' ] = [_format_variable (v , raw_data , metadata ) for v in covars ]
@@ -75,17 +53,17 @@ def save_results(pfa, error, shape):
7553 :param error: Error message (if any)
7654 :param shape: Result shape. For example: pfa_json.
7755 """
78- engine = sqlalchemy .create_engine (out_jdbc_url )
56+ engine = sqlalchemy .create_engine (_get_output_jdbc_url () )
7957
8058 sql = sqlalchemy .text ("INSERT INTO job_result VALUES(:job_id, :node, :date, :pfa, :error, :shape, :function)" )
8159 engine .execute (sql ,
82- job_id = os . environ [ 'JOB_ID' ] ,
83- node = os . environ [ 'NODE' ] ,
60+ job_id = _get_job_id () ,
61+ node = _get_node () ,
8462 date = datetime .datetime .now (),
8563 pfa = pfa ,
8664 error = error ,
8765 shape = shape ,
88- function = os . environ [ 'FUNCTION' ] )
66+ function = _get_function () )
8967
9068
9169# *********************************************************************************************************************
@@ -118,3 +96,103 @@ def _get_type(var_code, vars_meta):
11896 logging .warning ("Cannot read meta-data for variable %s !" , var_code )
11997 type_info ['name' ] = 'unknown'
12098 return type_info
99+
100+
101+ def _get_input_jdbc_url ():
102+ try :
103+ raw_url = os .environ ['IN_JDBC_URL' ]
104+ except KeyError :
105+ logging .warning ("Cannot read input JDBC URL from environment variable IN_JDBC_URL" )
106+ raw_url = ""
107+ try :
108+ user = os .environ ['IN_JDBC_USER' ]
109+ except KeyError :
110+ logging .warning ("Cannot read input JDBC user from environment variable IN_JDBC_USER" )
111+ user = ""
112+ try :
113+ passwd = os .environ ['IN_JDBC_PASSWORD' ]
114+ except KeyError :
115+ logging .warning ("Cannot read input JDBC password from environment variable IN_JDBC_PASSWORD" )
116+ passwd = ""
117+ parsed_in_jdbc_url = urlparse (urlparse (raw_url ).path )
118+ scheme = parsed_in_jdbc_url .scheme
119+ netloc = parsed_in_jdbc_url .netloc
120+ path = parsed_in_jdbc_url .path
121+ return scheme + "://" + user + ":" + passwd + "@" + netloc + path
122+
123+
124+ def _get_output_jdbc_url ():
125+ try :
126+ raw_url = os .environ ['OUT_JDBC_URL' ]
127+ except KeyError :
128+ logging .warning ("Cannot read input JDBC URL from environment variable OUT_JDBC_URL" )
129+ raw_url = ""
130+ try :
131+ user = os .environ ['OUT_JDBC_USER' ]
132+ except KeyError :
133+ logging .warning ("Cannot read input JDBC user from environment variable OUT_JDBC_USER" )
134+ user = ""
135+ try :
136+ passwd = os .environ ['OUT_JDBC_PASSWORD' ]
137+ except KeyError :
138+ logging .warning ("Cannot read input JDBC password from environment variable OUT_JDBC_PASSWORD" )
139+ passwd = ""
140+ parsed_in_jdbc_url = urlparse (urlparse (raw_url ).path )
141+ scheme = parsed_in_jdbc_url .scheme
142+ netloc = parsed_in_jdbc_url .netloc
143+ path = parsed_in_jdbc_url .path
144+ return scheme + "://" + user + ":" + passwd + "@" + netloc + path
145+
146+
147+ def _get_metadata ():
148+ try :
149+ return json .loads (os .environ ['PARAM_meta' ])
150+ except KeyError :
151+ logging .warning ("Cannot read metadata from environment variable PARAM_meta" )
152+
153+
154+ def _get_query ():
155+ try :
156+ return os .environ ['PARAM_query' ]
157+ except KeyError :
158+ logging .warning ("Cannot read SQL query from environment variable PARAM_query" )
159+
160+
161+ def _get_var ():
162+ try :
163+ return os .environ ['PARAM_variables' ]
164+ except KeyError :
165+ logging .warning ("Cannot read dependent variables from environment variable PARAM_variables" )
166+
167+
168+ def _get_covars ():
169+ try :
170+ covars = os .environ ['PARAM_covariables' ]
171+ except KeyError :
172+ covars = ""
173+ try :
174+ gvars = os .environ ['PARAM_grouping' ]
175+ except KeyError :
176+ gvars = ""
177+ return list (filter (None , re .split (', |,' , covars ))) + list (filter (None , re .split (', |,' , gvars )))
178+
179+
180+ def _get_job_id ():
181+ try :
182+ return os .environ ['JOB_ID' ]
183+ except KeyError :
184+ logging .warning ("Cannot read job ID from environment variable JOB_ID" )
185+
186+
187+ def _get_node ():
188+ try :
189+ return os .environ ['NODE' ]
190+ except KeyError :
191+ logging .warning ("Cannot read node from environment variable NODE" )
192+
193+
194+ def _get_function ():
195+ try :
196+ return os .environ ['FUNCTION' ]
197+ except KeyError :
198+ logging .warning ("Cannot read function from environment variable FUNCTION" )
0 commit comments