From nobody Fri Jul 4 00:59:51 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1529045638098575.9100500559598; Thu, 14 Jun 2018 23:53:58 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6066961474; Fri, 15 Jun 2018 06:53:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A4C1A17C7B; Fri, 15 Jun 2018 06:53:55 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 30ABE1800537; Fri, 15 Jun 2018 06:53:54 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w5F6roE1017606 for ; Fri, 15 Jun 2018 02:53:50 -0400 Received: by smtp.corp.redhat.com (Postfix) id 41A0B2166BD6; Fri, 15 Jun 2018 06:53:50 +0000 (UTC) Received: from inaba.usersys.redhat.com (unknown [10.43.2.44]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D88D72166BB2 for ; Fri, 15 Jun 2018 06:53:49 +0000 (UTC) From: Andrea Bolognani To: libvir-list@redhat.com Date: Fri, 15 Jun 2018 08:53:44 +0200 Message-Id: <20180615065344.5321-3-abologna@redhat.com> In-Reply-To: <20180615065344.5321-1-abologna@redhat.com> References: <20180615065344.5321-1-abologna@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-loop: libvir-list@redhat.com Subject: [libvirt] [jenkins-ci POC 2/2] guests: Add Dockerfile generator X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Fri, 15 Jun 2018 06:53:57 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This is basically the exact same algorithm used by the Ansible playbooks to process package mappings, implemented as a standalone script. There's little to none error handling, and some information is hardcoded instead of being configurable at runtime; more importantly, before it can be considered for merging it needs to be integrated into lcitool, which in turn requires lcitool to be significantly reworked. Signed-off-by: Andrea Bolognani Reviewed-by: Daniel P. Berrang=C3=A9 --- guests/dockerfile-generator | 72 +++++++++++++++++++ guests/host_vars/libvirt-centos-7/docker.yml | 2 + guests/host_vars/libvirt-debian-8/docker.yml | 2 + guests/host_vars/libvirt-debian-9/docker.yml | 2 + .../host_vars/libvirt-debian-sid/docker.yml | 2 + guests/host_vars/libvirt-fedora-27/docker.yml | 2 + guests/host_vars/libvirt-fedora-28/docker.yml | 2 + .../libvirt-fedora-rawhide/docker.yml | 2 + guests/host_vars/libvirt-ubuntu-16/docker.yml | 2 + guests/host_vars/libvirt-ubuntu-18/docker.yml | 2 + 10 files changed, 90 insertions(+) create mode 100755 guests/dockerfile-generator create mode 100644 guests/host_vars/libvirt-centos-7/docker.yml create mode 100644 guests/host_vars/libvirt-debian-8/docker.yml create mode 100644 guests/host_vars/libvirt-debian-9/docker.yml create mode 100644 guests/host_vars/libvirt-debian-sid/docker.yml create mode 100644 guests/host_vars/libvirt-fedora-27/docker.yml create mode 100644 guests/host_vars/libvirt-fedora-28/docker.yml create mode 100644 guests/host_vars/libvirt-fedora-rawhide/docker.yml create mode 100644 guests/host_vars/libvirt-ubuntu-16/docker.yml create mode 100644 guests/host_vars/libvirt-ubuntu-18/docker.yml diff --git a/guests/dockerfile-generator b/guests/dockerfile-generator new file mode 100755 index 0000000..e1212da --- /dev/null +++ b/guests/dockerfile-generator @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 + +import sys +import yaml + +if len(sys.argv) < 2: + print("Usage: {} GUEST".format(sys.argv[0])) + sys.exit(1) + +guest =3D sys.argv[1] + +# Load data + +with open("vars/mappings.yml", "r") as f: + mappings =3D yaml.load(f) + mappings =3D mappings["mappings"] + +with open("host_vars/{}/main.yml".format(guest), "r") as f: + main =3D yaml.load(f) + package_format =3D main["package_format"] + os_name =3D main["os_name"] + os_version =3D main["os_version"] + os_full =3D "{}{}".format(os_name, os_version) + +with open("host_vars/{}/docker.yml".format(guest), "r") as f: + docker =3D yaml.load(f) + docker_base =3D docker["docker_base"] + +projects =3D ["base", "libvirt"] +if os_name =3D=3D "Fedora" and os_version =3D=3D "Rawhide": + projects +=3D ["libvirt+mingw"] + +# Process mappings + +temp =3D {} + +for project in projects: + with open("vars/projects/{}.yml".format(project), "r") as f: + packages =3D yaml.load(f) + packages =3D packages["packages"] + for package in packages: + if "default" in mappings[package]: + temp[package] =3D mappings[package]["default"] + if package_format in mappings[package]: + temp[package] =3D mappings[package][package_format] + if os_name in mappings[package]: + temp[package] =3D mappings[package][os_name] + if os_full in mappings[package]: + temp[package] =3D mappings[package][os_full] + +flattened =3D [] + +for item in temp: + if temp[item] !=3D None and temp[item] not in flattened: + flattened +=3D [ temp[item] ] + +# Output Dockerfile + +print("FROM {}".format(docker_base)) + +sys.stdout.write("ENV PACKAGES ") +print(" \\\n ".join(sorted(flattened))) + +if package_format =3D=3D "deb": + print("RUN apt-get update && \\") + print(" apt-get install -y ${PACKAGES} && \\") + print(" apt-get autoremove -y && \\") + print(" apt-get autoclean -y") +elif package_format =3D=3D "rpm": + print("RUN yum install -y ${PACKAGES} && \\") + print(" yum autoremove -y && \\") + print(" yum clean all -y") diff --git a/guests/host_vars/libvirt-centos-7/docker.yml b/guests/host_var= s/libvirt-centos-7/docker.yml new file mode 100644 index 0000000..59f7f12 --- /dev/null +++ b/guests/host_vars/libvirt-centos-7/docker.yml @@ -0,0 +1,2 @@ +--- +docker_base: centos:centos7 diff --git a/guests/host_vars/libvirt-debian-8/docker.yml b/guests/host_var= s/libvirt-debian-8/docker.yml new file mode 100644 index 0000000..235f0fd --- /dev/null +++ b/guests/host_vars/libvirt-debian-8/docker.yml @@ -0,0 +1,2 @@ +--- +docker_base: debian:8 diff --git a/guests/host_vars/libvirt-debian-9/docker.yml b/guests/host_var= s/libvirt-debian-9/docker.yml new file mode 100644 index 0000000..0b4ccee --- /dev/null +++ b/guests/host_vars/libvirt-debian-9/docker.yml @@ -0,0 +1,2 @@ +--- +docker_base: debian:9 diff --git a/guests/host_vars/libvirt-debian-sid/docker.yml b/guests/host_v= ars/libvirt-debian-sid/docker.yml new file mode 100644 index 0000000..e20a37e --- /dev/null +++ b/guests/host_vars/libvirt-debian-sid/docker.yml @@ -0,0 +1,2 @@ +--- +docker_base: debian:sid diff --git a/guests/host_vars/libvirt-fedora-27/docker.yml b/guests/host_va= rs/libvirt-fedora-27/docker.yml new file mode 100644 index 0000000..dcada18 --- /dev/null +++ b/guests/host_vars/libvirt-fedora-27/docker.yml @@ -0,0 +1,2 @@ +--- +docker_base: fedora:27 diff --git a/guests/host_vars/libvirt-fedora-28/docker.yml b/guests/host_va= rs/libvirt-fedora-28/docker.yml new file mode 100644 index 0000000..a874018 --- /dev/null +++ b/guests/host_vars/libvirt-fedora-28/docker.yml @@ -0,0 +1,2 @@ +--- +docker_base: fedora:28 diff --git a/guests/host_vars/libvirt-fedora-rawhide/docker.yml b/guests/ho= st_vars/libvirt-fedora-rawhide/docker.yml new file mode 100644 index 0000000..39dda1c --- /dev/null +++ b/guests/host_vars/libvirt-fedora-rawhide/docker.yml @@ -0,0 +1,2 @@ +--- +docker_base: fedora:rawhide diff --git a/guests/host_vars/libvirt-ubuntu-16/docker.yml b/guests/host_va= rs/libvirt-ubuntu-16/docker.yml new file mode 100644 index 0000000..2d4eb25 --- /dev/null +++ b/guests/host_vars/libvirt-ubuntu-16/docker.yml @@ -0,0 +1,2 @@ +--- +docker_base: ubuntu:16.04 diff --git a/guests/host_vars/libvirt-ubuntu-18/docker.yml b/guests/host_va= rs/libvirt-ubuntu-18/docker.yml new file mode 100644 index 0000000..13d6cc1 --- /dev/null +++ b/guests/host_vars/libvirt-ubuntu-18/docker.yml @@ -0,0 +1,2 @@ +--- +docker_base: ubuntu:18.04 --=20 2.17.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list