New lorax documentation - 28.14.25

Related: rhbz#1687743
This commit is contained in:
Brian C. Lane 2019-03-27 12:25:06 -07:00
parent d7f5f3064b
commit 0159d3ebd3
70 changed files with 1386 additions and 1019 deletions

View File

@ -1,4 +1,4 @@
# Sphinx build info version 1 # Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 96150b9a7ab1a77a035ab8724e0eeb8e config: 3703109e5cba26c0666b6be97f384595
tags: 645f666f9bcd5a90fca523b33c5a78b7 tags: 645f666f9bcd5a90fca523b33c5a78b7

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Overview: module code &mdash; Lorax 28.14.21 documentation</title> <title>Overview: module code &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../genindex.html" /> <link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" /> <link rel="search" title="Search" href="../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -152,14 +153,10 @@
<h1>All modules for which code is available</h1> <h1>All modules for which code is available</h1>
<ul><li><a href="pylorax.html">pylorax</a></li> <ul><li><a href="pylorax.html">pylorax</a></li>
<ul><li><a href="pylorax/api/cmdline.html">pylorax.api.cmdline</a></li> <ul><li><a href="pylorax/api/cmdline.html">pylorax.api.cmdline</a></li>
<li><a href="pylorax/api/compose.html">pylorax.api.compose</a></li>
<li><a href="pylorax/api/config.html">pylorax.api.config</a></li> <li><a href="pylorax/api/config.html">pylorax.api.config</a></li>
<li><a href="pylorax/api/crossdomain.html">pylorax.api.crossdomain</a></li> <li><a href="pylorax/api/crossdomain.html">pylorax.api.crossdomain</a></li>
<li><a href="pylorax/api/projects.html">pylorax.api.projects</a></li> <li><a href="pylorax/api/projects.html">pylorax.api.projects</a></li>
<li><a href="pylorax/api/queue.html">pylorax.api.queue</a></li>
<li><a href="pylorax/api/recipes.html">pylorax.api.recipes</a></li> <li><a href="pylorax/api/recipes.html">pylorax.api.recipes</a></li>
<li><a href="pylorax/api/server.html">pylorax.api.server</a></li>
<li><a href="pylorax/api/v0.html">pylorax.api.v0</a></li>
<li><a href="pylorax/api/workspace.html">pylorax.api.workspace</a></li> <li><a href="pylorax/api/workspace.html">pylorax.api.workspace</a></li>
<li><a href="pylorax/base.html">pylorax.base</a></li> <li><a href="pylorax/base.html">pylorax.base</a></li>
<li><a href="pylorax/buildstamp.html">pylorax.buildstamp</a></li> <li><a href="pylorax/buildstamp.html">pylorax.buildstamp</a></li>
@ -189,7 +186,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -208,27 +205,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax &mdash; Lorax 28.14.21 documentation</title> <title>pylorax &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../genindex.html" /> <link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" /> <link rel="search" title="Search" href="../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -618,7 +619,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -637,27 +638,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.api.cmdline &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.api.cmdline &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../genindex.html" /> <link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" /> <link rel="search" title="Search" href="../../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -229,7 +230,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -248,27 +249,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.api.config &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.api.config &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../genindex.html" /> <link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" /> <link rel="search" title="Search" href="../../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -279,7 +280,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -298,27 +299,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.api.crossdomain &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.api.crossdomain &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../genindex.html" /> <link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" /> <link rel="search" title="Search" href="../../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -230,7 +231,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -249,27 +250,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.api.projects &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.api.projects &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../genindex.html" /> <link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" /> <link rel="search" title="Search" href="../../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -771,7 +772,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -790,27 +791,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.api.recipes &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.api.recipes &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../genindex.html" /> <link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" /> <link rel="search" title="Search" href="../../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -155,7 +156,7 @@
<h1>Source code for pylorax.api.recipes</h1><div class="highlight"><pre> <h1>Source code for pylorax.api.recipes</h1><div class="highlight"><pre>
<span></span><span class="c1">#</span> <span></span><span class="c1">#</span>
<span class="c1"># Copyright (C) 2017 Red Hat, Inc.</span> <span class="c1"># Copyright (C) 2017-2019 Red Hat, Inc.</span>
<span class="c1">#</span> <span class="c1">#</span>
<span class="c1"># This program is free software; you can redistribute it and/or modify</span> <span class="c1"># This program is free software; you can redistribute it and/or modify</span>
<span class="c1"># it under the terms of the GNU General Public License as published by</span> <span class="c1"># it under the terms of the GNU General Public License as published by</span>
@ -564,6 +565,9 @@
<span class="sd"> If no commit is passed the master:filename is returned, otherwise it will be</span> <span class="sd"> If no commit is passed the master:filename is returned, otherwise it will be</span>
<span class="sd"> commit:filename</span> <span class="sd"> commit:filename</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">repo_file_exists</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">,</span> <span class="n">recipe_filename</span><span class="p">(</span><span class="n">recipe_name</span><span class="p">)):</span>
<span class="k">raise</span> <span class="n">RecipeFileError</span><span class="p">(</span><span class="s2">&quot;Unknown blueprint&quot;</span><span class="p">)</span>
<span class="p">(</span><span class="n">_</span><span class="p">,</span> <span class="n">recipe_toml</span><span class="p">)</span> <span class="o">=</span> <span class="n">read_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">,</span> <span class="n">recipe_filename</span><span class="p">(</span><span class="n">recipe_name</span><span class="p">),</span> <span class="n">commit</span><span class="p">)</span> <span class="p">(</span><span class="n">_</span><span class="p">,</span> <span class="n">recipe_toml</span><span class="p">)</span> <span class="o">=</span> <span class="n">read_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">,</span> <span class="n">recipe_filename</span><span class="p">(</span><span class="n">recipe_name</span><span class="p">),</span> <span class="n">commit</span><span class="p">)</span>
<span class="k">return</span> <span class="n">recipe_from_toml</span><span class="p">(</span><span class="n">recipe_toml</span><span class="p">)</span></div> <span class="k">return</span> <span class="n">recipe_from_toml</span><span class="p">(</span><span class="n">recipe_toml</span><span class="p">)</span></div>
@ -787,6 +791,9 @@
<span class="sd"> Uses tag_file_commit()</span> <span class="sd"> Uses tag_file_commit()</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">repo_file_exists</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">,</span> <span class="n">recipe_filename</span><span class="p">(</span><span class="n">recipe_name</span><span class="p">)):</span>
<span class="k">raise</span> <span class="n">RecipeFileError</span><span class="p">(</span><span class="s2">&quot;Unknown blueprint&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">tag_file_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">,</span> <span class="n">recipe_filename</span><span class="p">(</span><span class="n">recipe_name</span><span class="p">))</span></div> <span class="k">return</span> <span class="n">tag_file_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">,</span> <span class="n">recipe_filename</span><span class="p">(</span><span class="n">recipe_name</span><span class="p">))</span></div>
<div class="viewcode-block" id="tag_file_commit"><a class="viewcode-back" href="../../../pylorax.api.html#pylorax.api.recipes.tag_file_commit">[docs]</a><span class="k">def</span> <span class="nf">tag_file_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span> <div class="viewcode-block" id="tag_file_commit"><a class="viewcode-back" href="../../../pylorax.api.html#pylorax.api.recipes.tag_file_commit">[docs]</a><span class="k">def</span> <span class="nf">tag_file_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
@ -1076,6 +1083,24 @@
<span class="n">diffs</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">diff_items</span><span class="p">(</span><span class="s2">&quot;Group&quot;</span><span class="p">,</span> <span class="n">old_recipe</span><span class="p">[</span><span class="s2">&quot;groups&quot;</span><span class="p">],</span> <span class="n">new_recipe</span><span class="p">[</span><span class="s2">&quot;groups&quot;</span><span class="p">]))</span> <span class="n">diffs</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">diff_items</span><span class="p">(</span><span class="s2">&quot;Group&quot;</span><span class="p">,</span> <span class="n">old_recipe</span><span class="p">[</span><span class="s2">&quot;groups&quot;</span><span class="p">],</span> <span class="n">new_recipe</span><span class="p">[</span><span class="s2">&quot;groups&quot;</span><span class="p">]))</span>
<span class="k">return</span> <span class="n">diffs</span></div> <span class="k">return</span> <span class="n">diffs</span></div>
<div class="viewcode-block" id="repo_file_exists"><a class="viewcode-back" href="../../../pylorax.api.html#pylorax.api.recipes.repo_file_exists">[docs]</a><span class="k">def</span> <span class="nf">repo_file_exists</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return True if the filename exists on the branch</span>
<span class="sd"> :param repo: Open repository</span>
<span class="sd"> :type repo: Git.Repository</span>
<span class="sd"> :param branch: Branch name</span>
<span class="sd"> :type branch: str</span>
<span class="sd"> :param filename: Filename to check</span>
<span class="sd"> :type filename: str</span>
<span class="sd"> :returns: True if the filename exists on the HEAD of the branch, False otherwise.</span>
<span class="sd"> :rtype: bool</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">commit</span> <span class="o">=</span> <span class="n">head_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">branch</span><span class="p">)</span><span class="o">.</span><span class="n">get_id</span><span class="p">()</span><span class="o">.</span><span class="n">to_string</span><span class="p">()</span>
<span class="n">commit_id</span> <span class="o">=</span> <span class="n">Git</span><span class="o">.</span><span class="n">OId</span><span class="o">.</span><span class="n">new_from_string</span><span class="p">(</span><span class="n">commit</span><span class="p">)</span>
<span class="n">commit_obj</span> <span class="o">=</span> <span class="n">repo</span><span class="o">.</span><span class="n">lookup</span><span class="p">(</span><span class="n">commit_id</span><span class="p">,</span> <span class="n">Git</span><span class="o">.</span><span class="n">Commit</span><span class="p">)</span>
<span class="n">tree</span> <span class="o">=</span> <span class="n">commit_obj</span><span class="o">.</span><span class="n">get_tree</span><span class="p">()</span>
<span class="k">return</span> <span class="n">tree</span><span class="o">.</span><span class="n">get_by_name</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span></div>
</pre></div> </pre></div>
</div> </div>
@ -1088,7 +1113,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -1107,27 +1132,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.api.workspace &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.api.workspace &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../genindex.html" /> <link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" /> <link rel="search" title="Search" href="../../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -265,7 +266,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -284,27 +285,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.base &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.base &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -233,7 +234,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -252,27 +253,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.buildstamp &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.buildstamp &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -227,7 +228,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -246,27 +247,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.cmdline &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.cmdline &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -231,12 +232,12 @@
<span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_false&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;doupgrade&quot;</span><span class="p">)</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_false&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;doupgrade&quot;</span><span class="p">)</span>
<span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--logfile&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;./lorax.log&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">,</span> <span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--logfile&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;./lorax.log&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">,</span>
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;Path to logfile&quot;</span><span class="p">)</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Path to logfile&quot;</span><span class="p">)</span>
<span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--tmp&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;/var/tmp&quot;</span><span class="p">,</span> <span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--tmp&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;/var/tmp/lorax&quot;</span><span class="p">,</span>
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;Top level temporary directory&quot;</span> <span class="p">)</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Top level temporary directory&quot;</span> <span class="p">)</span>
<span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--cachedir&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">,</span> <span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--cachedir&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">,</span>
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;DNF cache directory. Default is a temporary dir.&quot;</span><span class="p">)</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;DNF cache directory. Default is a temporary dir.&quot;</span><span class="p">)</span>
<span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--workdir&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">,</span> <span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--workdir&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">,</span>
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;Work directory, overrides --tmp. Default is a temporary dir under /var/tmp&quot;</span><span class="p">)</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Work directory, overrides --tmp. Default is a temporary dir under /var/tmp/lorax&quot;</span><span class="p">)</span>
<span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--force&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span> <span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--force&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_true&quot;</span><span class="p">,</span>
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;Run even when the destination directory exists&quot;</span><span class="p">)</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Run even when the destination directory exists&quot;</span><span class="p">)</span>
<span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--add-template&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;add_templates&quot;</span><span class="p">,</span> <span class="n">optional</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--add-template&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;add_templates&quot;</span><span class="p">,</span>
@ -355,6 +356,9 @@
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--nomacboot&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_false&quot;</span><span class="p">,</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--nomacboot&quot;</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s2">&quot;store_false&quot;</span><span class="p">,</span>
<span class="n">dest</span><span class="o">=</span><span class="s2">&quot;domacboot&quot;</span><span class="p">)</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;domacboot&quot;</span><span class="p">)</span>
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--extra-boot-args&quot;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s2">&quot;extra_boot_args&quot;</span><span class="p">,</span>
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;Extra arguments to add to the bootloader kernel cmdline in the templates&quot;</span><span class="p">)</span>
<span class="n">image_group</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument_group</span><span class="p">(</span><span class="s2">&quot;disk/fs image arguments&quot;</span><span class="p">)</span> <span class="n">image_group</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument_group</span><span class="p">(</span><span class="s2">&quot;disk/fs image arguments&quot;</span><span class="p">)</span>
<span class="n">image_group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--disk-image&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">,</span> <span class="n">image_group</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">&quot;--disk-image&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">,</span>
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;Path to existing disk image to use for creating final image.&quot;</span><span class="p">)</span> <span class="n">help</span><span class="o">=</span><span class="s2">&quot;Path to existing disk image to use for creating final image.&quot;</span><span class="p">)</span>
@ -468,7 +472,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -487,27 +491,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.creator &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.creator &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -311,7 +312,7 @@
<span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Calculating SHA256 checksum of </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">disk_img</span><span class="p">)</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Calculating SHA256 checksum of </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">disk_img</span><span class="p">)</span>
<span class="n">sha256</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha256</span><span class="p">()</span> <span class="n">sha256</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha256</span><span class="p">()</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">disk_img</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">disk_img</span><span class="p">,</span> <span class="s2">&quot;rb&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1024</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span> <span class="n">data</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1024</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">data</span><span class="p">:</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">data</span><span class="p">:</span>
@ -511,7 +512,8 @@
<span class="n">tb</span> <span class="o">=</span> <span class="n">TreeBuilder</span><span class="p">(</span><span class="n">product</span><span class="o">=</span><span class="n">product</span><span class="p">,</span> <span class="n">arch</span><span class="o">=</span><span class="n">arch</span><span class="p">,</span> <span class="n">domacboot</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">domacboot</span><span class="p">,</span> <span class="n">tb</span> <span class="o">=</span> <span class="n">TreeBuilder</span><span class="p">(</span><span class="n">product</span><span class="o">=</span><span class="n">product</span><span class="p">,</span> <span class="n">arch</span><span class="o">=</span><span class="n">arch</span><span class="p">,</span> <span class="n">domacboot</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">domacboot</span><span class="p">,</span>
<span class="n">inroot</span><span class="o">=</span><span class="n">mount_dir</span><span class="p">,</span> <span class="n">outroot</span><span class="o">=</span><span class="n">work_dir</span><span class="p">,</span> <span class="n">inroot</span><span class="o">=</span><span class="n">mount_dir</span><span class="p">,</span> <span class="n">outroot</span><span class="o">=</span><span class="n">work_dir</span><span class="p">,</span>
<span class="n">runtime</span><span class="o">=</span><span class="n">RUNTIME</span><span class="p">,</span> <span class="n">isolabel</span><span class="o">=</span><span class="n">isolabel</span><span class="p">,</span> <span class="n">runtime</span><span class="o">=</span><span class="n">RUNTIME</span><span class="p">,</span> <span class="n">isolabel</span><span class="o">=</span><span class="n">isolabel</span><span class="p">,</span>
<span class="n">templatedir</span><span class="o">=</span><span class="n">joinpaths</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">lorax_templates</span><span class="p">,</span><span class="s2">&quot;live/&quot;</span><span class="p">))</span> <span class="n">templatedir</span><span class="o">=</span><span class="n">joinpaths</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">lorax_templates</span><span class="p">,</span><span class="s2">&quot;live/&quot;</span><span class="p">),</span>
<span class="n">extra_boot_args</span><span class="o">=</span><span class="n">opts</span><span class="o">.</span><span class="n">extra_boot_args</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Rebuilding initrds&quot;</span><span class="p">)</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Rebuilding initrds&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">dracut_args</span><span class="p">:</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">dracut_args</span><span class="p">:</span>
<span class="n">dracut_args</span> <span class="o">=</span> <span class="n">DRACUT_DEFAULT</span> <span class="n">dracut_args</span> <span class="o">=</span> <span class="n">DRACUT_DEFAULT</span>
@ -601,6 +603,8 @@
<span class="sd"> :param str ks: Path to the kickstart to use for the installation</span> <span class="sd"> :param str ks: Path to the kickstart to use for the installation</span>
<span class="sd"> :returns: Disk size in MiB</span> <span class="sd"> :returns: Disk size in MiB</span>
<span class="sd"> :rtype: int</span> <span class="sd"> :rtype: int</span>
<span class="sd"> Also takes into account the use of reqpart or reqpart --add-boot</span>
<span class="sd"> &quot;&quot;&quot;</span> <span class="sd"> &quot;&quot;&quot;</span>
<span class="c1"># Disk size for a filesystem image should only be the size of /</span> <span class="c1"># Disk size for a filesystem image should only be the size of /</span>
<span class="c1"># to prevent surprises when using the same kickstart for different installations.</span> <span class="c1"># to prevent surprises when using the same kickstart for different installations.</span>
@ -609,6 +613,17 @@
<span class="n">disk_size</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">+</span> <span class="nb">sum</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">size</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">unique_partitions</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">mountpoint</span> <span class="o">==</span> <span class="s2">&quot;/&quot;</span><span class="p">)</span> <span class="n">disk_size</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">+</span> <span class="nb">sum</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">size</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">unique_partitions</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">mountpoint</span> <span class="o">==</span> <span class="s2">&quot;/&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span> <span class="k">else</span><span class="p">:</span>
<span class="n">disk_size</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">+</span> <span class="nb">sum</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">size</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">unique_partitions</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="n">disk_size</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">+</span> <span class="nb">sum</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">size</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">unique_partitions</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
<span class="c1"># reqpart can add 1M, 2M, 200M based on platform. Add 500M to be sure</span>
<span class="k">if</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">reqpart</span><span class="o">.</span><span class="n">seen</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Adding 500M for reqpart&quot;</span><span class="p">)</span>
<span class="n">disk_size</span> <span class="o">+=</span> <span class="mi">500</span>
<span class="c1"># It can also request adding /boot which is 1G</span>
<span class="k">if</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">reqpart</span><span class="o">.</span><span class="n">addBoot</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Adding 1024M for reqpart --addboot&quot;</span><span class="p">)</span>
<span class="n">disk_size</span> <span class="o">+=</span> <span class="mi">1024</span>
<span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Using disk size of </span><span class="si">%s</span><span class="s2">MiB&quot;</span><span class="p">,</span> <span class="n">disk_size</span><span class="p">)</span> <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Using disk size of </span><span class="si">%s</span><span class="s2">MiB&quot;</span><span class="p">,</span> <span class="n">disk_size</span><span class="p">)</span>
<span class="k">return</span> <span class="n">disk_size</span></div> <span class="k">return</span> <span class="n">disk_size</span></div>
@ -734,6 +749,47 @@
<span class="k">return</span> <span class="n">work_dir</span></div> <span class="k">return</span> <span class="n">work_dir</span></div>
<div class="viewcode-block" id="check_kickstart"><a class="viewcode-back" href="../../pylorax.html#pylorax.creator.check_kickstart">[docs]</a><span class="k">def</span> <span class="nf">check_kickstart</span><span class="p">(</span><span class="n">ks</span><span class="p">,</span> <span class="n">opts</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Check the parsed kickstart object for errors</span>
<span class="sd"> :param ks: Parsed Kickstart object</span>
<span class="sd"> :type ks: pykickstart.parser.KickstartParser</span>
<span class="sd"> :param opts: Commandline options to control the process</span>
<span class="sd"> :type opts: Either a DataHolder or ArgumentParser</span>
<span class="sd"> :returns: List of error strings or empty list</span>
<span class="sd"> :rtype: list</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">no_virt</span> <span class="ow">and</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">method</span><span class="o">.</span><span class="n">method</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;url&quot;</span><span class="p">,</span> <span class="s2">&quot;nfs&quot;</span><span class="p">)</span> \
<span class="ow">and</span> <span class="ow">not</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">ostreesetup</span><span class="o">.</span><span class="n">seen</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Only url, nfs and ostreesetup install methods are currently supported.&quot;</span>
<span class="s2">&quot;Please fix your kickstart file.&quot;</span> <span class="p">)</span>
<span class="k">if</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">repo</span><span class="o">.</span><span class="n">seen</span> <span class="ow">and</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">method</span><span class="o">.</span><span class="n">method</span> <span class="o">!=</span> <span class="s2">&quot;url&quot;</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;repo can only be used with the url install method. Add url to your &quot;</span>
<span class="s2">&quot;kickstart file.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">method</span><span class="o">.</span><span class="n">method</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;url&quot;</span><span class="p">,</span> <span class="s2">&quot;nfs&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">network</span><span class="o">.</span><span class="n">seen</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;The kickstart must activate networking if &quot;</span>
<span class="s2">&quot;the url or nfs install method is used.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">displaymode</span><span class="o">.</span><span class="n">displayMode</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;The kickstart must not set a display mode (text, cmdline, &quot;</span>
<span class="s2">&quot;graphical), this will interfere with livemedia-creator.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">make_fsimage</span> <span class="ow">or</span> <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">make_pxe_live</span> <span class="ow">and</span> <span class="n">opts</span><span class="o">.</span><span class="n">no_virt</span><span class="p">):</span>
<span class="c1"># Make sure the kickstart isn&#39;t using autopart and only has a / mountpoint</span>
<span class="n">part_ok</span> <span class="o">=</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">(</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">partition</span><span class="o">.</span><span class="n">partitions</span>
<span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">mountpoint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;/&quot;</span><span class="p">,</span> <span class="s2">&quot;swap&quot;</span><span class="p">])</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">part_ok</span> <span class="ow">or</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">autopart</span><span class="o">.</span><span class="n">seen</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Filesystem images must use a single / part, not autopart or &quot;</span>
<span class="s2">&quot;multiple partitions. swap is allowed but not used.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">no_virt</span> <span class="ow">and</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">reboot</span><span class="o">.</span><span class="n">action</span> <span class="o">!=</span> <span class="n">KS_SHUTDOWN</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;The kickstart must include shutdown when using virt installation.&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">errors</span></div>
<div class="viewcode-block" id="run_creator"><a class="viewcode-back" href="../../pylorax.html#pylorax.creator.run_creator">[docs]</a><span class="k">def</span> <span class="nf">run_creator</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="n">cancel_func</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> <div class="viewcode-block" id="run_creator"><a class="viewcode-back" href="../../pylorax.html#pylorax.creator.run_creator">[docs]</a><span class="k">def</span> <span class="nf">run_creator</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="n">cancel_func</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Run the image creator process</span> <span class="sd">&quot;&quot;&quot;Run the image creator process</span>
@ -768,31 +824,8 @@
<span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">ks</span><span class="p">:</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">ks</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Image creation requires a kickstart file&quot;</span><span class="p">)</span> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;Image creation requires a kickstart file&quot;</span><span class="p">)</span>
<span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># Check the kickstart for problems</span>
<span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">no_virt</span> <span class="ow">and</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">method</span><span class="o">.</span><span class="n">method</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;url&quot;</span><span class="p">,</span> <span class="s2">&quot;nfs&quot;</span><span class="p">)</span> \ <span class="n">errors</span> <span class="o">=</span> <span class="n">check_kickstart</span><span class="p">(</span><span class="n">ks</span><span class="p">,</span> <span class="n">opts</span><span class="p">)</span>
<span class="ow">and</span> <span class="ow">not</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">ostreesetup</span><span class="o">.</span><span class="n">seen</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Only url, nfs and ostreesetup install methods are currently supported.&quot;</span>
<span class="s2">&quot;Please fix your kickstart file.&quot;</span> <span class="p">)</span>
<span class="k">if</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">method</span><span class="o">.</span><span class="n">method</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;url&quot;</span><span class="p">,</span> <span class="s2">&quot;nfs&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">network</span><span class="o">.</span><span class="n">seen</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;The kickstart must activate networking if &quot;</span>
<span class="s2">&quot;the url or nfs install method is used.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">displaymode</span><span class="o">.</span><span class="n">displayMode</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;The kickstart must not set a display mode (text, cmdline, &quot;</span>
<span class="s2">&quot;graphical), this will interfere with livemedia-creator.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">make_fsimage</span> <span class="ow">or</span> <span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">make_pxe_live</span> <span class="ow">and</span> <span class="n">opts</span><span class="o">.</span><span class="n">no_virt</span><span class="p">):</span>
<span class="c1"># Make sure the kickstart isn&#39;t using autopart and only has a / mountpoint</span>
<span class="n">part_ok</span> <span class="o">=</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">(</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">partition</span><span class="o">.</span><span class="n">partitions</span>
<span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">mountpoint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;/&quot;</span><span class="p">,</span> <span class="s2">&quot;swap&quot;</span><span class="p">])</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">part_ok</span> <span class="ow">or</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">autopart</span><span class="o">.</span><span class="n">seen</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;Filesystem images must use a single / part, not autopart or &quot;</span>
<span class="s2">&quot;multiple partitions. swap is allowed but not used.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">opts</span><span class="o">.</span><span class="n">no_virt</span> <span class="ow">and</span> <span class="n">ks</span><span class="o">.</span><span class="n">handler</span><span class="o">.</span><span class="n">reboot</span><span class="o">.</span><span class="n">action</span> <span class="o">!=</span> <span class="n">KS_SHUTDOWN</span><span class="p">:</span>
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;The kickstart must include shutdown when using virt installation.&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">errors</span><span class="p">:</span> <span class="k">if</span> <span class="n">errors</span><span class="p">:</span>
<span class="nb">list</span><span class="p">(</span><span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">errors</span><span class="p">)</span> <span class="nb">list</span><span class="p">(</span><span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">errors</span><span class="p">)</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">errors</span><span class="p">))</span> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">errors</span><span class="p">))</span>
@ -887,7 +920,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -906,27 +939,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.decorators &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.decorators &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -196,7 +197,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -215,27 +216,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.discinfo &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.discinfo &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -205,7 +206,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -224,27 +225,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.dnfhelper &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.dnfhelper &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -250,7 +251,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_last_ts</span> <span class="o">=</span> <span class="kc">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">_last_ts</span> <span class="o">=</span> <span class="kc">None</span>
<div class="viewcode-block" id="LoraxRpmCallback.progress"><a class="viewcode-back" href="../../pylorax.html#pylorax.dnfhelper.LoraxRpmCallback.progress">[docs]</a> <span class="k">def</span> <span class="nf">progress</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">package</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">ti_done</span><span class="p">,</span> <span class="n">ti_total</span><span class="p">,</span> <span class="n">ts_done</span><span class="p">,</span> <span class="n">ts_total</span><span class="p">):</span> <div class="viewcode-block" id="LoraxRpmCallback.progress"><a class="viewcode-back" href="../../pylorax.html#pylorax.dnfhelper.LoraxRpmCallback.progress">[docs]</a> <span class="k">def</span> <span class="nf">progress</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">package</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">ti_done</span><span class="p">,</span> <span class="n">ti_total</span><span class="p">,</span> <span class="n">ts_done</span><span class="p">,</span> <span class="n">ts_total</span><span class="p">):</span>
<span class="k">if</span> <span class="n">action</span> <span class="o">==</span> <span class="n">dnf</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">PKG_INSTALL</span><span class="p">:</span> <span class="k">if</span> <span class="n">action</span> <span class="o">==</span> <span class="n">dnf</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">PKG_INSTALL</span><span class="p">:</span> <span class="c1"># pylint: disable=no-member</span>
<span class="c1"># do not report same package twice</span> <span class="c1"># do not report same package twice</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_last_ts</span> <span class="o">==</span> <span class="n">ts_done</span><span class="p">:</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_last_ts</span> <span class="o">==</span> <span class="n">ts_done</span><span class="p">:</span>
<span class="k">return</span> <span class="k">return</span>
@ -258,7 +259,7 @@
<span class="n">msg</span> <span class="o">=</span> <span class="s1">&#39;(</span><span class="si">%d</span><span class="s1">/</span><span class="si">%d</span><span class="s1">) </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ts_done</span><span class="p">,</span> <span class="n">ts_total</span><span class="p">,</span> <span class="n">package</span><span class="p">)</span> <span class="n">msg</span> <span class="o">=</span> <span class="s1">&#39;(</span><span class="si">%d</span><span class="s1">/</span><span class="si">%d</span><span class="s1">) </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">ts_done</span><span class="p">,</span> <span class="n">ts_total</span><span class="p">,</span> <span class="n">package</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">action</span> <span class="o">==</span> <span class="n">dnf</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">TRANS_POST</span><span class="p">:</span> <span class="k">elif</span> <span class="n">action</span> <span class="o">==</span> <span class="n">dnf</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">TRANS_POST</span><span class="p">:</span> <span class="c1"># pylint: disable=no-member</span>
<span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;Performing post-installation setup tasks&quot;</span> <span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;Performing post-installation setup tasks&quot;</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span></div> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span></div>
@ -276,7 +277,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -295,27 +296,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.executils &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.executils &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -513,7 +514,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -532,27 +533,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.imgutils &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.imgutils &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -675,7 +676,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -694,27 +695,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.installer &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.installer &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -399,7 +400,7 @@
<span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">qemu_cmd</span><span class="p">)</span> <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="n">qemu_cmd</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span> <span class="k">try</span><span class="p">:</span>
<span class="n">execWithRedirect</span><span class="p">(</span><span class="n">qemu_cmd</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">qemu_cmd</span><span class="p">[</span><span class="mi">1</span><span class="p">:],</span> <span class="n">reset_lang</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">raise_err</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">execWithRedirect</span><span class="p">(</span><span class="n">qemu_cmd</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">qemu_cmd</span><span class="p">[</span><span class="mi">1</span><span class="p">:],</span> <span class="n">reset_lang</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">raise_err</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">callback</span><span class="o">=</span><span class="k">lambda</span> <span class="n">p</span><span class="p">:</span> <span class="ow">not</span> <span class="n">cancel_func</span><span class="p">())</span> <span class="n">callback</span><span class="o">=</span><span class="k">lambda</span> <span class="n">p</span><span class="p">:</span> <span class="ow">not</span> <span class="p">(</span><span class="n">cancel_func</span> <span class="ow">and</span> <span class="n">cancel_func</span><span class="p">()))</span>
<span class="k">except</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">CalledProcessError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> <span class="k">except</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">CalledProcessError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Running qemu failed:&quot;</span><span class="p">)</span> <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Running qemu failed:&quot;</span><span class="p">)</span>
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;cmd: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">cmd</span><span class="p">))</span> <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;cmd: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">cmd</span><span class="p">))</span>
@ -413,7 +414,7 @@
<span class="k">if</span> <span class="n">boot_uefi</span> <span class="ow">and</span> <span class="n">ovmf_path</span><span class="p">:</span> <span class="k">if</span> <span class="n">boot_uefi</span> <span class="ow">and</span> <span class="n">ovmf_path</span><span class="p">:</span>
<span class="n">os</span><span class="o">.</span><span class="n">unlink</span><span class="p">(</span><span class="n">ovmf_vars</span><span class="p">)</span> <span class="n">os</span><span class="o">.</span><span class="n">unlink</span><span class="p">(</span><span class="n">ovmf_vars</span><span class="p">)</span>
<span class="k">if</span> <span class="n">cancel_func</span><span class="p">():</span> <span class="k">if</span> <span class="n">cancel_func</span> <span class="ow">and</span> <span class="n">cancel_func</span><span class="p">():</span>
<span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Installation error detected. See logfile for details.&quot;</span><span class="p">)</span> <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Installation error detected. See logfile for details.&quot;</span><span class="p">)</span>
<span class="k">raise</span> <span class="n">InstallError</span><span class="p">(</span><span class="s2">&quot;QEMUInstall failed&quot;</span><span class="p">)</span> <span class="k">raise</span> <span class="n">InstallError</span><span class="p">(</span><span class="s2">&quot;QEMUInstall failed&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span> <span class="k">else</span><span class="p">:</span>
@ -722,7 +723,7 @@
<span class="k">else</span><span class="p">:</span> <span class="k">else</span><span class="p">:</span>
<span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;virt_install failed on line: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">log_monitor</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">error_line</span> <span class="n">msg</span> <span class="o">=</span> <span class="s2">&quot;virt_install failed on line: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">log_monitor</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">error_line</span>
<span class="k">raise</span> <span class="n">InstallError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> <span class="k">raise</span> <span class="n">InstallError</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">cancel_func</span><span class="p">():</span> <span class="k">elif</span> <span class="n">cancel_func</span> <span class="ow">and</span> <span class="n">cancel_func</span><span class="p">():</span>
<span class="k">raise</span> <span class="n">InstallError</span><span class="p">(</span><span class="s2">&quot;virt_install canceled by cancel_func&quot;</span><span class="p">)</span> <span class="k">raise</span> <span class="n">InstallError</span><span class="p">(</span><span class="s2">&quot;virt_install canceled by cancel_func&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">make_fsimage</span><span class="p">:</span> <span class="k">if</span> <span class="n">opts</span><span class="o">.</span><span class="n">make_fsimage</span><span class="p">:</span>
@ -792,7 +793,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -811,27 +812,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.ltmpl &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.ltmpl &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -223,10 +224,16 @@
<span class="c1"># remove comments</span> <span class="c1"># remove comments</span>
<span class="n">lines</span> <span class="o">=</span> <span class="p">[</span><span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;#&quot;</span><span class="p">)]</span> <span class="n">lines</span> <span class="o">=</span> <span class="p">[</span><span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;#&quot;</span><span class="p">)]</span>
<span class="c1"># split with shlex and perform brace expansion</span> <span class="c1"># split with shlex and perform brace expansion. This can fail, so we unroll the loop</span>
<span class="n">lines</span> <span class="o">=</span> <span class="p">[</span><span class="n">split_and_expand</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">]</span> <span class="c1"># for better error reporting.</span>
<span class="n">expanded_lines</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">return</span> <span class="n">lines</span></div></div> <span class="k">try</span><span class="p">:</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
<span class="n">expanded_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">split_and_expand</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;shlex error processing &quot;</span><span class="si">%s</span><span class="s1">&quot;: </span><span class="si">%s</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
<span class="k">raise</span>
<span class="k">return</span> <span class="n">expanded_lines</span></div></div>
<div class="viewcode-block" id="split_and_expand"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.split_and_expand">[docs]</a><span class="k">def</span> <span class="nf">split_and_expand</span><span class="p">(</span><span class="n">line</span><span class="p">):</span> <div class="viewcode-block" id="split_and_expand"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.split_and_expand">[docs]</a><span class="k">def</span> <span class="nf">split_and_expand</span><span class="p">(</span><span class="n">line</span><span class="p">):</span>
<span class="k">return</span> <span class="p">[</span><span class="n">exp</span> <span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">shlex</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">exp</span> <span class="ow">in</span> <span class="n">brace_expand</span><span class="p">(</span><span class="n">word</span><span class="p">)]</span></div> <span class="k">return</span> <span class="p">[</span><span class="n">exp</span> <span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">shlex</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">exp</span> <span class="ow">in</span> <span class="n">brace_expand</span><span class="p">(</span><span class="n">word</span><span class="p">)]</span></div>
@ -259,19 +266,13 @@
<span class="k">return</span> <span class="kc">True</span> <span class="k">return</span> <span class="kc">True</span>
<span class="k">return</span> <span class="kc">False</span></div> <span class="k">return</span> <span class="kc">False</span></div>
<span class="c1"># TODO: operate inside an actual chroot for safety? Not that RPM bothers..</span> <div class="viewcode-block" id="TemplateRunner"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.TemplateRunner">[docs]</a><span class="k">class</span> <span class="nc">TemplateRunner</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<div class="viewcode-block" id="LoraxTemplateRunner"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.LoraxTemplateRunner">[docs]</a><span class="k">class</span> <span class="nc">LoraxTemplateRunner</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span> <span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> This class parses and executes Lorax templates. Sample usage:</span> <span class="sd"> This class parses and executes Lorax templates. Sample usage:</span>
<span class="sd"> # install a bunch of packages</span> <span class="sd"> # install a bunch of packages</span>
<span class="sd"> runner = LoraxTemplateRunner(inroot=rundir, outroot=rundir, dbo=dnf_obj)</span> <span class="sd"> runner = LoraxTemplateRunner(inroot=rundir, outroot=rundir, dbo=dnf_obj)</span>
<span class="sd"> runner.run(&quot;install-packages.ltmpl&quot;)</span> <span class="sd"> runner.run(&quot;install-packages.ltmpl&quot;)</span>
<span class="sd"> # modify a runtime dir</span>
<span class="sd"> runner = LoraxTemplateRunner(inroot=rundir, outroot=newrun)</span>
<span class="sd"> runner.run(&quot;runtime-transmogrify.ltmpl&quot;)</span>
<span class="sd"> NOTES:</span> <span class="sd"> NOTES:</span>
<span class="sd"> * Parsing procedure is roughly:</span> <span class="sd"> * Parsing procedure is roughly:</span>
@ -284,6 +285,75 @@
<span class="sd"> * Parsing and execution are *separate* passes - so you can&#39;t use the result</span> <span class="sd"> * Parsing and execution are *separate* passes - so you can&#39;t use the result</span>
<span class="sd"> of a command in an %if statement (or any other control statements)!</span> <span class="sd"> of a command in an %if statement (or any other control statements)!</span>
<span class="sd"> &#39;&#39;&#39;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fatalerrors</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">templatedir</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">defaults</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">builtins</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fatalerrors</span> <span class="o">=</span> <span class="n">fatalerrors</span>
<span class="bp">self</span><span class="o">.</span><span class="n">templatedir</span> <span class="o">=</span> <span class="n">templatedir</span> <span class="ow">or</span> <span class="s2">&quot;/usr/share/lorax&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">templatefile</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">builtins</span> <span class="o">=</span> <span class="n">builtins</span> <span class="ow">or</span> <span class="p">{}</span>
<span class="bp">self</span><span class="o">.</span><span class="n">defaults</span> <span class="o">=</span> <span class="n">defaults</span> <span class="ow">or</span> <span class="p">{}</span>
<div class="viewcode-block" id="TemplateRunner.run"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.TemplateRunner.run">[docs]</a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">templatefile</span><span class="p">,</span> <span class="o">**</span><span class="n">variables</span><span class="p">):</span>
<span class="k">for</span> <span class="n">k</span><span class="p">,</span><span class="n">v</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defaults</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">builtins</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
<span class="n">variables</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">k</span><span class="p">,</span><span class="n">v</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;executing </span><span class="si">%s</span><span class="s2"> with variables=</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">templatefile</span><span class="p">,</span> <span class="n">variables</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">templatefile</span> <span class="o">=</span> <span class="n">templatefile</span>
<span class="n">t</span> <span class="o">=</span> <span class="n">LoraxTemplate</span><span class="p">(</span><span class="n">directories</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">templatedir</span><span class="p">])</span>
<span class="n">commands</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">templatefile</span><span class="p">,</span> <span class="n">variables</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_run</span><span class="p">(</span><span class="n">commands</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parsed_template</span><span class="p">):</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;running </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">templatefile</span><span class="p">)</span>
<span class="k">for</span> <span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">line</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">parsed_template</span><span class="p">,</span><span class="mi">1</span><span class="p">):</span>
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;template line </span><span class="si">%i</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
<span class="n">skiperror</span> <span class="o">=</span> <span class="kc">False</span>
<span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> <span class="o">=</span> <span class="p">(</span><span class="n">line</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">line</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span>
<span class="c1"># Following Makefile convention, if the command is prefixed with</span>
<span class="c1"># a dash (&#39;-&#39;), we&#39;ll ignore any errors on that line.</span>
<span class="k">if</span> <span class="n">cmd</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;-&#39;</span><span class="p">):</span>
<span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">skiperror</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># grab the method named in cmd and pass it the given arguments</span>
<span class="n">f</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="k">if</span> <span class="n">cmd</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;_&#39;</span> <span class="ow">or</span> <span class="n">cmd</span> <span class="o">==</span> <span class="s1">&#39;run&#39;</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">collections</span><span class="o">.</span><span class="n">Callable</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;unknown command </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">cmd</span><span class="p">)</span>
<span class="n">f</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> <span class="c1"># pylint: disable=broad-except</span>
<span class="k">if</span> <span class="n">skiperror</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;ignoring error&quot;</span><span class="p">)</span>
<span class="k">continue</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;template command error in </span><span class="si">%s</span><span class="s2">:&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">templatefile</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot; </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
<span class="c1"># format the exception traceback</span>
<span class="n">exclines</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exception</span><span class="p">(</span><span class="o">*</span><span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">())</span>
<span class="c1"># skip the bit about &quot;ltmpl.py, in _run()&quot; - we know that</span>
<span class="n">exclines</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="c1"># log the &quot;ErrorType: this is what happened&quot; line</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot; </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">exclines</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
<span class="c1"># and log the entire traceback to the debug log</span>
<span class="k">for</span> <span class="n">_line</span> <span class="ow">in</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">exclines</span><span class="p">)</span><span class="o">.</span><span class="n">splitlines</span><span class="p">():</span>
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot; </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">_line</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fatalerrors</span><span class="p">:</span>
<span class="k">raise</span></div>
<span class="c1"># TODO: operate inside an actual chroot for safety? Not that RPM bothers..</span>
<div class="viewcode-block" id="LoraxTemplateRunner"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.LoraxTemplateRunner">[docs]</a><span class="k">class</span> <span class="nc">LoraxTemplateRunner</span><span class="p">(</span><span class="n">TemplateRunner</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> This class parses and executes Lorax templates. Sample usage:</span>
<span class="sd"> # install a bunch of packages</span>
<span class="sd"> runner = LoraxTemplateRunner(inroot=rundir, outroot=rundir, dbo=dnf_obj)</span>
<span class="sd"> runner.run(&quot;install-packages.ltmpl&quot;)</span>
<span class="sd"> # modify a runtime dir</span>
<span class="sd"> runner = LoraxTemplateRunner(inroot=rundir, outroot=newrun)</span>
<span class="sd"> runner.run(&quot;runtime-transmogrify.ltmpl&quot;)</span>
<span class="sd"> NOTES:</span>
<span class="sd"> * Commands that run external programs (e.g. systemctl) currently use</span> <span class="sd"> * Commands that run external programs (e.g. systemctl) currently use</span>
<span class="sd"> the *host*&#39;s copy of that program, which may cause problems if there&#39;s a</span> <span class="sd"> the *host*&#39;s copy of that program, which may cause problems if there&#39;s a</span>
@ -307,14 +377,11 @@
<span class="bp">self</span><span class="o">.</span><span class="n">inroot</span> <span class="o">=</span> <span class="n">inroot</span> <span class="bp">self</span><span class="o">.</span><span class="n">inroot</span> <span class="o">=</span> <span class="n">inroot</span>
<span class="bp">self</span><span class="o">.</span><span class="n">outroot</span> <span class="o">=</span> <span class="n">outroot</span> <span class="bp">self</span><span class="o">.</span><span class="n">outroot</span> <span class="o">=</span> <span class="n">outroot</span>
<span class="bp">self</span><span class="o">.</span><span class="n">dbo</span> <span class="o">=</span> <span class="n">dbo</span> <span class="bp">self</span><span class="o">.</span><span class="n">dbo</span> <span class="o">=</span> <span class="n">dbo</span>
<span class="bp">self</span><span class="o">.</span><span class="n">fatalerrors</span> <span class="o">=</span> <span class="n">fatalerrors</span> <span class="n">builtins</span> <span class="o">=</span> <span class="n">DataHolder</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="k">lambda</span> <span class="n">p</span><span class="p">:</span> <span class="n">rexists</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">root</span><span class="o">=</span><span class="n">inroot</span><span class="p">),</span>
<span class="bp">self</span><span class="o">.</span><span class="n">templatedir</span> <span class="o">=</span> <span class="n">templatedir</span> <span class="ow">or</span> <span class="s2">&quot;/usr/share/lorax&quot;</span> <span class="n">glob</span><span class="o">=</span><span class="k">lambda</span> <span class="n">g</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">rglob</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="n">root</span><span class="o">=</span><span class="n">inroot</span><span class="p">)))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">templatefile</span> <span class="o">=</span> <span class="kc">None</span>
<span class="c1"># some builtin methods</span>
<span class="bp">self</span><span class="o">.</span><span class="n">builtins</span> <span class="o">=</span> <span class="n">DataHolder</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="k">lambda</span> <span class="n">p</span><span class="p">:</span> <span class="n">rexists</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">root</span><span class="o">=</span><span class="n">inroot</span><span class="p">),</span>
<span class="n">glob</span><span class="o">=</span><span class="k">lambda</span> <span class="n">g</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">rglob</span><span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="n">root</span><span class="o">=</span><span class="n">inroot</span><span class="p">)))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">defaults</span> <span class="o">=</span> <span class="n">defaults</span> <span class="ow">or</span> <span class="p">{}</span>
<span class="bp">self</span><span class="o">.</span><span class="n">results</span> <span class="o">=</span> <span class="n">DataHolder</span><span class="p">(</span><span class="n">treeinfo</span><span class="o">=</span><span class="nb">dict</span><span class="p">())</span> <span class="c1"># just treeinfo for now</span> <span class="bp">self</span><span class="o">.</span><span class="n">results</span> <span class="o">=</span> <span class="n">DataHolder</span><span class="p">(</span><span class="n">treeinfo</span><span class="o">=</span><span class="nb">dict</span><span class="p">())</span> <span class="c1"># just treeinfo for now</span>
<span class="nb">super</span><span class="p">(</span><span class="n">LoraxTemplateRunner</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">fatalerrors</span><span class="p">,</span> <span class="n">templatedir</span><span class="p">,</span> <span class="n">defaults</span><span class="p">,</span> <span class="n">builtins</span><span class="p">)</span>
<span class="c1"># TODO: set up custom logger with a filter to add line info</span> <span class="c1"># TODO: set up custom logger with a filter to add line info</span>
<span class="k">def</span> <span class="nf">_out</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span> <span class="k">def</span> <span class="nf">_out</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
@ -365,52 +432,6 @@
<span class="k">for</span> <span class="n">pkg</span> <span class="ow">in</span> <span class="n">debug_pkgs</span><span class="p">:</span> <span class="k">for</span> <span class="n">pkg</span> <span class="ow">in</span> <span class="n">debug_pkgs</span><span class="p">:</span>
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">pkg</span><span class="p">)</span> <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">pkg</span><span class="p">)</span>
<div class="viewcode-block" id="LoraxTemplateRunner.run"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.run">[docs]</a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">templatefile</span><span class="p">,</span> <span class="o">**</span><span class="n">variables</span><span class="p">):</span>
<span class="k">for</span> <span class="n">k</span><span class="p">,</span><span class="n">v</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">defaults</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">builtins</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
<span class="n">variables</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">k</span><span class="p">,</span><span class="n">v</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;executing </span><span class="si">%s</span><span class="s2"> with variables=</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">templatefile</span><span class="p">,</span> <span class="n">variables</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">templatefile</span> <span class="o">=</span> <span class="n">templatefile</span>
<span class="n">t</span> <span class="o">=</span> <span class="n">LoraxTemplate</span><span class="p">(</span><span class="n">directories</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">templatedir</span><span class="p">])</span>
<span class="n">commands</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">templatefile</span><span class="p">,</span> <span class="n">variables</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_run</span><span class="p">(</span><span class="n">commands</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parsed_template</span><span class="p">):</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;running </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">templatefile</span><span class="p">)</span>
<span class="k">for</span> <span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">line</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">parsed_template</span><span class="p">,</span><span class="mi">1</span><span class="p">):</span>
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;template line </span><span class="si">%i</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
<span class="n">skiperror</span> <span class="o">=</span> <span class="kc">False</span>
<span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> <span class="o">=</span> <span class="p">(</span><span class="n">line</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">line</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span>
<span class="c1"># Following Makefile convention, if the command is prefixed with</span>
<span class="c1"># a dash (&#39;-&#39;), we&#39;ll ignore any errors on that line.</span>
<span class="k">if</span> <span class="n">cmd</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;-&#39;</span><span class="p">):</span>
<span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">skiperror</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># grab the method named in cmd and pass it the given arguments</span>
<span class="n">f</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="k">if</span> <span class="n">cmd</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;_&#39;</span> <span class="ow">or</span> <span class="n">cmd</span> <span class="o">==</span> <span class="s1">&#39;run&#39;</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">collections</span><span class="o">.</span><span class="n">Callable</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;unknown command </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">cmd</span><span class="p">)</span>
<span class="n">f</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> <span class="c1"># pylint: disable=broad-except</span>
<span class="k">if</span> <span class="n">skiperror</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;ignoring error&quot;</span><span class="p">)</span>
<span class="k">continue</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;template command error in </span><span class="si">%s</span><span class="s2">:&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">templatefile</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot; </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="s2">&quot; &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">line</span><span class="p">))</span>
<span class="c1"># format the exception traceback</span>
<span class="n">exclines</span> <span class="o">=</span> <span class="n">traceback</span><span class="o">.</span><span class="n">format_exception</span><span class="p">(</span><span class="o">*</span><span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">())</span>
<span class="c1"># skip the bit about &quot;ltmpl.py, in _run()&quot; - we know that</span>
<span class="n">exclines</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="c1"># log the &quot;ErrorType: this is what happened&quot; line</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">exclines</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
<span class="c1"># and log the entire traceback to the debug log</span>
<span class="k">for</span> <span class="n">_line</span> <span class="ow">in</span> <span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">exclines</span><span class="p">)</span><span class="o">.</span><span class="n">splitlines</span><span class="p">():</span>
<span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot; &quot;</span> <span class="o">+</span> <span class="n">_line</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fatalerrors</span><span class="p">:</span>
<span class="k">raise</span>
<div class="viewcode-block" id="LoraxTemplateRunner.install"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.install">[docs]</a> <span class="k">def</span> <span class="nf">install</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">srcglob</span><span class="p">,</span> <span class="n">dest</span><span class="p">):</span> <div class="viewcode-block" id="LoraxTemplateRunner.install"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.install">[docs]</a> <span class="k">def</span> <span class="nf">install</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">srcglob</span><span class="p">,</span> <span class="n">dest</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span> <span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> install SRC DEST</span> <span class="sd"> install SRC DEST</span>
@ -421,6 +442,7 @@
<span class="sd"> If DEST doesn&#39;t exist, SRC will be copied to a file with that name,</span> <span class="sd"> If DEST doesn&#39;t exist, SRC will be copied to a file with that name,</span>
<span class="sd"> assuming the rest of the path exists.</span> <span class="sd"> assuming the rest of the path exists.</span>
<span class="sd"> This is pretty much like how the &#39;cp&#39; command works.</span> <span class="sd"> This is pretty much like how the &#39;cp&#39; command works.</span>
<span class="sd"> Examples:</span> <span class="sd"> Examples:</span>
<span class="sd"> install usr/share/myconfig/grub.conf /boot</span> <span class="sd"> install usr/share/myconfig/grub.conf /boot</span>
<span class="sd"> install /usr/share/myconfig/grub.conf.in /boot/grub.conf</span> <span class="sd"> install /usr/share/myconfig/grub.conf.in /boot/grub.conf</span>
@ -476,6 +498,7 @@
<span class="sd">&#39;&#39;&#39;</span> <span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> mkdir DIR [DIR ...]</span> <span class="sd"> mkdir DIR [DIR ...]</span>
<span class="sd"> Create the named DIR(s). Will create leading directories as needed.</span> <span class="sd"> Create the named DIR(s). Will create leading directories as needed.</span>
<span class="sd"> Example:</span> <span class="sd"> Example:</span>
<span class="sd"> mkdir /images</span> <span class="sd"> mkdir /images</span>
<span class="sd"> &#39;&#39;&#39;</span> <span class="sd"> &#39;&#39;&#39;</span>
@ -489,6 +512,7 @@
<span class="sd"> replace PATTERN REPLACEMENT FILEGLOB [FILEGLOB ...]</span> <span class="sd"> replace PATTERN REPLACEMENT FILEGLOB [FILEGLOB ...]</span>
<span class="sd"> Find-and-replace the given PATTERN (Python-style regex) with the given</span> <span class="sd"> Find-and-replace the given PATTERN (Python-style regex) with the given</span>
<span class="sd"> REPLACEMENT string for each of the files listed.</span> <span class="sd"> REPLACEMENT string for each of the files listed.</span>
<span class="sd"> Example:</span> <span class="sd"> Example:</span>
<span class="sd"> replace @VERSION@ ${product.version} /boot/grub.conf /boot/isolinux.cfg</span> <span class="sd"> replace @VERSION@ ${product.version} /boot/grub.conf /boot/isolinux.cfg</span>
<span class="sd"> &#39;&#39;&#39;</span> <span class="sd"> &#39;&#39;&#39;</span>
@ -506,7 +530,9 @@
<span class="sd"> Append STRING (followed by a newline character) to FILE.</span> <span class="sd"> Append STRING (followed by a newline character) to FILE.</span>
<span class="sd"> Python character escape sequences (&#39;\\n&#39;, &#39;\\t&#39;, etc.) will be</span> <span class="sd"> Python character escape sequences (&#39;\\n&#39;, &#39;\\t&#39;, etc.) will be</span>
<span class="sd"> converted to the appropriate characters.</span> <span class="sd"> converted to the appropriate characters.</span>
<span class="sd"> Examples:</span> <span class="sd"> Examples:</span>
<span class="sd"> append /etc/depmod.d/dd.conf &quot;search updates built-in&quot;</span> <span class="sd"> append /etc/depmod.d/dd.conf &quot;search updates built-in&quot;</span>
<span class="sd"> append /etc/resolv.conf &quot;&quot;</span> <span class="sd"> append /etc/resolv.conf &quot;&quot;</span>
<span class="sd"> &#39;&#39;&#39;</span> <span class="sd"> &#39;&#39;&#39;</span>
@ -519,6 +545,7 @@
<span class="sd"> Add an item to the treeinfo data store.</span> <span class="sd"> Add an item to the treeinfo data store.</span>
<span class="sd"> The given SECTION will have a new item added where</span> <span class="sd"> The given SECTION will have a new item added where</span>
<span class="sd"> KEY = ARG ARG ...</span> <span class="sd"> KEY = ARG ARG ...</span>
<span class="sd"> Example:</span> <span class="sd"> Example:</span>
<span class="sd"> treeinfo images-${kernel.arch} boot.iso images/boot.iso</span> <span class="sd"> treeinfo images-${kernel.arch} boot.iso images/boot.iso</span>
<span class="sd"> &#39;&#39;&#39;</span> <span class="sd"> &#39;&#39;&#39;</span>
@ -619,6 +646,7 @@
<span class="sd">&#39;&#39;&#39;</span> <span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> log MESSAGE</span> <span class="sd"> log MESSAGE</span>
<span class="sd"> Emit the given log message. Be sure to put it in quotes!</span> <span class="sd"> Emit the given log message. Be sure to put it in quotes!</span>
<span class="sd"> Example:</span> <span class="sd"> Example:</span>
<span class="sd"> log &quot;Reticulating splines, please wait...&quot;</span> <span class="sd"> log &quot;Reticulating splines, please wait...&quot;</span>
<span class="sd"> &#39;&#39;&#39;</span> <span class="sd"> &#39;&#39;&#39;</span>
@ -737,6 +765,7 @@
<span class="sd">&#39;&#39;&#39;</span> <span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> removepkg PKGGLOB [PKGGLOB...]</span> <span class="sd"> removepkg PKGGLOB [PKGGLOB...]</span>
<span class="sd"> Delete the named package(s).</span> <span class="sd"> Delete the named package(s).</span>
<span class="sd"> IMPLEMENTATION NOTES:</span> <span class="sd"> IMPLEMENTATION NOTES:</span>
<span class="sd"> RPM scriptlets (%preun/%postun) are *not* run.</span> <span class="sd"> RPM scriptlets (%preun/%postun) are *not* run.</span>
<span class="sd"> Files are deleted, but directories are left behind.</span> <span class="sd"> Files are deleted, but directories are left behind.</span>
@ -801,6 +830,7 @@
<span class="sd"> (or packages) named.</span> <span class="sd"> (or packages) named.</span>
<span class="sd"> If &#39;--allbut&#39; is used, all the files from the given package(s) will</span> <span class="sd"> If &#39;--allbut&#39; is used, all the files from the given package(s) will</span>
<span class="sd"> be removed *except* the ones which match the file globs.</span> <span class="sd"> be removed *except* the ones which match the file globs.</span>
<span class="sd"> Examples:</span> <span class="sd"> Examples:</span>
<span class="sd"> removefrom usbutils /usr/bin/*</span> <span class="sd"> removefrom usbutils /usr/bin/*</span>
<span class="sd"> removefrom xfsprogs --allbut /sbin/*</span> <span class="sd"> removefrom xfsprogs --allbut /sbin/*</span>
@ -894,6 +924,7 @@
<span class="sd">&#39;&#39;&#39;</span> <span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> createaddrsize INITRD_ADDRESS INITRD ADDRSIZE</span> <span class="sd"> createaddrsize INITRD_ADDRESS INITRD ADDRSIZE</span>
<span class="sd"> Create the initrd.addrsize file required in LPAR boot process.</span> <span class="sd"> Create the initrd.addrsize file required in LPAR boot process.</span>
<span class="sd"> Examples:</span> <span class="sd"> Examples:</span>
<span class="sd"> createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize</span> <span class="sd"> createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize</span>
<span class="sd"> &#39;&#39;&#39;</span> <span class="sd"> &#39;&#39;&#39;</span>
@ -906,6 +937,7 @@
<span class="sd">&#39;&#39;&#39;</span> <span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> systemctl [enable|disable|mask] UNIT [UNIT...]</span> <span class="sd"> systemctl [enable|disable|mask] UNIT [UNIT...]</span>
<span class="sd"> Enable, disable, or mask the given systemd units.</span> <span class="sd"> Enable, disable, or mask the given systemd units.</span>
<span class="sd"> Examples:</span> <span class="sd"> Examples:</span>
<span class="sd"> systemctl disable lvm2-monitor.service</span> <span class="sd"> systemctl disable lvm2-monitor.service</span>
<span class="sd"> systemctl mask fedora-storage-init.service fedora-configure.service</span> <span class="sd"> systemctl mask fedora-storage-init.service fedora-configure.service</span>
@ -925,6 +957,89 @@
<span class="n">runcmd</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span> <span class="n">runcmd</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span>
<span class="k">except</span> <span class="n">CalledProcessError</span><span class="p">:</span> <span class="k">except</span> <span class="n">CalledProcessError</span><span class="p">:</span>
<span class="k">pass</span></div></div> <span class="k">pass</span></div></div>
<div class="viewcode-block" id="LiveTemplateRunner"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.LiveTemplateRunner">[docs]</a><span class="k">class</span> <span class="nc">LiveTemplateRunner</span><span class="p">(</span><span class="n">TemplateRunner</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> This class parses and executes a limited Lorax template. Sample usage:</span>
<span class="sd"> # install a bunch of packages</span>
<span class="sd"> runner = LiveTemplateRunner(dbo, templatedir, defaults)</span>
<span class="sd"> runner.run(&quot;live-install.tmpl&quot;)</span>
<span class="sd"> It is meant to be used with the live-install.tmpl which lists the per-arch</span>
<span class="sd"> pacages needed to build the live-iso output.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dbo</span><span class="p">,</span> <span class="n">fatalerrors</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">templatedir</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">defaults</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">dbo</span> <span class="o">=</span> <span class="n">dbo</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pkgs</span> <span class="o">=</span> <span class="p">[]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pkgnames</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nb">super</span><span class="p">(</span><span class="n">LiveTemplateRunner</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">fatalerrors</span><span class="p">,</span> <span class="n">templatedir</span><span class="p">,</span> <span class="n">defaults</span><span class="p">)</span>
<div class="viewcode-block" id="LiveTemplateRunner.installpkg"><a class="viewcode-back" href="../../pylorax.html#pylorax.ltmpl.LiveTemplateRunner.installpkg">[docs]</a> <span class="k">def</span> <span class="nf">installpkg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">pkgs</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> installpkg [--required|--optional] [--except PKGGLOB [--except PKGGLOB ...]] PKGGLOB [PKGGLOB ...]</span>
<span class="sd"> Request installation of all packages matching the given globs.</span>
<span class="sd"> Note that this is just a *request* - nothing is *actually* installed</span>
<span class="sd"> until the &#39;run_pkg_transaction&#39; command is given.</span>
<span class="sd"> --required is now the default. If the PKGGLOB can be missing pass --optional</span>
<span class="sd"> &#39;&#39;&#39;</span>
<span class="k">if</span> <span class="n">pkgs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;--optional&#39;</span><span class="p">:</span>
<span class="n">pkgs</span> <span class="o">=</span> <span class="n">pkgs</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">required</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">elif</span> <span class="n">pkgs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;--required&#39;</span><span class="p">:</span>
<span class="n">pkgs</span> <span class="o">=</span> <span class="n">pkgs</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">required</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">required</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">excludes</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">while</span> <span class="s1">&#39;--except&#39;</span> <span class="ow">in</span> <span class="n">pkgs</span><span class="p">:</span>
<span class="n">idx</span> <span class="o">=</span> <span class="n">pkgs</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">&#39;--except&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">pkgs</span><span class="p">)</span> <span class="o">==</span> <span class="n">idx</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;installpkg needs an argument after --except&quot;</span><span class="p">)</span>
<span class="n">excludes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pkgs</span><span class="p">[</span><span class="n">idx</span><span class="o">+</span><span class="mi">1</span><span class="p">])</span>
<span class="n">pkgs</span> <span class="o">=</span> <span class="n">pkgs</span><span class="p">[:</span><span class="n">idx</span><span class="p">]</span> <span class="o">+</span> <span class="n">pkgs</span><span class="p">[</span><span class="n">idx</span><span class="o">+</span><span class="mi">2</span><span class="p">:]</span>
<span class="n">errors</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">pkgs</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="c1"># Start by using Subject to generate a package query, which will</span>
<span class="c1"># give us a query object similar to what dbo.install would select,</span>
<span class="c1"># minus the handling for multilib. This query may contain</span>
<span class="c1"># multiple arches. Pull the package names out of that, filter any</span>
<span class="c1"># that match the excludes patterns, and pass those names back to</span>
<span class="c1"># dbo.install to do the actual, arch and version and multilib</span>
<span class="c1"># aware, package selction.</span>
<span class="c1"># dnf queries don&#39;t have a concept of negative globs which is why</span>
<span class="c1"># the filtering is done the hard way.</span>
<span class="n">pkgnames</span> <span class="o">=</span> <span class="p">[</span><span class="n">pkg</span> <span class="k">for</span> <span class="n">pkg</span> <span class="ow">in</span> <span class="n">dnf</span><span class="o">.</span><span class="n">subject</span><span class="o">.</span><span class="n">Subject</span><span class="p">(</span><span class="n">p</span><span class="p">)</span><span class="o">.</span><span class="n">get_best_query</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dbo</span><span class="o">.</span><span class="n">sack</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">latest</span><span class="o">=</span><span class="kc">True</span><span class="p">)]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">pkgnames</span><span class="p">:</span>
<span class="k">raise</span> <span class="n">dnf</span><span class="o">.</span><span class="n">exceptions</span><span class="o">.</span><span class="n">PackageNotFoundError</span><span class="p">(</span><span class="s2">&quot;no package matched&quot;</span><span class="p">,</span> <span class="n">p</span><span class="p">)</span>
<span class="c1"># Apply excludes to the name only</span>
<span class="k">for</span> <span class="n">exclude</span> <span class="ow">in</span> <span class="n">excludes</span><span class="p">:</span>
<span class="n">pkgnames</span> <span class="o">=</span> <span class="p">[</span><span class="n">pkg</span> <span class="k">for</span> <span class="n">pkg</span> <span class="ow">in</span> <span class="n">pkgnames</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">fnmatch</span><span class="o">.</span><span class="n">fnmatch</span><span class="p">(</span><span class="n">pkg</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">exclude</span><span class="p">)]</span>
<span class="c1"># Convert to a sorted NVR list for installation</span>
<span class="n">pkgnvrs</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">([</span><span class="s2">&quot;</span><span class="si">{}</span><span class="s2">-</span><span class="si">{}</span><span class="s2">-</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">pkg</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">pkg</span><span class="o">.</span><span class="n">version</span><span class="p">,</span> <span class="n">pkg</span><span class="o">.</span><span class="n">release</span><span class="p">)</span> <span class="k">for</span> <span class="n">pkg</span> <span class="ow">in</span> <span class="n">pkgnames</span><span class="p">])</span>
<span class="c1"># If the request is a glob, expand it in the log</span>
<span class="k">if</span> <span class="nb">any</span><span class="p">(</span><span class="n">g</span> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;*&#39;</span><span class="p">,</span><span class="s1">&#39;?&#39;</span><span class="p">,</span><span class="s1">&#39;.&#39;</span><span class="p">]</span> <span class="k">if</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">p</span><span class="p">):</span>
<span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;installpkg: </span><span class="si">%s</span><span class="s2"> expands to </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="s2">&quot;,&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">pkgnvrs</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pkgs</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">pkgnvrs</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pkgnames</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="n">pkg</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">pkg</span> <span class="ow">in</span> <span class="n">pkgnames</span><span class="p">])</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> <span class="c1"># pylint: disable=broad-except</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;installpkg </span><span class="si">%s</span><span class="s2"> failed: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
<span class="n">errors</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">if</span> <span class="n">errors</span> <span class="ow">and</span> <span class="n">required</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&quot;Required installpkg failed.&quot;</span><span class="p">)</span></div></div>
</pre></div> </pre></div>
</div> </div>
@ -937,7 +1052,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -956,27 +1071,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.monitor &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.monitor &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -361,7 +362,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -380,27 +381,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.mount &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.mount &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -268,7 +269,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -287,27 +288,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.sysutils &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.sysutils &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -298,7 +299,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -317,27 +318,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.treebuilder &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.treebuilder &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -394,7 +395,8 @@
<div class="viewcode-block" id="TreeBuilder"><a class="viewcode-back" href="../../pylorax.html#pylorax.treebuilder.TreeBuilder">[docs]</a><span class="k">class</span> <span class="nc">TreeBuilder</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> <div class="viewcode-block" id="TreeBuilder"><a class="viewcode-back" href="../../pylorax.html#pylorax.treebuilder.TreeBuilder">[docs]</a><span class="k">class</span> <span class="nc">TreeBuilder</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;Builds the arch-specific boot images.</span> <span class="sd">&#39;&#39;&#39;Builds the arch-specific boot images.</span>
<span class="sd"> inroot should be the installtree root (the newly-built runtime dir)&#39;&#39;&#39;</span> <span class="sd"> inroot should be the installtree root (the newly-built runtime dir)&#39;&#39;&#39;</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">product</span><span class="p">,</span> <span class="n">arch</span><span class="p">,</span> <span class="n">inroot</span><span class="p">,</span> <span class="n">outroot</span><span class="p">,</span> <span class="n">runtime</span><span class="p">,</span> <span class="n">isolabel</span><span class="p">,</span> <span class="n">domacboot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">doupgrade</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">templatedir</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">add_templates</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">add_template_vars</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">workdir</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">product</span><span class="p">,</span> <span class="n">arch</span><span class="p">,</span> <span class="n">inroot</span><span class="p">,</span> <span class="n">outroot</span><span class="p">,</span> <span class="n">runtime</span><span class="p">,</span> <span class="n">isolabel</span><span class="p">,</span> <span class="n">domacboot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">doupgrade</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">templatedir</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">add_templates</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">add_template_vars</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">workdir</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">extra_boot_args</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">):</span>
<span class="c1"># NOTE: if you pass an arg named &quot;runtime&quot; to a mako template it&#39;ll</span> <span class="c1"># NOTE: if you pass an arg named &quot;runtime&quot; to a mako template it&#39;ll</span>
<span class="c1"># clobber some mako internal variables - hence &quot;runtime_img&quot;.</span> <span class="c1"># clobber some mako internal variables - hence &quot;runtime_img&quot;.</span>
@ -403,7 +405,8 @@
<span class="n">inroot</span><span class="o">=</span><span class="n">inroot</span><span class="p">,</span> <span class="n">outroot</span><span class="o">=</span><span class="n">outroot</span><span class="p">,</span> <span class="n">inroot</span><span class="o">=</span><span class="n">inroot</span><span class="p">,</span> <span class="n">outroot</span><span class="o">=</span><span class="n">outroot</span><span class="p">,</span>
<span class="n">basearch</span><span class="o">=</span><span class="n">arch</span><span class="o">.</span><span class="n">basearch</span><span class="p">,</span> <span class="n">libdir</span><span class="o">=</span><span class="n">arch</span><span class="o">.</span><span class="n">libdir</span><span class="p">,</span> <span class="n">basearch</span><span class="o">=</span><span class="n">arch</span><span class="o">.</span><span class="n">basearch</span><span class="p">,</span> <span class="n">libdir</span><span class="o">=</span><span class="n">arch</span><span class="o">.</span><span class="n">libdir</span><span class="p">,</span>
<span class="n">isolabel</span><span class="o">=</span><span class="n">isolabel</span><span class="p">,</span> <span class="n">udev</span><span class="o">=</span><span class="n">udev_escape</span><span class="p">,</span> <span class="n">domacboot</span><span class="o">=</span><span class="n">domacboot</span><span class="p">,</span> <span class="n">doupgrade</span><span class="o">=</span><span class="n">doupgrade</span><span class="p">,</span> <span class="n">isolabel</span><span class="o">=</span><span class="n">isolabel</span><span class="p">,</span> <span class="n">udev</span><span class="o">=</span><span class="n">udev_escape</span><span class="p">,</span> <span class="n">domacboot</span><span class="o">=</span><span class="n">domacboot</span><span class="p">,</span> <span class="n">doupgrade</span><span class="o">=</span><span class="n">doupgrade</span><span class="p">,</span>
<span class="n">workdir</span><span class="o">=</span><span class="n">workdir</span><span class="p">,</span> <span class="n">lower</span><span class="o">=</span><span class="n">string_lower</span><span class="p">)</span> <span class="n">workdir</span><span class="o">=</span><span class="n">workdir</span><span class="p">,</span> <span class="n">lower</span><span class="o">=</span><span class="n">string_lower</span><span class="p">,</span>
<span class="n">extra_boot_args</span><span class="o">=</span><span class="n">extra_boot_args</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_runner</span> <span class="o">=</span> <span class="n">LoraxTemplateRunner</span><span class="p">(</span><span class="n">inroot</span><span class="p">,</span> <span class="n">outroot</span><span class="p">,</span> <span class="n">templatedir</span><span class="o">=</span><span class="n">templatedir</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">_runner</span> <span class="o">=</span> <span class="n">LoraxTemplateRunner</span><span class="p">(</span><span class="n">inroot</span><span class="p">,</span> <span class="n">outroot</span><span class="p">,</span> <span class="n">templatedir</span><span class="o">=</span><span class="n">templatedir</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_runner</span><span class="o">.</span><span class="n">defaults</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vars</span> <span class="bp">self</span><span class="o">.</span><span class="n">_runner</span><span class="o">.</span><span class="n">defaults</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vars</span>
<span class="bp">self</span><span class="o">.</span><span class="n">add_templates</span> <span class="o">=</span> <span class="n">add_templates</span> <span class="ow">or</span> <span class="p">[]</span> <span class="bp">self</span><span class="o">.</span><span class="n">add_templates</span> <span class="o">=</span> <span class="n">add_templates</span> <span class="ow">or</span> <span class="p">[]</span>
@ -566,7 +569,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -585,27 +588,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.treeinfo &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.treeinfo &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -223,7 +224,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -242,27 +243,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'../../',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'../../', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="../../_static/jquery.js"></script>
</script> <script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -175,6 +175,18 @@ The ``[[customizations]]`` section can be used to configure the hostname of the
hostname = "baseimage" hostname = "baseimage"
[customizations.kernel]
***********************
This allows you to append arguments to the bootloader's kernel commandline. This will not have any
effect on ``tar`` or ``ext4-filesystem`` images since they do not include a bootloader.
For example::
[customizations.kernel]
append = "nosmt=force"
[[customizations.sshkey]] [[customizations.sshkey]]
************************* *************************

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
VERSION: '28.14.21', VERSION: '28.14.25',
LANGUAGE: 'None', LANGUAGE: 'None',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',

View File

@ -1,3 +1 @@
/* sphinx_rtd_theme version 0.4.2 | MIT license */ require=function r(s,a,l){function c(i,n){if(!a[i]){if(!s[i]){var e="function"==typeof require&&require;if(!n&&e)return e(i,!0);if(u)return u(i,!0);var t=new Error("Cannot find module '"+i+"'");throw t.code="MODULE_NOT_FOUND",t}var o=a[i]={exports:{}};s[i][0].call(o.exports,function(n){var e=s[i][1][n];return c(e||n)},o,o.exports,r,s,a,l)}return a[i].exports}for(var u="function"==typeof require&&require,n=0;n<l.length;n++)c(l[n]);return c}({"sphinx-rtd-theme":[function(n,e,i){var jQuery="undefined"!=typeof window?window.jQuery:n("jquery");e.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(e){var i=this;"undefined"==typeof withStickNav&&(e=!0),i.isRunning||(i.isRunning=!0,jQuery(function(n){i.init(n),i.reset(),i.win.on("hashchange",i.reset),e&&i.win.on("scroll",function(){i.linkScroll||i.winScroll||(i.winScroll=!0,requestAnimationFrame(function(){i.onScroll()}))}),i.win.on("resize",function(){i.winResize||(i.winResize=!0,requestAnimationFrame(function(){i.onResize()}))}),i.onResize()}))},enableSticky:function(){this.enable(!0)},init:function(i){i(document);var t=this;this.navBar=i("div.wy-side-scroll:first"),this.win=i(window),i(document).on("click","[data-toggle='wy-nav-top']",function(){i("[data-toggle='wy-nav-shift']").toggleClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift")}).on("click",".wy-menu-vertical .current ul li a",function(){var n=i(this);i("[data-toggle='wy-nav-shift']").removeClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift"),t.toggleCurrent(n),t.hashChange()}).on("click","[data-toggle='rst-current-version']",function(){i("[data-toggle='rst-versions']").toggleClass("shift-up")}),i("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),i("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),i("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var e=i(this);expand=i('<span class="toctree-expand"></span>'),expand.on("click",function(n){return t.toggleCurrent(e),n.stopPropagation(),!1}),e.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}0<i.length&&($(".wy-menu-vertical .current").removeClass("current"),i.addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l1").parent().addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l2").addClass("current"),i.closest("li.toctree-l3").addClass("current"),i.closest("li.toctree-l4").addClass("current"))}catch(o){console.log("Error expanding nav for anchor",o)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,i=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var r=0,n=["ms","moz","webkit","o"],e=0;e<n.length&&!window.requestAnimationFrame;++e)window.requestAnimationFrame=window[n[e]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[n[e]+"CancelAnimationFrame"]||window[n[e]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(n,e){var i=(new Date).getTime(),t=Math.max(0,16-(i-r)),o=window.setTimeout(function(){n(i+t)},t);return r=i+t,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()},{jquery:"jquery"}]},{},["sphinx-rtd-theme"]);
/* Built 20181005 13:10 */
require=function r(s,a,l){function c(e,n){if(!a[e]){if(!s[e]){var i="function"==typeof require&&require;if(!n&&i)return i(e,!0);if(u)return u(e,!0);var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}var o=a[e]={exports:{}};s[e][0].call(o.exports,function(n){return c(s[e][1][n]||n)},o,o.exports,r,s,a,l)}return a[e].exports}for(var u="function"==typeof require&&require,n=0;n<l.length;n++)c(l[n]);return c}({"sphinx-rtd-theme":[function(n,e,i){var jQuery="undefined"!=typeof window?window.jQuery:n("jquery");e.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(e){var i=this;void 0===e&&(e=!0),i.isRunning||(i.isRunning=!0,jQuery(function(n){i.init(n),i.reset(),i.win.on("hashchange",i.reset),e&&i.win.on("scroll",function(){i.linkScroll||i.winScroll||(i.winScroll=!0,requestAnimationFrame(function(){i.onScroll()}))}),i.win.on("resize",function(){i.winResize||(i.winResize=!0,requestAnimationFrame(function(){i.onResize()}))}),i.onResize()}))},enableSticky:function(){this.enable(!0)},init:function(i){i(document);var t=this;this.navBar=i("div.wy-side-scroll:first"),this.win=i(window),i(document).on("click","[data-toggle='wy-nav-top']",function(){i("[data-toggle='wy-nav-shift']").toggleClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift")}).on("click",".wy-menu-vertical .current ul li a",function(){var n=i(this);i("[data-toggle='wy-nav-shift']").removeClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift"),t.toggleCurrent(n),t.hashChange()}).on("click","[data-toggle='rst-current-version']",function(){i("[data-toggle='rst-versions']").toggleClass("shift-up")}),i("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),i("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),i("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var e=i(this);expand=i('<span class="toctree-expand"></span>'),expand.on("click",function(n){return t.toggleCurrent(e),n.stopPropagation(),!1}),e.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}0<i.length&&($(".wy-menu-vertical .current").removeClass("current"),i.addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l1").parent().addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l2").addClass("current"),i.closest("li.toctree-l3").addClass("current"),i.closest("li.toctree-l4").addClass("current"))}catch(o){console.log("Error expanding nav for anchor",o)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,i=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var r=0,n=["ms","moz","webkit","o"],e=0;e<n.length&&!window.requestAnimationFrame;++e)window.requestAnimationFrame=window[n[e]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[n[e]+"CancelAnimationFrame"]||window[n[e]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(n,e){var i=(new Date).getTime(),t=Math.max(0,16-(i-r)),o=window.setTimeout(function(){n(i+t)},t);return r=i+t,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()},{jquery:"jquery"}]},{},["sphinx-rtd-theme"]);

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>composer-cli &mdash; Lorax 28.14.21 documentation</title> <title>composer-cli &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -58,7 +59,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -370,7 +371,7 @@ save the qcow2 image as <code class="docutils literal notranslate"><span class="
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -389,27 +390,27 @@ save the qcow2 image as <code class="docutils literal notranslate"><span class="
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -9,7 +9,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Index &mdash; Lorax 28.14.21 documentation</title> <title>Index &mdash; Lorax 28.14.25 documentation</title>
@ -25,7 +25,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="#" /> <link rel="index" title="Index" href="#" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -57,7 +58,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -229,6 +230,8 @@
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylorax.html#pylorax.creator.calculate_disk_size">calculate_disk_size() (in module pylorax.creator)</a> <li><a href="pylorax.html#pylorax.creator.calculate_disk_size">calculate_disk_size() (in module pylorax.creator)</a>
</li>
<li><a href="pylorax.html#pylorax.creator.check_kickstart">check_kickstart() (in module pylorax.creator)</a>
</li> </li>
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.chmod">chmod() (pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.chmod">chmod() (pylorax.ltmpl.LoraxTemplateRunner method)</a>
</li> </li>
@ -249,11 +252,11 @@
<li><a href="pylorax.api.html#pylorax.api.recipes.CommitTimeValError">CommitTimeValError</a> <li><a href="pylorax.api.html#pylorax.api.recipes.CommitTimeValError">CommitTimeValError</a>
</li> </li>
<li><a href="pylorax.api.html#pylorax.api.config.ComposerConfig">ComposerConfig (class in pylorax.api.config)</a> <li><a href="pylorax.api.html#pylorax.api.config.ComposerConfig">ComposerConfig (class in pylorax.api.config)</a>
</li>
<li><a href="pylorax.html#pylorax.imgutils.compress">compress() (in module pylorax.imgutils)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylorax.html#pylorax.imgutils.compress">compress() (in module pylorax.imgutils)</a>
</li>
<li><a href="pylorax.api.html#pylorax.api.config.configure">configure() (in module pylorax.api.config)</a> <li><a href="pylorax.api.html#pylorax.api.config.configure">configure() (in module pylorax.api.config)</a>
<ul> <ul>
@ -454,8 +457,12 @@
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.installkernel">installkernel() (pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.installkernel">installkernel() (pylorax.ltmpl.LoraxTemplateRunner method)</a>
</li> </li>
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.installpkg">installpkg() (pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.LiveTemplateRunner.installpkg">installpkg() (pylorax.ltmpl.LiveTemplateRunner method)</a>
<ul>
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.installpkg">(pylorax.ltmpl.LoraxTemplateRunner method)</a>
</li> </li>
</ul></li>
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.installupgradeinitrd">installupgradeinitrd() (pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.installupgradeinitrd">installupgradeinitrd() (pylorax.ltmpl.LoraxTemplateRunner method)</a>
</li> </li>
<li><a href="pylorax.api.html#pylorax.api.recipes.is_commit_tag">is_commit_tag() (in module pylorax.api.recipes)</a> <li><a href="pylorax.api.html#pylorax.api.recipes.is_commit_tag">is_commit_tag() (in module pylorax.api.recipes)</a>
@ -499,6 +506,8 @@
<li><a href="pylorax.api.html#pylorax.api.recipes.list_commit_files">list_commit_files() (in module pylorax.api.recipes)</a> <li><a href="pylorax.api.html#pylorax.api.recipes.list_commit_files">list_commit_files() (in module pylorax.api.recipes)</a>
</li> </li>
<li><a href="pylorax.api.html#pylorax.api.recipes.list_commits">list_commits() (in module pylorax.api.recipes)</a> <li><a href="pylorax.api.html#pylorax.api.recipes.list_commits">list_commits() (in module pylorax.api.recipes)</a>
</li>
<li><a href="pylorax.html#pylorax.ltmpl.LiveTemplateRunner">LiveTemplateRunner (class in pylorax.ltmpl)</a>
</li> </li>
<li><a href="pylorax.html#pylorax.cmdline.lmc_parser">lmc_parser() (in module pylorax.cmdline)</a> <li><a href="pylorax.html#pylorax.cmdline.lmc_parser">lmc_parser() (in module pylorax.cmdline)</a>
</li> </li>
@ -786,10 +795,10 @@
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.remove">(pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.remove">(pylorax.ltmpl.LoraxTemplateRunner method)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.removefrom">removefrom() (pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.removefrom">removefrom() (pylorax.ltmpl.LoraxTemplateRunner method)</a>
</li> </li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.removekmod">removekmod() (pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.removekmod">removekmod() (pylorax.ltmpl.LoraxTemplateRunner method)</a>
</li> </li>
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.removepkg">removepkg() (pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.removepkg">removepkg() (pylorax.ltmpl.LoraxTemplateRunner method)</a>
@ -800,6 +809,8 @@
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.replace">(pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.replace">(pylorax.ltmpl.LoraxTemplateRunner method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="pylorax.api.html#pylorax.api.recipes.repo_file_exists">repo_file_exists() (in module pylorax.api.recipes)</a>
</li>
<li><a href="pylorax.api.html#pylorax.api.projects.repo_to_source">repo_to_source() (in module pylorax.api.projects)</a> <li><a href="pylorax.api.html#pylorax.api.projects.repo_to_source">repo_to_source() (in module pylorax.api.projects)</a>
</li> </li>
<li><a href="pylorax.html#pylorax.creator.FakeDNF.reset">reset() (pylorax.creator.FakeDNF method)</a> <li><a href="pylorax.html#pylorax.creator.FakeDNF.reset">reset() (pylorax.creator.FakeDNF method)</a>
@ -817,7 +828,7 @@
<li><a href="pylorax.html#pylorax.Lorax.run">run() (pylorax.Lorax method)</a> <li><a href="pylorax.html#pylorax.Lorax.run">run() (pylorax.Lorax method)</a>
<ul> <ul>
<li><a href="pylorax.html#pylorax.ltmpl.LoraxTemplateRunner.run">(pylorax.ltmpl.LoraxTemplateRunner method)</a> <li><a href="pylorax.html#pylorax.ltmpl.TemplateRunner.run">(pylorax.ltmpl.TemplateRunner method)</a>
</li> </li>
</ul></li> </ul></li>
<li><a href="pylorax.html#pylorax.creator.run_creator">run_creator() (in module pylorax.creator)</a> <li><a href="pylorax.html#pylorax.creator.run_creator">run_creator() (in module pylorax.creator)</a>
@ -879,6 +890,8 @@
<li><a href="pylorax.api.html#pylorax.api.recipes.tag_recipe_commit">tag_recipe_commit() (in module pylorax.api.recipes)</a> <li><a href="pylorax.api.html#pylorax.api.recipes.tag_recipe_commit">tag_recipe_commit() (in module pylorax.api.recipes)</a>
</li> </li>
<li><a href="pylorax.html#pylorax.Lorax.templatedir">templatedir (pylorax.Lorax attribute)</a> <li><a href="pylorax.html#pylorax.Lorax.templatedir">templatedir (pylorax.Lorax attribute)</a>
</li>
<li><a href="pylorax.html#pylorax.ltmpl.TemplateRunner">TemplateRunner (class in pylorax.ltmpl)</a>
</li> </li>
<li><a href="pylorax.html#pylorax.monitor.LogServer.timeout">timeout (pylorax.monitor.LogServer attribute)</a> <li><a href="pylorax.html#pylorax.monitor.LogServer.timeout">timeout (pylorax.monitor.LogServer attribute)</a>
</li> </li>
@ -969,7 +982,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -988,27 +1001,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to Loraxs documentation! &mdash; Lorax 28.14.21 documentation</title> <title>Welcome to Loraxs documentation! &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -57,7 +58,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -204,7 +205,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -223,27 +224,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Introduction to Lorax &mdash; Lorax 28.14.21 documentation</title> <title>Introduction to Lorax &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -58,7 +59,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -227,7 +228,7 @@ upd-instroot and mk-images* scripts.</p>
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -246,27 +247,27 @@ upd-instroot and mk-images* scripts.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>livemedia-creator &mdash; Lorax 28.14.21 documentation</title> <title>livemedia-creator &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -58,7 +59,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -230,6 +231,7 @@ you have the anaconda-tui package installed.</p>
<span class="p">[</span><span class="o">--</span><span class="n">logfile</span> <span class="n">LOGFILE</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">logfile</span> <span class="n">LOGFILE</span><span class="p">]</span>
<span class="p">[</span><span class="o">--</span><span class="n">lorax</span><span class="o">-</span><span class="n">templates</span> <span class="n">LORAX_TEMPLATES</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">tmp</span> <span class="n">TMP</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">lorax</span><span class="o">-</span><span class="n">templates</span> <span class="n">LORAX_TEMPLATES</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">tmp</span> <span class="n">TMP</span><span class="p">]</span>
<span class="p">[</span><span class="o">--</span><span class="n">resultdir</span> <span class="n">RESULT_DIR</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">macboot</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">nomacboot</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">resultdir</span> <span class="n">RESULT_DIR</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">macboot</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">nomacboot</span><span class="p">]</span>
<span class="p">[</span><span class="o">--</span><span class="n">extra</span><span class="o">-</span><span class="n">boot</span><span class="o">-</span><span class="n">args</span> <span class="n">EXTRA_BOOT_ARGS</span><span class="p">]</span>
<span class="p">[</span><span class="o">--</span><span class="n">disk</span><span class="o">-</span><span class="n">image</span> <span class="n">DISK_IMAGE</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">keep</span><span class="o">-</span><span class="n">image</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">disk</span><span class="o">-</span><span class="n">image</span> <span class="n">DISK_IMAGE</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">keep</span><span class="o">-</span><span class="n">image</span><span class="p">]</span>
<span class="p">[</span><span class="o">--</span><span class="n">fs</span><span class="o">-</span><span class="n">image</span> <span class="n">FS_IMAGE</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">image</span><span class="o">-</span><span class="n">name</span> <span class="n">IMAGE_NAME</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">fs</span><span class="o">-</span><span class="n">image</span> <span class="n">FS_IMAGE</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">image</span><span class="o">-</span><span class="n">name</span> <span class="n">IMAGE_NAME</span><span class="p">]</span>
<span class="p">[</span><span class="o">--</span><span class="n">fs</span><span class="o">-</span><span class="n">label</span> <span class="n">FS_LABEL</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">image</span><span class="o">-</span><span class="nb">type</span> <span class="n">IMAGE_TYPE</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">fs</span><span class="o">-</span><span class="n">label</span> <span class="n">FS_LABEL</span><span class="p">]</span> <span class="p">[</span><span class="o">--</span><span class="n">image</span><span class="o">-</span><span class="nb">type</span> <span class="n">IMAGE_TYPE</span><span class="p">]</span>
@ -369,6 +371,12 @@ you have the anaconda-tui package installed.</p>
<tr><td class="option-group"> <tr><td class="option-group">
<kbd>--nomacboot</kbd></td> <kbd>--nomacboot</kbd></td>
<td>Default: True</td></tr> <td>Default: True</td></tr>
<tr><td class="option-group" colspan="2">
<kbd>--extra-boot-args</kbd></td>
</tr>
<tr><td>&#160;</td><td><p class="first">Extra arguments to add to the bootloader kernel cmdline in the templates</p>
<p class="last">Default: “”</p>
</td></tr>
<tr><td class="option-group"> <tr><td class="option-group">
<kbd>--title</kbd></td> <kbd>--title</kbd></td>
<td><p class="first">Substituted for &#64;TITLE&#64; in bootloader config files</p> <td><p class="first">Substituted for &#64;TITLE&#64; in bootloader config files</p>
@ -1129,7 +1137,7 @@ report bugs against the lorax component.</p>
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -1148,27 +1156,27 @@ report bugs against the lorax component.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>lorax-composer &mdash; Lorax 28.14.21 documentation</title> <title>lorax-composer &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -58,7 +59,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -104,6 +105,7 @@
<li class="toctree-l3"><a class="reference internal" href="#packages-and-modules">[[packages]] and [[modules]]</a></li> <li class="toctree-l3"><a class="reference internal" href="#packages-and-modules">[[packages]] and [[modules]]</a></li>
<li class="toctree-l3"><a class="reference internal" href="#groups">[[groups]]</a></li> <li class="toctree-l3"><a class="reference internal" href="#groups">[[groups]]</a></li>
<li class="toctree-l3"><a class="reference internal" href="#customizations">Customizations</a><ul> <li class="toctree-l3"><a class="reference internal" href="#customizations">Customizations</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#customizations-kernel">[customizations.kernel]</a></li>
<li class="toctree-l4"><a class="reference internal" href="#customizations-sshkey">[[customizations.sshkey]]</a></li> <li class="toctree-l4"><a class="reference internal" href="#customizations-sshkey">[[customizations.sshkey]]</a></li>
<li class="toctree-l4"><a class="reference internal" href="#customizations-user">[[customizations.user]]</a></li> <li class="toctree-l4"><a class="reference internal" href="#customizations-user">[[customizations.user]]</a></li>
<li class="toctree-l4"><a class="reference internal" href="#customizations-group">[[customizations.group]]</a></li> <li class="toctree-l4"><a class="reference internal" href="#customizations-group">[[customizations.group]]</a></li>
@ -424,6 +426,16 @@ for selecting optional packages.</p>
<span class="n">hostname</span> <span class="o">=</span> <span class="s2">&quot;baseimage&quot;</span> <span class="n">hostname</span> <span class="o">=</span> <span class="s2">&quot;baseimage&quot;</span>
</pre></div> </pre></div>
</div> </div>
<div class="section" id="customizations-kernel">
<h4>[customizations.kernel]<a class="headerlink" href="#customizations-kernel" title="Permalink to this headline"></a></h4>
<p>This allows you to append arguments to the bootloaders kernel commandline. This will not have any
effect on <code class="docutils literal notranslate"><span class="pre">tar</span></code> or <code class="docutils literal notranslate"><span class="pre">ext4-filesystem</span></code> images since they do not include a bootloader.</p>
<p>For example:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">customizations</span><span class="o">.</span><span class="n">kernel</span><span class="p">]</span>
<span class="n">append</span> <span class="o">=</span> <span class="s2">&quot;nosmt=force&quot;</span>
</pre></div>
</div>
</div>
<div class="section" id="customizations-sshkey"> <div class="section" id="customizations-sshkey">
<h4>[[customizations.sshkey]]<a class="headerlink" href="#customizations-sshkey" title="Permalink to this headline"></a></h4> <h4>[[customizations.sshkey]]<a class="headerlink" href="#customizations-sshkey" title="Permalink to this headline"></a></h4>
<p>Set an existing users ssh key in the final image:</p> <p>Set an existing users ssh key in the final image:</p>
@ -609,7 +621,7 @@ sources from <code class="docutils literal notranslate"><span class="pre">/etc/y
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -628,27 +640,27 @@ sources from <code class="docutils literal notranslate"><span class="pre">/etc/y
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lorax &mdash; Lorax 28.14.21 documentation</title> <title>Lorax &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -58,7 +59,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -334,14 +335,14 @@ repositories.</p>
<tr><td class="option-group"> <tr><td class="option-group">
<kbd>--tmp</kbd></td> <kbd>--tmp</kbd></td>
<td><p class="first">Top level temporary directory</p> <td><p class="first">Top level temporary directory</p>
<p class="last">Default: “/var/tmp”</p> <p class="last">Default: “/var/tmp/lorax</p>
</td></tr> </td></tr>
<tr><td class="option-group"> <tr><td class="option-group">
<kbd>--cachedir</kbd></td> <kbd>--cachedir</kbd></td>
<td>DNF cache directory. Default is a temporary dir.</td></tr> <td>DNF cache directory. Default is a temporary dir.</td></tr>
<tr><td class="option-group"> <tr><td class="option-group">
<kbd>--workdir</kbd></td> <kbd>--workdir</kbd></td>
<td>Work directory, overrides tmp. Default is a temporary dir under /var/tmp</td></tr> <td>Work directory, overrides tmp. Default is a temporary dir under /var/tmp/lorax</td></tr>
<tr><td class="option-group"> <tr><td class="option-group">
<kbd>--force</kbd></td> <kbd>--force</kbd></td>
<td><p class="first">Run even when the destination directory exists</p> <td><p class="first">Run even when the destination directory exists</p>
@ -545,7 +546,7 @@ should) select the specific template directory by passing <code class="docutils
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -564,27 +565,27 @@ should) select the specific template directory by passing <code class="docutils
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax &mdash; Lorax 28.14.21 documentation</title> <title>pylorax &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -58,7 +59,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -227,7 +228,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -246,27 +247,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

Binary file not shown.

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Product and Updates Images &mdash; Lorax 28.14.21 documentation</title> <title>Product and Updates Images &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -58,7 +59,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -199,7 +200,7 @@ command or the installpkgs paramater of <a class="reference internal" href="pylo
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -218,27 +219,27 @@ command or the installpkgs paramater of <a class="reference internal" href="pylo
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Python Module Index &mdash; Lorax 28.14.21 documentation</title> <title>Python Module Index &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -59,7 +60,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -302,7 +303,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -321,27 +322,27 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax.api package &mdash; Lorax 28.14.21 documentation</title> <title>pylorax.api package &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -57,7 +58,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -1106,7 +1107,7 @@ be tried.</p>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The tag or None if there isnt one</p> <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The tag or None if there isnt one</p>
</td> </td>
</tr> </tr>
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)">str</a> or <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.7)">None</a></p> <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)">str</a> or None</p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -1133,7 +1134,7 @@ be a tag at all.</p>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">First dict with matching name, or None</p> <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">First dict with matching name, or None</p>
</td> </td>
</tr> </tr>
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(in Python v3.7)">dict</a> or <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.7)">None</a></p> <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#dict" title="(in Python v3.7)">dict</a> or None</p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -1179,7 +1180,7 @@ be a tag at all.</p>
</tr> </tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">The integer revision or None</td> <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">The integer revision or None</td>
</tr> </tr>
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.7)">int</a> or <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.7)">None</a></td> <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.7)">int</a> or None</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -1614,6 +1615,31 @@ commit:filename</p>
</table> </table>
</dd></dl> </dd></dl>
<dl class="function">
<dt id="pylorax.api.recipes.repo_file_exists">
<code class="descclassname">pylorax.api.recipes.</code><code class="descname">repo_file_exists</code><span class="sig-paren">(</span><em>repo</em>, <em>branch</em>, <em>filename</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/api/recipes.html#repo_file_exists"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.api.recipes.repo_file_exists" title="Permalink to this definition"></a></dt>
<dd><p>Return True if the filename exists on the branch</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
<li><strong>repo</strong> (<em>Git.Repository</em>) Open repository</li>
<li><strong>branch</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)"><em>str</em></a>) Branch name</li>
<li><strong>filename</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.7)"><em>str</em></a>) Filename to check</li>
</ul>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">True if the filename exists on the HEAD of the branch, False otherwise.</p>
</td>
</tr>
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://docs.python.org/3/library/functions.html#bool" title="(in Python v3.7)">bool</a></p>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="function"> <dl class="function">
<dt id="pylorax.api.recipes.revert_file"> <dt id="pylorax.api.recipes.revert_file">
<code class="descclassname">pylorax.api.recipes.</code><code class="descname">revert_file</code><span class="sig-paren">(</span><em>repo</em>, <em>branch</em>, <em>filename</em>, <em>commit</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/api/recipes.html#revert_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.api.recipes.revert_file" title="Permalink to this definition"></a></dt> <code class="descclassname">pylorax.api.recipes.</code><code class="descname">revert_file</code><span class="sig-paren">(</span><em>repo</em>, <em>branch</em>, <em>filename</em>, <em>commit</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/api/recipes.html#revert_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.api.recipes.revert_file" title="Permalink to this definition"></a></dt>
@ -1839,7 +1865,7 @@ If the commit has already been tagged it will return false.</p>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The workspace copy of the recipe, or None if it doesnt exist</p> <tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">The workspace copy of the recipe, or None if it doesnt exist</p>
</td> </td>
</tr> </tr>
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference internal" href="#pylorax.api.recipes.Recipe" title="pylorax.api.recipes.Recipe">Recipe</a> or <a class="reference external" href="https://docs.python.org/3/library/constants.html#None" title="(in Python v3.7)">None</a></p> <tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first"><a class="reference internal" href="#pylorax.api.recipes.Recipe" title="pylorax.api.recipes.Recipe">Recipe</a> or None</p>
</td> </td>
</tr> </tr>
<tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last">RecipeFileError</p> <tr class="field-even field"><th class="field-name">Raises:</th><td class="field-body"><p class="first last">RecipeFileError</p>
@ -1903,7 +1929,7 @@ If the commit has already been tagged it will return false.</p>
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -1922,27 +1948,27 @@ If the commit has already been tagged it will return false.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pylorax package &mdash; Lorax 28.14.21 documentation</title> <title>pylorax package &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
@ -58,7 +59,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -326,6 +327,31 @@ this. Everything else should be a nop.</p>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<p>Also takes into account the use of reqpart or reqpart add-boot</p>
</dd></dl>
<dl class="function">
<dt id="pylorax.creator.check_kickstart">
<code class="descclassname">pylorax.creator.</code><code class="descname">check_kickstart</code><span class="sig-paren">(</span><em>ks</em>, <em>opts</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/creator.html#check_kickstart"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.creator.check_kickstart" title="Permalink to this definition"></a></dt>
<dd><p>Check the parsed kickstart object for errors</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
<li><strong>ks</strong> (<em>pykickstart.parser.KickstartParser</em>) Parsed Kickstart object</li>
<li><strong>opts</strong> (<em>Either a DataHolder</em><em> or </em><em>ArgumentParser</em>) Commandline options to control the process</li>
</ul>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">List of error strings or empty list</p>
</td>
</tr>
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last"><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#list" title="(in Python v3.7)">list</a></p>
</td>
</tr>
</tbody>
</table>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
@ -1338,6 +1364,33 @@ image and then optionally, based on the opts passed, creates tarfile.</p>
</div> </div>
<div class="section" id="module-pylorax.ltmpl"> <div class="section" id="module-pylorax.ltmpl">
<span id="pylorax-ltmpl-module"></span><h2>pylorax.ltmpl module<a class="headerlink" href="#module-pylorax.ltmpl" title="Permalink to this headline"></a></h2> <span id="pylorax-ltmpl-module"></span><h2>pylorax.ltmpl module<a class="headerlink" href="#module-pylorax.ltmpl" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="pylorax.ltmpl.LiveTemplateRunner">
<em class="property">class </em><code class="descclassname">pylorax.ltmpl.</code><code class="descname">LiveTemplateRunner</code><span class="sig-paren">(</span><em>dbo</em>, <em>fatalerrors=True</em>, <em>templatedir=None</em>, <em>defaults=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LiveTemplateRunner"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LiveTemplateRunner" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#pylorax.ltmpl.TemplateRunner" title="pylorax.ltmpl.TemplateRunner"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylorax.ltmpl.TemplateRunner</span></code></a></p>
<p>This class parses and executes a limited Lorax template. Sample usage:</p>
<blockquote>
<div><p># install a bunch of packages
runner = LiveTemplateRunner(dbo, templatedir, defaults)
runner.run(“live-install.tmpl”)</p>
<p>It is meant to be used with the live-install.tmpl which lists the per-arch
pacages needed to build the live-iso output.</p>
</div></blockquote>
<dl class="method">
<dt id="pylorax.ltmpl.LiveTemplateRunner.installpkg">
<code class="descname">installpkg</code><span class="sig-paren">(</span><em>*pkgs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LiveTemplateRunner.installpkg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LiveTemplateRunner.installpkg" title="Permalink to this definition"></a></dt>
<dd><dl class="docutils">
<dt>installpkg [required|optional] [except PKGGLOB [except PKGGLOB …]] PKGGLOB [PKGGLOB …]</dt>
<dd><p class="first">Request installation of all packages matching the given globs.
Note that this is just a <em>request</em> - nothing is <em>actually</em> installed
until the run_pkg_transaction command is given.</p>
<p class="last">required is now the default. If the PKGGLOB can be missing pass optional</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class"> <dl class="class">
<dt id="pylorax.ltmpl.LoraxTemplate"> <dt id="pylorax.ltmpl.LoraxTemplate">
<em class="property">class </em><code class="descclassname">pylorax.ltmpl.</code><code class="descname">LoraxTemplate</code><span class="sig-paren">(</span><em>directories=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplate" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descclassname">pylorax.ltmpl.</code><code class="descname">LoraxTemplate</code><span class="sig-paren">(</span><em>directories=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplate" title="Permalink to this definition"></a></dt>
@ -1352,7 +1405,7 @@ image and then optionally, based on the opts passed, creates tarfile.</p>
<dl class="class"> <dl class="class">
<dt id="pylorax.ltmpl.LoraxTemplateRunner"> <dt id="pylorax.ltmpl.LoraxTemplateRunner">
<em class="property">class </em><code class="descclassname">pylorax.ltmpl.</code><code class="descname">LoraxTemplateRunner</code><span class="sig-paren">(</span><em>inroot</em>, <em>outroot</em>, <em>dbo=None</em>, <em>fatalerrors=True</em>, <em>templatedir=None</em>, <em>defaults=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descclassname">pylorax.ltmpl.</code><code class="descname">LoraxTemplateRunner</code><span class="sig-paren">(</span><em>inroot</em>, <em>outroot</em>, <em>dbo=None</em>, <em>fatalerrors=True</em>, <em>templatedir=None</em>, <em>defaults=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="#pylorax.ltmpl.TemplateRunner" title="pylorax.ltmpl.TemplateRunner"><code class="xref py py-class docutils literal notranslate"><span class="pre">pylorax.ltmpl.TemplateRunner</span></code></a></p>
<p>This class parses and executes Lorax templates. Sample usage:</p> <p>This class parses and executes Lorax templates. Sample usage:</p>
<blockquote> <blockquote>
<div><p># install a bunch of packages <div><p># install a bunch of packages
@ -1363,29 +1416,12 @@ runner = LoraxTemplateRunner(inroot=rundir, outroot=newrun)
runner.run(“runtime-transmogrify.ltmpl”)</p> runner.run(“runtime-transmogrify.ltmpl”)</p>
</div></blockquote> </div></blockquote>
<p>NOTES:</p> <p>NOTES:</p>
<ul> <ul class="simple">
<li><p class="first">Parsing procedure is roughly: <li>Commands that run external programs (e.g. systemctl) currently use
1. Mako template expansion (on the whole file)
2. For each line of the result,</p>
<blockquote>
<div><ol class="loweralpha simple">
<li>Whitespace splitting (using shlex.split())</li>
<li>Brace expansion (using brace_expand())</li>
<li>If the first token is the name of a function, call that function
with the rest of the line as arguments</li>
</ol>
</div></blockquote>
</li>
<li><p class="first">Parsing and execution are <em>separate</em> passes - so you cant use the result
of a command in an %if statement (or any other control statements)!</p>
</li>
<li><p class="first">Commands that run external programs (e.g. systemctl) currently use
the <em>host</em>s copy of that program, which may cause problems if theres a the <em>host</em>s copy of that program, which may cause problems if theres a
big enough difference between the host and the image youre modifying.</p> big enough difference between the host and the image youre modifying.</li>
</li> <li>The commands are not executed under a real chroot, so absolute symlinks
<li><p class="first">The commands are not executed under a real chroot, so absolute symlinks will point <em>outside</em> the inroot/outroot. Be careful with symlinks!</li>
will point <em>outside</em> the inroot/outroot. Be careful with symlinks!</p>
</li>
</ul> </ul>
<p>ADDING NEW COMMANDS:</p> <p>ADDING NEW COMMANDS:</p>
<ul class="simple"> <ul class="simple">
@ -1402,8 +1438,8 @@ on that line (after word splitting and brace expansion)</li>
<dt>append FILE STRING</dt> <dt>append FILE STRING</dt>
<dd><p class="first">Append STRING (followed by a newline character) to FILE. <dd><p class="first">Append STRING (followed by a newline character) to FILE.
Python character escape sequences (n, t, etc.) will be Python character escape sequences (n, t, etc.) will be
converted to the appropriate characters. converted to the appropriate characters.</p>
Examples:</p> <p>Examples:</p>
<blockquote class="last"> <blockquote class="last">
<div>append /etc/depmod.d/dd.conf “search updates built-in” <div>append /etc/depmod.d/dd.conf “search updates built-in”
append /etc/resolv.conf “”</div></blockquote> append /etc/resolv.conf “”</div></blockquote>
@ -1437,10 +1473,11 @@ that name, if the path leading to it exists.</dd>
<code class="descname">createaddrsize</code><span class="sig-paren">(</span><em>addr</em>, <em>src</em>, <em>dest</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.createaddrsize"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.createaddrsize" title="Permalink to this definition"></a></dt> <code class="descname">createaddrsize</code><span class="sig-paren">(</span><em>addr</em>, <em>src</em>, <em>dest</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.createaddrsize"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.createaddrsize" title="Permalink to this definition"></a></dt>
<dd><dl class="docutils"> <dd><dl class="docutils">
<dt>createaddrsize INITRD_ADDRESS INITRD ADDRSIZE</dt> <dt>createaddrsize INITRD_ADDRESS INITRD ADDRSIZE</dt>
<dd><p class="first">Create the initrd.addrsize file required in LPAR boot process. <dd><p class="first">Create the initrd.addrsize file required in LPAR boot process.</p>
Examples:</p> <dl class="last docutils">
<blockquote class="last"> <dt>Examples:</dt>
<div>createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize</div></blockquote> <dd>createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize</dd>
</dl>
</dd> </dd>
</dl> </dl>
</dd></dl> </dd></dl>
@ -1465,11 +1502,12 @@ The path to DEST must exist in the output tree.
If DEST is a directory, SRC will be copied into that directory. If DEST is a directory, SRC will be copied into that directory.
If DEST doesnt exist, SRC will be copied to a file with that name, If DEST doesnt exist, SRC will be copied to a file with that name,
assuming the rest of the path exists. assuming the rest of the path exists.
This is pretty much like how the cp command works. This is pretty much like how the cp command works.</p>
Examples:</p> <dl class="last docutils">
<blockquote class="last"> <dt>Examples:</dt>
<div>install usr/share/myconfig/grub.conf /boot <dd>install usr/share/myconfig/grub.conf /boot
install /usr/share/myconfig/grub.conf.in /boot/grub.conf</div></blockquote> install /usr/share/myconfig/grub.conf.in /boot/grub.conf</dd>
</dl>
</dd> </dd>
</dl> </dl>
</dd></dl> </dd></dl>
@ -1548,10 +1586,11 @@ until the run_pkg_transaction command is given.</p>
<code class="descname">log</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.log"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.log" title="Permalink to this definition"></a></dt> <code class="descname">log</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.log"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.log" title="Permalink to this definition"></a></dt>
<dd><dl class="docutils"> <dd><dl class="docutils">
<dt>log MESSAGE</dt> <dt>log MESSAGE</dt>
<dd><p class="first">Emit the given log message. Be sure to put it in quotes! <dd><p class="first">Emit the given log message. Be sure to put it in quotes!</p>
Example:</p> <dl class="last docutils">
<blockquote class="last"> <dt>Example:</dt>
<div>log “Reticulating splines, please wait…”</div></blockquote> <dd>log “Reticulating splines, please wait…”</dd>
</dl>
</dd> </dd>
</dl> </dl>
</dd></dl> </dd></dl>
@ -1561,10 +1600,11 @@ Example:</p>
<code class="descname">mkdir</code><span class="sig-paren">(</span><em>*dirs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.mkdir"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.mkdir" title="Permalink to this definition"></a></dt> <code class="descname">mkdir</code><span class="sig-paren">(</span><em>*dirs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.mkdir"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.mkdir" title="Permalink to this definition"></a></dt>
<dd><dl class="docutils"> <dd><dl class="docutils">
<dt>mkdir DIR [DIR …]</dt> <dt>mkdir DIR [DIR …]</dt>
<dd><p class="first">Create the named DIR(s). Will create leading directories as needed. <dd><p class="first">Create the named DIR(s). Will create leading directories as needed.</p>
Example:</p> <dl class="last docutils">
<blockquote class="last"> <dt>Example:</dt>
<div>mkdir /images</div></blockquote> <dd>mkdir /images</dd>
</dl>
</dd> </dd>
</dl> </dl>
</dd></dl> </dd></dl>
@ -1596,11 +1636,12 @@ Will <em>not</em> raise exceptions if the file(s) are not found.</dd>
<dd><p class="first">Remove all files matching the given file globs from the package <dd><p class="first">Remove all files matching the given file globs from the package
(or packages) named. (or packages) named.
If allbut is used, all the files from the given package(s) will If allbut is used, all the files from the given package(s) will
be removed <em>except</em> the ones which match the file globs. be removed <em>except</em> the ones which match the file globs.</p>
Examples:</p> <dl class="last docutils">
<blockquote class="last"> <dt>Examples:</dt>
<div>removefrom usbutils /usr/bin/* <dd>removefrom usbutils /usr/bin/*
removefrom xfsprogs allbut /sbin/*</div></blockquote> removefrom xfsprogs allbut /sbin/*</dd>
</dl>
</dd> </dd>
</dl> </dl>
</dd></dl> </dd></dl>
@ -1631,11 +1672,12 @@ removekmod drivers/char allbut virtio_console hw_random</dd>
<code class="descname">removepkg</code><span class="sig-paren">(</span><em>*pkgs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.removepkg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.removepkg" title="Permalink to this definition"></a></dt> <code class="descname">removepkg</code><span class="sig-paren">(</span><em>*pkgs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.removepkg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.removepkg" title="Permalink to this definition"></a></dt>
<dd><dl class="docutils"> <dd><dl class="docutils">
<dt>removepkg PKGGLOB [PKGGLOB…]</dt> <dt>removepkg PKGGLOB [PKGGLOB…]</dt>
<dd><p class="first">Delete the named package(s). <dd><p class="first">Delete the named package(s).</p>
IMPLEMENTATION NOTES:</p> <dl class="last docutils">
<blockquote class="last"> <dt>IMPLEMENTATION NOTES:</dt>
<div>RPM scriptlets (%preun/%postun) are <em>not</em> run. <dd>RPM scriptlets (%preun/%postun) are <em>not</em> run.
Files are deleted, but directories are left behind.</div></blockquote> Files are deleted, but directories are left behind.</dd>
</dl>
</dd> </dd>
</dl> </dl>
</dd></dl> </dd></dl>
@ -1646,19 +1688,15 @@ Files are deleted, but directories are left behind.</div></blockquote>
<dd><dl class="docutils"> <dd><dl class="docutils">
<dt>replace PATTERN REPLACEMENT FILEGLOB [FILEGLOB …]</dt> <dt>replace PATTERN REPLACEMENT FILEGLOB [FILEGLOB …]</dt>
<dd><p class="first">Find-and-replace the given PATTERN (Python-style regex) with the given <dd><p class="first">Find-and-replace the given PATTERN (Python-style regex) with the given
REPLACEMENT string for each of the files listed. REPLACEMENT string for each of the files listed.</p>
Example:</p> <dl class="last docutils">
<blockquote class="last"> <dt>Example:</dt>
<div>replace &#64;VERSION&#64; ${product.version} /boot/grub.conf /boot/isolinux.cfg</div></blockquote> <dd>replace &#64;VERSION&#64; ${product.version} /boot/grub.conf /boot/isolinux.cfg</dd>
</dl>
</dd> </dd>
</dl> </dl>
</dd></dl> </dd></dl>
<dl class="method">
<dt id="pylorax.ltmpl.LoraxTemplateRunner.run">
<code class="descname">run</code><span class="sig-paren">(</span><em>templatefile</em>, <em>**variables</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.run" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="pylorax.ltmpl.LoraxTemplateRunner.run_pkg_transaction"> <dt id="pylorax.ltmpl.LoraxTemplateRunner.run_pkg_transaction">
<code class="descname">run_pkg_transaction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.run_pkg_transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.run_pkg_transaction" title="Permalink to this definition"></a></dt> <code class="descname">run_pkg_transaction</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.run_pkg_transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.run_pkg_transaction" title="Permalink to this definition"></a></dt>
@ -1706,11 +1744,12 @@ runcmd find ${root} -name “<em>.pyo” -type f -delete
<code class="descname">systemctl</code><span class="sig-paren">(</span><em>cmd</em>, <em>*units</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.systemctl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.systemctl" title="Permalink to this definition"></a></dt> <code class="descname">systemctl</code><span class="sig-paren">(</span><em>cmd</em>, <em>*units</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#LoraxTemplateRunner.systemctl"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.LoraxTemplateRunner.systemctl" title="Permalink to this definition"></a></dt>
<dd><dl class="docutils"> <dd><dl class="docutils">
<dt>systemctl [enable|disable|mask] UNIT [UNIT…]</dt> <dt>systemctl [enable|disable|mask] UNIT [UNIT…]</dt>
<dd><p class="first">Enable, disable, or mask the given systemd units. <dd><p class="first">Enable, disable, or mask the given systemd units.</p>
Examples:</p> <dl class="last docutils">
<blockquote class="last"> <dt>Examples:</dt>
<div>systemctl disable lvm2-monitor.service <dd>systemctl disable lvm2-monitor.service
systemctl mask fedora-storage-init.service fedora-configure.service</div></blockquote> systemctl mask fedora-storage-init.service fedora-configure.service</dd>
</dl>
</dd> </dd>
</dl> </dl>
</dd></dl> </dd></dl>
@ -1722,16 +1761,51 @@ systemctl mask fedora-storage-init.service fedora-configure.service</div></block
<dt>treeinfo SECTION KEY ARG [ARG …]</dt> <dt>treeinfo SECTION KEY ARG [ARG …]</dt>
<dd><p class="first">Add an item to the treeinfo data store. <dd><p class="first">Add an item to the treeinfo data store.
The given SECTION will have a new item added where The given SECTION will have a new item added where
KEY = ARG ARG … KEY = ARG ARG …</p>
Example:</p> <dl class="last docutils">
<blockquote class="last"> <dt>Example:</dt>
<div>treeinfo images-${kernel.arch} boot.iso images/boot.iso</div></blockquote> <dd>treeinfo images-${kernel.arch} boot.iso images/boot.iso</dd>
</dl>
</dd> </dd>
</dl> </dl>
</dd></dl> </dd></dl>
</dd></dl> </dd></dl>
<dl class="class">
<dt id="pylorax.ltmpl.TemplateRunner">
<em class="property">class </em><code class="descclassname">pylorax.ltmpl.</code><code class="descname">TemplateRunner</code><span class="sig-paren">(</span><em>fatalerrors=True</em>, <em>templatedir=None</em>, <em>defaults=None</em>, <em>builtins=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#TemplateRunner"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.TemplateRunner" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>This class parses and executes Lorax templates. Sample usage:</p>
<blockquote>
<div># install a bunch of packages
runner = LoraxTemplateRunner(inroot=rundir, outroot=rundir, dbo=dnf_obj)
runner.run(“install-packages.ltmpl”)</div></blockquote>
<p>NOTES:</p>
<ul>
<li><p class="first">Parsing procedure is roughly:
1. Mako template expansion (on the whole file)
2. For each line of the result,</p>
<blockquote>
<div><ol class="loweralpha simple">
<li>Whitespace splitting (using shlex.split())</li>
<li>Brace expansion (using brace_expand())</li>
<li>If the first token is the name of a function, call that function
with the rest of the line as arguments</li>
</ol>
</div></blockquote>
</li>
<li><p class="first">Parsing and execution are <em>separate</em> passes - so you cant use the result
of a command in an %if statement (or any other control statements)!</p>
</li>
</ul>
<dl class="method">
<dt id="pylorax.ltmpl.TemplateRunner.run">
<code class="descname">run</code><span class="sig-paren">(</span><em>templatefile</em>, <em>**variables</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#TemplateRunner.run"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.TemplateRunner.run" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function"> <dl class="function">
<dt id="pylorax.ltmpl.brace_expand"> <dt id="pylorax.ltmpl.brace_expand">
<code class="descclassname">pylorax.ltmpl.</code><code class="descname">brace_expand</code><span class="sig-paren">(</span><em>s</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#brace_expand"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.brace_expand" title="Permalink to this definition"></a></dt> <code class="descclassname">pylorax.ltmpl.</code><code class="descname">brace_expand</code><span class="sig-paren">(</span><em>s</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/ltmpl.html#brace_expand"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.ltmpl.brace_expand" title="Permalink to this definition"></a></dt>
@ -1975,7 +2049,7 @@ isos label.</p>
<dl class="class"> <dl class="class">
<dt id="pylorax.treebuilder.TreeBuilder"> <dt id="pylorax.treebuilder.TreeBuilder">
<em class="property">class </em><code class="descclassname">pylorax.treebuilder.</code><code class="descname">TreeBuilder</code><span class="sig-paren">(</span><em>product</em>, <em>arch</em>, <em>inroot</em>, <em>outroot</em>, <em>runtime</em>, <em>isolabel</em>, <em>domacboot=True</em>, <em>doupgrade=True</em>, <em>templatedir=None</em>, <em>add_templates=None</em>, <em>add_template_vars=None</em>, <em>workdir=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/treebuilder.html#TreeBuilder"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.treebuilder.TreeBuilder" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descclassname">pylorax.treebuilder.</code><code class="descname">TreeBuilder</code><span class="sig-paren">(</span><em>product</em>, <em>arch</em>, <em>inroot</em>, <em>outroot</em>, <em>runtime</em>, <em>isolabel</em>, <em>domacboot=True</em>, <em>doupgrade=True</em>, <em>templatedir=None</em>, <em>add_templates=None</em>, <em>add_template_vars=None</em>, <em>workdir=None</em>, <em>extra_boot_args=''</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/pylorax/treebuilder.html#TreeBuilder"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pylorax.treebuilder.TreeBuilder" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p> <dd><p>Bases: <a class="reference external" href="https://docs.python.org/3/library/functions.html#object" title="(in Python v3.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></a></p>
<p>Builds the arch-specific boot images. <p>Builds the arch-specific boot images.
inroot should be the installtree root (the newly-built runtime dir)</p> inroot should be the installtree root (the newly-built runtime dir)</p>
@ -2202,7 +2276,7 @@ lowest numbered directory entry is returned.</p>
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -2221,27 +2295,27 @@ lowest numbered directory entry is returned.</p>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

View File

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Search &mdash; Lorax 28.14.21 documentation</title> <title>Search &mdash; Lorax 28.14.25 documentation</title>
@ -24,7 +24,8 @@
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="#" /> <link rel="search" title="Search" href="#" />
@ -56,7 +57,7 @@
<div class="version"> <div class="version">
28.14.21 28.14.25
</div> </div>
@ -175,7 +176,7 @@
<div role="contentinfo"> <div role="contentinfo">
<p> <p>
&copy; Copyright 2018, Red Hat, Inc. &copy; Copyright 2018, Red Hat, Inc..
</p> </p>
</div> </div>
@ -194,28 +195,28 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
<script type="text/javascript"> URL_ROOT:'./',
var DOCUMENTATION_OPTIONS = { VERSION:'28.14.25',
URL_ROOT:'./', LANGUAGE:'None',
VERSION:'28.14.21', COLLAPSE_INDEX:false,
LANGUAGE:'None', FILE_SUFFIX:'.html',
COLLAPSE_INDEX:false, HAS_SOURCE: true,
FILE_SUFFIX:'.html', SOURCELINK_SUFFIX: '.txt'
HAS_SOURCE: true, };
SOURCELINK_SUFFIX: '.txt' </script>
}; <script type="text/javascript" src="_static/jquery.js"></script>
</script> <script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/searchtools.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript"> <script type="text/javascript">
jQuery(function () { jQuery(function () {

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "COMPOSER-CLI" "1" "Jan 09, 2019" "28.14.21" "Lorax" .TH "COMPOSER-CLI" "1" "Mar 27, 2019" "28.14.25" "Lorax"
.SH NAME .SH NAME
composer-cli \- Composer Cmdline Utility Documentation composer-cli \- Composer Cmdline Utility Documentation
. .

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "LIVEMEDIA-CREATOR" "1" "Jan 09, 2019" "28.14.21" "Lorax" .TH "LIVEMEDIA-CREATOR" "1" "Mar 27, 2019" "28.14.25" "Lorax"
.SH NAME .SH NAME
livemedia-creator \- Live Media Creator Documentation livemedia-creator \- Live Media Creator Documentation
. .
@ -86,6 +86,7 @@ usage: livemedia\-creator [\-h]
[\-\-logfile LOGFILE] [\-\-logfile LOGFILE]
[\-\-lorax\-templates LORAX_TEMPLATES] [\-\-tmp TMP] [\-\-lorax\-templates LORAX_TEMPLATES] [\-\-tmp TMP]
[\-\-resultdir RESULT_DIR] [\-\-macboot] [\-\-nomacboot] [\-\-resultdir RESULT_DIR] [\-\-macboot] [\-\-nomacboot]
[\-\-extra\-boot\-args EXTRA_BOOT_ARGS]
[\-\-disk\-image DISK_IMAGE] [\-\-keep\-image] [\-\-disk\-image DISK_IMAGE] [\-\-keep\-image]
[\-\-fs\-image FS_IMAGE] [\-\-image\-name IMAGE_NAME] [\-\-fs\-image FS_IMAGE] [\-\-image\-name IMAGE_NAME]
[\-\-fs\-label FS_LABEL] [\-\-image\-type IMAGE_TYPE] [\-\-fs\-label FS_LABEL] [\-\-image\-type IMAGE_TYPE]
@ -220,6 +221,11 @@ Default: True
.B\-\-nomacboot .B\-\-nomacboot
Default: True Default: True
.TP .TP
.B\-\-extra\-boot\-args
Extra arguments to add to the bootloader kernel cmdline in the templates
.sp
Default: ""
.TP
.B\-\-title .B\-\-title
Substituted for @TITLE@ in bootloader config files Substituted for @TITLE@ in bootloader config files
.sp .sp

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "LORAX-COMPOSER" "1" "Jan 09, 2019" "28.14.21" "Lorax" .TH "LORAX-COMPOSER" "1" "Mar 27, 2019" "28.14.25" "Lorax"
.SH NAME .SH NAME
lorax-composer \- Lorax Composer Documentation lorax-composer \- Lorax Composer Documentation
. .
@ -280,6 +280,23 @@ hostname = "baseimage"
.fi .fi
.UNINDENT .UNINDENT
.UNINDENT .UNINDENT
.SS [customizations.kernel]
.sp
This allows you to append arguments to the bootloader\(aqs kernel commandline. This will not have any
effect on \fBtar\fP or \fBext4\-filesystem\fP images since they do not include a bootloader.
.sp
For example:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
[customizations.kernel]
append = "nosmt=force"
.ft P
.fi
.UNINDENT
.UNINDENT
.SS [[customizations.sshkey]] .SS [[customizations.sshkey]]
.sp .sp
Set an existing user\(aqs ssh key in the final image: Set an existing user\(aqs ssh key in the final image:

View File

@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText. .\" Man page generated from reStructuredText.
. .
.TH "LORAX" "1" "Jan 09, 2019" "28.14.21" "Lorax" .TH "LORAX" "1" "Mar 27, 2019" "28.14.25" "Lorax"
.SH NAME .SH NAME
lorax \- Lorax Documentation lorax \- Lorax Documentation
. .
@ -169,13 +169,13 @@ Default: ./lorax.log
.B\-\-tmp .B\-\-tmp
Top level temporary directory Top level temporary directory
.sp .sp
Default: "/var/tmp" Default: "/var/tmp/lorax"
.TP .TP
.B\-\-cachedir .B\-\-cachedir
DNF cache directory. Default is a temporary dir. DNF cache directory. Default is a temporary dir.
.TP .TP
.B\-\-workdir .B\-\-workdir
Work directory, overrides \-\-tmp. Default is a temporary dir under /var/tmp Work directory, overrides \-\-tmp. Default is a temporary dir under /var/tmp/lorax
.TP .TP
.B\-\-force .B\-\-force
Run even when the destination directory exists Run even when the destination directory exists