瀏覽代碼

实现Guest性能数据接收、写入功能

James Iter 9 年之前
父節點
當前提交
3027eb9ea1
共有 3 個文件被更改,包括 45 次插入13 次删除
  1. 4 4
      models/__init__.py
  2. 41 8
      models/event_processor.py
  3. 0 1
      models/performance.py

+ 4 - 4
models/__init__.py

@@ -59,16 +59,16 @@ from log import (
     Log
 )
 
-from event_processor import (
-    EventProcessor
-)
-
 from performance import (
     CPUMemory,
     Traffic,
     DiskIO
 )
 
+from event_processor import (
+    EventProcessor
+)
+
 
 __author__ = 'James Iter'
 __date__ = '2017/3/21'

+ 41 - 8
models/event_processor.py

@@ -7,7 +7,7 @@ import time
 from IPy import IP
 import jimit as ji
 
-from models import Database as db, Config
+from models import Database as db, Config, CPUMemory, Traffic, DiskIO
 from models import Guest
 from models import Disk
 from models import Log
@@ -16,6 +16,7 @@ from models import EmitKind
 from models import ResponseState, GuestState, DiskState
 from models.guest import GuestMigrateInfo
 from models.initialize import app, logger
+from models.status import CollectionPerformanceDataKind
 
 
 __author__ = 'James Iter'
@@ -31,6 +32,9 @@ class EventProcessor(object):
     guest_migrate_info = GuestMigrateInfo()
     disk = Disk()
     config = Config()
+    cpu_memory = CPUMemory()
+    traffic = Traffic()
+    disk_io = DiskIO()
 
     @classmethod
     def log_processor(cls):
@@ -205,15 +209,44 @@ class EventProcessor(object):
 
     @classmethod
     def collection_performance_processor(cls):
-        action = cls.message['message']['action']
-        uuid = cls.message['message']['uuid']
-        state = cls.message['type']
+        data_kind = cls.message['type']
+        timestamp = cls.message['timestamp']
         data = cls.message['message']['data']
 
-        if action == 'create_guest':
-            if state == ResponseState.success.value:
-                # 系统盘的 UUID 与其 Guest 的 UUID 相同
-                cls.disk.uuid = uuid
+        if data_kind == CollectionPerformanceDataKind.cpu_memory.value:
+            for item in data:
+                cls.cpu_memory.guest_uuid = item['guest_uuid']
+                cls.cpu_memory.cpu_load = item['cpu_load']
+                cls.cpu_memory.memory_available = item['memory_available']
+                cls.cpu_memory.memory_unused = item['memory_unused']
+                cls.cpu_memory.timestamp = timestamp
+                cls.cpu_memory.create()
+
+        if data_kind == CollectionPerformanceDataKind.traffic.value:
+            for item in data:
+                cls.traffic.guest_uuid = item['guest_uuid']
+                cls.traffic.name = item['name']
+                cls.traffic.rx_bytes = item['rx_bytes']
+                cls.traffic.rx_packets = item['rx_packets']
+                cls.traffic.rx_errs = item['rx_errs']
+                cls.traffic.rx_drop = item['rx_drop']
+                cls.traffic.tx_bytes = item['tx_bytes']
+                cls.traffic.tx_packets = item['tx_packets']
+                cls.traffic.tx_errs = item['tx_errs']
+                cls.traffic.tx_drop = item['tx_drop']
+                cls.traffic.timestamp = timestamp
+                cls.traffic.create()
+
+        if data_kind == CollectionPerformanceDataKind.disk_io.value:
+            for item in data:
+                cls.disk_io.disk_uuid = item['disk_uuid']
+                cls.disk_io.rd_req = item['rd_req']
+                cls.disk_io.rd_bytes = item['rd_bytes']
+                cls.disk_io.wr_req = item['wr_req']
+                cls.disk_io.wr_bytes = item['wr_bytes']
+                cls.disk_io.timestamp = timestamp
+                cls.disk_io.create()
+
         else:
             pass
 

+ 0 - 1
models/performance.py

@@ -96,7 +96,6 @@ class DiskIO(ORM):
         super(DiskIO, self).__init__()
         self.id = 0
         self.disk_uuid = None
-        self.dev = None
         self.rd_req = None
         self.rd_bytes = None
         self.wr_req = None