config_tools: update the upgrader.py script for virtio gpu
this patch updates the upgrader.py script for virtio gpu. Tracked-On: #7970 Signed-off-by: Kunhui-Li <kunhuix.li@intel.com> Signed-off-by: Yang,Yu-chu <yu-chu.yang@intel.com> Reviewed-by: Junjie Mao <junjie.mao@intel.com>
This commit is contained in:
parent
5554040dbb
commit
f165ff3b5a
|
@ -234,7 +234,7 @@ class SharedMemoryRegions:
|
|||
|
||||
class VirtioDevices(object):
|
||||
def __init__(self, old_xml_etree):
|
||||
self.gpus = []
|
||||
self.gpu = []
|
||||
self.blocks = []
|
||||
self.inputs = []
|
||||
self.networks = []
|
||||
|
@ -251,6 +251,26 @@ class VirtioDevices(object):
|
|||
file_path = console.xpath("./file_path")[0].text if console.xpath("./file_path") else None
|
||||
self.consoles.append((use_type, backend_type, file_path))
|
||||
|
||||
def gpu_encoding(self, gpu):
|
||||
if gpu.text is not None:
|
||||
window_regex = re.compile(f"geometry=([0-9]+x[0-9]+)\+([0-9]+)\+([0-9]+)")
|
||||
m = window_regex.match(gpu.text)
|
||||
if m is not None:
|
||||
self.gpu.append(("Window", m.group(1), m.group(2), m.group(3)))
|
||||
else:
|
||||
self.gpu.append(("Full screen", gpu.text.split(':')[1]))
|
||||
else:
|
||||
display_type = gpu.xpath("./display_type")[0].text
|
||||
for display in gpu.xpath("./displays/display"):
|
||||
if display_type == "Window":
|
||||
window_resolutions = display.xpath("./window_resolutions")[0].text if display.xpath("./window_resolutions") else None
|
||||
horizontal_offset = display.xpath("./horizontal_offset")[0].text if display.xpath("./horizontal_offset") else None
|
||||
vertical_offset = display.xpath("./vertical_offset")[0].text if display.xpath("./vertical_offset") else None
|
||||
self.gpu.append((display_type, window_resolutions, horizontal_offset, vertical_offset))
|
||||
elif display_type == "Full screen":
|
||||
monitor_id = display.xpath("./monitor_id")[0].text if display.xpath("./monitor_id") else None
|
||||
self.gpu.append((display_type, monitor_id))
|
||||
|
||||
def format_console_element(self, console):
|
||||
node = etree.Element("console")
|
||||
if console[0] is not None:
|
||||
|
@ -286,10 +306,20 @@ class VirtioDevices(object):
|
|||
node.text = block
|
||||
return node
|
||||
|
||||
def format_gpu_element(self, gpu):
|
||||
if gpu is not None:
|
||||
node = etree.Element("gpu")
|
||||
node.text = gpu
|
||||
def format_gpu_element(self, displays):
|
||||
node = etree.Element("gpu")
|
||||
if len(displays) > 0:
|
||||
etree.SubElement(node, "display_type").text = displays[0][0]
|
||||
displays_node = etree.SubElement(node, "displays")
|
||||
for display in displays:
|
||||
if display[0] == "Window":
|
||||
display_node = etree.SubElement(displays_node, "display")
|
||||
etree.SubElement(display_node, "window_resolutions").text = display[1]
|
||||
etree.SubElement(display_node, "horizontal_offset").text = display[2]
|
||||
etree.SubElement(display_node, "vertical_offset").text = display[3]
|
||||
elif display[0] == "Full screen":
|
||||
display_node = etree.SubElement(displays_node, "display")
|
||||
etree.SubElement(display_node, "monitor_id").text = display[1]
|
||||
return node
|
||||
|
||||
def format_xml_element(self):
|
||||
|
@ -302,8 +332,8 @@ class VirtioDevices(object):
|
|||
node.append(self.format_input_element(input))
|
||||
for block in self.blocks:
|
||||
node.append(self.format_block_element(block))
|
||||
for gpu in self.gpus:
|
||||
node.append(self.format_gpu_element(gpu))
|
||||
|
||||
node.append(self.format_gpu_element(self.gpu))
|
||||
return node
|
||||
|
||||
def add_virtio_devices(self, virtio_device_node):
|
||||
|
@ -331,7 +361,7 @@ class VirtioDevices(object):
|
|||
for block in virtio_device_node.xpath("./block"):
|
||||
self.blocks.append(block.text)
|
||||
for gpu in virtio_device_node.xpath("./gpu"):
|
||||
self.gpus.append(gpu.text)
|
||||
self.gpu_encoding(gpu)
|
||||
|
||||
class ScenarioUpgrader(ScenarioTransformer):
|
||||
@classmethod
|
||||
|
|
Loading…
Reference in New Issue