qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

progress.py (3862B)


      1 #
      2 # Migration test migration operation progress
      3 #
      4 # Copyright (c) 2016 Red Hat, Inc.
      5 #
      6 # This library is free software; you can redistribute it and/or
      7 # modify it under the terms of the GNU Lesser General Public
      8 # License as published by the Free Software Foundation; either
      9 # version 2.1 of the License, or (at your option) any later version.
     10 #
     11 # This library is distributed in the hope that it will be useful,
     12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14 # Lesser General Public License for more details.
     15 #
     16 # You should have received a copy of the GNU Lesser General Public
     17 # License along with this library; if not, see <http://www.gnu.org/licenses/>.
     18 #
     19 
     20 
     21 class ProgressStats(object):
     22 
     23     def __init__(self,
     24                  transferred_bytes,
     25                  remaining_bytes,
     26                  total_bytes,
     27                  duplicate_pages,
     28                  skipped_pages,
     29                  normal_pages,
     30                  normal_bytes,
     31                  dirty_rate_pps,
     32                  transfer_rate_mbs,
     33                  iterations):
     34         self._transferred_bytes = transferred_bytes
     35         self._remaining_bytes = remaining_bytes
     36         self._total_bytes = total_bytes
     37         self._duplicate_pages = duplicate_pages
     38         self._skipped_pages = skipped_pages
     39         self._normal_pages = normal_pages
     40         self._normal_bytes = normal_bytes
     41         self._dirty_rate_pps = dirty_rate_pps
     42         self._transfer_rate_mbs = transfer_rate_mbs
     43         self._iterations = iterations
     44 
     45     def serialize(self):
     46         return {
     47             "transferred_bytes": self._transferred_bytes,
     48             "remaining_bytes": self._remaining_bytes,
     49             "total_bytes": self._total_bytes,
     50             "duplicate_pages": self._duplicate_pages,
     51             "skipped_pages": self._skipped_pages,
     52             "normal_pages": self._normal_pages,
     53             "normal_bytes": self._normal_bytes,
     54             "dirty_rate_pps": self._dirty_rate_pps,
     55             "transfer_rate_mbs": self._transfer_rate_mbs,
     56             "iterations": self._iterations,
     57         }
     58 
     59     @classmethod
     60     def deserialize(cls, data):
     61         return cls(
     62             data["transferred_bytes"],
     63             data["remaining_bytes"],
     64             data["total_bytes"],
     65             data["duplicate_pages"],
     66             data["skipped_pages"],
     67             data["normal_pages"],
     68             data["normal_bytes"],
     69             data["dirty_rate_pps"],
     70             data["transfer_rate_mbs"],
     71             data["iterations"])
     72 
     73 
     74 class Progress(object):
     75 
     76     def __init__(self,
     77                  status,
     78                  ram,
     79                  now,
     80                  duration,
     81                  downtime,
     82                  downtime_expected,
     83                  setup_time,
     84                  throttle_pcent):
     85 
     86         self._status = status
     87         self._ram = ram
     88         self._now = now
     89         self._duration = duration
     90         self._downtime = downtime
     91         self._downtime_expected = downtime_expected
     92         self._setup_time = setup_time
     93         self._throttle_pcent = throttle_pcent
     94 
     95     def serialize(self):
     96         return {
     97             "status": self._status,
     98             "ram": self._ram.serialize(),
     99             "now": self._now,
    100             "duration": self._duration,
    101             "downtime": self._downtime,
    102             "downtime_expected": self._downtime_expected,
    103             "setup_time": self._setup_time,
    104             "throttle_pcent": self._throttle_pcent,
    105         }
    106 
    107     @classmethod
    108     def deserialize(cls, data):
    109         return cls(
    110             data["status"],
    111             ProgressStats.deserialize(data["ram"]),
    112             data["now"],
    113             data["duration"],
    114             data["downtime"],
    115             data["downtime_expected"],
    116             data["setup_time"],
    117             data["throttle_pcent"])