add pid for tracer table
Change-Id: Iec0f96e0ee9a7c8429669ec3777ac85f937e1434
This commit is contained in:
parent
7aa86fceea
commit
01b97bf12c
|
@ -19,7 +19,7 @@ class ServerControlEndpoint(object):
|
|||
if server:
|
||||
self.server.stop()
|
||||
|
||||
class TraceEndpoint(object):
|
||||
class TracerEndpoint(object):
|
||||
|
||||
target = oslo_messaging.Target(topic="test", version='1.0')
|
||||
|
||||
|
@ -29,7 +29,8 @@ class TraceEndpoint(object):
|
|||
for tr in tracers:
|
||||
ret.append({"name":tr.name,
|
||||
"tpl":tr.template,
|
||||
"running":tr.is_running})
|
||||
"running":tr.is_running,
|
||||
"pid":tr.pid})
|
||||
return ret
|
||||
|
||||
def start_tracers(self, ctx, tracers):
|
||||
|
@ -44,6 +45,7 @@ class TraceEndpoint(object):
|
|||
else:
|
||||
pid = run_agent(task.uuid, tr)
|
||||
LOG.debug("saving pid %s" % pid)
|
||||
self.set_tracer_pid(ctx, tr, pid)
|
||||
pids.append(pid)
|
||||
|
||||
task = db_api.task_update(task.uuid, pids=pids)
|
||||
|
@ -58,6 +60,9 @@ class TraceEndpoint(object):
|
|||
print "[LOG] setting tracer: %s running: %s" % (tracer, running)
|
||||
db_api.tracer_update(tracer, running=running)
|
||||
|
||||
def set_tracer_pid(self, ctx, tracer, pid):
|
||||
db_api.tracer_update(tracer, pid=pid)
|
||||
|
||||
class TaskEndpoint(object):
|
||||
|
||||
target = oslo_messaging.Target(topic="test", version='1.0')
|
||||
|
@ -125,7 +130,7 @@ transport = oslo_messaging.get_transport(cfg.CONF)
|
|||
target = oslo_messaging.Target(topic='test', server='localhost')
|
||||
endpoints = [
|
||||
ServerControlEndpoint(None),
|
||||
TraceEndpoint(),
|
||||
TracerEndpoint(),
|
||||
TaskEndpoint(),
|
||||
ResultEndpoint(),
|
||||
ConfigEndpoint(),
|
||||
|
|
|
@ -8,7 +8,7 @@ from prettytable import PrettyTable
|
|||
|
||||
def run(config):
|
||||
tracers = agent_api.get_tracer_list()
|
||||
t = PrettyTable(["tracer", "tracer template", "is running"])
|
||||
t = PrettyTable(["tracer", "tracer template", "is running", "pid"])
|
||||
for tr in tracers:
|
||||
t.add_row([tr["name"],tr["tpl"],tr["running"]])
|
||||
t.add_row([tr["name"],tr["tpl"],tr["running"],tr["pid"]])
|
||||
print t
|
||||
|
|
|
@ -60,5 +60,8 @@ class API(object):
|
|||
def set_tracer_stat(self, tracer, running):
|
||||
rpcapi.set_tracer_stat(tracer=tracer, running=running)
|
||||
|
||||
def set_tracer_pid(self, tracer, pid):
|
||||
rpcapi.set_tracer_pid(tracer=tracer, pid=pid)
|
||||
|
||||
|
||||
api = API()
|
||||
|
|
|
@ -40,5 +40,8 @@ class RPCAPI(object):
|
|||
def set_tracer_stat(self, ctxt={}, tracer=None, running=None):
|
||||
self._client.cast(ctxt, "set_tracer_stat", tracer=tracer, running=running)
|
||||
|
||||
def set_tracer_pid(self, ctxt={}, tracer=None, pid=None):
|
||||
self._client.cast(ctxt, "set_tracer_pid", tracer=tracer, pid=pid)
|
||||
|
||||
transport = messaging.get_transport(cfg.CONF)
|
||||
rpcapi = RPCAPI(transport)
|
||||
|
|
|
@ -36,9 +36,9 @@ def read_from_ag(ag):
|
|||
raise ValueError("tracer %s is not found" % ag)
|
||||
|
||||
def handle_int(signal, frame):
|
||||
print "[LOG] xxx is interupted"
|
||||
stop_tracer()
|
||||
save_result_to_task()
|
||||
agent_api.set_tracer_pid(ag, pid=-1)
|
||||
agent_api.set_tracer_stat(ag, running=False)
|
||||
sys.exit(0)
|
||||
|
||||
|
|
|
@ -75,5 +75,5 @@ def tracer_get(tracer):
|
|||
"""
|
||||
return IMPL.tracer_get(tracer)
|
||||
|
||||
def tracer_update(tracer, running):
|
||||
return IMPL.tracer_update(tracer, running)
|
||||
def tracer_update(tracer, running=None, pid=None):
|
||||
return IMPL.tracer_update(tracer, running, pid)
|
||||
|
|
|
@ -144,10 +144,14 @@ def tracer_get(tracer):
|
|||
tracer = model_query(models.Tracer).filter_by(name=tracer).first()
|
||||
return tracer
|
||||
|
||||
def tracer_update(tracer_name, running):
|
||||
def tracer_update(tracer_name, running=None, pid=None):
|
||||
session = get_session()
|
||||
tracer = model_query(models.Tracer, session=session).filter_by(name=tracer_name).first()
|
||||
tracer.update({"is_running":running})
|
||||
_update = {}
|
||||
if running is not None:
|
||||
_update["is_running"] = running
|
||||
if pid is not None:
|
||||
_update["pid"] = int(pid)
|
||||
tracer.update(_update)
|
||||
tracer.save(session=session)
|
||||
print "[LOG] %s db update running %s" % (tracer.name, running)
|
||||
return tracer
|
||||
|
|
|
@ -57,3 +57,4 @@ class Tracer(BASE, ScalpelsBase):
|
|||
name = Column(String(20), nullable=False, unique=True)
|
||||
template = Column(String(20), nullable=False)
|
||||
is_running = Column(Boolean(), default=False)
|
||||
pid = Column(Integer(), default=-1)
|
||||
|
|
Loading…
Reference in New Issue