in backend/bms_app/source_db/services.py [0:0]
def _get_operations(source_db):
"""Return operations history data."""
query = db.session.query(OperationDetails, Operation, BMSServer) \
.join(Mapping, OperationDetails.mapping_id == Mapping.id) \
.join(SourceDB, Mapping.db_id == SourceDB.id) \
.join(BMSServer, Mapping.bms_id == BMSServer.id) \
.join(Operation, OperationDetails.operation_id == Operation.id) \
.filter(SourceDB.id == source_db.id) \
.order_by(OperationDetails.id) \
.all()
operations_data = {}
for op_details, operation, bms in query:
op_id = op_details.operation_id
if op_id not in operations_data:
operations_data[op_id] = {
'wave_id': operation.wave_id,
'operation_type': operation.operation_type.value,
'started_at': operation.started_at,
'completed_at': operation.completed_at,
'bms': []
}
logs_url = generate_target_gcp_logs_link(op_details, bms)
operations_data[op_id]['bms'].append({
'id': bms.id,
'name': bms.name,
'logs_url': logs_url,
'operation_status': op_details.status.value
})
return list(operations_data.values())