@@ -106,40 +106,29 @@ def verify_input_variables(model_file, experiment):
106106
107107
108108@timer
109- def load_database ():
109+ def load_database (experiment ):
110110 print ("Loading database..." )
111- # load database
112- db_defaults = {
113- "host" : "mongodb05.nersc.gov" ,
114- "port" : 27017 ,
115- "name" : "bella_sf" ,
116- "auth" : "bella_sf" ,
117- "user" : "bella_sf_ro" ,
118- }
119- # read database information from environment variables (if unset, use defaults)
120- db_host = os .getenv ("SF_DB_HOST" , db_defaults ["host" ])
121- db_port = int (os .getenv ("SF_DB_PORT" , db_defaults ["port" ]))
122- db_name = os .getenv ("SF_DB_NAME" , db_defaults ["name" ])
123- db_auth = os .getenv ("SF_DB_AUTH_SOURCE" , db_defaults ["auth" ])
124- db_user = os .getenv ("SF_DB_USER" , db_defaults ["user" ])
125- # read database password from environment variable (no default provided)
126- db_password = os .getenv ("SF_DB_READONLY_PASSWORD" )
111+ # load configuration dictionary
112+ config_dict = load_config_dict (experiment )
113+ # read database information from configuration dictionary
114+ db_host = config_dict ["database" ]["host" ]
115+ db_port = config_dict ["database" ]["port" ]
116+ db_name = config_dict ["database" ]["name" ]
117+ db_auth = config_dict ["database" ]["auth" ]
118+ db_username = config_dict ["database" ]["username_ro" ]
119+ db_password_env = config_dict ["database" ]["password_ro_env" ]
120+ db_password = os .getenv (db_password_env )
127121 if db_password is None :
128- raise RuntimeError ("Environment variable SF_DB_READONLY_PASSWORD must be set!" )
129- # SSH forward?
130- if db_host == "localhost" or db_host == "127.0.0.1" :
131- direct_connection = True
132- else :
133- direct_connection = False
122+ raise RuntimeError (f"Environment variable { db_password_env } must be set!" )
134123 # get database instance
135124 print (f"Connecting to database { db_name } @{ db_host } :{ db_port } ..." )
136125 db = pymongo .MongoClient (
137126 host = db_host ,
138127 port = db_port ,
139- username = db_user ,
140- password = db_password ,
141128 authSource = db_auth ,
142- directConnection = direct_connection ,
129+ username = db_username ,
130+ password = db_password ,
131+ directConnection = (db_host in ["localhost" , "127.0.0.1" ]), # SSH forwarding
143132 )[db_name ]
144133 return db
145134
0 commit comments