Esempio n. 1
0
    def __init__(self, binroot=None, **kwargs):

        if binroot != None:
            binary = os.path.join(binroot, SSD_BIN)
        else:
            binary = None

        EnvOSProcess.__init__(self, binary=binary, **kwargs)
        self.ready_deferred = defer.Deferred()
Esempio n. 2
0
    def __init__(self, binroot=None, **kwargs):

        if binroot != None:
            binary = os.path.join(binroot, SSD_BIN)
        else:
            binary = None

        EnvOSProcess.__init__(self, binary=binary, **kwargs)
        self.ready_deferred = defer.Deferred()
Esempio n. 3
0
    def spawn(self, binary=None, args=[]):
        """
        Calls the baseclass spawn but returns a deferred that's fired when the daemon
        announces it is ready.
        Then it can be used in a chain.
        """

        EnvOSProcess.spawn(self, binary, args)

        return self.ready_deferred
Esempio n. 4
0
    def spawn(self, binary=None, args=[]):
        """
        Calls the baseclass spawn but returns a deferred that's fired when the daemon
        announces it is ready.
        Then it can be used in a chain.
        """

        EnvOSProcess.spawn(self, binary, args)

        return self.ready_deferred
Esempio n. 5
0
    def outReceived(self, data):
        EnvOSProcess.outReceived(self, data)
        if (SSD_READY_STRING in data):

            # must simulate processEnded callback value
            cba = { 'exitcode' : 0,
                    'outlines' : self.outlines,
                    'errlines' : self.errlines }

            self.ready_deferred.callback(cba)
Esempio n. 6
0
    def outReceived(self, data):
        EnvOSProcess.outReceived(self, data)
        if (SSD_READY_STRING in data):

            # must simulate processEnded callback value
            cba = {
                'exitcode': 0,
                'outlines': self.outlines,
                'errlines': self.errlines
            }

            self.ready_deferred.callback(cba)
Esempio n. 7
0
    def processEnded(self, reason):
        # Process ended override.
        # This override is to signal ready deferred if we never did, just in case.
        if self.ready_deferred and not self.ready_deferred.called:

            # must simulate processEnded callback value
            cba = { 'exitcode' : 0,
                    'outlines' : self.outlines,
                    'errlines' : self.errlines }

            self.ready_deferred.callback(cba)

        EnvOSProcess.processEnded(self, reason)
Esempio n. 8
0
    def processEnded(self, reason):
        # Process ended override.
        # This override is to signal ready deferred if we never did, just in case.
        if self.ready_deferred and not self.ready_deferred.called:

            # must simulate processEnded callback value
            cba = {
                'exitcode': 0,
                'outlines': self.outlines,
                'errlines': self.errlines
            }

            self.ready_deferred.callback(cba)

        EnvOSProcess.processEnded(self, reason)
Esempio n. 9
0
    def __init__(self, binroot=None, sqlcommands=None, **kwargs):
        """
        @param sqlcommands  SQL commands to run in the client. May be None, which leaves stdin open.
        @param binroot      Root path to prepend on the binary name.
        """
        self.sqlcommands = sqlcommands

        if binroot != None:
            binary = os.path.join(binroot, SSC_BIN)
        else:
            binary=None

        EnvOSProcess.__init__(self, binary=binary, **kwargs)

        self.temp_file  = None
Esempio n. 10
0
    def __init__(self, binroot=None, sqlcommands=None, **kwargs):
        """
        @param sqlcommands  SQL commands to run in the client. May be None, which leaves stdin open.
        @param binroot      Root path to prepend on the binary name.
        """
        self.sqlcommands = sqlcommands

        if binroot != None:
            binary = os.path.join(binroot, SSC_BIN)
        else:
            binary = None

        EnvOSProcess.__init__(self, binary=binary, **kwargs)

        self.temp_file = None
Esempio n. 11
0
    def spawn(self, binary=None, args=[]):
        """
        Spawns the sqllineClient process.
        This override is to dump our sqlcommands into a file and tell sqllineClient to
        run that file. We modify the args keyword arg and send it up to the baseclass
        spawn implementation.
        """
        newargs = args[:]  # XXX must copy becuase otherwise, args keep appending to some
        # shared args var?!?! makes no sense
        if len(args) == 0:
            newargs.extend(self.spawnargs)

        if self.sqlcommands != None:

            # dump sqlcommands into a temporary file
            f = tempfile.NamedTemporaryFile(
                delete=False)  # TODO: requires python 2.6
            f.write(self.sqlcommands)
            f.close()

            self.temp_file = f.name

            newargs.insert(0, "--run=%s" % self.temp_file)

        return EnvOSProcess.spawn(self, binary, newargs)
Esempio n. 12
0
    def spawn(self, binary=None, args=[]):
        """
        Spawns the sqllineClient process.
        This override is to dump our sqlcommands into a file and tell sqllineClient to
        run that file. We modify the args keyword arg and send it up to the baseclass
        spawn implementation.
        """
        newargs = args[:] # XXX must copy becuase otherwise, args keep appending to some 
                          # shared args var?!?! makes no sense
        if len(args) == 0:
            newargs.extend(self.spawnargs)

        if self.sqlcommands != None:

            # dump sqlcommands into a temporary file
            f = tempfile.NamedTemporaryFile(delete=False)   # TODO: requires python 2.6
            f.write(self.sqlcommands)
            f.close()

            self.temp_file = f.name

            newargs.insert(0, "--run=%s" % self.temp_file)

        return EnvOSProcess.spawn(self, binary, newargs)
Esempio n. 13
0
    def processEnded(self, reason):
        EnvOSProcess.processEnded(self, reason)

        # remove temp file if we created one earlier
        if self.temp_file != None:
            os.unlink(self.temp_file)
Esempio n. 14
0
 def close(self, force=False, timeout=30):
     """
     Shut down the SQLstream daemon.
     This override exists simply to change the timeout param's default value.
     """
     return EnvOSProcess.close(self, force, timeout)
Esempio n. 15
0
    def create_fsm(self, target, ssid):
        """
        Creates a FSM for SQLstream instance state/transitions.
        The entry for its SSID must be defined in the target's sqlstreams dict.
        """
        fsm = AsyncFSM(SSStates.S_INIT, None)

        # extract SSID from kwargs, set up vars needed for install/uninstall
        sdpport = target.sqlstreams[ssid]['sdpport']
        hsqldbport = target.sqlstreams[ssid]['hsqldbport']
        dirname = target.sqlstreams[ssid]['dirname']
        seismic_jar = resource_filename(__name__, "data/ucsd-seismic.jar")
        installerbin = resource_filename(__name__, "data/install_sqlstream.sh")
        log.debug(installerbin)

        # 1. INIT <-> INSTALLED
        proc_installer = EnvOSProcess(
            binary=installerbin,
            spawnargs=[sdpport, hsqldbport, seismic_jar, dirname])
        forward_task = proc_installer.spawn
        backward_task = lambda: shutil.rmtree(dirname)

        fsm.add_transition(SSStates.E_INSTALL, SSStates.S_INIT, forward_task,
                           SSStates.S_INSTALLED)
        fsm.add_transition(SSStates.E_UNINSTALL, SSStates.S_INSTALLED,
                           backward_task, SSStates.S_INIT)

        # 2. INSTALLED <-> READY
        proc_server = OSSSServerProcess(
            binroot=dirname, extraenv={"JAVA_HOME": "/usr/local/JDK1.6"})
        proc_server.addCallback(target._sqlstream_ended, sqlstreamid=ssid)
        proc_server.addReadyCallback(target._sqlstream_started,
                                     sqlstreamid=ssid)
        target.sqlstreams[ssid][
            '_serverproc'] = proc_server  # store it here, it still runs
        forward_task = proc_server.spawn
        backward_task = proc_server.close

        fsm.add_transition(SSStates.E_RUNDAEMON, SSStates.S_INSTALLED,
                           forward_task, SSStates.S_READY)
        fsm.add_transition(SSStates.E_STOPDAEMON, SSStates.S_READY,
                           backward_task, SSStates.S_INSTALLED)

        # 3. READY <-> DEFINED
        proc_loaddefs = OSSSClientProcess(
            spawnargs=[sdpport],
            sqlcommands=target.sqlstreams[ssid]['_sql_defs'],
            binroot=dirname,
            extraenv={"JAVA_HOME": "/usr/local/JDK1.6"})
        forward_task = proc_loaddefs.spawn

        # 18 Jan 2011 - Disabled due to lack of ability to turn consumer off - will freeze sqllineClient
        #proc_unloaddefs = OSSSClientProcess(spawnargs=[sdpport], sqlcommands="DROP SCHEMA UCSD CASCADE;", binroot=dirname, extraenv={"JAVA_HOME": "/usr/local/JDK1.6"})
        #backward_task = proc_unloaddefs.spawn
        backward_task = lambda: False  # can't do pass here?

        fsm.add_transition(SSStates.E_LOADDEFS, SSStates.S_READY, forward_task,
                           SSStates.S_DEFINED)
        fsm.add_transition(SSStates.E_UNLOADDEFS, SSStates.S_DEFINED,
                           backward_task, SSStates.S_READY)

        # 4. DEFINED <-> RUNNING
        proc_pumpson = OSSSClientProcess(
            spawnargs=[sdpport],
            sqlcommands=target._get_sql_pumps_on(),
            binroot=dirname,
            extraenv={"JAVA_HOME": "/usr/local/JDK1.6"})
        forward_task = proc_pumpson.spawn

        proc_pumpsoff = OSSSClientProcess(
            spawnargs=[sdpport],
            sqlcommands=target._get_sql_pumps_off(),
            binroot=dirname,
            extraenv={"JAVA_HOME": "/usr/local/JDK1.6"})
        backward_task = proc_pumpsoff.spawn

        fsm.add_transition(SSStates.E_PUMPSON, SSStates.S_DEFINED,
                           forward_task, SSStates.S_RUNNING)
        fsm.add_transition(SSStates.E_PUMPSOFF, SSStates.S_RUNNING,
                           backward_task, SSStates.S_DEFINED)

        return fsm
Esempio n. 16
0
 def close(self, force=False, timeout=30):
     """
     Shut down the SQLstream daemon.
     This override exists simply to change the timeout param's default value.
     """
     return EnvOSProcess.close(self, force, timeout)
Esempio n. 17
0
    def processEnded(self, reason):
        EnvOSProcess.processEnded(self, reason)

        # remove temp file if we created one earlier
        if self.temp_file != None:
            os.unlink(self.temp_file)