Fix system_log and add compact view for changes

This commit is contained in:
Dmitry Shulyak 2015-08-07 17:29:33 +03:00
parent 87528def40
commit d6f77ad658
5 changed files with 26 additions and 21 deletions

View File

@ -26,11 +26,11 @@ def validate():
@changes.command()
def stage():
log = change.stage_changes()
staged = list(log.reverse())
if not staged:
log = list(change.stage_changes().reverse())
for item in log:
click.echo(item)
if not log:
click.echo('No changes')
click.echo(staged)
@changes.command()

View File

@ -48,11 +48,12 @@ def _stage_changes(staged_resources, conn_graph,
df = create_diff(staged_data, commited_data)
if df:
action = guess_action(commited_data, staged_data)
log_item = data.LogItem(
utils.generate_uuid(),
res_uid,
df,
guess_action(commited_data, staged_data))
'{}.{}'.format(res_uid, action),
df)
staged_log.append(log_item)
return staged_log

View File

@ -30,12 +30,12 @@ CL = partial(state_file, 'commit_log')
class LogItem(object):
def __init__(self, uid, res, diff, action, state=None):
def __init__(self, uid, res, log_action, diff, state=None):
self.uid = uid
self.res = res
self.log_action = log_action
self.diff = diff
self.state = state or STATES.pending
self.action = action
def to_yaml(self):
return utils.yaml_dump(self.to_dict())
@ -43,9 +43,9 @@ class LogItem(object):
def to_dict(self):
return {'uid': self.uid,
'res': self.res,
'log_action': self.log_action,
'diff': self.diff,
'state': self.state.name,
'action': self.action}
'state': self.state.name}
@classmethod
def from_dict(cls, **kwargs):
@ -54,10 +54,14 @@ class LogItem(object):
return cls(**kwargs)
def __str__(self):
return self.to_yaml()
return self.compact
def __repr__(self):
return self.to_yaml()
return self.compact
@property
def compact(self):
return 'log task={} uid={}'.format(self.log_action, self.uid)
class Log(object):
@ -66,7 +70,7 @@ class Log(object):
self.ordered_log = db.get_set(path)
def append(self, logitem):
self.ordered_log.add([(logitem.res, logitem.to_dict())])
self.ordered_log.add([(logitem.log_action, logitem.to_dict())])
def pop(self, uid):
item = self.get(uid)
@ -76,7 +80,7 @@ class Log(object):
return item
def update(self, logitem):
self.ordered_log.update(logitem.res, logitem.to_dict())
self.ordered_log.update(logitem.log_action, logitem.to_dict())
def clean(self):
self.ordered_log.clean()

View File

@ -4,20 +4,20 @@ from solar.system_log import data
from dictdiffer import patch
def set_error(task_uuid, *args, **kwargs):
def set_error(log_action, *args, **kwargs):
sl = data.SL()
item = sl.get(task_uuid)
item = sl.get(log_action)
if item:
item.state = data.STATES.error
sl.update(item)
def move_to_commited(task_uuid, *args, **kwargs):
def move_to_commited(log_action, *args, **kwargs):
sl = data.SL()
item = sl.pop(task_uuid)
item = sl.pop(log_action)
if item:
commited = data.CD()
staged_data = patch(item.diff, commited.get(item.res, {}))
staged_data = patch(item.diff, commited.get(item.log_action, {}))
cl = data.CL()
item.state = data.STATES.success
cl.append(item)

View File

@ -6,11 +6,11 @@ from solar.system_log.operations import set_error, move_to_commited
__all__ = ['error_logitem', 'commit_logitem']
@app.task
@app.task(name='error_logitem')
def error_logitem(task_uuid):
return set_error(task_uuid.rsplit(':', 1)[-1])
@app.task
@app.task(name='commit_logitem')
def commit_logitem(task_uuid):
return move_to_commited(task_uuid.rsplit(':', 1)[-1])