 31719c37f5
			
		
	
	
		31719c37f5
		
	
	
	
	
		
			
			The 'arch' property gives a hint on which architecture the guest image runs. This can be use to select the correct QEMU binary path. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20181013004034.6968-6-f4bug@amsat.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Fam Zheng <famz@redhat.com>
		
			
				
	
	
		
			86 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| #
 | |
| # CentOS image
 | |
| #
 | |
| # Copyright 2018 Red Hat Inc.
 | |
| #
 | |
| # Authors:
 | |
| #  Fam Zheng <famz@redhat.com>
 | |
| #
 | |
| # This code is licensed under the GPL version 2 or later.  See
 | |
| # the COPYING file in the top-level directory.
 | |
| #
 | |
| 
 | |
| import os
 | |
| import sys
 | |
| import subprocess
 | |
| import basevm
 | |
| import time
 | |
| 
 | |
| class CentosVM(basevm.BaseVM):
 | |
|     name = "centos"
 | |
|     arch = "x86_64"
 | |
|     BUILD_SCRIPT = """
 | |
|         set -e;
 | |
|         cd $(mktemp -d);
 | |
|         export SRC_ARCHIVE=/dev/vdb;
 | |
|         sudo chmod a+r $SRC_ARCHIVE;
 | |
|         tar -xf $SRC_ARCHIVE;
 | |
|         make docker-test-block@centos7 V={verbose} J={jobs};
 | |
|         make docker-test-quick@centos7 V={verbose} J={jobs};
 | |
|         make docker-test-mingw@fedora V={verbose} J={jobs};
 | |
|     """
 | |
| 
 | |
|     def _gen_cloud_init_iso(self):
 | |
|         cidir = self._tmpdir
 | |
|         mdata = open(os.path.join(cidir, "meta-data"), "w")
 | |
|         mdata.writelines(["instance-id: centos-vm-0\n",
 | |
|                           "local-hostname: centos-guest\n"])
 | |
|         mdata.close()
 | |
|         udata = open(os.path.join(cidir, "user-data"), "w")
 | |
|         udata.writelines(["#cloud-config\n",
 | |
|                           "chpasswd:\n",
 | |
|                           "  list: |\n",
 | |
|                           "    root:%s\n" % self.ROOT_PASS,
 | |
|                           "    %s:%s\n" % (self.GUEST_USER, self.GUEST_PASS),
 | |
|                           "  expire: False\n",
 | |
|                           "users:\n",
 | |
|                           "  - name: %s\n" % self.GUEST_USER,
 | |
|                           "    sudo: ALL=(ALL) NOPASSWD:ALL\n",
 | |
|                           "    ssh-authorized-keys:\n",
 | |
|                           "    - %s\n" % basevm.SSH_PUB_KEY,
 | |
|                           "  - name: root\n",
 | |
|                           "    ssh-authorized-keys:\n",
 | |
|                           "    - %s\n" % basevm.SSH_PUB_KEY,
 | |
|                           "locale: en_US.UTF-8\n"])
 | |
|         udata.close()
 | |
|         subprocess.check_call(["genisoimage", "-output", "cloud-init.iso",
 | |
|                                "-volid", "cidata", "-joliet", "-rock",
 | |
|                                "user-data", "meta-data"],
 | |
|                                cwd=cidir,
 | |
|                                stdin=self._devnull, stdout=self._stdout,
 | |
|                                stderr=self._stdout)
 | |
|         return os.path.join(cidir, "cloud-init.iso")
 | |
| 
 | |
|     def build_image(self, img):
 | |
|         cimg = self._download_with_cache("https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1802.qcow2.xz")
 | |
|         img_tmp = img + ".tmp"
 | |
|         subprocess.check_call(["cp", "-f", cimg, img_tmp + ".xz"])
 | |
|         subprocess.check_call(["xz", "-df", img_tmp + ".xz"])
 | |
|         subprocess.check_call(["qemu-img", "resize", img_tmp, "50G"])
 | |
|         self.boot(img_tmp, extra_args = ["-cdrom", self._gen_cloud_init_iso()])
 | |
|         self.wait_ssh()
 | |
|         self.ssh_root_check("touch /etc/cloud/cloud-init.disabled")
 | |
|         self.ssh_root_check("yum update -y")
 | |
|         self.ssh_root_check("yum install -y docker make git")
 | |
|         self.ssh_root_check("systemctl enable docker")
 | |
|         self.ssh_root("poweroff")
 | |
|         self.wait()
 | |
|         if os.path.exists(img):
 | |
|             os.remove(img)
 | |
|         os.rename(img_tmp, img)
 | |
|         return 0
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     sys.exit(basevm.main(CentosVM))
 |