Merge "Refactor sql driver api"
This commit is contained in:
commit
40fe31c931
|
@ -142,20 +142,157 @@ def model_query(session, model,
|
||||||
return query
|
return query
|
||||||
|
|
||||||
|
|
||||||
|
def delete_tuple(tablename, user_id, tuple_id, project_id=None):
|
||||||
|
session = get_db_session()
|
||||||
|
with session.begin():
|
||||||
|
try:
|
||||||
|
query = model_query(session, tablename, project_id=project_id)
|
||||||
|
query = query.filter_by(user_id=user_id).filter_by(id=tuple_id)
|
||||||
|
result = query.all()
|
||||||
|
if 1 == len(result):
|
||||||
|
result[0].delete(session=session)
|
||||||
|
LOG.info('Tuple delete, Tuple_id: '
|
||||||
|
'{0} deleted in Table {1}'.
|
||||||
|
format(tuple_id, tablename))
|
||||||
|
else:
|
||||||
|
LOG.info('Tuple delete, Tuple_id: '
|
||||||
|
'{0} not found in Table {1}'.
|
||||||
|
format(tuple_id, tablename))
|
||||||
|
except Exception as e:
|
||||||
|
session.close()
|
||||||
|
raise freezer_api_exc.StorageEngineError(
|
||||||
|
message='Mysql operation failed {0}'.format(e))
|
||||||
|
session.close()
|
||||||
|
return tuple_id
|
||||||
|
|
||||||
|
|
||||||
|
def get_tuple(tablename, user_id, tuple_id, project_id=None):
|
||||||
|
session = get_db_session()
|
||||||
|
with session.begin():
|
||||||
|
try:
|
||||||
|
query = model_query(session, tablename, project_id=project_id)
|
||||||
|
query = query.filter_by(user_id=user_id).filter_by(id=tuple_id)
|
||||||
|
result = query.all()
|
||||||
|
except Exception as e:
|
||||||
|
raise freezer_api_exc.StorageEngineError(
|
||||||
|
message='Mysql operation failed {0}'.format(e))
|
||||||
|
session.close()
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def add_tuple(tuple):
|
||||||
|
session = get_db_session()
|
||||||
|
with session.begin():
|
||||||
|
try:
|
||||||
|
tuple.save(session=session)
|
||||||
|
except Exception as e:
|
||||||
|
session.close()
|
||||||
|
raise freezer_api_exc.StorageEngineError(
|
||||||
|
message='Mysql operation failed {0}'.format(e))
|
||||||
|
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
|
def update_tuple(tablename, user_id, tuple_id, tuple_values, project_id=None):
|
||||||
|
|
||||||
|
session = get_db_session()
|
||||||
|
with session.begin():
|
||||||
|
try:
|
||||||
|
query = model_query(session, tablename, project_id=project_id)
|
||||||
|
query = query.filter_by(user_id=user_id).filter_by(id=tuple_id)
|
||||||
|
result = query.update(tuple_values)
|
||||||
|
except Exception as e:
|
||||||
|
session.close()
|
||||||
|
raise freezer_api_exc.StorageEngineError(
|
||||||
|
message='Mysql operation failed {0}'.format(e))
|
||||||
|
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
if not result:
|
||||||
|
raise freezer_api_exc.DocumentNotFound(
|
||||||
|
message='Tuple not registered with ID'
|
||||||
|
' {0} in Table{1} '.format(tuple_id, tablename))
|
||||||
|
|
||||||
|
else:
|
||||||
|
LOG.info('Tuple updated, tuple_id: {0}'.format(tuple_id))
|
||||||
|
return tuple_id
|
||||||
|
|
||||||
|
|
||||||
|
def replace_tuple(tablename, user_id, tuple_id, tuple_values, project_id=None):
|
||||||
|
|
||||||
|
bCreate = False
|
||||||
|
|
||||||
|
session = get_db_session()
|
||||||
|
with session.begin():
|
||||||
|
try:
|
||||||
|
query = model_query(session, tablename, project_id=project_id)
|
||||||
|
query = query.filter_by(user_id=user_id).filter_by(id=tuple_id)
|
||||||
|
result = query.update(tuple_values)
|
||||||
|
if not result:
|
||||||
|
bCreate = True
|
||||||
|
except Exception as e:
|
||||||
|
session.close()
|
||||||
|
raise freezer_api_exc.StorageEngineError(
|
||||||
|
message='Mysql operation failed {0}'.format(e))
|
||||||
|
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
if bCreate:
|
||||||
|
tuplet = models.Session()
|
||||||
|
tuplet.update(tuple_values)
|
||||||
|
session = get_db_session()
|
||||||
|
with session.begin():
|
||||||
|
try:
|
||||||
|
tuplet.save(session=session)
|
||||||
|
except Exception as e:
|
||||||
|
session.close()
|
||||||
|
raise freezer_api_exc.\
|
||||||
|
StorageEngineError(message='Mysql operation failed {0}'.
|
||||||
|
format(e))
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
return tuple_id
|
||||||
|
|
||||||
|
|
||||||
|
def search_tuple(tablename, user_id, project_id=None, offset=0,
|
||||||
|
limit=100, search=None):
|
||||||
|
session = get_db_session()
|
||||||
|
with session.begin():
|
||||||
|
try:
|
||||||
|
# TODO(gecong) search will be implemented in the future
|
||||||
|
query = model_query(session, tablename, project_id=project_id)
|
||||||
|
query = query.filter_by(user_id=user_id)
|
||||||
|
query = query.offset(offset)
|
||||||
|
query = query.limit(limit)
|
||||||
|
result = query.all()
|
||||||
|
except Exception as e:
|
||||||
|
raise freezer_api_exc.StorageEngineError(
|
||||||
|
message='Mysql operation failed {0}'.format(e))
|
||||||
|
session.close()
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def get_client(user_id, project_id=None, client_id=None, offset=0,
|
def get_client(user_id, project_id=None, client_id=None, offset=0,
|
||||||
limit=10, search=None):
|
limit=100, search=None):
|
||||||
|
|
||||||
search = search or {}
|
search = search or {}
|
||||||
clients = []
|
clients = []
|
||||||
session = get_db_session()
|
session = get_db_session()
|
||||||
query = model_query(session, models.Client, project_id=project_id)
|
with session.begin():
|
||||||
|
try:
|
||||||
if client_id:
|
query = model_query(session, models.Client, project_id=project_id)
|
||||||
query = query.filter_by(user_id=user_id).filter_by(client_id=client_id)
|
if client_id:
|
||||||
else:
|
query = query.filter_by(user_id=user_id).filter_by(
|
||||||
query = query.filter_by(user_id=user_id)
|
client_id=client_id)
|
||||||
|
else:
|
||||||
result = query.all()
|
query = query.filter_by(user_id=user_id)
|
||||||
|
query = query.offset(offset)
|
||||||
|
query = query.limit(limit)
|
||||||
|
result = query.all()
|
||||||
|
except Exception as e:
|
||||||
|
raise freezer_api_exc.StorageEngineError(
|
||||||
|
message='Mysql operation failed {0}'.format(e))
|
||||||
|
session.close()
|
||||||
|
|
||||||
for client in result:
|
for client in result:
|
||||||
clientmap = {}
|
clientmap = {}
|
||||||
|
@ -167,7 +304,6 @@ def get_client(user_id, project_id=None, client_id=None, offset=0,
|
||||||
u'description': client.description}
|
u'description': client.description}
|
||||||
clients.append(clientmap)
|
clients.append(clientmap)
|
||||||
|
|
||||||
session.close()
|
|
||||||
return clients
|
return clients
|
||||||
|
|
||||||
|
|
||||||
|
@ -197,80 +333,38 @@ def add_client(user_id, doc, project_id=None):
|
||||||
values['description'] = client_json.get('description', None)
|
values['description'] = client_json.get('description', None)
|
||||||
client.update(values)
|
client.update(values)
|
||||||
|
|
||||||
session = get_db_session()
|
add_tuple(tuple=client)
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
client.save(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
LOG.info('Client registered, client_id: {0}'.format(client_id))
|
LOG.info('Client registered, client_id: {0}'.format(client_id))
|
||||||
session.close()
|
|
||||||
return client_id
|
return client_id
|
||||||
|
|
||||||
|
|
||||||
def delete_client(user_id, client_id, project_id=None):
|
def delete_client(user_id, client_id, project_id=None):
|
||||||
session = get_db_session()
|
|
||||||
query = model_query(session, models.Client, project_id=project_id)
|
existing = get_client(project_id=project_id, user_id=user_id,
|
||||||
query = query.filter_by(user_id=user_id).filter_by(client_id=client_id)
|
client_id=client_id)
|
||||||
result = query.all()
|
|
||||||
if 1 == len(result):
|
if existing:
|
||||||
try:
|
clientt = existing[0].get('client')
|
||||||
result[0].delete(session=session)
|
clientid = clientt.get('uuid')
|
||||||
except Exception as e:
|
delete_tuple(tablename=models.Client, user_id=user_id,
|
||||||
session.close()
|
tuple_id=clientid, project_id=project_id)
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
LOG.info('Client delete, client_id: {0} deleted'.
|
LOG.info('Client delete, client_id: {0} deleted'.
|
||||||
format(client_id))
|
format(client_id))
|
||||||
else:
|
else:
|
||||||
LOG.info('Client delete, client_id: {0} not found'.
|
LOG.info('Client delete, client_id: {0} not found'.
|
||||||
format(client_id))
|
format(client_id))
|
||||||
|
|
||||||
session.close()
|
|
||||||
return client_id
|
return client_id
|
||||||
|
|
||||||
|
|
||||||
def delete_action(user_id, action_id, project_id=None):
|
def delete_action(user_id, action_id, project_id=None):
|
||||||
|
|
||||||
session = get_db_session()
|
tupleid = delete_tuple(tablename=models.Action, user_id=user_id,
|
||||||
query = model_query(session, models.Action, project_id=project_id)
|
tuple_id=action_id, project_id=project_id)
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=action_id)
|
|
||||||
|
|
||||||
result = query.all()
|
tupleid = delete_tuple(tablename=models.ActionReport, user_id=user_id,
|
||||||
if 1 == len(result):
|
tuple_id=action_id, project_id=project_id)
|
||||||
try:
|
return tupleid
|
||||||
result[0].delete(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
LOG.info('Action delete, action_id: {0} deleted'.
|
|
||||||
format(action_id))
|
|
||||||
else:
|
|
||||||
LOG.info('Action delete, action_id: {0} not found'.
|
|
||||||
format(action_id))
|
|
||||||
|
|
||||||
query = model_query(session, models.ActionReport, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=action_id)
|
|
||||||
|
|
||||||
result = query.all()
|
|
||||||
if 1 == len(result):
|
|
||||||
try:
|
|
||||||
result[0].delete(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
LOG.info('ActionReport delete, action_id: {0} deleted'.
|
|
||||||
format(action_id))
|
|
||||||
else:
|
|
||||||
LOG.info('ActionReport delete, action_id: {0} not found'.
|
|
||||||
format(action_id))
|
|
||||||
session.close()
|
|
||||||
return action_id
|
|
||||||
|
|
||||||
|
|
||||||
def add_action(user_id, doc, project_id=None):
|
def add_action(user_id, doc, project_id=None):
|
||||||
|
@ -316,14 +410,7 @@ def add_action(user_id, doc, project_id=None):
|
||||||
|
|
||||||
action.update(actionvalue)
|
action.update(actionvalue)
|
||||||
|
|
||||||
session = get_db_session()
|
add_tuple(tuple=action)
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
action.save(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
LOG.info('Action registered, action_id: {0}'.format(action_id))
|
LOG.info('Action registered, action_id: {0}'.format(action_id))
|
||||||
|
|
||||||
|
@ -335,32 +422,17 @@ def add_action(user_id, doc, project_id=None):
|
||||||
|
|
||||||
actionReport.update(actionreportvalue)
|
actionReport.update(actionreportvalue)
|
||||||
|
|
||||||
with session.begin():
|
add_tuple(tuple=actionReport)
|
||||||
try:
|
|
||||||
actionReport.save(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
LOG.info('Action Reports registered, action_id: {0}'.
|
LOG.info('Action Reports registered, action_id: {0}'.
|
||||||
format(action_id))
|
format(action_id))
|
||||||
session.close()
|
|
||||||
return action_id
|
return action_id
|
||||||
|
|
||||||
|
|
||||||
def get_action(user_id, action_id, project_id=None):
|
def get_action(user_id, action_id, project_id=None):
|
||||||
session = get_db_session()
|
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
query = model_query(session, models.Action, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=action_id)
|
|
||||||
result = query.all()
|
|
||||||
except Exception as e:
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
result = get_tuple(tablename=models.Action, user_id=user_id,
|
||||||
|
tuple_id=action_id, project_id=project_id)
|
||||||
|
|
||||||
values = {}
|
values = {}
|
||||||
if 1 == len(result):
|
if 1 == len(result):
|
||||||
values['project_id'] = result[0].get('project_id')
|
values['project_id'] = result[0].get('project_id')
|
||||||
|
@ -385,17 +457,13 @@ def get_action(user_id, action_id, project_id=None):
|
||||||
|
|
||||||
|
|
||||||
def search_action(user_id, project_id=None, offset=0,
|
def search_action(user_id, project_id=None, offset=0,
|
||||||
limit=10, search=None):
|
limit=100, search=None):
|
||||||
|
|
||||||
search = search or {}
|
|
||||||
actions = []
|
actions = []
|
||||||
|
|
||||||
session = get_db_session()
|
result = search_tuple(tablename=models.Action, user_id=user_id,
|
||||||
query = model_query(session, models.Action, project_id=project_id)
|
project_id=project_id, offset=offset,
|
||||||
query = query.filter_by(user_id=user_id)
|
limit=limit, search=search)
|
||||||
|
|
||||||
result = query.all()
|
|
||||||
|
|
||||||
for action in result:
|
for action in result:
|
||||||
actionmap = {}
|
actionmap = {}
|
||||||
actionmap['project_id'] = project_id
|
actionmap['project_id'] = project_id
|
||||||
|
@ -421,7 +489,6 @@ def search_action(user_id, project_id=None, offset=0,
|
||||||
|
|
||||||
actions.append(actionmap)
|
actions.append(actionmap)
|
||||||
|
|
||||||
session.close()
|
|
||||||
return actions
|
return actions
|
||||||
|
|
||||||
|
|
||||||
|
@ -453,26 +520,10 @@ def update_action(user_id, action_id, patch_doc, project_id=None):
|
||||||
|
|
||||||
values['backup_metadata'] = json_utils.json_encode(freezer_action)
|
values['backup_metadata'] = json_utils.json_encode(freezer_action)
|
||||||
|
|
||||||
session = get_db_session()
|
update_tuple(tablename=models.Action, user_id=user_id, tuple_id=action_id,
|
||||||
with session.begin():
|
tuple_values=values, project_id=project_id)
|
||||||
try:
|
|
||||||
query = model_query(session, models.Action, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=action_id)
|
|
||||||
result = query.update(values)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
return action_id
|
||||||
|
|
||||||
if not result:
|
|
||||||
raise freezer_api_exc.DocumentNotFound(
|
|
||||||
message='Action not registered with ID'
|
|
||||||
' {0}'.format(action_id))
|
|
||||||
else:
|
|
||||||
LOG.info('action updated, action_id: {0}'.format(action_id))
|
|
||||||
return action_id
|
|
||||||
|
|
||||||
|
|
||||||
def replace_action(user_id, action_id, doc, project_id=None):
|
def replace_action(user_id, action_id, doc, project_id=None):
|
||||||
|
@ -484,7 +535,6 @@ def replace_action(user_id, action_id, doc, project_id=None):
|
||||||
values = {}
|
values = {}
|
||||||
keyt = ['action', 'mode', 'backup_name', 'container',
|
keyt = ['action', 'mode', 'backup_name', 'container',
|
||||||
'src_file', 'timeout', 'priority', 'mandatory', 'log_file']
|
'src_file', 'timeout', 'priority', 'mandatory', 'log_file']
|
||||||
bCreate = False
|
|
||||||
|
|
||||||
freezer_action = valid_doc.get('freezer_action', {})
|
freezer_action = valid_doc.get('freezer_action', {})
|
||||||
|
|
||||||
|
@ -500,57 +550,19 @@ def replace_action(user_id, action_id, doc, project_id=None):
|
||||||
if key in keyt:
|
if key in keyt:
|
||||||
values[key] = freezer_action.get(key)
|
values[key] = freezer_action.get(key)
|
||||||
|
|
||||||
session = get_db_session()
|
replace_tuple(tablename=models.Action, user_id=user_id,
|
||||||
with session.begin():
|
tuple_id=action_id, tuple_values=values,
|
||||||
try:
|
project_id=project_id)
|
||||||
query = model_query(session, models.Action, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=action_id)
|
|
||||||
result = query.update(values)
|
|
||||||
if not result:
|
|
||||||
bCreate = True
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
|
||||||
|
|
||||||
if bCreate:
|
|
||||||
action = models.Action()
|
|
||||||
action.update(values)
|
|
||||||
session = get_db_session()
|
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
action.save(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.\
|
|
||||||
StorageEngineError(message='mysql operation failed {0}'.
|
|
||||||
format(e))
|
|
||||||
session.close()
|
|
||||||
|
|
||||||
LOG.info('action replaced, action_id: {0}'.format(action_id))
|
LOG.info('action replaced, action_id: {0}'.format(action_id))
|
||||||
return action_id
|
return action_id
|
||||||
|
|
||||||
|
|
||||||
def delete_job(user_id, job_id, project_id=None):
|
def delete_job(user_id, job_id, project_id=None):
|
||||||
session = get_db_session()
|
|
||||||
query = model_query(session, models.Job, project_id=project_id)
|
tupleid = delete_tuple(tablename=models.Job, user_id=user_id,
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=job_id)
|
tuple_id=job_id, project_id=project_id)
|
||||||
result = query.all()
|
return tupleid
|
||||||
if 1 == len(result):
|
|
||||||
try:
|
|
||||||
result[0].delete(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
LOG.info('Job delete, job_id: {0} deleted'.format(job_id))
|
|
||||||
else:
|
|
||||||
LOG.info('Job delete, job_id: {0} not found'.
|
|
||||||
format(job_id))
|
|
||||||
session.close()
|
|
||||||
return job_id
|
|
||||||
|
|
||||||
|
|
||||||
def add_job(user_id, doc, project_id=None):
|
def add_job(user_id, doc, project_id=None):
|
||||||
|
@ -582,14 +594,7 @@ def add_job(user_id, doc, project_id=None):
|
||||||
json_encode(job_doc.pop('job_actions', ''))
|
json_encode(job_doc.pop('job_actions', ''))
|
||||||
job.update(jobvalue)
|
job.update(jobvalue)
|
||||||
|
|
||||||
session = get_db_session()
|
add_tuple(tuple=job)
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
job.save(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
LOG.info('Job registered, job_id: {0}'.format(job_id))
|
LOG.info('Job registered, job_id: {0}'.format(job_id))
|
||||||
|
|
||||||
|
@ -597,17 +602,9 @@ def add_job(user_id, doc, project_id=None):
|
||||||
|
|
||||||
|
|
||||||
def get_job(user_id, job_id, project_id=None):
|
def get_job(user_id, job_id, project_id=None):
|
||||||
session = get_db_session()
|
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
query = model_query(session, models.Job, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=job_id)
|
|
||||||
result = query.all()
|
|
||||||
except Exception as e:
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
result = get_tuple(tablename=models.Job, user_id=user_id,
|
||||||
|
tuple_id=job_id, project_id=project_id)
|
||||||
values = {}
|
values = {}
|
||||||
if 1 == len(result):
|
if 1 == len(result):
|
||||||
values['job_id'] = result[0].get('id')
|
values['job_id'] = result[0].get('id')
|
||||||
|
@ -625,16 +622,11 @@ def get_job(user_id, job_id, project_id=None):
|
||||||
|
|
||||||
|
|
||||||
def search_job(user_id, project_id=None, offset=0,
|
def search_job(user_id, project_id=None, offset=0,
|
||||||
limit=10, search=None):
|
limit=100, search=None):
|
||||||
|
|
||||||
search = search or {}
|
|
||||||
jobs = []
|
jobs = []
|
||||||
session = get_db_session()
|
result = search_tuple(tablename=models.Job, user_id=user_id,
|
||||||
query = model_query(session, models.Job, project_id=project_id)
|
project_id=project_id, offset=offset,
|
||||||
query = query.filter_by(user_id=user_id)
|
limit=limit, search=search)
|
||||||
|
|
||||||
result = query.all()
|
|
||||||
|
|
||||||
for job in result:
|
for job in result:
|
||||||
jobmap = {}
|
jobmap = {}
|
||||||
jobmap['job_id'] = job.get('id')
|
jobmap['job_id'] = job.get('id')
|
||||||
|
@ -650,7 +642,6 @@ def search_job(user_id, project_id=None, offset=0,
|
||||||
|
|
||||||
jobs.append(jobmap)
|
jobs.append(jobmap)
|
||||||
|
|
||||||
session.close()
|
|
||||||
return jobs
|
return jobs
|
||||||
|
|
||||||
|
|
||||||
|
@ -670,26 +661,10 @@ def update_job(user_id, job_id, patch_doc, project_id=None):
|
||||||
else:
|
else:
|
||||||
values[key] = valid_patch.get(key, None)
|
values[key] = valid_patch.get(key, None)
|
||||||
|
|
||||||
session = get_db_session()
|
update_tuple(tablename=models.Job, user_id=user_id, tuple_id=job_id,
|
||||||
with session.begin():
|
tuple_values=values, project_id=project_id)
|
||||||
try:
|
|
||||||
query = model_query(session, models.Job, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=job_id)
|
|
||||||
result = query.update(values)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
return 0
|
||||||
|
|
||||||
if not result:
|
|
||||||
raise freezer_api_exc.DocumentNotFound(
|
|
||||||
message='Job not registered with ID'
|
|
||||||
' {0}'.format(job_id))
|
|
||||||
else:
|
|
||||||
LOG.info('job updated, job_id: {0}'.format(job_id))
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
def replace_job(user_id, job_id, doc, project_id=None):
|
def replace_job(user_id, job_id, doc, project_id=None):
|
||||||
|
@ -700,7 +675,6 @@ def replace_job(user_id, job_id, doc, project_id=None):
|
||||||
|
|
||||||
values = {}
|
values = {}
|
||||||
valuesnew = {}
|
valuesnew = {}
|
||||||
bCreate = False
|
|
||||||
|
|
||||||
values['id'] = job_id
|
values['id'] = job_id
|
||||||
values['project_id'] = project_id
|
values['project_id'] = project_id
|
||||||
|
@ -718,51 +692,17 @@ def replace_job(user_id, job_id, doc, project_id=None):
|
||||||
if values[key] is not None:
|
if values[key] is not None:
|
||||||
valuesnew[key] = values[key]
|
valuesnew[key] = values[key]
|
||||||
|
|
||||||
session = get_db_session()
|
replace_tuple(tablename=models.Job, user_id=user_id,
|
||||||
with session.begin():
|
tuple_id=job_id, tuple_values=valuesnew,
|
||||||
try:
|
project_id=project_id)
|
||||||
query = model_query(session, models.Job, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=job_id)
|
|
||||||
result = query.update(valuesnew)
|
|
||||||
if not result:
|
|
||||||
bCreate = True
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
|
||||||
|
|
||||||
if bCreate:
|
|
||||||
job = models.Job()
|
|
||||||
job.update(valuesnew)
|
|
||||||
session = get_db_session()
|
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
job.save(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.\
|
|
||||||
StorageEngineError(message='mysql operation failed {0}'.
|
|
||||||
format(e))
|
|
||||||
session.close()
|
|
||||||
|
|
||||||
LOG.info('job replaced, job_id: {0}'.format(job_id))
|
LOG.info('job replaced, job_id: {0}'.format(job_id))
|
||||||
return job_id
|
return job_id
|
||||||
|
|
||||||
|
|
||||||
def get_backup(user_id, backup_id, project_id=None):
|
def get_backup(user_id, backup_id, project_id=None):
|
||||||
session = get_db_session()
|
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
query = model_query(session, models.Backup, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=backup_id)
|
|
||||||
result = query.all()
|
|
||||||
except Exception as e:
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
result = get_tuple(tablename=models.Backup, user_id=user_id,
|
||||||
|
tuple_id=backup_id, project_id=project_id)
|
||||||
values = {}
|
values = {}
|
||||||
if 1 == len(result):
|
if 1 == len(result):
|
||||||
values['project_id'] = result[0].get('project_id')
|
values['project_id'] = result[0].get('project_id')
|
||||||
|
@ -812,56 +752,26 @@ def add_backup(user_id, user_name, doc, project_id=None):
|
||||||
backupvalue['backup_metadata'] = json_utils.json_encode(backup_metadata)
|
backupvalue['backup_metadata'] = json_utils.json_encode(backup_metadata)
|
||||||
backup.update(backupvalue)
|
backup.update(backupvalue)
|
||||||
|
|
||||||
session = get_db_session()
|
add_tuple(tuple=backup)
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
backup.save(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.\
|
|
||||||
StorageEngineError(message='mysql operation failed {0}'.
|
|
||||||
format(e))
|
|
||||||
|
|
||||||
LOG.info('Backup registered, backup_id: {0}'.format(backup_id))
|
LOG.info('Backup registered, backup_id: {0}'.format(backup_id))
|
||||||
|
|
||||||
session.close()
|
|
||||||
return backup_id
|
return backup_id
|
||||||
|
|
||||||
|
|
||||||
def delete_backup(user_id, backup_id, project_id=None):
|
def delete_backup(user_id, backup_id, project_id=None):
|
||||||
session = get_db_session()
|
|
||||||
query = model_query(session, models.Backup, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=backup_id)
|
|
||||||
|
|
||||||
result = query.all()
|
tupleid = delete_tuple(tablename=models.Backup, user_id=user_id,
|
||||||
if 1 == len(result):
|
tuple_id=backup_id, project_id=project_id)
|
||||||
try:
|
return tupleid
|
||||||
result[0].delete(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
LOG.info('Backup delete, backup_id: {0} deleted'.
|
|
||||||
format(backup_id))
|
|
||||||
else:
|
|
||||||
LOG.info('Backup delete, backup_id: {0} not found'.
|
|
||||||
format(backup_id))
|
|
||||||
|
|
||||||
session.close()
|
|
||||||
return backup_id
|
|
||||||
|
|
||||||
|
|
||||||
def search_backup(user_id, project_id=None, offset=0,
|
def search_backup(user_id, project_id=None, offset=0,
|
||||||
limit=10, search=None):
|
limit=100, search=None):
|
||||||
|
|
||||||
search = search or {}
|
|
||||||
backups = []
|
backups = []
|
||||||
session = get_db_session()
|
|
||||||
query = model_query(session, models.Backup, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id)
|
|
||||||
|
|
||||||
result = query.all()
|
|
||||||
|
|
||||||
|
result = search_tuple(tablename=models.Backup, user_id=user_id,
|
||||||
|
project_id=project_id, offset=offset,
|
||||||
|
limit=limit, search=search)
|
||||||
for backup in result:
|
for backup in result:
|
||||||
backupmap = {}
|
backupmap = {}
|
||||||
backupmap['project_id'] = project_id
|
backupmap['project_id'] = project_id
|
||||||
|
@ -874,24 +784,14 @@ def search_backup(user_id, project_id=None, offset=0,
|
||||||
json_decode(backup.get('backup_metadata'))
|
json_decode(backup.get('backup_metadata'))
|
||||||
backups.append(backupmap)
|
backups.append(backupmap)
|
||||||
|
|
||||||
session.close()
|
|
||||||
return backups
|
return backups
|
||||||
|
|
||||||
|
|
||||||
def get_session(user_id, session_id, project_id=None):
|
def get_session(user_id, session_id, project_id=None):
|
||||||
jobt = {}
|
jobt = {}
|
||||||
session = get_db_session()
|
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
query = model_query(session, models.Session, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=session_id)
|
|
||||||
result = query.all()
|
|
||||||
except Exception as e:
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
|
||||||
values = {}
|
values = {}
|
||||||
|
result = get_tuple(tablename=models.Session, user_id=user_id,
|
||||||
|
tuple_id=session_id, project_id=project_id)
|
||||||
if 1 == len(result):
|
if 1 == len(result):
|
||||||
values['project_id'] = result[0].get('project_id')
|
values['project_id'] = result[0].get('project_id')
|
||||||
values['session_id'] = result[0].get('id')
|
values['session_id'] = result[0].get('id')
|
||||||
|
@ -916,26 +816,10 @@ def get_session(user_id, session_id, project_id=None):
|
||||||
|
|
||||||
|
|
||||||
def delete_session(user_id, session_id, project_id=None):
|
def delete_session(user_id, session_id, project_id=None):
|
||||||
session = get_db_session()
|
|
||||||
query = model_query(session, models.Session, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=session_id)
|
|
||||||
|
|
||||||
result = query.all()
|
tupleid = delete_tuple(tablename=models.Session, user_id=user_id,
|
||||||
if 1 == len(result):
|
tuple_id=session_id, project_id=project_id)
|
||||||
try:
|
return tupleid
|
||||||
result[0].delete(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
LOG.info('Session delete, session_id: {0} deleted'.
|
|
||||||
format(session_id))
|
|
||||||
else:
|
|
||||||
LOG.info('Session delete, session_id: {0} not found'.
|
|
||||||
format(session_id))
|
|
||||||
|
|
||||||
session.close()
|
|
||||||
return session_id
|
|
||||||
|
|
||||||
|
|
||||||
def add_session(user_id, doc, project_id=None):
|
def add_session(user_id, doc, project_id=None):
|
||||||
|
@ -974,19 +858,9 @@ def add_session(user_id, doc, project_id=None):
|
||||||
sessionvalue['schedule'] = json_utils.json_encode(schedulingjson)
|
sessionvalue['schedule'] = json_utils.json_encode(schedulingjson)
|
||||||
sessiont.update(sessionvalue)
|
sessiont.update(sessionvalue)
|
||||||
|
|
||||||
session = get_db_session()
|
add_tuple(tuple=sessiont)
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
sessiont.save(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.\
|
|
||||||
StorageEngineError(message='mysql operation failed {0}'.
|
|
||||||
format(e))
|
|
||||||
|
|
||||||
LOG.info('Session registered, session_id: {0}'.format(session_id))
|
LOG.info('Session registered, session_id: {0}'.format(session_id))
|
||||||
|
|
||||||
session.close()
|
|
||||||
return session_id
|
return session_id
|
||||||
|
|
||||||
|
|
||||||
|
@ -1017,26 +891,11 @@ def update_session(user_id, session_id, patch_doc, project_id=None):
|
||||||
else:
|
else:
|
||||||
values[key] = valid_patch.get(key, None)
|
values[key] = valid_patch.get(key, None)
|
||||||
|
|
||||||
session = get_db_session()
|
update_tuple(tablename=models.Session, user_id=user_id,
|
||||||
with session.begin():
|
tuple_id=session_id, tuple_values=values,
|
||||||
try:
|
project_id=project_id)
|
||||||
query = model_query(session, models.Session, project_id=project_id)
|
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=session_id)
|
|
||||||
result = query.update(values)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
return 0
|
||||||
|
|
||||||
if not result:
|
|
||||||
raise freezer_api_exc.DocumentNotFound(
|
|
||||||
message='session not registered with ID'
|
|
||||||
' {0}'.format(session_id))
|
|
||||||
else:
|
|
||||||
LOG.info('session updated, session_id: {0}'.format(session_id))
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
def replace_session(user_id, session_id, doc, project_id=None):
|
def replace_session(user_id, session_id, doc, project_id=None):
|
||||||
|
@ -1048,7 +907,6 @@ def replace_session(user_id, session_id, doc, project_id=None):
|
||||||
project_id)
|
project_id)
|
||||||
values = {}
|
values = {}
|
||||||
valuesnew = {}
|
valuesnew = {}
|
||||||
bCreate = False
|
|
||||||
|
|
||||||
values['id'] = session_id
|
values['id'] = session_id
|
||||||
values['project_id'] = project_id
|
values['project_id'] = project_id
|
||||||
|
@ -1070,51 +928,22 @@ def replace_session(user_id, session_id, doc, project_id=None):
|
||||||
if values[key] is not None:
|
if values[key] is not None:
|
||||||
valuesnew[key] = values[key]
|
valuesnew[key] = values[key]
|
||||||
|
|
||||||
session = get_db_session()
|
replace_tuple(tablename=models.Session, user_id=user_id,
|
||||||
with session.begin():
|
tuple_id=session_id,
|
||||||
try:
|
tuple_values=valuesnew,
|
||||||
query = model_query(session, models.Session, project_id=project_id)
|
project_id=project_id)
|
||||||
query = query.filter_by(user_id=user_id).filter_by(id=session_id)
|
|
||||||
result = query.update(valuesnew)
|
|
||||||
if not result:
|
|
||||||
bCreate = True
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.StorageEngineError(
|
|
||||||
message='mysql operation failed {0}'.format(e))
|
|
||||||
|
|
||||||
session.close()
|
|
||||||
|
|
||||||
if bCreate:
|
|
||||||
sessiont = models.Session()
|
|
||||||
sessiont.update(valuesnew)
|
|
||||||
session = get_db_session()
|
|
||||||
with session.begin():
|
|
||||||
try:
|
|
||||||
sessiont.save(session=session)
|
|
||||||
except Exception as e:
|
|
||||||
session.close()
|
|
||||||
raise freezer_api_exc.\
|
|
||||||
StorageEngineError(message='mysql operation failed {0}'.
|
|
||||||
format(e))
|
|
||||||
session.close()
|
|
||||||
|
|
||||||
LOG.info('session replaced, session_id: {0}'.format(session_id))
|
LOG.info('session replaced, session_id: {0}'.format(session_id))
|
||||||
return session_id
|
return session_id
|
||||||
|
|
||||||
|
|
||||||
def search_session(user_id, project_id=None, offset=0,
|
def search_session(user_id, project_id=None, offset=0,
|
||||||
limit=10, search=None):
|
limit=100, search=None):
|
||||||
search = search or {}
|
|
||||||
sessions = []
|
sessions = []
|
||||||
jobt = {}
|
jobt = {}
|
||||||
|
|
||||||
session = get_db_session()
|
result = search_tuple(tablename=models.Session, user_id=user_id,
|
||||||
query = model_query(session, models.Session, project_id=project_id)
|
project_id=project_id, offset=offset,
|
||||||
query = query.filter_by(user_id=user_id)
|
limit=limit, search=search)
|
||||||
|
|
||||||
result = query.all()
|
|
||||||
|
|
||||||
for sessiont in result:
|
for sessiont in result:
|
||||||
sessionmap = {}
|
sessionmap = {}
|
||||||
sessionmap['project_id'] = project_id
|
sessionmap['project_id'] = project_id
|
||||||
|
@ -1136,5 +965,4 @@ def search_session(user_id, project_id=None, offset=0,
|
||||||
sessionmap['jobs'] = json_utils.json_decode(sessiont.get('job'))
|
sessionmap['jobs'] = json_utils.json_decode(sessiont.get('job'))
|
||||||
sessions.append(sessionmap)
|
sessions.append(sessionmap)
|
||||||
|
|
||||||
session.close()
|
|
||||||
return sessions
|
return sessions
|
||||||
|
|
Loading…
Reference in New Issue