1409437e1SDaniel P. Berrange# 2409437e1SDaniel P. Berrange# Migration test hardware configuration description 3409437e1SDaniel P. Berrange# 4409437e1SDaniel P. Berrange# Copyright (c) 2016 Red Hat, Inc. 5409437e1SDaniel P. Berrange# 6409437e1SDaniel P. Berrange# This library is free software; you can redistribute it and/or 7409437e1SDaniel P. Berrange# modify it under the terms of the GNU Lesser General Public 8409437e1SDaniel P. Berrange# License as published by the Free Software Foundation; either 9*3a645d36SGan Qixin# version 2.1 of the License, or (at your option) any later version. 10409437e1SDaniel P. Berrange# 11409437e1SDaniel P. Berrange# This library is distributed in the hope that it will be useful, 12409437e1SDaniel P. Berrange# but WITHOUT ANY WARRANTY; without even the implied warranty of 13409437e1SDaniel P. Berrange# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14409437e1SDaniel P. Berrange# Lesser General Public License for more details. 15409437e1SDaniel P. Berrange# 16409437e1SDaniel P. Berrange# You should have received a copy of the GNU Lesser General Public 17409437e1SDaniel P. Berrange# License along with this library; if not, see <http://www.gnu.org/licenses/>. 18409437e1SDaniel P. Berrange# 19409437e1SDaniel P. Berrange 20409437e1SDaniel P. Berrange 21409437e1SDaniel P. Berrangeclass Hardware(object): 22409437e1SDaniel P. Berrange def __init__(self, cpus=1, mem=1, 23409437e1SDaniel P. Berrange src_cpu_bind=None, src_mem_bind=None, 24409437e1SDaniel P. Berrange dst_cpu_bind=None, dst_mem_bind=None, 25409437e1SDaniel P. Berrange prealloc_pages = False, 26409437e1SDaniel P. Berrange huge_pages=False, locked_pages=False): 27409437e1SDaniel P. Berrange self._cpus = cpus 28409437e1SDaniel P. Berrange self._mem = mem # GiB 29409437e1SDaniel P. Berrange self._src_mem_bind = src_mem_bind # List of NUMA nodes 30409437e1SDaniel P. Berrange self._src_cpu_bind = src_cpu_bind # List of pCPUs 31409437e1SDaniel P. Berrange self._dst_mem_bind = dst_mem_bind # List of NUMA nodes 32409437e1SDaniel P. Berrange self._dst_cpu_bind = dst_cpu_bind # List of pCPUs 33409437e1SDaniel P. Berrange self._prealloc_pages = prealloc_pages 34409437e1SDaniel P. Berrange self._huge_pages = huge_pages 35409437e1SDaniel P. Berrange self._locked_pages = locked_pages 36409437e1SDaniel P. Berrange 37409437e1SDaniel P. Berrange 38409437e1SDaniel P. Berrange def serialize(self): 39409437e1SDaniel P. Berrange return { 40409437e1SDaniel P. Berrange "cpus": self._cpus, 41409437e1SDaniel P. Berrange "mem": self._mem, 42409437e1SDaniel P. Berrange "src_mem_bind": self._src_mem_bind, 43409437e1SDaniel P. Berrange "dst_mem_bind": self._dst_mem_bind, 44409437e1SDaniel P. Berrange "src_cpu_bind": self._src_cpu_bind, 45409437e1SDaniel P. Berrange "dst_cpu_bind": self._dst_cpu_bind, 46409437e1SDaniel P. Berrange "prealloc_pages": self._prealloc_pages, 47409437e1SDaniel P. Berrange "huge_pages": self._huge_pages, 48409437e1SDaniel P. Berrange "locked_pages": self._locked_pages, 49409437e1SDaniel P. Berrange } 50409437e1SDaniel P. Berrange 51409437e1SDaniel P. Berrange @classmethod 52409437e1SDaniel P. Berrange def deserialize(cls, data): 53409437e1SDaniel P. Berrange return cls( 54409437e1SDaniel P. Berrange data["cpus"], 55409437e1SDaniel P. Berrange data["mem"], 56409437e1SDaniel P. Berrange data["src_cpu_bind"], 57409437e1SDaniel P. Berrange data["src_mem_bind"], 58409437e1SDaniel P. Berrange data["dst_cpu_bind"], 59409437e1SDaniel P. Berrange data["dst_mem_bind"], 60409437e1SDaniel P. Berrange data["prealloc_pages"], 61409437e1SDaniel P. Berrange data["huge_pages"], 62409437e1SDaniel P. Berrange data["locked_pages"]) 63