PATCH - First attempt to enable Atomic ISO compose in pungi-koj

Adam Miller maxamillion at fedoraproject.org
Fri Apr 24 22:29:40 UTC 2015


I've added a handful of parameters here to mirror the command that's
currently being done run-pungi.sh[0]

The options can either be strings for single elements or lists for
multiples in the pungi-koji config.

====== BEGIN Example config
add_template = "/srv/pungi/spin-kickstarts/atomic-installer/lorax-configure-repo.tmpl"
add_template_var = [
    "ostree_osname=Fedora-Cloud_Atomic",
    "ostree_ref=fedora-atomic/f22/x86_64/docker-host",
]
add_arch_template =
"/srv/pungi/spin-kickstarts/atomic-installer/lorax-embed-repo.tmpl"
add_arch_template_var = [
    "ostree_repo=http://compose-x86-01.phx2.fedoraproject.org/compose/atomic/",
    "ostree_osname=Fedora-Cloud_Atomic",
    "ostree_ref=fedora-atomic/f22/x86_64/docker-host",
]
===== END Example config

I look forward to feedback.

-AdamM

[0] - https://git.fedorahosted.org/cgit/releng/tree/scripts/run-pungi#n67

diff --git a/pungi/phases/buildinstall.py b/pungi/phases/buildinstall.py
index 1a60607..cf32658 100644
--- a/pungi/phases/buildinstall.py
+++ b/pungi/phases/buildinstall.py
@@ -86,13 +86,19 @@ class BuildinstallPhase(PhaseBase):
         noupgrade = not
self.compose.conf.get("buildinstall_upgrade_image", False)
         buildinstall_method = self.compose.conf["buildinstall_method"]

+        # These were added for the Atomic ISO Lorax compose
+        add_template = self.compose.conf.get("add_template", None)
+        add_template_var = self.compose.conf.get("add_template_var", None)
+        add_arch_template = self.compose.conf.get("add_arch_template", None)
+        add_arch_template_var =
self.compose.conf.get("add_arch_template_var", None)
+
         for arch in self.compose.get_arches():
             repo_baseurl = self.compose.paths.work.arch_repo(arch)
             output_dir = self.compose.paths.work.buildinstall_dir(arch)
             volid = get_volid(self.compose, arch)

             if buildinstall_method == "lorax":
-                cmd = lorax.get_lorax_cmd(product, version, release,
repo_baseurl, output_dir, is_final=self.compose.supported,
buildarch=arch, volid=volid, nomacboot=True, noupgrade=noupgrade)
+                cmd = lorax.get_lorax_cmd(product, version, release,
repo_baseurl, output_dir, is_final=self.compose.supported,
buildarch=arch, volid=volid, nomacboot=True, noupgrade=noupgrade,
add_template=add_template, add_template_var=add_template_var,
add_arch_template=add_arch_template,
add_template_var=add_template_var)
             elif buildinstall_method == "buildinstall":
                 cmd = lorax.get_buildinstall_cmd(product, version,
release, repo_baseurl, output_dir, is_final=self.compose.supported,
buildarch=arch, volid=volid)
             else:
diff --git a/pungi/wrappers/lorax.py b/pungi/wrappers/lorax.py
index 80d7f9f..c462f7b 100644
--- a/pungi/wrappers/lorax.py
+++ b/pungi/wrappers/lorax.py
@@ -21,7 +21,40 @@ from kobo.shortcuts import force_list


 class LoraxWrapper(object):
-    def get_lorax_cmd(self, product, version, release, repo_baseurl,
output_dir, variant=None, bugurl=None, nomacboot=False,
noupgrade=False, is_final=False, buildarch=None, volid=None):
+    def _handle_optional_arg_type(self, f_arg, c_arg):
+        """
+        _handle_optional_arg_type
+            private function to handle arguments to LoraxWrapper get_*_cmd
+            functions that can optionally be different types (such as string
+            or list). This effectively allows to repeat args to the commands
+            wrapped by LoraxWrapper.
+
+        @param      uknown type : f_arg
+        - Function argument that is passed to the get_*_cmd function.
+
+        @param      string: c_arg
+        - Command line argument to append to cmd
+
+        @return     list
+        - returns a list of strings to join with the cmd list in the get_*_cmd
+          functions
+        """
+
+        cmd_args = []
+
+        if type(f_arg) is list:
+            for item in f_arg:
+                cmd_args.append("%s=%s" % (c_arg, item))
+        if type(f_arg) is str:
+            cmd_args.append("%s=%s" % (c_arg, item))
+        else:
+            raise Exception(
+                f_arg,
+                "Incorrect type passed to LoraxWrapper for " % c_arg
+            )
+        return cmd_args
+
+    def get_lorax_cmd(self, product, version, release, repo_baseurl,
output_dir, variant=None, bugurl=None, nomacboot=False,
noupgrade=False, is_final=False, buildarch=None, volid=None,
add_template=None, add_template_var=None, add_arch_template=None,
add_arch_template_var=None):
         cmd = ["lorax"]
         cmd.append("--product=%s" % product)
         cmd.append("--version=%s" % version)
@@ -53,6 +86,39 @@ class LoraxWrapper(object):
         if volid:
             cmd.append("--volid=%s" % volid)

+        if add_template:
+            cmd.extend(
+                self._handle_optional_arg_type(add_template, "--add-template")
+            )
+
+        if add_template_var:
+            cmd.extend(
+                self._handle_optional_arg_type(
+                    add_template_var, "--add-template-var"
+                )
+            )
+
+        if add_template_var:
+            cmd.extend(
+                self._handle_optional_arg_type(
+                    add_template_var, "--add-template-var"
+                )
+            )
+
+        if add_arch_template:
+            cmd.extend(
+                self._handle_optional_arg_type(
+                    add_arch_template, "--add-arch-template"
+                )
+            )
+
+        if add_arch_template_var:
+            cmd.extend(
+                self._handle_optional_arg_type(
+                    add_arch_template_var, "--add-arch-template-var"
+                )
+            )
+
         output_dir = os.path.abspath(output_dir)
         cmd.append(output_dir)


More information about the rel-eng mailing list