- data is only written to the DB after all scripts are done. This speeds up the client overall inside the critial code path and removes the requirements for DB semaphores to protect against multi-threaded writes.
- Moved to sqlalchemy instead of the bare mysql layer
- TODO add UI-layer methods back in for generating task summaries, etc.
git-svn-id: svn://svn.open-ils.org/ILS-Contrib/constrictor/trunk@789
6d9bc8c9-1ec2-4278-b937-
99fde70a366f
import sys, getopt, os, errno
from constrictor.properties import Properties
-from constrictor.db import DBConnection
from constrictor.controller import DroneController
from constrictor.script import ScriptThread, ScriptManager
from constrictor.log import *
from constrictor.utils import loadProps, saveProps, initDirs, initDB, openScript, PROPS_FILENAME
+import constrictor.data
props = None
props_filename = PROPS_FILENAME
sys.exit(0)
-
-def onThreadsComplete(scriptManager):
- global droneController
- summary = ScriptThread.currentScriptThread().dbConnection.createTaskSummary()
- droneController.sendResult(type='task_summary', **summary)
-
-
def read_args_and_props():
global props
global props_filename
def onThreadsComplete(scriptManager):
global droneController
- summary = ScriptThread.currentScriptThread().dbConnection.createTaskSummary()
- droneController.sendResult(type='task_summary', **summary)
+ #summary = ScriptThread.currentScriptThread().dbConnection.createTaskSummary()
+ #droneController.sendResult(type='task_summary', **summary)
read_args_and_props()
initDirs()
import time, sys, threading
from threading import Thread, local
from properties import Properties
-from db import DBConnection
+import constrictor.data
import threading, traceback
from log import *
self.script = script # our script object
self.numItr = numItr # number of times to run our script
self.setName(ScriptThread.threadSeed) # use the Thread name as our threadID
- self.dbConnection = None # create this after the thread has launched
self.onComplete = onComplete
ScriptThread.threadSeed += 1
self.userData = None
data.scriptThread = self
props = Properties.getProperties()
- self.dbConnection = DBConnection(props.getProperty('constrictor.dbFile'))
def getThreadID():
self.numComplete += 1
if self.numComplete == self.numThreads:
# all threads have completed
- scriptThread.dbConnection.finishTaskSet()
+ constrictor.data.Data.get_instance().store_data()
logInfo('all threads done.. finishing task set')
if ScriptManager.onThreadsComplete:
ScriptManager.onThreadsComplete(ScriptManager)
from threading import local
import threading
from log import *
+import constrictor.data
class Task(object):
self.name, ScriptThread.getThreadID(), self.duration))
sys.stdout.flush()
- dbConn = ScriptThread.currentScriptThread().dbConnection
- dbConn.insertTask(self)
+ constrictor.data.Data.get_instance().add_task(self)
return ret
+ def to_dict(self):
+ return {
+ 'name' : self.name,
+ 'duration' : self.duration,
+ 'success' : self.success,
+ 'thread_id' : ScriptThread.getThreadID()
+ }
import sys, getopt, os, errno
from constrictor.properties import Properties
-from constrictor.db import DBConnection
from constrictor.log import *
+import constrictor.data
DEFAULT_PORT = 21800
CONFIG_FILENAME = 'config.xml'
def initDB():
''' connect to the db and make sure the tables exist '''
- dbConnection = DBConnection(props.getProperty('constrictor.dbFile'))
- dbConnection.createTables()
- dbConnection.createTaskSet()
- dbConnection.disconnect()
+ data = constrictor.data.Data(
+ os.path.join(os.getcwd(), props.getProperty('constrictor.dbFile'))
+ )
+ data.create_schema()
+ data.create_task_set()
+ data.disconnect()
def initDirs():