Fix system_log and add compact view for changes
This commit is contained in:
parent
87528def40
commit
d6f77ad658
@ -26,11 +26,11 @@ def validate():
|
|||||||
|
|
||||||
@changes.command()
|
@changes.command()
|
||||||
def stage():
|
def stage():
|
||||||
log = change.stage_changes()
|
log = list(change.stage_changes().reverse())
|
||||||
staged = list(log.reverse())
|
for item in log:
|
||||||
if not staged:
|
click.echo(item)
|
||||||
|
if not log:
|
||||||
click.echo('No changes')
|
click.echo('No changes')
|
||||||
click.echo(staged)
|
|
||||||
|
|
||||||
|
|
||||||
@changes.command()
|
@changes.command()
|
||||||
|
@ -48,11 +48,12 @@ def _stage_changes(staged_resources, conn_graph,
|
|||||||
df = create_diff(staged_data, commited_data)
|
df = create_diff(staged_data, commited_data)
|
||||||
|
|
||||||
if df:
|
if df:
|
||||||
|
action = guess_action(commited_data, staged_data)
|
||||||
log_item = data.LogItem(
|
log_item = data.LogItem(
|
||||||
utils.generate_uuid(),
|
utils.generate_uuid(),
|
||||||
res_uid,
|
res_uid,
|
||||||
df,
|
'{}.{}'.format(res_uid, action),
|
||||||
guess_action(commited_data, staged_data))
|
df)
|
||||||
staged_log.append(log_item)
|
staged_log.append(log_item)
|
||||||
return staged_log
|
return staged_log
|
||||||
|
|
||||||
|
@ -30,12 +30,12 @@ CL = partial(state_file, 'commit_log')
|
|||||||
|
|
||||||
class LogItem(object):
|
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.uid = uid
|
||||||
self.res = res
|
self.res = res
|
||||||
|
self.log_action = log_action
|
||||||
self.diff = diff
|
self.diff = diff
|
||||||
self.state = state or STATES.pending
|
self.state = state or STATES.pending
|
||||||
self.action = action
|
|
||||||
|
|
||||||
def to_yaml(self):
|
def to_yaml(self):
|
||||||
return utils.yaml_dump(self.to_dict())
|
return utils.yaml_dump(self.to_dict())
|
||||||
@ -43,9 +43,9 @@ class LogItem(object):
|
|||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return {'uid': self.uid,
|
return {'uid': self.uid,
|
||||||
'res': self.res,
|
'res': self.res,
|
||||||
|
'log_action': self.log_action,
|
||||||
'diff': self.diff,
|
'diff': self.diff,
|
||||||
'state': self.state.name,
|
'state': self.state.name}
|
||||||
'action': self.action}
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_dict(cls, **kwargs):
|
def from_dict(cls, **kwargs):
|
||||||
@ -54,10 +54,14 @@ class LogItem(object):
|
|||||||
return cls(**kwargs)
|
return cls(**kwargs)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.to_yaml()
|
return self.compact
|
||||||
|
|
||||||
def __repr__(self):
|
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):
|
class Log(object):
|
||||||
@ -66,7 +70,7 @@ class Log(object):
|
|||||||
self.ordered_log = db.get_set(path)
|
self.ordered_log = db.get_set(path)
|
||||||
|
|
||||||
def append(self, logitem):
|
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):
|
def pop(self, uid):
|
||||||
item = self.get(uid)
|
item = self.get(uid)
|
||||||
@ -76,7 +80,7 @@ class Log(object):
|
|||||||
return item
|
return item
|
||||||
|
|
||||||
def update(self, logitem):
|
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):
|
def clean(self):
|
||||||
self.ordered_log.clean()
|
self.ordered_log.clean()
|
||||||
|
@ -4,20 +4,20 @@ from solar.system_log import data
|
|||||||
from dictdiffer import patch
|
from dictdiffer import patch
|
||||||
|
|
||||||
|
|
||||||
def set_error(task_uuid, *args, **kwargs):
|
def set_error(log_action, *args, **kwargs):
|
||||||
sl = data.SL()
|
sl = data.SL()
|
||||||
item = sl.get(task_uuid)
|
item = sl.get(log_action)
|
||||||
if item:
|
if item:
|
||||||
item.state = data.STATES.error
|
item.state = data.STATES.error
|
||||||
sl.update(item)
|
sl.update(item)
|
||||||
|
|
||||||
|
|
||||||
def move_to_commited(task_uuid, *args, **kwargs):
|
def move_to_commited(log_action, *args, **kwargs):
|
||||||
sl = data.SL()
|
sl = data.SL()
|
||||||
item = sl.pop(task_uuid)
|
item = sl.pop(log_action)
|
||||||
if item:
|
if item:
|
||||||
commited = data.CD()
|
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()
|
cl = data.CL()
|
||||||
item.state = data.STATES.success
|
item.state = data.STATES.success
|
||||||
cl.append(item)
|
cl.append(item)
|
||||||
|
@ -6,11 +6,11 @@ from solar.system_log.operations import set_error, move_to_commited
|
|||||||
__all__ = ['error_logitem', 'commit_logitem']
|
__all__ = ['error_logitem', 'commit_logitem']
|
||||||
|
|
||||||
|
|
||||||
@app.task
|
@app.task(name='error_logitem')
|
||||||
def error_logitem(task_uuid):
|
def error_logitem(task_uuid):
|
||||||
return set_error(task_uuid.rsplit(':', 1)[-1])
|
return set_error(task_uuid.rsplit(':', 1)[-1])
|
||||||
|
|
||||||
|
|
||||||
@app.task
|
@app.task(name='commit_logitem')
|
||||||
def commit_logitem(task_uuid):
|
def commit_logitem(task_uuid):
|
||||||
return move_to_commited(task_uuid.rsplit(':', 1)[-1])
|
return move_to_commited(task_uuid.rsplit(':', 1)[-1])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user