On Sun, 31 May 2020 at 06:37, Philippe Mathieu-Daudé <phi...@redhat.com> wrote: > > On 5/29/20 10:34 PM, Robert Foley wrote: > > Add a common Ubuntu python module and make use of > > it with the ubuntu.i386 script. > > This is preparation for adding an Ubuntu script > > ubuntu.aarch64. Splitting out the common > > logic such as build_image() will reduce duplication. <snip> > > diff --git a/tests/vm/ubuntuvm.py b/tests/vm/ubuntuvm.py > > new file mode 100644 > > index 0000000000..96f29dcc15 > > --- /dev/null > > +++ b/tests/vm/ubuntuvm.py > > @@ -0,0 +1,58 @@ > > +#!/usr/bin/env python3 > > +# > > +# Ubuntu VM testing library > > +# > > Maybe: > > # Copyright 2017 Red Hat Inc. > > > +# Copyright 2020 Linaro > > +# > > +# Authors: > > And: > > # Fam Zheng <f...@redhat.com> > > or a line "copied from ..."?
Good catch! Will update this with all of the above suggestions. Thanks & Regards, -Rob > > > +# Robert Foley <robert.fo...@linaro.org> > > +# > > +# This code is licensed under the GPL version 2 or later. See > > +# the COPYING file in the top-level directory. > > + > > +import os > > +import subprocess > > +import basevm > > + > > +class UbuntuVM(basevm.BaseVM): > > + > > + def __init__(self, args, config=None): > > + self.login_prompt = "ubuntu-{}-guest login:".format(self.arch) > > + basevm.BaseVM.__init__(self, args, config) > > + > > + def build_image(self, img): > > + """Build an Ubuntu VM image. The child class will > > + define the install_cmds to init the VM.""" > > + os_img = self._download_with_cache(self.image_link, > > + sha256sum=self.image_sha256) > > + img_tmp = img + ".tmp" > > + subprocess.check_call(["cp", "-f", os_img, img_tmp]) > > + self.exec_qemu_img("resize", img_tmp, "+50G") > > + ci_img = self.gen_cloud_init_iso() > > + > > + self.boot(img_tmp, extra_args = [ "-device", "VGA", "-cdrom", > > ci_img, ]) > > + > > + # First command we issue is fix for slow ssh login. > > + self.wait_ssh(wait_root=True, > > + cmd="chmod -x /etc/update-motd.d/*") > > + # Wait for cloud init to finish > > + self.wait_ssh(wait_root=True, > > + cmd="ls /var/lib/cloud/instance/boot-finished") > > + self.ssh_root("touch /etc/cloud/cloud-init.disabled") > > + # Disable auto upgrades. > > + # We want to keep the VM system state stable. > > + self.ssh_root('sed -ie \'s/"1"/"0"/g\' '\ > > + '/etc/apt/apt.conf.d/20auto-upgrades') > > + self.ssh_root("sed -ie s/^#\ deb-src/deb-src/g > > /etc/apt/sources.list") > > + > > + # If the user chooses not to do the install phase, > > + # then we will jump right to the graceful shutdown > > + if self._config['install_cmds'] != "": > > + # Issue the install commands. > > + # This can be overriden by the user in the config .yml. > > + install_cmds = self._config['install_cmds'].split(',') > > + for cmd in install_cmds: > > + self.ssh_root(cmd) > > + self.graceful_shutdown() > > + os.rename(img_tmp, img) > > + return 0 > > > > Tested-by: Philippe Mathieu-Daudé <phi...@redhat.com> >