PATCH - First attempt to enable Atomic ISO compose in pungi-koj
Adam Miller
maxamillion at fedoraproject.org
Mon Apr 27 13:10:26 UTC 2015
On Fri, Apr 24, 2015 at 5:29 PM, Adam Miller
<maxamillion at fedoraproject.org> wrote:
> 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)
Paul Frields (stickster) pointed out to me on IRC that I duplicated
the add_template_var if statement which was just a bad oversight on my
part.... fixed patch below:
-AdamM
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..724ddc3 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,32 @@ 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_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