blob: ab1ee5727399103ff9765537047d68f8a714a95e [file] [log] [blame]
Daniel P. Berrange409437e2016-07-20 14:23:13 +01001#
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
Gan Qixin3a645d32020-11-11 02:42:21 +08009# version 2.1 of the License, or (at your option) any later version.
Daniel P. Berrange409437e2016-07-20 14:23:13 +010010#
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
21class 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
74class 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"])