diff --git a/oz/Guest.py b/oz/Guest.py index 048c307..e86a39c 100644 --- a/oz/Guest.py +++ b/oz/Guest.py @@ -131,7 +131,7 @@ class Guest(object): # for backwards compatibility self.name = self.tdl.name - if not self.tdl.arch in ["i386", "x86_64", "ppc64", "ppc64le", "aarch64", "armv7l"]: + if not self.tdl.arch in ["i386", "x86_64", "ppc64", "ppc64le", "aarch64", "armv7l", "s390x"]: raise oz.OzException.OzException("Unsupported guest arch " + self.tdl.arch) if os.uname()[4] in ["i386", "i586", "i686"] and self.tdl.arch == "x86_64": @@ -419,7 +419,11 @@ class Guest(object): oz.ozutil.lxml_subelement(serial, "source", None, {'mode':'bind', 'host':'127.0.0.1', 'service':str(self.listen_port)}) oz.ozutil.lxml_subelement(serial, "protocol", None, {'type':'raw'}) - oz.ozutil.lxml_subelement(serial, "target", None, {'port':'1'}) + target = oz.ozutil.lxml_subelement(serial, "target", None, {'port':'1'}) + if self.tdl.arch == 's390x': + # use a different console, as sclp can be used as most once + target.set('type', 'sclp-serial') + oz.ozutil.lxml_subelement(target, "model", None, {'name':'sclplmconsole'}) def _generate_virtio_channel(self, devices, name): virtio = oz.ozutil.lxml_subelement(devices, "channel", None, {'type': 'tcp'}) @@ -484,8 +488,8 @@ class Guest(object): # devices devices = oz.ozutil.lxml_subelement(domain, "devices") # graphics - if not self.tdl.arch in ["aarch64", "armv7l"]: - # qemu for arm/aarch64 does not support a graphical console - amazingly + if not self.tdl.arch in ["aarch64", "armv7l", "s390x"]: + # qemu for arm/aarch64/s390x does not support a graphical console - amazingly oz.ozutil.lxml_subelement(devices, "graphics", None, {'port':'-1', 'type':'vnc'}) # network interface = oz.ozutil.lxml_subelement(devices, "interface", None, {'type':'bridge'}) diff --git a/oz/TDL.py b/oz/TDL.py index 5f3f22b..f18c698 100644 --- a/oz/TDL.py +++ b/oz/TDL.py @@ -206,8 +206,8 @@ class TDL(object): self.arch = _xml_get_value(self.doc, '/template/os/arch', 'OS architecture') - if self.arch not in ["i386", "x86_64", "ppc64", "ppc64le", "aarch64", "armv7l"]: - raise oz.OzException.OzException("Architecture must be one of 'i386, x86_64, ppc64, ppc64le, armv7l, or aarch64'") + if self.arch not in ["i386", "x86_64", "ppc64", "ppc64le", "aarch64", "armv7l", "s390x"]: + raise oz.OzException.OzException("Architecture must be one of 'i386, x86_64, ppc64, ppc64le, armv7l, aarch64, or s390x'") self.key = _xml_get_value(self.doc, '/template/os/key', 'OS key', optional=True) diff --git a/oz/tdl.rng b/oz/tdl.rng index 500c0ed..dc29c9a 100644 --- a/oz/tdl.rng +++ b/oz/tdl.rng @@ -34,6 +34,7 @@ ppc64le aarch64 armv7l + s390x