def _begin_start(self, name, program, args): run_trace = tr.TraceWriter( tr.trace_fn(self.trace_dir, SCREEN_TEMPL % (name))) run_trace.trace(TYPE, RUN_TYPE) run_trace.trace(NAME, name) run_trace.trace(ARGS, json.dumps(args)) full_cmd = [program] + list(args) session_name = self._get_session() inited_screen = False if session_name is None: inited_screen = True self._do_screen_init() session_name = self._get_session() if session_name is None: msg = "After initializing screen with session named [%s], no screen session with that name was found!" % ( SESSION_NAME) raise excp.StartException(msg) run_trace.trace(SESSION_ID, session_name) if inited_screen or not sh.isfile(SCREEN_RC): rc_gen = ScreenRcGenerator(self) rc_contents = rc_gen.create(session_name, self._get_env()) out_fn = sh.abspth(SCREEN_RC) LOG.info("Writing your created screen rc file to [%s]" % (out_fn)) sh.write_file(out_fn, rc_contents) self._do_start(session_name, name, full_cmd) return run_trace.filename()
def stop(self, app_name): with sh.Rooted(ROOT_GO): if not sh.isdir(self.trace_dir): msg = "No trace directory found from which to stop %s" % (app_name) raise excp.StopException(msg) fn_name = FORK_TEMPL % (app_name) (pid_file, stderr_fn, stdout_fn) = self._form_file_names(fn_name) trace_fn = tr.trace_fn(self.trace_dir, fn_name) if sh.isfile(pid_file) and sh.isfile(trace_fn): pid = int(sh.load_file(pid_file).strip()) (killed, attempts) = self._stop_pid(pid) # Trash the files if it worked if killed: LOG.debug("Killed pid %s after %s attempts" % (pid, attempts)) LOG.debug("Removing pid file %s" % (pid_file)) sh.unlink(pid_file) LOG.debug("Removing stderr file %s" % (stderr_fn)) sh.unlink(stderr_fn) LOG.debug("Removing stdout file %s" % (stdout_fn)) sh.unlink(stdout_fn) LOG.debug("Removing %s trace file %s" % (app_name, trace_fn)) sh.unlink(trace_fn) else: msg = "Could not stop %s after %s attempts" % (app_name, attempts) raise excp.StopException(msg) else: msg = "No pid or trace file could be found to stop %s in directory %s" % (app_name, self.trace_dir) raise excp.StopException(msg)
def stop(self, name, *args, **kargs): with sh.Rooted(kargs.get("run_as_root", True)): trace_dir = kargs.get("trace_dir") if not trace_dir or not sh.isdir(trace_dir): msg = "No trace directory found from which to stop %s" % (name) raise excp.StopException(msg) fn_name = FORK_TEMPL % (name) (pid_file, stderr_fn, stdout_fn) = self._form_file_names(trace_dir, fn_name) trace_fn = tr.trace_fn(trace_dir, fn_name) if sh.isfile(pid_file) and sh.isfile(trace_fn): pid = int(sh.load_file(pid_file).strip()) (killed, attempts) = self._stop_pid(pid) #trash the files if killed: LOG.debug("Killed pid %s after %s attempts" % (pid, attempts)) LOG.debug("Removing pid file %s" % (pid_file)) sh.unlink(pid_file) LOG.debug("Removing stderr file %s" % (stderr_fn)) sh.unlink(stderr_fn) LOG.debug("Removing stdout file %s" % (stdout_fn)) sh.unlink(stdout_fn) LOG.debug("Removing %s trace file %s" % (name, trace_fn)) sh.unlink(trace_fn) else: msg = "Could not stop %s after %s attempts" % (name, attempts) raise excp.StopException(msg) else: msg = "No pid or trace file could be found to stop %s in directory %s" % (name, trace_dir) raise excp.StopException(msg)
def stop(self, app_name): fn_name = UPSTART_TEMPL % (app_name) trace_fn = tr.trace_fn(self.trace_dir, fn_name) # Emit the start, keep track and only do one per component name component_event = self.component_name + STOP_EVENT_SUFFIX if component_event in self.events: LOG.debug("Already emitted event: %s" % (component_event)) else: LOG.info("About to emit event: %s" % (component_event)) cmd = EMIT_BASE_CMD + [component_event] sh.execute(*cmd, run_as_root=True) self.events.add(component_event) sh.unlink(trace_fn)
def stop(self, app_name): fn_name = UPSTART_TEMPL % (app_name) trace_fn = tr.trace_fn(self.trace_dir, fn_name) # Emit the start, keep track and only do one per component name component_event = self.component_name + STOP_EVENT_SUFFIX if component_event in self.events: LOG.debug("Already emitted event: %s" % (component_event)) else: LOG.debug("About to emit event: %s" % (component_event)) cmd = EMIT_BASE_CMD + [component_event] sh.execute(*cmd, run_as_root=True) self.events.add(component_event) sh.unlink(trace_fn)
def _start(self, app_name, program, program_args): run_trace = tr.TraceWriter(tr.trace_fn(self.trace_dir, UPSTART_TEMPL % (app_name))) run_trace.trace(TYPE, RUN_TYPE) run_trace.trace(NAME, app_name) run_trace.trace(ARGS, json.dumps(program_args)) # Emit the start, keep track and only do one per component name component_event = self.component_name + START_EVENT_SUFFIX if component_event in self.events: LOG.debug("Already emitted event: %s" % (component_event)) else: LOG.debug("About to emit event: %s" % (component_event)) cmd = EMIT_BASE_CMD + [component_event] sh.execute(*cmd, run_as_root=True) self.events.add(component_event) return run_trace.filename()
def _start(self, app_name, program, program_args): run_trace = tr.TraceWriter( tr.trace_fn(self.trace_dir, UPSTART_TEMPL % (app_name))) run_trace.trace(TYPE, RUN_TYPE) run_trace.trace(NAME, app_name) run_trace.trace(ARGS, json.dumps(program_args)) # Emit the start, keep track and only do one per component name component_event = self.component_name + START_EVENT_SUFFIX if component_event in self.events: LOG.debug("Already emitted event: %s" % (component_event)) else: LOG.debug("About to emit event: %s" % (component_event)) cmd = EMIT_BASE_CMD + [component_event] sh.execute(*cmd, run_as_root=True) self.events.add(component_event) return run_trace.filename()
def _install_python_setups(self): pydirs = self._get_python_directories() if pydirs: LOG.info("Setting up %s python directories (%s)", len(pydirs), pydirs) for (name, wkdir) in pydirs.items(): working_dir = wkdir or self.app_dir self.tracewriter.dirs_made(*sh.mkdirslist(working_dir)) self.tracewriter.py_installed(name, working_dir) (stdout, stderr) = sh.execute(*PY_INSTALL, cwd=working_dir, run_as_root=True) py_trace_name = "%s-%s" % (tr.PY_TRACE, name) py_writer = tr.TraceWriter(tr.trace_fn(self.trace_dir, py_trace_name)) # Format or json encoding isn't really needed here since this is # more just for information output/lookup if desired. py_writer.trace("CMD", " ".join(PY_INSTALL)) py_writer.trace("STDOUT", stdout) py_writer.trace("STDERR", stderr) self.tracewriter.file_touched(py_writer.filename())
def _install_python_setups(self): pydirs = self._get_python_directories() if pydirs: LOG.info("Setting up %s python directories (%s)" % (len(pydirs), pydirs)) for (name, wkdir) in pydirs.items(): working_dir = wkdir or self.appdir #ensure working dir is there self.tracewriter.dirs_made(*sh.mkdirslist(working_dir)) #do this before write just incase it craps out half way through self.tracewriter.py_installed(name, working_dir) #now actually do it (stdout, stderr) = sh.execute(*PY_INSTALL, cwd=working_dir, run_as_root=True) py_trace_name = "%s-%s" % (tr.PY_TRACE, name) py_writer = tr.TraceWriter(tr.trace_fn(self.tracedir, py_trace_name)) py_writer.trace("CMD", " ".join(PY_INSTALL)) py_writer.trace("STDOUT", stdout) py_writer.trace("STDERR", stderr) self.tracewriter.file_touched(py_writer.filename())
def _install_python_setups(self): pydirs = self._get_python_directories() if pydirs: LOG.info("Setting up %s python directories (%s)", len(pydirs), pydirs) for (name, wkdir) in pydirs.items(): working_dir = wkdir or self.app_dir self.tracewriter.dirs_made(*sh.mkdirslist(working_dir)) self.tracewriter.py_installed(name, working_dir) (stdout, stderr) = sh.execute(*PY_INSTALL, cwd=working_dir, run_as_root=True) py_trace_name = "%s-%s" % (tr.PY_TRACE, name) py_writer = tr.TraceWriter( tr.trace_fn(self.trace_dir, py_trace_name)) # Format or json encoding isn't really needed here since this is # more just for information output/lookup if desired. py_writer.trace("CMD", " ".join(PY_INSTALL)) py_writer.trace("STDOUT", stdout) py_writer.trace("STDERR", stderr) self.tracewriter.file_touched(py_writer.filename())
def _begin_start(self, name, program, args): run_trace = tr.TraceWriter(tr.trace_fn(self.trace_dir, SCREEN_TEMPL % (name))) run_trace.trace(TYPE, RUN_TYPE) run_trace.trace(NAME, name) run_trace.trace(ARGS, json.dumps(args)) full_cmd = [program] + list(args) session_name = self._get_session() inited_screen = False if session_name is None: inited_screen = True self._do_screen_init() session_name = self._get_session() if session_name is None: msg = "After initializing screen with session named [%s], no screen session with that name was found!" % (SESSION_NAME) raise excp.StartException(msg) run_trace.trace(SESSION_ID, session_name) if inited_screen or not sh.isfile(SCREEN_RC): rc_gen = ScreenRcGenerator(self) rc_contents = rc_gen.create(session_name, self._get_env()) out_fn = sh.abspth(SCREEN_RC) LOG.info("Writing your created screen rc file to [%s]" % (out_fn)) sh.write_file(out_fn, rc_contents) self._do_start(session_name, name, full_cmd) return run_trace.filename()
def is_started(self): return tr.TraceReader(tr.trace_fn(self.trace_dir, tr.START_TRACE)).exists()
def stop(self, app_name): trace_fn = tr.trace_fn(self.trace_dir, SCREEN_TEMPL % (app_name)) session_id = self._find_session(app_name, trace_fn) self._do_stop(app_name, session_id) sh.unlink(trace_fn)
def __init__(self, *args, **kargs): ComponentBase.__init__(self, *args, **kargs) self.tracewriter = tr.TraceWriter(tr.trace_fn(self.trace_dir, tr.IN_TRACE)) self.packages = kargs.get("packages", list())
def __init__(self, *args, **kargs): ComponentBase.__init__(self, *args, **kargs) self.tracereader = tr.TraceReader( tr.trace_fn(self.trace_dir, tr.IN_TRACE))
def __init__(self, *args, **kargs): ComponentBase.__init__(self, *args, **kargs) self.tracewriter = tr.TraceWriter( tr.trace_fn(self.trace_dir, tr.IN_TRACE)) self.packages = kargs.get('packages', list())
def __init__(self, *args, **kargs): ComponentBase.__init__(self, *args, **kargs) PackageBasedComponentMixin.__init__(self) self.tracereader = tr.TraceReader(tr.trace_fn(self.trace_dir, tr.IN_TRACE)) self.keep_old = kargs.get('keep_old')
def is_installed(self): return tr.TraceReader(tr.trace_fn(self.trace_dir, tr.IN_TRACE)).exists()
def _do_trace(self, fn, kvs): run_trace = tr.TraceWriter(tr.trace_fn(self.trace_dir, fn)) for (k, v) in kvs.items(): run_trace.trace(k, v) return run_trace.filename()
def __init__(self, component_name, *args, **kargs): ComponentBase.__init__(self, component_name, *args, **kargs) self.tracewriter = tr.TraceWriter(tr.trace_fn(self.tracedir, tr.IN_TRACE))
def __init__(self, component_name, *args, **kargs): ComponentBase.__init__(self, component_name, *args, **kargs) self.tracereader = tr.TraceReader(tr.trace_fn(self.tracedir, tr.IN_TRACE)) self.keep_old = kargs.get("keep_old")
def __init__(self, *args, **kargs): ComponentBase.__init__(self, *args, **kargs) PackageBasedComponentMixin.__init__(self) self.tracewriter = tr.TraceWriter(tr.trace_fn(self.trace_dir, tr.IN_TRACE)) self.packages = kargs.get('packages', list())
def __init__(self, *args, **kargs): ComponentBase.__init__(self, *args, **kargs) self.tracereader = tr.TraceReader(tr.trace_fn(self.trace_dir, tr.IN_TRACE))