1*212c1933SFabiano Rosas# 2*212c1933SFabiano Rosas# Migration test hardware configuration description 3*212c1933SFabiano Rosas# 4*212c1933SFabiano Rosas# Copyright (c) 2016 Red Hat, Inc. 5*212c1933SFabiano Rosas# 6*212c1933SFabiano Rosas# This library is free software; you can redistribute it and/or 7*212c1933SFabiano Rosas# modify it under the terms of the GNU Lesser General Public 8*212c1933SFabiano Rosas# License as published by the Free Software Foundation; either 9*212c1933SFabiano Rosas# version 2.1 of the License, or (at your option) any later version. 10*212c1933SFabiano Rosas# 11*212c1933SFabiano Rosas# This library is distributed in the hope that it will be useful, 12*212c1933SFabiano Rosas# but WITHOUT ANY WARRANTY; without even the implied warranty of 13*212c1933SFabiano Rosas# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*212c1933SFabiano Rosas# Lesser General Public License for more details. 15*212c1933SFabiano Rosas# 16*212c1933SFabiano Rosas# You should have received a copy of the GNU Lesser General Public 17*212c1933SFabiano Rosas# License along with this library; if not, see <http://www.gnu.org/licenses/>. 18*212c1933SFabiano Rosas# 19*212c1933SFabiano Rosas 20*212c1933SFabiano Rosas 21*212c1933SFabiano Rosasclass Hardware(object): 22*212c1933SFabiano Rosas def __init__(self, cpus=1, mem=1, 23*212c1933SFabiano Rosas src_cpu_bind=None, src_mem_bind=None, 24*212c1933SFabiano Rosas dst_cpu_bind=None, dst_mem_bind=None, 25*212c1933SFabiano Rosas prealloc_pages = False, 26*212c1933SFabiano Rosas huge_pages=False, locked_pages=False, 27*212c1933SFabiano Rosas dirty_ring_size=0): 28*212c1933SFabiano Rosas self._cpus = cpus 29*212c1933SFabiano Rosas self._mem = mem # GiB 30*212c1933SFabiano Rosas self._src_mem_bind = src_mem_bind # List of NUMA nodes 31*212c1933SFabiano Rosas self._src_cpu_bind = src_cpu_bind # List of pCPUs 32*212c1933SFabiano Rosas self._dst_mem_bind = dst_mem_bind # List of NUMA nodes 33*212c1933SFabiano Rosas self._dst_cpu_bind = dst_cpu_bind # List of pCPUs 34*212c1933SFabiano Rosas self._prealloc_pages = prealloc_pages 35*212c1933SFabiano Rosas self._huge_pages = huge_pages 36*212c1933SFabiano Rosas self._locked_pages = locked_pages 37*212c1933SFabiano Rosas self._dirty_ring_size = dirty_ring_size 38*212c1933SFabiano Rosas 39*212c1933SFabiano Rosas 40*212c1933SFabiano Rosas def serialize(self): 41*212c1933SFabiano Rosas return { 42*212c1933SFabiano Rosas "cpus": self._cpus, 43*212c1933SFabiano Rosas "mem": self._mem, 44*212c1933SFabiano Rosas "src_mem_bind": self._src_mem_bind, 45*212c1933SFabiano Rosas "dst_mem_bind": self._dst_mem_bind, 46*212c1933SFabiano Rosas "src_cpu_bind": self._src_cpu_bind, 47*212c1933SFabiano Rosas "dst_cpu_bind": self._dst_cpu_bind, 48*212c1933SFabiano Rosas "prealloc_pages": self._prealloc_pages, 49*212c1933SFabiano Rosas "huge_pages": self._huge_pages, 50*212c1933SFabiano Rosas "locked_pages": self._locked_pages, 51*212c1933SFabiano Rosas "dirty_ring_size": self._dirty_ring_size, 52*212c1933SFabiano Rosas } 53*212c1933SFabiano Rosas 54*212c1933SFabiano Rosas @classmethod 55*212c1933SFabiano Rosas def deserialize(cls, data): 56*212c1933SFabiano Rosas return cls( 57*212c1933SFabiano Rosas data["cpus"], 58*212c1933SFabiano Rosas data["mem"], 59*212c1933SFabiano Rosas data["src_cpu_bind"], 60*212c1933SFabiano Rosas data["src_mem_bind"], 61*212c1933SFabiano Rosas data["dst_cpu_bind"], 62*212c1933SFabiano Rosas data["dst_mem_bind"], 63*212c1933SFabiano Rosas data["prealloc_pages"], 64*212c1933SFabiano Rosas data["huge_pages"], 65*212c1933SFabiano Rosas data["locked_pages"], 66*212c1933SFabiano Rosas data["dirty_ring_size"]) 67