record.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # -*- coding: utf-8 -*-
  2. """
  3. walle-web
  4. :copyright: © 2015-2019 walle-web.io
  5. :created time: 2018-11-24 06:30:06
  6. :author: wushuiyong@walle-web.io
  7. """
  8. from datetime import datetime
  9. from sqlalchemy import String, Integer, DateTime
  10. from walle.model.database import db, Model
  11. # 上线记录表
  12. class RecordModel(Model):
  13. # 表的名字:
  14. __tablename__ = 'records'
  15. current_time = datetime.now()
  16. # 表的结构:
  17. id = db.Column(Integer, primary_key=True, autoincrement=True)
  18. stage = db.Column(String(20))
  19. sequence = db.Column(Integer)
  20. user_id = db.Column(Integer)
  21. task_id = db.Column(Integer)
  22. status = db.Column(Integer)
  23. command = db.Column(String(200))
  24. host = db.Column(String(200))
  25. user = db.Column(String(200))
  26. success = db.Column(String(2000))
  27. error = db.Column(String(2000))
  28. created_at = db.Column(DateTime, default=current_time)
  29. updated_at = db.Column(DateTime, default=current_time, onupdate=current_time)
  30. def save_record(self, stage, sequence, user_id, task_id, status, host, user, command, success=None, error=None):
  31. record = RecordModel(stage=stage, sequence=sequence, user_id=user_id,
  32. task_id=task_id, status=status, host=host, user=user, command=command,
  33. success=success, error=error)
  34. db.session.add(record)
  35. ret = db.session.commit()
  36. return ret
  37. def fetch(self, task_id):
  38. data = self.query.filter_by(task_id=task_id).order_by('id asc').all()
  39. return [p.to_json() for p in data]
  40. @classmethod
  41. def logs(cls, host, command, status, stage, sequence, success, error, *args, **kwargs):
  42. return {
  43. 'host': host,
  44. 'cmd': command,
  45. 'status': status,
  46. 'stage': stage,
  47. 'sequence': sequence,
  48. 'success': success,
  49. 'error': error,
  50. }
  51. def to_json(self):
  52. return {
  53. 'id': self.id,
  54. 'stage': self.stage,
  55. 'sequence': self.sequence,
  56. 'user_id': self.user_id,
  57. 'task_id': self.task_id,
  58. 'status': self.status,
  59. 'host': self.host,
  60. 'user': self.user,
  61. 'command': self.command,
  62. 'success': self.success,
  63. 'error': self.error,
  64. 'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S'),
  65. 'updated_at': self.updated_at.strftime('%Y-%m-%d %H:%M:%S'),
  66. }