Browse Source

walle 2.0 alpha - 上线单历史增加每台服务器的最终状态

walle 6 years ago
parent
commit
97259bd270
3 changed files with 22 additions and 1 deletions
  1. 6 0
      walle/model/record.py
  2. 8 0
      walle/service/deployer.py
  3. 8 1
      walle/service/websocket.py

+ 6 - 0
walle/model/record.py

@@ -17,6 +17,12 @@ class RecordModel(Model):
     # 表的名字:
     __tablename__ = 'records'
     current_time = datetime.now()
+    #
+    stage_end = 'end'
+    #
+    status_success = 0
+    #
+    status_fail = 1
 
     # 表的结构:
     id = db.Column(Integer, primary_key=True, autoincrement=True)

+ 8 - 0
walle/service/deployer.py

@@ -516,10 +516,18 @@ class Deployer:
                     self.prev_release_custom(self.connections[host])
                     self.release(self.connections[host])
                     self.post_release(self.connections[host])
+                    RecordModel().save_record(stage=RecordModel.stage_end, sequence=0, user_id=current_user.id,
+                                      task_id=self.task_id, status=RecordModel.status_success, host=self.host, user=self.user,
+                                      command='')
+                    emit('success', {'event': 'finish', 'data': {'host': host, 'message': host + ' 部署完成!'}}, room=self.task_id)
                 except Exception as e:
                     is_all_servers_success = False
                     current_app.logger.error(e)
                     self.errors[host] = e.message
+                    RecordModel().save_record(stage=RecordModel.stage_end, sequence=0, user_id=current_user.id,
+                                      task_id=self.task_id, status=RecordModel.status_fail, host=self.host, user=self.user,
+                                      command='')
+                    emit('fail', {'event': 'finish', 'data': {'host': host, 'message': host + Code.code_msg[Code.deploy_fail]}}, room=self.task_id)
             self.end(is_all_servers_success)
 
         except Exception as e:

+ 8 - 1
walle/service/websocket.py

@@ -12,6 +12,8 @@ from flask_socketio import emit, join_room, Namespace
 from walle.model.record import RecordModel
 from walle.model.task import TaskModel
 from walle.service.deployer import Deployer
+from walle.service.error import Code
+
 
 class WalleSocketIO(Namespace):
     namespace, room, app = None, None, None
@@ -101,7 +103,12 @@ class WalleSocketIO(Namespace):
         deployer = Deployer(task_id=self.room)
         for log in deployer.logs():
             log = RecordModel.logs(**log)
-            emit('console', {'event': 'console', 'data': log}, room=self.room)
+            if log['stage'] == RecordModel.stage_end:
+                cmd = 'success' if log['status'] == RecordModel.status_success else 'fail'
+                msg = log['host'] + ' 部署完成!' if log['status'] == RecordModel.status_success else log['host'] + Code.code_msg[Code.deploy_fail]
+                emit(cmd, {'event': 'finish', 'data': {'host': log['host'], 'message': msg}}, room=self.room)
+            else:
+                emit('console', {'event': 'console', 'data': log}, room=self.room)
 
         deployer.end(success=task_info.status == TaskModel.status_success, update_status=False)