Skip to content
Snippets Groups Projects
Commit d4ea05c7 authored by Ismail Moumni's avatar Ismail Moumni
Browse files

db

parent 4427d873
No related branches found
No related tags found
1 merge request!5Adding json functions
Pipeline #708 failed with stage
in 12 seconds
...@@ -2,24 +2,22 @@ import mysql.connector ...@@ -2,24 +2,22 @@ import mysql.connector
from get_docker_secret import get_docker_secret from get_docker_secret import get_docker_secret
import os import os
# Exception thrown when no password has been defined to connect to the database # Exception thrown when no password has been defined to connect to the database
class NoPasswordDefineError(Exception): class NoPasswordDefineError(Exception):
"""No secret containing a password has been found""" """No secret containing a password has been found"""
pass pass
__rdos_password__ = "" __rdos_password__ = None
# Procedures that returns an externally defined password to conect to the database # Procedures that returns an externally defined password to conect to the database
# First tries to check the docker secrets, then an environment variable. # First tries to check the docker secrets, then an environment variable.
# Throws NoPasswordDefineError if no password is found # Throws NoPasswordDefineError if no password is found
# Returns a password # Returns a password
def get_password(): def get_password():
if __rdos_password__ is None: if __rdos_password__ == None:
password = get_docker_secret('rdos_secret') password = get_docker_secret('rdos_secret')
if password is None: if password == None:
if 'rdos_secret' in os.environ: if 'rdos_secret' in os.environ:
password = os.environ['rdos_secret'] password = os.environ['rdos_secret']
print("Password stored in a non secured way, please make your code safer") print("Password stored in a non secured way, please make your code safer")
...@@ -28,26 +26,25 @@ def get_password(): ...@@ -28,26 +26,25 @@ def get_password():
return password return password
return __rdos_password__ return __rdos_password__
# Connect to the local MYSQL database on lipn-rdos # Connect to the local MYSQL database on lipn-rdos
def database_connection(): def database_connection():
mydb = mysql.connector.connect( mydb = mysql.connector.connect(
host="192.168.90.101", host="192.168.90.101",
user="rdos", user="rdos",
password=get_password(), password = get_password(),
database="rdos" database="rdos"
) )
return mydb return mydb
def update_database(u: str, job_id: str, before: str, after: str): def update_database(url:str, job_id: str, before:str, after:str):
database = database_connection() database = database_connection()
mycursor = database.cursor(buffered=False) mycursor = database.cursor(buffered=False)
with open('../database/templates/update_success.txt', 'r') as file: with open('../database/templates/update_success.txt', 'r') as file:
update = file.read() update = file.read()
update = update.replace('{{before}}', before).replace('{{after}}', after) update = update.replace('{{before}}', before).replace('{{after}}', after)
update = update.replace('{{u}}', u) update = update.replace('{{url}}', url)
update = update.replace('{{job_id}}', job_id) update = update.replace('{{job_id}}', job_id)
print(update) print(update)
...@@ -62,7 +59,9 @@ def get_job(database): ...@@ -62,7 +59,9 @@ def get_job(database):
sql_get_new_job = "SELECT jobs.id,parametersJSON,directory,email,tool,jobs.idGenerator,outputFormat,command from jobs inner join generators on jobs.idGenerator=generators.id where status='10'" sql_get_new_job = "SELECT jobs.id,parametersJSON,directory,email,tool,jobs.idGenerator,outputFormat,command from jobs inner join generators on jobs.idGenerator=generators.id where status='10'"
mycursor = database.cursor(buffered=True) mycursor = database.cursor(buffered=True)
mycursor.execute(sql_get_new_job) mycursor.execute(sql_get_new_job)
myresult = mycursor.fetchone() myresult = mycursor.fetchone()
mycursor.close() mycursor.close()
return myresult return myresult
...@@ -71,13 +70,13 @@ def get_job(database): ...@@ -71,13 +70,13 @@ def get_job(database):
# Returns 1 if no other deamon selected the job first, 0 otherwwise. # Returns 1 if no other deamon selected the job first, 0 otherwwise.
def apply_for_job(database, job_id: str): def apply_for_job(database, job_id: str):
mycursor = database.cursor(buffered=False) mycursor = database.cursor(buffered=False)
update = "UPDATE jobs set status='100' where jobs.id='"+job_id+"' and status='10'" update = "UPDATE jobs set status='100' where jobs.id='"+job_id+"' and status='10'"
mycursor.execute(update) mycursor.execute(update)
database.commit() database.commit()
return mycursor.rowcount return mycursor.rowcount
# Returns a dictionnary containing each generator's parameters as a key. The value associated to each key is "is this parameter's value written in the command line or in a separated file # Returns a dictionnary containing each generator's parameters as a key. The value associated to each key is "is this parameter's value written in the comand line or in a separated file
# in which case the value is the filename. # in which case the value is the filename.
def getParameters(generators: dict): def getParameters(generators: dict):
database = database_connection() database = database_connection()
...@@ -88,15 +87,13 @@ def getParameters(generators: dict): ...@@ -88,15 +87,13 @@ def getParameters(generators: dict):
parameters_default[generator] = {} parameters_default[generator] = {}
sql_get_new_job = "SELECT name,basefile,defaultValue from parameters inner join generators on parameters.idGenerator=generators.id where generators.tool = '"+generator+"'" sql_get_new_job = "SELECT name,basefile,defaultValue from parameters inner join generators on parameters.idGenerator=generators.id where generators.tool = '"+generator+"'"
mycursor = database.cursor(buffered=False) mycursor = database.cursor(buffered=False)
mycursor.execute(sql_get_new_job) mycursor.execute(sql_get_new_job)
myresult = mycursor.fetchall() myresult = mycursor.fetchall()
mycursor.close() mycursor.close()
for result in myresult: for result in myresult:
parameters_basefile[generator][result[0]] = result[1] parameters_basefile[generator][result[0]] = result[1]
parameters_default[generator][result[0]] = result[1] parameters_default[generator][result[0]] = result[1]
database.disconnect() database.disconnect()
return (parameters_basefile, parameters_default) return (parameters_basefile, parameters_default)
if __name__ == "__main__":
db = getParameters("Regal")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment