From 4563b5c3f29f80adbcc4837a3a06edc262b03ce8 Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Mon, 11 Oct 2021 16:23:15 -0700 Subject: [PATCH] Add lorax 34.12 documentation --- f34-branch/.buildinfo | 4 + f34-branch/.doctrees/environment.pickle | Bin 0 -> 2025337 bytes f34-branch/.doctrees/index.doctree | Bin 0 -> 7474 bytes f34-branch/.doctrees/intro.doctree | Bin 0 -> 9189 bytes .../.doctrees/livemedia-creator.doctree | Bin 0 -> 169961 bytes f34-branch/.doctrees/lorax.doctree | Bin 0 -> 80910 bytes f34-branch/.doctrees/mkksiso.doctree | Bin 0 -> 28265 bytes f34-branch/.doctrees/modules.doctree | Bin 0 -> 2585 bytes f34-branch/.doctrees/product-images.doctree | Bin 0 -> 7117 bytes f34-branch/.doctrees/pylorax.doctree | Bin 0 -> 588387 bytes f34-branch/_modules/index.html | 118 + f34-branch/_modules/pylorax.html | 663 + f34-branch/_modules/pylorax/base.html | 274 + f34-branch/_modules/pylorax/buildstamp.html | 273 + f34-branch/_modules/pylorax/cmdline.html | 528 + f34-branch/_modules/pylorax/creator.html | 963 ++ f34-branch/_modules/pylorax/decorators.html | 237 + f34-branch/_modules/pylorax/discinfo.html | 252 + f34-branch/_modules/pylorax/dnfbase.html | 394 + f34-branch/_modules/pylorax/dnfhelper.html | 317 + f34-branch/_modules/pylorax/executils.html | 580 + f34-branch/_modules/pylorax/imgutils.html | 703 + f34-branch/_modules/pylorax/installer.html | 783 ++ f34-branch/_modules/pylorax/ltmpl.html | 1091 ++ f34-branch/_modules/pylorax/monitor.html | 411 + f34-branch/_modules/pylorax/mount.html | 206 + f34-branch/_modules/pylorax/sysutils.html | 367 + f34-branch/_modules/pylorax/treebuilder.html | 630 + f34-branch/_modules/pylorax/treeinfo.html | 270 + f34-branch/_sources/index.rst.txt | 35 + f34-branch/_sources/intro.rst.txt | 67 + f34-branch/_sources/livemedia-creator.rst.txt | 670 + f34-branch/_sources/lorax.rst.txt | 200 + f34-branch/_sources/mkksiso.rst.txt | 129 + f34-branch/_sources/modules.rst.txt | 7 + f34-branch/_sources/product-images.rst.txt | 27 + f34-branch/_sources/pylorax.rst.txt | 157 + f34-branch/_static/basic.css | 904 ++ f34-branch/_static/css/badge_only.css | 1 + f34-branch/_static/css/theme.css | 4 + f34-branch/_static/doctools.js | 323 + f34-branch/_static/documentation_options.js | 12 + f34-branch/_static/file.png | Bin 0 -> 286 bytes f34-branch/_static/jquery-3.5.1.js | 10872 ++++++++++++++++ f34-branch/_static/jquery.js | 2 + f34-branch/_static/js/badge_only.js | 1 + f34-branch/_static/js/theme.js | 1 + f34-branch/_static/language_data.js | 297 + f34-branch/_static/minus.png | Bin 0 -> 90 bytes f34-branch/_static/plus.png | Bin 0 -> 90 bytes f34-branch/_static/pygments.css | 74 + f34-branch/_static/searchtools.js | 528 + f34-branch/_static/underscore-1.12.0.js | 2027 +++ f34-branch/_static/underscore-1.13.1.js | 2042 +++ f34-branch/_static/underscore.js | 6 + f34-branch/genindex.html | 879 ++ f34-branch/index.html | 136 + f34-branch/intro.html | 156 + f34-branch/livemedia-creator.html | 1002 ++ f34-branch/lorax.html | 476 + f34-branch/mkksiso.html | 251 + f34-branch/modules.html | 139 + f34-branch/objects.inv | Bin 0 -> 2065 bytes f34-branch/product-images.html | 129 + f34-branch/py-modindex.html | 210 + f34-branch/pylorax.html | 2119 +++ f34-branch/search.html | 120 + f34-branch/searchindex.js | 1 + 68 files changed, 33068 insertions(+) create mode 100644 f34-branch/.buildinfo create mode 100644 f34-branch/.doctrees/environment.pickle create mode 100644 f34-branch/.doctrees/index.doctree create mode 100644 f34-branch/.doctrees/intro.doctree create mode 100644 f34-branch/.doctrees/livemedia-creator.doctree create mode 100644 f34-branch/.doctrees/lorax.doctree create mode 100644 f34-branch/.doctrees/mkksiso.doctree create mode 100644 f34-branch/.doctrees/modules.doctree create mode 100644 f34-branch/.doctrees/product-images.doctree create mode 100644 f34-branch/.doctrees/pylorax.doctree create mode 100644 f34-branch/_modules/index.html create mode 100644 f34-branch/_modules/pylorax.html create mode 100644 f34-branch/_modules/pylorax/base.html create mode 100644 f34-branch/_modules/pylorax/buildstamp.html create mode 100644 f34-branch/_modules/pylorax/cmdline.html create mode 100644 f34-branch/_modules/pylorax/creator.html create mode 100644 f34-branch/_modules/pylorax/decorators.html create mode 100644 f34-branch/_modules/pylorax/discinfo.html create mode 100644 f34-branch/_modules/pylorax/dnfbase.html create mode 100644 f34-branch/_modules/pylorax/dnfhelper.html create mode 100644 f34-branch/_modules/pylorax/executils.html create mode 100644 f34-branch/_modules/pylorax/imgutils.html create mode 100644 f34-branch/_modules/pylorax/installer.html create mode 100644 f34-branch/_modules/pylorax/ltmpl.html create mode 100644 f34-branch/_modules/pylorax/monitor.html create mode 100644 f34-branch/_modules/pylorax/mount.html create mode 100644 f34-branch/_modules/pylorax/sysutils.html create mode 100644 f34-branch/_modules/pylorax/treebuilder.html create mode 100644 f34-branch/_modules/pylorax/treeinfo.html create mode 100644 f34-branch/_sources/index.rst.txt create mode 100644 f34-branch/_sources/intro.rst.txt create mode 100644 f34-branch/_sources/livemedia-creator.rst.txt create mode 100644 f34-branch/_sources/lorax.rst.txt create mode 100644 f34-branch/_sources/mkksiso.rst.txt create mode 100644 f34-branch/_sources/modules.rst.txt create mode 100644 f34-branch/_sources/product-images.rst.txt create mode 100644 f34-branch/_sources/pylorax.rst.txt create mode 100644 f34-branch/_static/basic.css create mode 100644 f34-branch/_static/css/badge_only.css create mode 100644 f34-branch/_static/css/theme.css create mode 100644 f34-branch/_static/doctools.js create mode 100644 f34-branch/_static/documentation_options.js create mode 100644 f34-branch/_static/file.png create mode 100644 f34-branch/_static/jquery-3.5.1.js create mode 100644 f34-branch/_static/jquery.js create mode 100644 f34-branch/_static/js/badge_only.js create mode 100644 f34-branch/_static/js/theme.js create mode 100644 f34-branch/_static/language_data.js create mode 100644 f34-branch/_static/minus.png create mode 100644 f34-branch/_static/plus.png create mode 100644 f34-branch/_static/pygments.css create mode 100644 f34-branch/_static/searchtools.js create mode 100644 f34-branch/_static/underscore-1.12.0.js create mode 100644 f34-branch/_static/underscore-1.13.1.js create mode 100644 f34-branch/_static/underscore.js create mode 100644 f34-branch/genindex.html create mode 100644 f34-branch/index.html create mode 100644 f34-branch/intro.html create mode 100644 f34-branch/livemedia-creator.html create mode 100644 f34-branch/lorax.html create mode 100644 f34-branch/mkksiso.html create mode 100644 f34-branch/modules.html create mode 100644 f34-branch/objects.inv create mode 100644 f34-branch/product-images.html create mode 100644 f34-branch/py-modindex.html create mode 100644 f34-branch/pylorax.html create mode 100644 f34-branch/search.html create mode 100644 f34-branch/searchindex.js diff --git a/f34-branch/.buildinfo b/f34-branch/.buildinfo new file mode 100644 index 00000000..a3e487a6 --- /dev/null +++ b/f34-branch/.buildinfo @@ -0,0 +1,4 @@ +# 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. +config: a40b1ee372d49c9b6702c59e1d27e3a5 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/f34-branch/.doctrees/environment.pickle b/f34-branch/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..85018f662e89b99bf45830aeb46e11d1871448a7 GIT binary patch literal 2025337 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 z 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

X(T&XwHAHlw0TS& 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%0DMG0JD0u8nOft`|^*8IlAjqWglNp?W; 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

<{s*|}>1kCoWWmEj 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Ƚ$rm7^RNI5u^3CR49l?+tFQ)Zu^t<+ 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Ƚ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�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 Up<9U3!_$&{;^gDg)2-qE2Xq6G9{>OV literal 0 HcmV?d00001 diff --git a/f34-branch/.doctrees/index.doctree b/f34-branch/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3ec153e72df4fe6cb8270ba5a74ccecf90c1e2e9 GIT binary patch literal 7474 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 literal 0 HcmV?d00001 diff --git a/f34-branch/.doctrees/livemedia-creator.doctree b/f34-branch/.doctrees/livemedia-creator.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f8162dbba536d25db78c2e52f62fc88f6300cc47 GIT binary patch literal 169961 zcmeFa34mNjbuR2plGR!)Z?cVSbCDN~Wc7?CuL#R9mL+>EjU*&lk+Gebp6)x-ebt+L znHf1iejw}(VHsYQM}mQb5D04^B!3b@fP{qX;ROPLKtjmNBl$xh8%YT7|IVrPcHevJ z_AItMQr^R(zPGCGsZ-}Wb?VfqQ~%G3x14v*x#!UTbuMbwi>2!9V6IT8)(U=eu5)3b zmTy=5YHRMzb6a0B_oBIh&gw>Prdew@^8Q@s9F)ixOXWhtug*O>*I7@+TcvVyP}X17 z^z*G!t*WaRR}@zkS3Np6P+Z+v(JHmdzV)heak(_@SNuXLm(4f)T&vcYqrxbA!7+c9 zh=?lk@;RmqO<&qsSp^2=86{;Hx<`*R*z}M6wmLhRQ$Mps9bC0X0wgj z5Z*V3db%^%Xtw4$7nDm?e{TPI?FsZOGg

g|Tu8ZxoXimxxLHy5|k?Pu66*OwG=! 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 JI&@d6{|CXTed7QC literal 0 HcmV?d00001 diff --git a/f34-branch/.doctrees/modules.doctree b/f34-branch/.doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3e3b4ff59e10bd8cf3ed37031a5f29e67fec5351 GIT binary patch literal 2585 zcmZ8jOK%%D5O!kgX+3PG>7j9gqUa-OYO5%ED0(W;qfs4-B0vrSK`kkfFqhntTw6K> zZ4W6DfVZ&!w;y*`Ysmr@S`Ozu-^}dao&P4ogX$Nit`JhMFDYZ%Fz#aLGn17$*FJuX zFaC*d^1UK-tsi;n1u-kbPb3_{0C zulUYYICM6P=^D33fADoOTNB^K$~wd!g>FG%&qr}uE@&81@2y;v9{wi(4kdHRmtLl* zb0FfqqiJ5h^;ucm9TqgZwtSg*%Fy$4m9CT=FeuzSh~KjW`=t= z%MB|PcbC@r7><M(Ieh}Y^m*Tst zBP4K!;)vZ?!n6tb;?~ll;5O3T@RIyRO1yX>4r@L0a=}{_H4f-DE8Am}oFqMj^x>U! zs=~epyXM-0ikC_DL6~HvO|T+Oq32<=rBp?ohrZ+9OT9v0oVGw;TBAKjjYIbpRV7ls z?G!Pchrx<#ZmBmm;=m|C>SO` z&v!1b9)xk~GSrEzm&WE1l!*g63IYJ8=5Xn<*6^-mZ=juj4#R+%uQ~o)yNe%ET=gr18-@@Q&91Jm`Gie zo^YKR2Cf(erC(nBbm1i4&-X70x7Ju9sAdYFLE#WvhGv_Z((h~OR9a$qdhh0*3h`H% z)JpFh*ovO-U)+-nCn*4jED7XCA)pw>it1HKR~+ePI6p)qg-4cW#xjDg12|wN_3Auy zGozP?5$TYO6qr479Yr@xXz2~PBZY?&h#IppFG!0zWVIql0M2TvlEP_4L29*2wZ9`3 zj+e}kb)N8a!qEmxF--JoQ3xcFz-sr4K*eFpJ z6uzg<2%ih@3-|MEc6)n!S!}#8`qJ3djPaWpINdCU$4R1c1QNva9A)w-OCR)$ufG2g zd7ap0cF#vy4gDj6e;0oTj`1Oc&cLUQ!}zHUwxeK=eB6?&k{vf&9vEAtY7JSM NR!w844O%WP{|Bp$2N3`O literal 0 HcmV?d00001 diff --git a/f34-branch/.doctrees/product-images.doctree b/f34-branch/.doctrees/product-images.doctree new file mode 100644 index 0000000000000000000000000000000000000000..61ee2228f358152e1c9594aabda11b2bf952c0e3 GIT binary patch literal 7117 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%0A7neRhP9g{B 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 + + + + + Overview: module code — Lorax 34.12 documentation + + + + + + + + + + + + + +

+ + +
+ +
+
+
+
    +
  • »
  • +
  • Overview: module code
  • +
  • +
  • +
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax.html b/f34-branch/_modules/pylorax.html new file mode 100644 index 00000000..131dffd4 --- /dev/null +++ b/f34-branch/_modules/pylorax.html @@ -0,0 +1,663 @@ + + + + + + + + + + pylorax — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax

+#
+# __init__.py
+#
+# Copyright (C) 2010-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#                     David Cantrell <dcantrell@redhat.com>
+#                     Will Woods <wwoods@redhat.com>
+
+# set up logging
+import logging
+logger = logging.getLogger("pylorax")
+logger.addHandler(logging.NullHandler())
+
+program_log = logging.getLogger("program")
+
+import sys
+import os
+import configparser
+import tempfile
+import locale
+from subprocess import CalledProcessError
+import selinux
+from glob import glob
+
+from pylorax.base import BaseLoraxClass, DataHolder
+import pylorax.output as output
+
+import dnf
+
+from pylorax.sysutils import joinpaths, remove, linktree
+
+from pylorax.treebuilder import RuntimeBuilder, TreeBuilder
+from pylorax.buildstamp import BuildStamp
+from pylorax.treeinfo import TreeInfo
+from pylorax.discinfo import DiscInfo
+from pylorax.executils import runcmd, runcmd_output
+
+
+# get lorax version
+try:
+    import pylorax.version
+except ImportError:
+    vernum = "devel"
+else:
+    vernum = pylorax.version.num
+
+DRACUT_DEFAULT = ["--xz", "--install", "/.buildstamp", "--no-early-microcode", "--add", "fips"]
+
+# Used for DNF conf.module_platform_id
+DEFAULT_PLATFORM_ID = "platform:f34"
+
+
[docs]class ArchData(DataHolder): + lib64_arches = ("x86_64", "ppc64le", "s390x", "ia64", "aarch64") + bcj_arch = dict(i386="x86", x86_64="x86", + ppc64le="powerpc", + arm="arm", armhfp="arm") + + def __init__(self, buildarch): + super(ArchData, self).__init__() + self.buildarch = buildarch + self.basearch = dnf.rpm.basearch(buildarch) + self.libdir = "lib64" if self.basearch in self.lib64_arches else "lib" + self.bcj = self.bcj_arch.get(self.basearch)
+ +
[docs]class Lorax(BaseLoraxClass): + + def __init__(self): + BaseLoraxClass.__init__(self) + self._configured = False + self.product = None + self.workdir = None + self.arch = None + self.conf = None + self.inroot = None + self.debug = False + self.outputdir = None + self._templatedir = None + + # set locale to C + locale.setlocale(locale.LC_ALL, 'C') + +
[docs] def configure(self, conf_file="/etc/lorax/lorax.conf"): + self.conf = configparser.SafeConfigParser() + + # set defaults + self.conf.add_section("lorax") + self.conf.set("lorax", "debug", "1") + self.conf.set("lorax", "sharedir", "/usr/share/lorax") + self.conf.set("lorax", "logdir", "/var/log/lorax") + + self.conf.add_section("output") + self.conf.set("output", "colors", "1") + self.conf.set("output", "encoding", "utf-8") + self.conf.set("output", "ignorelist", "/usr/share/lorax/ignorelist") + + self.conf.add_section("templates") + self.conf.set("templates", "ramdisk", "ramdisk.ltmpl") + + self.conf.add_section("compression") + self.conf.set("compression", "type", "xz") + self.conf.set("compression", "args", "") + self.conf.set("compression", "bcj", "on") + + # read the config file + if os.path.isfile(conf_file): + self.conf.read(conf_file) + + # set up the output + self.debug = self.conf.getboolean("lorax", "debug") + output_level = output.DEBUG if self.debug else output.INFO + + if sys.stdout.isatty(): + colors = self.conf.getboolean("output", "colors") + else: + colors = False + encoding = self.conf.get("output", "encoding") + + self.output.basic_config(output_level=output_level, + colors=colors, encoding=encoding) + + ignorelist = self.conf.get("output", "ignorelist") + if os.path.isfile(ignorelist): + with open(ignorelist, "r") as fobj: + for line in fobj: + line = line.strip() + if line and not line.startswith("#"): + self.output.ignore(line) + + # cron does not have sbin in PATH, + # so we have to add it ourselves + os.environ["PATH"] = "{0}:/sbin:/usr/sbin".format(os.environ["PATH"]) + + # remove some environmental variables that can cause problems with package scripts + env_remove = ('DISPLAY', 'DBUS_SESSION_BUS_ADDRESS') + list(os.environ.pop(k) for k in env_remove if k in os.environ) + + self._configured = True
+ + @property + def templatedir(self): + """Find the template directory. + + Pick the first directory under sharedir/templates.d/ if it exists. + Otherwise use the sharedir + """ + if not self._templatedir: + self._templatedir = find_templates(self.conf.get("lorax", "sharedir")) + logger.info("Using templatedir %s", self._templatedir) + return self._templatedir + +
[docs] def init_stream_logging(self): + sh = logging.StreamHandler() + sh.setLevel(logging.INFO) + logger.addHandler(sh)
+ +
[docs] def init_file_logging(self, logdir, logname="pylorax.log"): + fh = logging.FileHandler(filename=joinpaths(logdir, logname), mode="w") + fh.setLevel(logging.DEBUG) + logger.addHandler(fh)
+ +
[docs] def run(self, dbo, product, version, release, variant="", bugurl="", + isfinal=False, workdir=None, outputdir=None, buildarch=None, volid=None, + domacboot=True, doupgrade=True, remove_temp=False, + installpkgs=None, excludepkgs=None, + size=2, + add_templates=None, + add_template_vars=None, + add_arch_templates=None, + add_arch_template_vars=None, + verify=True, + user_dracut_args=None, + squashfs_only=False, + skip_branding=False): + + assert self._configured + + installpkgs = installpkgs or [] + excludepkgs = excludepkgs or [] + + if domacboot: + try: + runcmd(["rpm", "-q", "hfsplus-tools"]) + except CalledProcessError: + logger.critical("you need to install hfsplus-tools to create mac images") + sys.exit(1) + + # set up work directory + self.workdir = workdir or tempfile.mkdtemp(prefix="pylorax.work.") + if not os.path.isdir(self.workdir): + os.makedirs(self.workdir) + + # set up log directory + logdir = self.conf.get("lorax", "logdir") + if not os.path.isdir(logdir): + os.makedirs(logdir) + + self.init_stream_logging() + self.init_file_logging(logdir) + + logger.debug("version is %s", vernum) + log_selinux_state() + + logger.debug("using work directory %s", self.workdir) + logger.debug("using log directory %s", logdir) + + # set up output directory + self.outputdir = outputdir or tempfile.mkdtemp(prefix="pylorax.out.") + if not os.path.isdir(self.outputdir): + os.makedirs(self.outputdir) + logger.debug("using output directory %s", self.outputdir) + + # do we have root privileges? + logger.info("checking for root privileges") + if not os.geteuid() == 0: + logger.critical("no root privileges") + sys.exit(1) + + # do we have a proper dnf base object? + logger.info("checking dnf base object") + if not isinstance(dbo, dnf.Base): + logger.critical("no dnf base object") + sys.exit(1) + self.inroot = dbo.conf.installroot + logger.debug("using install root: %s", self.inroot) + + if not buildarch: + buildarch = get_buildarch(dbo) + + logger.info("setting up build architecture") + self.arch = ArchData(buildarch) + for attr in ('buildarch', 'basearch', 'libdir'): + logger.debug("self.arch.%s = %s", attr, getattr(self.arch,attr)) + + logger.info("setting up build parameters") + self.product = DataHolder(name=product, version=version, release=release, + variant=variant, bugurl=bugurl, isfinal=isfinal) + logger.debug("product data: %s", self.product) + + # NOTE: if you change isolabel, you need to change pungi to match, or + # the pungi images won't boot. + isolabel = volid or "%s-%s-%s" % (self.product.name, self.product.version, self.arch.basearch) + + if len(isolabel) > 32: + logger.fatal("the volume id cannot be longer than 32 characters") + sys.exit(1) + + # NOTE: rb.root = dbo.conf.installroot (== self.inroot) + rb = RuntimeBuilder(product=self.product, arch=self.arch, + dbo=dbo, templatedir=self.templatedir, + installpkgs=installpkgs, + excludepkgs=excludepkgs, + add_templates=add_templates, + add_template_vars=add_template_vars, + skip_branding=skip_branding) + + logger.info("installing runtime packages") + rb.install() + + # write .buildstamp + buildstamp = BuildStamp(self.product.name, self.product.version, + self.product.bugurl, self.product.isfinal, + self.arch.buildarch, self.product.variant) + + buildstamp.write(joinpaths(self.inroot, ".buildstamp")) + + if self.debug: + rb.writepkglists(joinpaths(logdir, "pkglists")) + rb.writepkgsizes(joinpaths(logdir, "original-pkgsizes.txt")) + + logger.info("doing post-install configuration") + rb.postinstall() + + # write .discinfo + discinfo = DiscInfo(self.product.release, self.arch.basearch) + discinfo.write(joinpaths(self.outputdir, ".discinfo")) + + logger.info("backing up installroot") + installroot = joinpaths(self.workdir, "installroot") + linktree(self.inroot, installroot) + + logger.info("generating kernel module metadata") + rb.generate_module_data() + + logger.info("cleaning unneeded files") + rb.cleanup() + + if verify: + logger.info("verifying the installroot") + if not rb.verify(): + sys.exit(1) + else: + logger.info("Skipping verify") + + if self.debug: + rb.writepkgsizes(joinpaths(logdir, "final-pkgsizes.txt")) + + logger.info("creating the runtime image") + runtime = "images/install.img" + compression = self.conf.get("compression", "type") + compressargs = self.conf.get("compression", "args").split() # pylint: disable=no-member + if self.conf.getboolean("compression", "bcj"): + if self.arch.bcj: + compressargs += ["-Xbcj", self.arch.bcj] + else: + logger.info("no BCJ filter for arch %s", self.arch.basearch) + if squashfs_only: + # Create an ext4 rootfs.img and compress it with squashfs + rc = rb.create_squashfs_runtime(joinpaths(installroot,runtime), + compression=compression, compressargs=compressargs, + size=size) + else: + # Create an ext4 rootfs.img and compress it with squashfs + rc = rb.create_ext4_runtime(joinpaths(installroot,runtime), + compression=compression, compressargs=compressargs, + size=size) + if rc != 0: + logger.error("rootfs.img creation failed. See program.log") + sys.exit(1) + + rb.finished() + + logger.info("preparing to build output tree and boot images") + treebuilder = TreeBuilder(product=self.product, arch=self.arch, + inroot=installroot, outroot=self.outputdir, + runtime=runtime, isolabel=isolabel, + domacboot=domacboot, doupgrade=doupgrade, + templatedir=self.templatedir, + add_templates=add_arch_templates, + add_template_vars=add_arch_template_vars, + workdir=self.workdir) + + logger.info("rebuilding initramfs images") + if not user_dracut_args: + dracut_args = DRACUT_DEFAULT + else: + dracut_args = [] + for arg in user_dracut_args: + dracut_args += arg.split(" ", 1) + + anaconda_args = dracut_args + ["--add", "anaconda pollcdrom qemu qemu-net"] + + logger.info("dracut args = %s", dracut_args) + logger.info("anaconda args = %s", anaconda_args) + treebuilder.rebuild_initrds(add_args=anaconda_args) + + logger.info("populating output tree and building boot images") + treebuilder.build() + + # write .treeinfo file and we're done + treeinfo = TreeInfo(self.product.name, self.product.version, + self.product.variant, self.arch.basearch) + for section, data in treebuilder.treeinfo_data.items(): + treeinfo.add_section(section, data) + treeinfo.write(joinpaths(self.outputdir, ".treeinfo")) + + # cleanup + if remove_temp: + remove(self.workdir)
+ + +
[docs]def get_buildarch(dbo): + # get architecture of the available anaconda package + buildarch = None + q = dbo.sack.query() + a = q.available() + for anaconda in a.filter(name="anaconda-core"): + if anaconda.arch != "src": + buildarch = anaconda.arch + break + if not buildarch: + logger.critical("no anaconda-core package in the repository") + sys.exit(1) + + return buildarch
+ + +
[docs]def setup_logging(logfile, theLogger): + """ + Setup the various logs + + :param logfile: filename to write the log to + :type logfile: string + :param theLogger: top-level logger + :type theLogger: logging.Logger + """ + if not os.path.isdir(os.path.abspath(os.path.dirname(logfile))): + os.makedirs(os.path.abspath(os.path.dirname(logfile))) + + # Setup logging to console and to logfile + logger.setLevel(logging.DEBUG) + theLogger.setLevel(logging.DEBUG) + + sh = logging.StreamHandler() + sh.setLevel(logging.INFO) + fmt = logging.Formatter("%(asctime)s: %(message)s") + sh.setFormatter(fmt) + logger.addHandler(sh) + theLogger.addHandler(sh) + + fh = logging.FileHandler(filename=logfile, mode="w") + fh.setLevel(logging.DEBUG) + fmt = logging.Formatter("%(asctime)s %(levelname)s %(name)s: %(message)s") + fh.setFormatter(fmt) + logger.addHandler(fh) + theLogger.addHandler(fh) + + # External program output log + program_log.setLevel(logging.DEBUG) + f = os.path.abspath(os.path.dirname(logfile))+"/program.log" + fh = logging.FileHandler(filename=f, mode="w") + fh.setLevel(logging.DEBUG) + fmt = logging.Formatter("%(asctime)s %(levelname)s: %(message)s") + fh.setFormatter(fmt) + program_log.addHandler(fh)
+ + +
[docs]def find_templates(templatedir="/usr/share/lorax"): + """ Find the templates to use. + + :param str templatedir: Top directory to search for templates + :returns: Path to templates + :rtype: str + + If there is a templates.d directory under templatedir the + lowest numbered directory entry is returned. + + eg. /usr/share/lorax/templates.d/99-generic/ + """ + if os.path.isdir(joinpaths(templatedir, "templates.d")): + try: + templatedir = sorted(glob(joinpaths(templatedir, "templates.d", "*")))[0] + except IndexError: + pass + return templatedir
+ +
[docs]def log_selinux_state(): + """Log the current state of selinux""" + if selinux.is_selinux_enabled(): + if selinux.security_getenforce(): + logger.info("selinux is enabled and in Enforcing mode") + else: + logger.info("selinux is enabled and in Permissive mode") + else: + logger.info("selinux is Disabled")
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/base.html b/f34-branch/_modules/pylorax/base.html new file mode 100644 index 00000000..9e846c70 --- /dev/null +++ b/f34-branch/_modules/pylorax/base.html @@ -0,0 +1,274 @@ + + + + + + + + + + pylorax.base — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.base

+#
+# base.py
+#
+# Copyright (C) 2009-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+from abc import ABCMeta, abstractmethod
+import sys
+
+import pylorax.output as output
+
+
+
[docs]class BaseLoraxClass(object, metaclass=ABCMeta): + @abstractmethod + def __init__(self): + self.output = output.LoraxOutput() + +
[docs] def pcritical(self, msg, fobj=sys.stdout): + self.output.critical(msg, fobj)
+ +
[docs] def perror(self, msg, fobj=sys.stdout): + self.output.error(msg, fobj)
+ +
[docs] def pwarning(self, msg, fobj=sys.stdout): + self.output.warning(msg, fobj)
+ +
[docs] def pinfo(self, msg, fobj=sys.stdout): + self.output.info(msg, fobj)
+ +
[docs] def pdebug(self, msg, fobj=sys.stdout): + self.output.debug(msg, fobj)
+ + +
[docs]class DataHolder(dict): + + def __init__(self, **kwargs): + dict.__init__(self) + + for attr, value in kwargs.items(): + self[attr] = value + + def __getattr__(self, attr): + if attr in self: + return self[attr] + else: + raise AttributeError + + def __setattr__(self, attr, value): + self[attr] = value + +
[docs] def copy(self): + return DataHolder(**dict.copy(self))
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/buildstamp.html b/f34-branch/_modules/pylorax/buildstamp.html new file mode 100644 index 00000000..f0278f2a --- /dev/null +++ b/f34-branch/_modules/pylorax/buildstamp.html @@ -0,0 +1,273 @@ + + + + + + + + + + pylorax.buildstamp — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.buildstamp

+#
+# buildstamp.py
+#
+# Copyright (C) 2010-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.buildstamp")
+
+import datetime
+import os
+
+
+
[docs]class BuildStamp(object): + + def __init__(self, product, version, bugurl, isfinal, buildarch, variant=""): + self.product = product + self.version = version + self.bugurl = bugurl + self.isfinal = isfinal + self.variant = variant + + if 'SOURCE_DATE_EPOCH' in os.environ: + now = datetime.datetime.utcfromtimestamp( + int(os.environ['SOURCE_DATE_EPOCH'])) + else: + now = datetime.datetime.now() + now = now.strftime("%Y%m%d%H%M") + self.uuid = "{0}.{1}".format(now, buildarch) + +
[docs] def write(self, outfile): + # get lorax version + try: + import pylorax.version + except ImportError: + vernum = "devel" + else: + vernum = pylorax.version.num + + logger.info("writing .buildstamp file") + with open(outfile, "w") as fobj: + fobj.write("[Main]\n") + fobj.write("Product={0.product}\n".format(self)) + fobj.write("Version={0.version}\n".format(self)) + fobj.write("BugURL={0.bugurl}\n".format(self)) + fobj.write("IsFinal={0.isfinal}\n".format(self)) + fobj.write("UUID={0.uuid}\n".format(self)) + if self.variant: + fobj.write("Variant={0.variant}\n".format(self)) + fobj.write("[Compose]\n") + fobj.write("Lorax={0}\n".format(vernum))
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/cmdline.html b/f34-branch/_modules/pylorax/cmdline.html new file mode 100644 index 00000000..9de49509 --- /dev/null +++ b/f34-branch/_modules/pylorax/cmdline.html @@ -0,0 +1,528 @@ + + + + + + + + + + pylorax.cmdline — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.cmdline

+#
+# cmdline.py
+#
+# Copyright (C) 2016  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Brian C. Lane <bcl@redhat.com>
+
+import os
+import sys
+import argparse
+
+from pylorax import vernum
+
+version = "{0}-{1}".format(os.path.basename(sys.argv[0]), vernum)
+
+
[docs]def lorax_parser(dracut_default=""): + """ Return the ArgumentParser for lorax""" + + parser = argparse.ArgumentParser(description="Create the Anaconda boot.iso") + + # required arguments for image creation + required = parser.add_argument_group("required arguments") + required.add_argument("-p", "--product", help="product name", required=True, metavar="PRODUCT") + required.add_argument("-v", "--version", help="version identifier", required=True, metavar="VERSION") + required.add_argument("-r", "--release", help="release information", required=True, metavar="RELEASE") + required.add_argument("-s", "--source", help="source repository (may be listed multiple times)", + metavar="REPOSITORY", action="append", default=[]) + required.add_argument("--repo", help="source dnf repository file", type=os.path.abspath, + dest="repos", metavar="REPOSITORY", action="append", default=[]) + + # optional arguments + optional = parser.add_argument_group("optional arguments") + optional.add_argument("-m", "--mirrorlist", + help="mirrorlist repository (may be listed multiple times)", + metavar="REPOSITORY", action="append", default=[]) + optional.add_argument("-t", "--variant", default="", + help="variant name", metavar="VARIANT") + optional.add_argument("-b", "--bugurl", + help="bug reporting URL for the product", metavar="URL", + default="your distribution provided bug reporting tool") + optional.add_argument("--isfinal", help="", + action="store_true", default=False, dest="isfinal") + optional.add_argument("-c", "--config", default="/etc/lorax/lorax.conf", + help="config file", metavar="CONFIGFILE") + optional.add_argument("--proxy", default=None, + help="repo proxy url:port", metavar="HOST") + optional.add_argument("-i", "--installpkgs", default=[], + action="append", metavar="PACKAGE", + help="package glob to install before runtime-install.tmpl runs. (may be listed multiple times)") + optional.add_argument("-e", "--excludepkgs", default=[], + action="append", metavar="PACKAGE", + help="package glob to remove before runtime-install.tmpl runs. (may be listed multiple times)") + optional.add_argument("--buildarch", default=None, + help="build architecture", metavar="ARCH") + optional.add_argument("--volid", default=None, + help="volume id", metavar="VOLID") + optional.add_argument("--macboot", help="", + action="store_true", default=True, dest="domacboot") + optional.add_argument("--nomacboot", help="", + action="store_false", dest="domacboot") + optional.add_argument("--noupgrade", help="", + action="store_false", default=True, dest="doupgrade") + optional.add_argument("--logfile", default="./lorax.log", type=os.path.abspath, + help="Path to logfile") + optional.add_argument("--tmp", default="/var/tmp/lorax", + help="Top level temporary directory" ) + optional.add_argument("--cachedir", default=None, type=os.path.abspath, + help="DNF cache directory. Default is a temporary dir.") + optional.add_argument("--workdir", default=None, type=os.path.abspath, + help="Work directory, overrides --tmp. Default is a temporary dir under /var/tmp/lorax") + optional.add_argument("--force", default=False, action="store_true", + help="Run even when the destination directory exists") + optional.add_argument("--add-template", dest="add_templates", + action="append", help="Additional template for runtime image", + default=[]) + optional.add_argument("--add-template-var", dest="add_template_vars", + action="append", help="Set variable for runtime image template", + default=[]) + optional.add_argument("--add-arch-template", dest="add_arch_templates", + action="append", help="Additional template for architecture-specific image", + default=[]) + optional.add_argument("--add-arch-template-var", dest="add_arch_template_vars", + action="append", help="Set variable for architecture-specific image", + default=[]) + optional.add_argument("--noverify", action="store_false", default=True, dest="verify", + help="Do not verify the install root") + optional.add_argument("--sharedir", metavar="SHAREDIR", type=os.path.abspath, + help="Directory containing all the templates. Overrides config file sharedir") + optional.add_argument("--enablerepo", action="append", default=[], dest="enablerepos", + metavar="[repo]", help="Names of repos to enable") + optional.add_argument("--disablerepo", action="append", default=[], dest="disablerepos", + metavar="[repo]", help="Names of repos to disable") + optional.add_argument("--rootfs-size", type=int, default=2, + help="Size of root filesystem in GiB. Defaults to 2.") + optional.add_argument("--noverifyssl", action="store_true", default=False, + help="Do not verify SSL certificates") + optional.add_argument("--dnfplugin", action="append", default=[], dest="dnfplugins", + help="Enable a DNF plugin by name/glob, or * to enable all of them.") + optional.add_argument("--squashfs-only", action="store_true", default=False, + help="Use a plain squashfs filesystem for the runtime.") + optional.add_argument("--skip-branding", action="store_true", default=False, + help="Disable automatic branding package selection. Use --installpkgs to add custom branding.") + + # dracut arguments + dracut_group = parser.add_argument_group("dracut arguments: (default: %s)" % dracut_default) + dracut_group.add_argument("--dracut-conf", + help="Path to a dracut.conf file to use instead of the " + "default arguments. See the dracut.conf(5) manpage.") + dracut_group.add_argument("--dracut-arg", action="append", dest="dracut_args", + help="Argument to pass to dracut when " + "rebuilding the initramfs. Pass this " + "once for each argument. NOTE: this " + "overrides the defaults.") + + # add the show version option + parser.add_argument("-V", help="show program's version number and exit", + action="version", version=version) + + parser.add_argument("outputdir", help="Output directory", metavar="OUTPUTDIR", type=os.path.abspath) + + return parser
+ + +
[docs]def lmc_parser(dracut_default=""): + """ Return a ArgumentParser object for live-media-creator.""" + parser = argparse.ArgumentParser(description="Create Live Install Media", + fromfile_prefix_chars="@") + + # These are mutually exclusive, one is required + action = parser.add_mutually_exclusive_group(required=True) + action.add_argument("--make-iso", action="store_true", + help="Build a live iso") + action.add_argument("--make-disk", action="store_true", + help="Build a partitioned disk image") + action.add_argument("--make-fsimage", action="store_true", + help="Build a filesystem image") + action.add_argument("--make-appliance", action="store_true", + help="Build an appliance image and XML description") + action.add_argument("--make-ami", action="store_true", + help="Build an ami image") + action.add_argument("--make-tar", action="store_true", + help="Build a tar of the root filesystem") + action.add_argument("--make-tar-disk", action="store_true", + help="Build a tar of a partitioned disk image") + action.add_argument("--make-pxe-live", action="store_true", + help="Build a live pxe boot squashfs image") + action.add_argument("--make-ostree-live", action="store_true", + help="Build a live pxe boot squashfs image of Atomic Host") + action.add_argument("--make-oci", action="store_true", + help="Build an Open Container Initiative image") + action.add_argument("--make-vagrant", action="store_true", + help="Build a Vagrant Box image") + + parser.add_argument("--iso", type=os.path.abspath, + help="Anaconda installation .iso path to use for qemu") + parser.add_argument("--iso-only", action="store_true", + help="Remove all iso creation artifacts except the boot.iso, " + "combine with --iso-name to rename the boot.iso") + parser.add_argument("--iso-name", default=None, + help="Name of output iso file for --iso-only. Default is boot.iso") + parser.add_argument("--ks", action="append", type=os.path.abspath, + help="Kickstart file defining the install.") + parser.add_argument("--image-only", action="store_true", + help="Exit after creating fs/disk image.") + + parser.add_argument("--no-virt", action="store_true", + help="Run anaconda directly on host instead of using qemu") + parser.add_argument("--proxy", + help="proxy URL to use for the install") + parser.add_argument("--anaconda-arg", action="append", dest="anaconda_args", + help="Additional argument to pass to anaconda (no-virt " + "mode). Pass once for each argument") + parser.add_argument("--armplatform", + help="the platform to use when creating images for ARM, " + "i.e., highbank, mvebu, omap, tegra, etc.") + parser.add_argument("--location", default=None, type=os.path.abspath, + help="location of iso directory tree with initrd.img " + "and vmlinuz. Used to run qemu with a newer initrd " + "than the iso.") + + parser.add_argument("--logfile", default="./livemedia.log", + type=os.path.abspath, + help="Name and path for primary logfile, other logs will " + "be created in the same directory.") + parser.add_argument("--lorax-templates", default=None, + type=os.path.abspath, + help="Path to mako templates for lorax") + parser.add_argument("--tmp", default="/var/tmp", type=os.path.abspath, + help="Top level temporary directory") + parser.add_argument("--resultdir", default=None, dest="result_dir", + type=os.path.abspath, + help="Directory to copy the resulting images and iso into. " + "Defaults to the temporary working directory") + + parser.add_argument("--macboot", action="store_true", default=True, + dest="domacboot") + parser.add_argument("--nomacboot", action="store_false", + dest="domacboot") + + parser.add_argument("--extra-boot-args", default="", dest="extra_boot_args", + help="Extra arguments to add to the bootloader kernel cmdline in the templates") + + image_group = parser.add_argument_group("disk/fs image arguments") + image_group.add_argument("--disk-image", type=os.path.abspath, + help="Path to existing disk image to use for creating final image.") + image_group.add_argument("--keep-image", action="store_true", + help="Keep raw disk image after .iso creation") + image_group.add_argument("--fs-image", type=os.path.abspath, + help="Path to existing filesystem image to use for creating final image.") + image_group.add_argument("--image-name", default=None, + help="Name of output file to create. Used for tar, fs and disk image. Default is a random name.") + image_group.add_argument("--tar-disk-name", default=None, + help="Name of the archive member for make-tar-disk.") + image_group.add_argument("--fs-label", default="Anaconda", + help="Label to set on fsimage, default is 'Anaconda'") + image_group.add_argument("--image-size-align", type=int, default=0, + help="Create a disk image with a size that is a multiple of this value in MiB.") + image_group.add_argument("--image-type", default=None, + help="Create an image with qemu-img. See qemu-img --help for supported formats.") + image_group.add_argument("--qemu-arg", action="append", dest="qemu_args", default=[], + help="Arguments to pass to qemu-img. Pass once for each argument, they will be used for ALL calls to qemu-img.") + image_group.add_argument("--qcow2", action="store_true", + help="Create qcow2 image instead of raw sparse image when making disk images.") + image_group.add_argument("--qcow2-arg", action="append", dest="qemu_args", default=[], + help="Arguments to pass to qemu-img. Pass once for each argument, they will be used for ALL calls to qemu-img.") + image_group.add_argument("--compression", default="xz", + help="Compression binary for make-tar. xz, lzma, gzip, and bzip2 are supported. xz is the default.") + image_group.add_argument("--compress-arg", action="append", dest="compress_args", default=[], + help="Arguments to pass to compression. Pass once for each argument") + # Group of arguments for appliance creation + app_group = parser.add_argument_group("appliance arguments") + app_group.add_argument("--app-name", default=None, + help="Name of appliance to pass to template") + app_group.add_argument("--app-template", default=None, + help="Path to template to use for appliance data.") + app_group.add_argument("--app-file", default="appliance.xml", + help="Appliance template results file.") + + # Group of arguments to pass to qemu + virt_group = parser.add_argument_group("qemu arguments") + virt_group.add_argument("--ram", metavar="MEMORY", type=int, default=2048, + help="Memory to allocate for installer in megabytes.") + virt_group.add_argument("--vcpus", type=int, default=None, + help="Passed to qemu -smp command") + virt_group.add_argument("--vnc", + help="Passed to qemu -display command. eg. vnc=127.0.0.1:5, default is to " + "choose the first unused vnc port.") + virt_group.add_argument("--arch", default=None, + help="System arch to build for. Used to select qemu-system-* command. " + "Defaults to qemu-system-<arch>") + virt_group.add_argument("--kernel-args", + help="Additional argument to pass to the installation kernel") + virt_group.add_argument("--ovmf-path", default="/usr/share/edk2/ovmf/", + help="Path to OVMF firmware") + virt_group.add_argument("--virt-uefi", action="store_true", default=False, + help="Use OVMF firmware to boot the VM in UEFI mode") + virt_group.add_argument("--no-kvm", action="store_true", default=False, + help="Skip using kvm with qemu even if it is available.") + virt_group.add_argument("--with-rng", default="/dev/random", + help="RNG device for QEMU (none for no RNG)") + + # dracut arguments + dracut_group = parser.add_argument_group("dracut arguments: (default: %s)" % dracut_default) + dracut_group.add_argument("--dracut-conf", + help="Path to a dracut.conf file to use instead of the " + "default arguments. See the dracut.conf(5) manpage.") + dracut_group.add_argument("--dracut-arg", action="append", dest="dracut_args", + help="Argument to pass to dracut when " + "rebuilding the initramfs. Pass this " + "once for each argument. NOTE: this " + "overrides the defaults.") + + # pxe to live arguments + pxelive_group = parser.add_argument_group("pxe to live arguments") + pxelive_group.add_argument("--live-rootfs-size", type=int, default=0, + help="Size of root filesystem of live image in GiB") + pxelive_group.add_argument("--live-rootfs-keep-size", action="store_true", + help="Keep the original size of root filesystem in live image") + + # OCI specific commands + oci_group = parser.add_argument_group("OCI arguments") + oci_group.add_argument("--oci-config", + help="config.json OCI configuration file") + oci_group.add_argument("--oci-runtime", + help="runtime.json OCI configuration file") + + # Vagrant specific commands + vagrant_group = parser.add_argument_group("Vagrant arguments") + vagrant_group.add_argument("--vagrant-metadata", + help="optional metadata.json file") + vagrant_group.add_argument("--vagrantfile", + help="optional vagrantfile") + + parser.add_argument("--project", default="Linux", + help="substituted for @PROJECT@ in bootloader config files") + parser.add_argument("--releasever", default="34", + help="substituted for @VERSION@ in bootloader config files") + parser.add_argument("--volid", default=None, help="volume id") + parser.add_argument("--squashfs-only", action="store_true", default=False, + help="Use a plain squashfs filesystem for the runtime.") + parser.add_argument("--timeout", default=None, type=int, + help="Cancel installer after X minutes") + + # add the show version option + parser.add_argument("-V", help="show program's version number and exit", + action="version", version=version) + + return parser
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/creator.html b/f34-branch/_modules/pylorax/creator.html new file mode 100644 index 00000000..75659a90 --- /dev/null +++ b/f34-branch/_modules/pylorax/creator.html @@ -0,0 +1,963 @@ + + + + + + + + + + pylorax.creator — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.creator

+#
+# Copyright (C) 2011-2018  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+import logging
+log = logging.getLogger("pylorax")
+
+import os
+import tempfile
+import subprocess
+import shutil
+import hashlib
+import glob
+
+# Use Mako templates for appliance builder descriptions
+from mako.template import Template
+from mako.exceptions import text_error_template
+
+# Use pykickstart to calculate disk image size
+from pykickstart.parser import KickstartParser
+from pykickstart.constants import KS_SHUTDOWN
+from pykickstart.version import makeVersion
+
+# Use the Lorax treebuilder branch for iso creation
+from pylorax import ArchData
+from pylorax.base import DataHolder
+from pylorax.executils import execWithRedirect, runcmd
+from pylorax.imgutils import PartitionMount
+from pylorax.imgutils import mount, umount, Mount
+from pylorax.imgutils import mksquashfs, mkrootfsimg
+from pylorax.imgutils import copytree
+from pylorax.installer import novirt_install, virt_install, InstallError
+from pylorax.treebuilder import TreeBuilder, RuntimeBuilder
+from pylorax.treebuilder import findkernels
+from pylorax.sysutils import joinpaths, remove
+
+
+# Default parameters for rebuilding initramfs, override with --dracut-arg or --dracut-conf
+DRACUT_DEFAULT = ["--xz", "--add", "livenet dmsquash-live dmsquash-live-ntfs convertfs pollcdrom qemu qemu-net",
+                  "--omit", "plymouth", "--no-hostonly", "--debug", "--no-early-microcode"]
+
+RUNTIME = "images/install.img"
+
+
[docs]class FakeDNF(object): + """ + A minimal DNF object suitable for passing to RuntimeBuilder + + lmc uses RuntimeBuilder to run the arch specific iso creation + templates, so the the installroot config value is the important part of + this. Everything else should be a nop. + """ + def __init__(self, conf): + self.conf = conf + +
[docs] def reset(self): + pass
+ +
[docs]def is_image_mounted(disk_img): + """ + Check to see if the disk_img is mounted + + :returns: True if disk_img is in /proc/mounts + :rtype: bool + """ + with open("/proc/mounts") as mounts: + for mnt in mounts: + fields = mnt.split() + if len(fields) > 2 and fields[1] == disk_img: + return True + return False
+ +
[docs]def find_ostree_root(phys_root): + """ + Find root of ostree deployment + + :param str phys_root: Path to physical root + :returns: Relative path of ostree deployment root + :rtype: str + :raise Exception: More than one deployment roots were found + """ + ostree_root = "" + ostree_sysroots = glob.glob(joinpaths(phys_root, "ostree/boot.?/*/*/0")) + log.debug("ostree_sysroots = %s", ostree_sysroots) + if ostree_sysroots: + if len(ostree_sysroots) > 1: + raise Exception("Too many deployment roots found: %s" % ostree_sysroots) + ostree_root = os.path.relpath(ostree_sysroots[0], phys_root) + return ostree_root
+ +
[docs]def get_arch(mount_dir): + """ + Get the kernel arch + + :returns: Arch of first kernel found at mount_dir/boot/ or i386 + :rtype: str + """ + kernels = findkernels(mount_dir) + if not kernels: + return "i386" + return kernels[0].arch
+ +
[docs]def squashfs_args(opts): + """ Returns the compression type and args to use when making squashfs + + :param opts: ArgumentParser object with compression and compressopts + :returns: tuple of compression type and args + :rtype: tuple + """ + compression = opts.compression or "xz" + arch = ArchData(opts.arch or os.uname().machine) + if compression == "xz" and arch.bcj and not opts.compress_args: + # default to bcj when using xz + compressargs = ["-Xbcj", arch.bcj] + elif opts.compress_args: + compressargs = [] + for arg in opts.compress_args: + compressargs += arg.split(" ", 1) + else: + compressargs = [] + return (compression, compressargs)
+ +
[docs]def dracut_args(opts): + """Return a list of the args to pass to dracut + + Return the default argument list unless one of the dracut cmdline arguments + has been used. + """ + if opts.dracut_conf: + return ["--conf", opts.dracut_conf] + elif opts.dracut_args: + args = [] + for arg in opts.dracut_args: + args += arg.split(" ", 1) + return args + else: + return DRACUT_DEFAULT
+ +
[docs]def make_appliance(disk_img, name, template, outfile, networks=None, ram=1024, + vcpus=1, arch=None, title="Linux", project="Linux", + releasever="34"): + """ + Generate an appliance description file + + :param str disk_img: Full path of the disk image + :param str name: Name of the appliance, passed to the template + :param str template: Full path of Mako template + :param str outfile: Full path of file to write, using template + :param list networks: List of networks(str) from the kickstart + :param int ram: Ram, in MiB, passed to template. Default is 1024 + :param int vcpus: CPUs, passed to template. Default is 1 + :param str arch: CPU architecture. Default is 'x86_64' + :param str title: Title, passed to template. Default is 'Linux' + :param str project: Project, passed to template. Default is 'Linux' + :param str releasever: Release version, passed to template. Default is 34 + """ + if not (disk_img and template and outfile): + return None + + log.info("Creating appliance definition using %s", template) + + if not arch: + arch = "x86_64" + + log.info("Calculating SHA256 checksum of %s", disk_img) + sha256 = hashlib.sha256() + with open(disk_img, "rb") as f: + while True: + data = f.read(1024**2) + if not data: + break + sha256.update(data) + log.info("SHA256 of %s is %s", disk_img, sha256.hexdigest()) + disk_info = DataHolder(name=os.path.basename(disk_img), format="raw", + checksum_type="sha256", checksum=sha256.hexdigest()) + try: + result = Template(filename=template).render(disks=[disk_info], name=name, + arch=arch, memory=ram, vcpus=vcpus, networks=networks, + title=title, project=project, releasever=releasever) + except Exception: + log.error(text_error_template().render()) + raise + + with open(outfile, "w") as f: + f.write(result)
+ + +
[docs]def make_runtime(opts, mount_dir, work_dir, size=None): + """ + Make the squashfs image from a directory + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str mount_dir: Directory tree to compress + :param str work_dir: Output compressed image to work_dir+images/install.img + :param int size: Size of disk image, in GiB + :returns: rc of squashfs creation + :rtype: int + """ + kernel_arch = get_arch(mount_dir) + + # Fake dnf object + fake_dbo = FakeDNF(conf=DataHolder(installroot=mount_dir)) + # Fake arch with only basearch set + arch = ArchData(kernel_arch) + # TODO: Need to get release info from someplace... + product = DataHolder(name=opts.project, version=opts.releasever, release="", + variant="", bugurl="", isfinal=False) + + rb = RuntimeBuilder(product, arch, fake_dbo) + compression, compressargs = squashfs_args(opts) + + if opts.squashfs_only: + log.info("Creating a squashfs only runtime") + return rb.create_squashfs_runtime(joinpaths(work_dir, RUNTIME), size=size, + compression=compression, compressargs=compressargs) + else: + log.info("Creating a squashfs+ext4 runtime") + return rb.create_ext4_runtime(joinpaths(work_dir, RUNTIME), size=size, + compression=compression, compressargs=compressargs)
+ + +
[docs]def rebuild_initrds_for_live(opts, sys_root_dir, results_dir): + """ + Rebuild intrds for pxe live image (root=live:http://) + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str sys_root_dir: Path to root of the system + :param str results_dir: Path of directory for storing results + """ + # cmdline dracut args override the defaults, but need to be parsed + log.info("dracut args = %s", dracut_args(opts)) + + dracut = ["dracut", "--nomdadmconf", "--nolvmconf"] + dracut_args(opts) + + kdir = "boot" + if opts.ostree: + kernels_dir = glob.glob(joinpaths(sys_root_dir, "boot/ostree/*")) + if kernels_dir: + kdir = os.path.relpath(kernels_dir[0], sys_root_dir) + + kernels = [kernel for kernel in findkernels(sys_root_dir, kdir)] + if not kernels: + raise Exception("No initrds found, cannot rebuild_initrds") + + if opts.ostree: + # Dracut assumes to have some dirs in disk image + # /var/tmp for temp files + vartmp_dir = joinpaths(sys_root_dir, "var/tmp") + if not os.path.isdir(vartmp_dir): + os.mkdir(vartmp_dir) + # /root (maybe not fatal) + root_dir = joinpaths(sys_root_dir, "var/roothome") + if not os.path.isdir(root_dir): + os.mkdir(root_dir) + # /tmp (maybe not fatal) + tmp_dir = joinpaths(sys_root_dir, "sysroot/tmp") + if not os.path.isdir(tmp_dir): + os.mkdir(tmp_dir) + + # Write the new initramfs directly to the results directory + os.mkdir(joinpaths(sys_root_dir, "results")) + mount(results_dir, opts="bind", mnt=joinpaths(sys_root_dir, "results")) + # Dracut runs out of space inside the minimal rootfs image + mount("/var/tmp", opts="bind", mnt=joinpaths(sys_root_dir, "var/tmp")) + for kernel in kernels: + if hasattr(kernel, "initrd"): + outfile = os.path.basename(kernel.initrd.path) + else: + # Construct an initrd from the kernel name + outfile = os.path.basename(kernel.path.replace("vmlinuz-", "initrd-") + ".img") + log.info("rebuilding %s", outfile) + log.info("dracut warnings about /proc are safe to ignore") + + kver = kernel.version + cmd = dracut + ["/results/"+outfile, kver] + runcmd(cmd, root=sys_root_dir) + + shutil.copy2(joinpaths(sys_root_dir, kernel.path), results_dir) + umount(joinpaths(sys_root_dir, "var/tmp"), delete=False) + umount(joinpaths(sys_root_dir, "results"), delete=False)
+ +
[docs]def create_pxe_config(template, images_dir, live_image_name, add_args = None): + """ + Create template for pxe to live configuration + + :param str images_dir: Path of directory with images to be used + :param str live_image_name: Name of live rootfs image file + :param list add_args: Arguments to be added to initrd= pxe config + """ + + add_args = add_args or [] + + kernels = [kernel for kernel in findkernels(images_dir, kdir="") + if hasattr(kernel, "initrd")] + if not kernels: + return + + kernel = kernels[0] + + add_args_str = " ".join(add_args) + + + try: + result = Template(filename=template).render(kernel=kernel.path, + initrd=kernel.initrd.path, liveimg=live_image_name, + addargs=add_args_str) + except Exception: + log.error(text_error_template().render()) + raise + + with open (joinpaths(images_dir, "PXE_CONFIG"), "w") as f: + f.write(result)
+ + +
[docs]def make_livecd(opts, mount_dir, work_dir): + """ + Take the content from the disk image and make a livecd out of it + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str mount_dir: Directory tree to compress + :param str work_dir: Output compressed image to work_dir+images/install.img + + This uses wwood's squashfs live initramfs method: + * put the real / into LiveOS/rootfs.img + * make a squashfs of the LiveOS/rootfs.img tree + * This is loaded by dracut when the cmdline is passed to the kernel: + root=live:CDLABEL=<volid> rd.live.image + """ + kernel_arch = get_arch(mount_dir) + + arch = ArchData(kernel_arch) + # TODO: Need to get release info from someplace... + product = DataHolder(name=opts.project, version=opts.releasever, release="", + variant="", bugurl="", isfinal=False) + + # Link /images to work_dir/images to make the templates happy + if os.path.islink(joinpaths(mount_dir, "images")): + os.unlink(joinpaths(mount_dir, "images")) + rc = execWithRedirect("/bin/ln", ["-s", joinpaths(work_dir, "images"), + joinpaths(mount_dir, "images")]) + if rc: + raise RuntimeError("Failed to symlink images from mount_dir to work_dir") + + # The templates expect the config files to be in /tmp/config_files + # I think these should be release specific, not from lorax, but for now + configdir = joinpaths(opts.lorax_templates,"live/config_files/") + configdir_path = "tmp/config_files" + fullpath = joinpaths(mount_dir, configdir_path) + if os.path.exists(fullpath): + remove(fullpath) + copytree(configdir, fullpath) + + isolabel = opts.volid or "{0.name}-{0.version}-{1.basearch}".format(product, arch) + if len(isolabel) > 32: + isolabel = isolabel[:32] + log.warning("Truncating isolabel to 32 chars: %s", isolabel) + + tb = TreeBuilder(product=product, arch=arch, domacboot=opts.domacboot, + inroot=mount_dir, outroot=work_dir, + runtime=RUNTIME, isolabel=isolabel, + templatedir=joinpaths(opts.lorax_templates,"live/"), + extra_boot_args=opts.extra_boot_args) + log.info("Rebuilding initrds") + log.info("dracut args = %s", dracut_args(opts)) + tb.rebuild_initrds(add_args=dracut_args(opts)) + log.info("Building boot.iso") + tb.build() + + return work_dir
+ +
[docs]def mount_boot_part_over_root(img_mount): + """ + Mount boot partition to /boot of root fs mounted in img_mount + + Used for OSTree so it finds deployment configurations on live rootfs + + param img_mount: object with mounted disk image root partition + type img_mount: imgutils.PartitionMount + """ + root_dir = img_mount.mount_dir + is_boot_part = lambda dir: os.path.exists(dir+"/loader.0") + tmp_mount_dir = tempfile.mkdtemp(prefix="lmc-tmpdir-") + sysroot_boot_dir = None + for dev, _size in img_mount.loop_devices: + if dev is img_mount.mount_dev: + continue + try: + mount("/dev/mapper/"+dev, mnt=tmp_mount_dir) + if is_boot_part(tmp_mount_dir): + umount(tmp_mount_dir) + sysroot_boot_dir = joinpaths(root_dir, "boot") + mount("/dev/mapper/"+dev, mnt=sysroot_boot_dir) + break + else: + umount(tmp_mount_dir) + except subprocess.CalledProcessError as e: + log.debug("Looking for boot partition error: %s", e) + remove(tmp_mount_dir) + return sysroot_boot_dir
+ +
[docs]def calculate_disk_size(opts, ks): + """ Calculate the disk size from the kickstart + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str ks: Path to the kickstart to use for the installation + :returns: Disk size in MiB + :rtype: int + + Also takes into account the use of reqpart or reqpart --add-boot + """ + # Disk size for a filesystem image should only be the size of / + # to prevent surprises when using the same kickstart for different installations. + unique_partitions = dict((p.mountpoint, p) for p in ks.handler.partition.partitions) + if opts.no_virt and (opts.make_iso or opts.make_fsimage): + disk_size = 2 + sum(p.size for p in unique_partitions.values() if p.mountpoint == "/") + else: + disk_size = 2 + sum(p.size for p in unique_partitions.values()) + + # reqpart can add 1M, 2M, 200M based on platform. Add 500M to be sure + if ks.handler.reqpart.seen: + log.info("Adding 500M for reqpart") + disk_size += 500 + + # It can also request adding /boot which is 1G + if ks.handler.reqpart.addBoot: + log.info("Adding 1024M for reqpart --addboot") + disk_size += 1024 + + if opts.image_size_align: + disk_size += opts.image_size_align - (disk_size % opts.image_size_align) + + log.info("Using disk size of %sMiB", disk_size) + return disk_size
+ +
[docs]def make_image(opts, ks, cancel_func=None): + """ + Install to a disk image + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str ks: Path to the kickstart to use for the installation + :param cancel_func: Function that returns True to cancel build + :type cancel_func: function + :returns: Path of the image created + :rtype: str + + Use qemu+boot.iso or anaconda to install to a disk image. + """ + + # For make_tar_disk, opts.image_name is the name of the final tarball. + # Use opts.tar_disk_name as the name of the disk image + if opts.make_tar_disk: + disk_img = joinpaths(opts.result_dir, opts.tar_disk_name) + elif opts.image_name: + disk_img = joinpaths(opts.result_dir, opts.image_name) + else: + disk_img = tempfile.mktemp(prefix="lmc-disk-", suffix=".img", dir=opts.result_dir) + log.info("disk_img = %s", disk_img) + disk_size = calculate_disk_size(opts, ks) + + # For make_tar_disk, pass a second path parameter for the final tarball + # not the final output file. + if opts.make_tar_disk: + tar_img = joinpaths(opts.result_dir, opts.image_name) + else: + tar_img = None + + try: + if opts.no_virt: + novirt_install(opts, disk_img, disk_size, cancel_func=cancel_func, tar_img=tar_img) + else: + install_log = os.path.abspath(os.path.dirname(opts.logfile))+"/virt-install.log" + log.info("install_log = %s", install_log) + + virt_install(opts, install_log, disk_img, disk_size, cancel_func=cancel_func, tar_img=tar_img) + except InstallError as e: + log.error("Install failed: %s", e) + if not opts.keep_image: + if os.path.exists(disk_img): + log.info("Removing bad disk image") + os.unlink(disk_img) + if tar_img and os.path.exists(tar_img): + log.info("Removing bad tar file") + os.unlink(tar_img) + raise + + log.info("Disk Image install successful") + + if opts.make_tar_disk: + return tar_img + + return disk_img
+ + +
[docs]def make_live_images(opts, work_dir, disk_img): + """ + Create live images from direcory or rootfs image + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str work_dir: Directory for storing results + :param str disk_img: Path to disk image (fsimage or partitioned) + :returns: Path of directory with created images or None + :rtype: str + + fsck.ext4 is run on the rootfs_image to make sure there are no errors and to zero + out any deleted blocks to make it compress better. If this fails for any reason + it will return None and log the error. + """ + sys_root = "" + + squashfs_root_dir = joinpaths(work_dir, "squashfs_root") + liveos_dir = joinpaths(squashfs_root_dir, "LiveOS") + os.makedirs(liveos_dir) + rootfs_img = joinpaths(liveos_dir, "rootfs.img") + + if opts.fs_image or opts.no_virt: + # Find the ostree root in the fsimage + if opts.ostree: + with Mount(disk_img, opts="loop") as mnt_dir: + sys_root = find_ostree_root(mnt_dir) + + # Try to hardlink the image, if that fails, copy it + rc = execWithRedirect("/bin/ln", [disk_img, rootfs_img]) + if rc != 0: + shutil.copy2(disk_img, rootfs_img) + else: + is_root_part = None + if opts.ostree: + is_root_part = lambda dir: os.path.exists(dir+"/ostree/deploy") + with PartitionMount(disk_img, mount_ok=is_root_part) as img_mount: + if img_mount and img_mount.mount_dir: + try: + mounted_sysroot_boot_dir = None + if opts.ostree: + sys_root = find_ostree_root(img_mount.mount_dir) + mounted_sysroot_boot_dir = mount_boot_part_over_root(img_mount) + if opts.live_rootfs_keep_size: + size = img_mount.mount_size / 1024**3 + else: + size = opts.live_rootfs_size or None + log.info("Creating live rootfs image") + mkrootfsimg(img_mount.mount_dir, rootfs_img, "LiveOS", size=size, sysroot=sys_root) + finally: + if mounted_sysroot_boot_dir: + umount(mounted_sysroot_boot_dir) + log.debug("sys_root = %s", sys_root) + + # Make sure free blocks are actually zeroed so it will compress + rc = execWithRedirect("/usr/sbin/fsck.ext4", ["-y", "-f", "-E", "discard", rootfs_img]) + if rc != 0: + log.error("Problem zeroing free blocks of %s", disk_img) + return None + + log.info("Packing live rootfs image") + add_pxe_args = [] + live_image_name = "live-rootfs.squashfs.img" + compression, compressargs = squashfs_args(opts) + rc = mksquashfs(squashfs_root_dir, joinpaths(work_dir, live_image_name), compression, compressargs) + if rc != 0: + log.error("mksquashfs failed to create %s", live_image_name) + return None + + log.info("Rebuilding initramfs for live") + with Mount(rootfs_img, opts="loop") as mnt_dir: + try: + mount(joinpaths(mnt_dir, "boot"), opts="bind", mnt=joinpaths(mnt_dir, sys_root, "boot")) + rebuild_initrds_for_live(opts, joinpaths(mnt_dir, sys_root), work_dir) + finally: + umount(joinpaths(mnt_dir, sys_root, "boot"), delete=False) + + remove(squashfs_root_dir) + + if opts.ostree: + add_pxe_args.append("ostree=/%s" % sys_root) + template = joinpaths(opts.lorax_templates, "pxe-live/pxe-config.tmpl") + create_pxe_config(template, work_dir, live_image_name, add_pxe_args) + + return work_dir
+ +
[docs]def check_kickstart(ks, opts): + """Check the parsed kickstart object for errors + + :param ks: Parsed Kickstart object + :type ks: pykickstart.parser.KickstartParser + :param opts: Commandline options to control the process + :type opts: Either a DataHolder or ArgumentParser + :returns: List of error strings or empty list + :rtype: list + """ + errors = [] + if opts.no_virt and ks.handler.method.method not in ("url", "nfs") \ + and not ks.handler.ostreesetup.seen: + errors.append("Only url, nfs and ostreesetup install methods are currently supported." + "Please fix your kickstart file." ) + + if ks.handler.repo.seen and ks.handler.method.method != "url": + errors.append("repo can only be used with the url install method. Add url to your " + "kickstart file.") + + if ks.handler.method.method in ("url", "nfs") and not ks.handler.network.seen: + errors.append("The kickstart must activate networking if " + "the url or nfs install method is used.") + + if ks.handler.displaymode.displayMode is not None: + errors.append("The kickstart must not set a display mode (text, cmdline, " + "graphical), this will interfere with livemedia-creator.") + + if opts.make_fsimage or (opts.make_pxe_live and opts.no_virt): + # Make sure the kickstart isn't using autopart and only has a / mountpoint + part_ok = not any(p for p in ks.handler.partition.partitions + if p.mountpoint not in ["/", "swap"]) + if not part_ok or ks.handler.autopart.seen: + errors.append("Filesystem images must use a single / part, not autopart or " + "multiple partitions. swap is allowed but not used.") + + if not opts.no_virt and ks.handler.reboot.action != KS_SHUTDOWN: + errors.append("The kickstart must include shutdown when using virt installation.") + + return errors
+ +
[docs]def run_creator(opts, cancel_func=None): + """Run the image creator process + + :param opts: Commandline options to control the process + :type opts: Either a DataHolder or ArgumentParser + :param cancel_func: Function that returns True to cancel build + :type cancel_func: function + :returns: The result directory and the disk image path. + :rtype: Tuple of str + + This function takes the opts arguments and creates the selected output image. + See the cmdline --help for livemedia-creator for the possible options + + (Yes, this is not ideal, but we can fix that later) + """ + result_dir = None + + # Parse the kickstart + if opts.ks: + ks_version = makeVersion() + ks = KickstartParser(ks_version, errorsAreFatal=False, missingIncludeIsFatal=False) + ks.readKickstart(opts.ks[0]) + + # live iso usually needs dracut-live so warn the user if it is missing + if opts.ks and opts.make_iso: + if "dracut-live" not in ks.handler.packages.packageList: + log.error("dracut-live package is missing from the kickstart.") + raise RuntimeError("dracut-live package is missing from the kickstart.") + + # Make the disk or filesystem image + if not opts.disk_image and not opts.fs_image: + if not opts.ks: + raise RuntimeError("Image creation requires a kickstart file") + + # Check the kickstart for problems + errors = check_kickstart(ks, opts) + if errors: + list(log.error(e) for e in errors) + raise RuntimeError("\n".join(errors)) + + # Make the image. Output of this is either a partitioned disk image or a fsimage + try: + disk_img = make_image(opts, ks, cancel_func=cancel_func) + except InstallError as e: + log.error("ERROR: Image creation failed: %s", e) + raise RuntimeError("Image creation failed: %s" % e) + + if opts.image_only: + return (result_dir, disk_img) + + if opts.make_iso: + work_dir = tempfile.mkdtemp(prefix="lmc-work-") + log.info("working dir is %s", work_dir) + + if (opts.fs_image or opts.no_virt) and not opts.disk_image: + # Create iso from a filesystem image + disk_img = opts.fs_image or disk_img + with Mount(disk_img, opts="loop") as mount_dir: + rc = make_runtime(opts, mount_dir, work_dir, calculate_disk_size(opts, ks)/1024.0) + if rc != 0: + log.error("make_runtime failed with rc = %d. See program.log", rc) + raise RuntimeError("make_runtime failed with rc = %d" % rc) + if cancel_func and cancel_func(): + raise RuntimeError("ISO creation canceled") + + result_dir = make_livecd(opts, mount_dir, work_dir) + else: + # Create iso from a partitioned disk image + disk_img = opts.disk_image or disk_img + with PartitionMount(disk_img) as img_mount: + if img_mount and img_mount.mount_dir: + rc = make_runtime(opts, img_mount.mount_dir, work_dir, calculate_disk_size(opts, ks)/1024.0) + if rc != 0: + log.error("make_runtime failed with rc = %d. See program.log", rc) + raise RuntimeError("make_runtime failed with rc = %d" % rc) + result_dir = make_livecd(opts, img_mount.mount_dir, work_dir) + + # --iso-only removes the extra build artifacts, keeping only the boot.iso + if opts.iso_only and result_dir: + boot_iso = joinpaths(result_dir, "images/boot.iso") + if not os.path.exists(boot_iso): + log.error("%s is missing, skipping --iso-only.", boot_iso) + else: + iso_dir = tempfile.mkdtemp(prefix="lmc-result-") + dest_file = joinpaths(iso_dir, opts.iso_name or "boot.iso") + shutil.move(boot_iso, dest_file) + shutil.rmtree(result_dir) + result_dir = iso_dir + + # cleanup the mess + # cleanup work_dir? + if disk_img and not (opts.keep_image or opts.disk_image or opts.fs_image): + os.unlink(disk_img) + log.info("Disk image erased") + disk_img = None + elif opts.make_appliance: + if not opts.ks: + networks = [] + else: + networks = ks.handler.network.network + make_appliance(opts.disk_image or disk_img, opts.app_name, + opts.app_template, opts.app_file, networks, opts.ram, + opts.vcpus or 1, opts.arch, opts.title, opts.project, opts.releasever) + elif opts.make_pxe_live: + work_dir = tempfile.mkdtemp(prefix="lmc-work-") + log.info("working dir is %s", work_dir) + disk_img = opts.fs_image or opts.disk_image or disk_img + log.debug("disk image is %s", disk_img) + + result_dir = make_live_images(opts, work_dir, disk_img) + if result_dir is None: + log.error("Creating PXE live image failed.") + raise RuntimeError("Creating PXE live image failed.") + + if opts.result_dir != opts.tmp and result_dir: + copytree(result_dir, opts.result_dir, preserve=False) + shutil.rmtree(result_dir) + result_dir = None + + return (result_dir, disk_img)
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/decorators.html b/f34-branch/_modules/pylorax/decorators.html new file mode 100644 index 00000000..17f83858 --- /dev/null +++ b/f34-branch/_modules/pylorax/decorators.html @@ -0,0 +1,237 @@ + + + + + + + + + + pylorax.decorators — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.decorators

+#
+# decorators.py
+#
+# Copyright (C) 2009-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+
[docs]def singleton(cls): + instances = {} + + def get_instance(): + if cls not in instances: + instances[cls] = cls() + return instances[cls] + + return get_instance
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/discinfo.html b/f34-branch/_modules/pylorax/discinfo.html new file mode 100644 index 00000000..a08154e6 --- /dev/null +++ b/f34-branch/_modules/pylorax/discinfo.html @@ -0,0 +1,252 @@ + + + + + + + + + + pylorax.discinfo — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.discinfo

+#
+# discinfo.py
+#
+# Copyright (C) 2010-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.discinfo")
+
+import os
+import time
+
+
+
[docs]class DiscInfo(object): + + def __init__(self, release, basearch): + self.release = release + self.basearch = basearch + +
[docs] def write(self, outfile): + if 'SOURCE_DATE_EPOCH' in os.environ: + timestamp = int(os.environ['SOURCE_DATE_EPOCH']) + else: + timestamp = time.time() + + logger.info("writing .discinfo file") + with open(outfile, "w") as fobj: + fobj.write("{0:f}\n".format(timestamp)) + fobj.write("{0.release}\n".format(self)) + fobj.write("{0.basearch}\n".format(self))
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/dnfbase.html b/f34-branch/_modules/pylorax/dnfbase.html new file mode 100644 index 00000000..ead0932d --- /dev/null +++ b/f34-branch/_modules/pylorax/dnfbase.html @@ -0,0 +1,394 @@ + + + + + + + + + + pylorax.dnfbase — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.dnfbase

+# Copyright (C) 2018 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+import logging
+log = logging.getLogger("pylorax")
+
+import dnf
+import os
+import shutil
+
+from pylorax import DEFAULT_PLATFORM_ID
+from pylorax.sysutils import flatconfig
+
+
[docs]def get_dnf_base_object(installroot, sources, mirrorlists=None, repos=None, + enablerepos=None, disablerepos=None, + tempdir="/var/tmp", proxy=None, releasever="34", + cachedir=None, logdir=None, sslverify=True, dnfplugins=None): + """ Create a dnf Base object and setup the repositories and installroot + + :param string installroot: Full path to the installroot + :param list sources: List of source repo urls to use for the installation + :param list enablerepos: List of repo names to enable + :param list disablerepos: List of repo names to disable + :param list mirrorlist: List of mirrors to use + :param string tempdir: Path of temporary directory + :param string proxy: http proxy to use when fetching packages + :param string releasever: Release version to pass to dnf + :param string cachedir: Directory to use for caching packages + :param bool noverifyssl: Set to True to ignore the CA of ssl certs. eg. use self-signed ssl for https repos. + + If tempdir is not set /var/tmp is used. + If cachedir is None a dnf.cache directory is created inside tmpdir + """ + def sanitize_repo(repo): + """Convert bare paths to file:/// URIs, and silently reject protocols unhandled by yum""" + if repo.startswith("/"): + return "file://{0}".format(repo) + elif any(repo.startswith(p) for p in ('http://', 'https://', 'ftp://', 'file://')): + return repo + else: + return None + + mirrorlists = mirrorlists or [] + + # sanitize the repositories + sources = list(sanitize_repo(r) for r in sources) + mirrorlists = list(sanitize_repo(r) for r in mirrorlists) + + # remove invalid repositories + sources = list(r for r in sources if r) + mirrorlists = list(r for r in mirrorlists if r) + + if not cachedir: + cachedir = os.path.join(tempdir, "dnf.cache") + if not os.path.isdir(cachedir): + os.mkdir(cachedir) + + if not logdir: + logdir = os.path.join(tempdir, "dnf.logs") + if not os.path.isdir(logdir): + os.mkdir(logdir) + + dnfbase = dnf.Base() + # Enable DNF pluings + # NOTE: These come from the HOST system's environment + if dnfplugins: + if dnfplugins[0] == "*": + # Enable them all + dnfbase.init_plugins() + else: + # Only enable the listed plugins + dnfbase.init_plugins(disabled_glob=["*"], enable_plugins=dnfplugins) + conf = dnfbase.conf + conf.logdir = logdir + conf.cachedir = cachedir + + conf.install_weak_deps = False + conf.releasever = releasever + conf.installroot = installroot + conf.prepend_installroot('persistdir') + # this is a weird 'AppendOption' thing that, when you set it, + # actually appends. Doing this adds 'nodocs' to the existing list + # of values, over in libdnf, it does not replace the existing values. + conf.tsflags = ['nodocs'] + # Log details about the solver + conf.debug_solver = True + + if proxy: + conf.proxy = proxy + + if sslverify == False: + conf.sslverify = False + + # DNF 3.2 needs to have module_platform_id set, otherwise depsolve won't work correctly + if not os.path.exists("/etc/os-release"): + log.warning("/etc/os-release is missing, cannot determine platform id, falling back to %s", DEFAULT_PLATFORM_ID) + platform_id = DEFAULT_PLATFORM_ID + else: + os_release = flatconfig("/etc/os-release") + platform_id = os_release.get("PLATFORM_ID", DEFAULT_PLATFORM_ID) + log.info("Using %s for module_platform_id", platform_id) + conf.module_platform_id = platform_id + + # Add .repo files + if repos: + reposdir = os.path.join(tempdir, "dnf.repos") + if not os.path.isdir(reposdir): + os.mkdir(reposdir) + for r in repos: + shutil.copy2(r, reposdir) + conf.reposdir = [reposdir] + dnfbase.read_all_repos() + + # add the sources + for i, r in enumerate(sources): + if "SRPM" in r or "srpm" in r: + log.info("Skipping source repo: %s", r) + continue + repo_name = "lorax-repo-%d" % i + repo = dnf.repo.Repo(repo_name, conf) + repo.baseurl = [r] + if proxy: + repo.proxy = proxy + repo.enable() + dnfbase.repos.add(repo) + log.info("Added '%s': %s", repo_name, r) + log.info("Fetching metadata...") + try: + repo.load() + except dnf.exceptions.RepoError as e: + log.error("Error fetching metadata for %s: %s", repo_name, e) + return None + + # add the mirrorlists + for i, r in enumerate(mirrorlists): + if "SRPM" in r or "srpm" in r: + log.info("Skipping source repo: %s", r) + continue + repo_name = "lorax-mirrorlist-%d" % i + repo = dnf.repo.Repo(repo_name, conf) + repo.mirrorlist = r + if proxy: + repo.proxy = proxy + repo.enable() + dnfbase.repos.add(repo) + log.info("Added '%s': %s", repo_name, r) + log.info("Fetching metadata...") + try: + repo.load() + except dnf.exceptions.RepoError as e: + log.error("Error fetching metadata for %s: %s", repo_name, e) + return None + + # Enable repos listed on the cmdline + for r in enablerepos: + repolist = dnfbase.repos.get_matching(r) + if not repolist: + log.warning("%s is an unknown repo, not enabling it", r) + else: + repolist.enable() + log.info("Enabled repo %s", r) + + # Disable repos listed on the cmdline + for r in disablerepos: + repolist = dnfbase.repos.get_matching(r) + if not repolist: + log.warning("%s is an unknown repo, not disabling it", r) + else: + repolist.disable() + log.info("Disabled repo %s", r) + + dnfbase.fill_sack(load_system_repo=False) + dnfbase.read_comps() + + return dnfbase
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/dnfhelper.html b/f34-branch/_modules/pylorax/dnfhelper.html new file mode 100644 index 00000000..e210d3f0 --- /dev/null +++ b/f34-branch/_modules/pylorax/dnfhelper.html @@ -0,0 +1,317 @@ + + + + + + + + + + pylorax.dnfhelper — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.dnfhelper

+#
+# dnfhelper.py
+#
+# Copyright (C) 2010-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#                     Brian C. Lane <bcl@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.dnfhelper")
+import dnf
+import dnf.transaction
+import collections
+import time
+import pylorax.output as output
+
+__all__ = ['LoraxDownloadCallback', 'LoraxRpmCallback']
+
+def _paced(fn):
+    """Execute `fn` no more often then every 2 seconds."""
+    def paced_fn(self, *args):
+        now = time.time()
+        if now - self.last_time < 2:
+            return
+        self.last_time = now
+        return fn(self, *args)
+    return paced_fn
+
+
+
[docs]class LoraxDownloadCallback(dnf.callback.DownloadProgress): + def __init__(self): + self.downloads = collections.defaultdict(int) + self.last_time = time.time() + self.total_files = 0 + self.total_size = 0 + + self.pkgno = 0 + self.total = 0 + + self.output = output.LoraxOutput() + + @_paced + def _update(self): + msg = "Downloading %(pkgno)s / %(total_files)s RPMs, " \ + "%(downloaded)s / %(total_size)s (%(percent)d%%) done.\n" + downloaded = sum(self.downloads.values()) + vals = { + 'downloaded' : downloaded, + 'percent' : int(100 * downloaded/self.total_size), + 'pkgno' : self.pkgno, + 'total_files' : self.total_files, + 'total_size' : self.total_size + } + self.output.write(msg % vals) + +
[docs] def end(self, payload, status, msg): + nevra = str(payload) + if status is dnf.callback.STATUS_OK: + self.downloads[nevra] = payload.download_size + self.pkgno += 1 + self._update() + return + logger.critical("Failed to download '%s': %d - %s", nevra, status, msg)
+ +
[docs] def progress(self, payload, done): + nevra = str(payload) + self.downloads[nevra] = done + self._update()
+ + # dnf 2.5.0 adds a new argument, accept it if it is passed + # pylint: disable=arguments-differ +
[docs] def start(self, total_files, total_size, total_drpms=0): + self.total_files = total_files + self.total_size = total_size
+ + +
[docs]class LoraxRpmCallback(dnf.callback.TransactionProgress): + def __init__(self): + super(LoraxRpmCallback, self).__init__() + self._last_ts = None + +
[docs] def progress(self, package, action, ti_done, ti_total, ts_done, ts_total): + if action == dnf.transaction.PKG_INSTALL: + # do not report same package twice + if self._last_ts == ts_done: + return + self._last_ts = ts_done + + msg = '(%d/%d) %s' % (ts_done, ts_total, package) + logger.info(msg) + elif action == dnf.transaction.TRANS_POST: + msg = "Performing post-installation setup tasks" + logger.info(msg)
+ +
[docs] def error(self, message): + logger.warning(message)
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/executils.html b/f34-branch/_modules/pylorax/executils.html new file mode 100644 index 00000000..743d220a --- /dev/null +++ b/f34-branch/_modules/pylorax/executils.html @@ -0,0 +1,580 @@ + + + + + + + + + + pylorax.executils — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.executils

+#
+# executil.py - subprocess execution utility functions
+#
+# Copyright (C) 1999-2015
+# Red Hat, Inc.  All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+import os
+import select
+import subprocess
+from subprocess import TimeoutExpired
+import signal
+import time
+
+import logging
+log = logging.getLogger("pylorax")
+program_log = logging.getLogger("program")
+
+# pylint: disable=not-context-manager
+from threading import Lock
+program_log_lock = Lock()
+
+_child_env = {}
+
+
[docs]def setenv(name, value): + """ Set an environment variable to be used by child processes. + + This method does not modify os.environ for the running process, which + is not thread-safe. If setenv has already been called for a particular + variable name, the old value is overwritten. + + :param str name: The name of the environment variable + :param str value: The value of the environment variable + """ + + _child_env[name] = value
+ +
[docs]def augmentEnv(): + env = os.environ.copy() + env.update(_child_env) + return env
+ +
[docs]class ExecProduct(object): + def __init__(self, rc, stdout, stderr): + self.rc = rc + self.stdout = stdout + self.stderr = stderr
+ +
[docs]def startProgram(argv, root='/', stdin=None, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + env_prune=None, env_add=None, reset_handlers=True, reset_lang=True, **kwargs): + """ Start an external program and return the Popen object. + + The root and reset_handlers arguments are handled by passing a + preexec_fn argument to subprocess.Popen, but an additional preexec_fn + can still be specified and will be run. The user preexec_fn will be run + last. + + :param argv: The command to run and argument + :param root: The directory to chroot to before running command. + :param stdin: The file object to read stdin from. + :param stdout: The file object to write stdout to. + :param stderr: The file object to write stderr to. + :param env_prune: environment variables to remove before execution + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :param kwargs: Additional parameters to pass to subprocess.Popen + :return: A Popen object for the running command. + :keyword preexec_fn: A function to run before execution starts. + """ + if env_prune is None: + env_prune = [] + + # Check for and save a preexec_fn argument + preexec_fn = kwargs.pop("preexec_fn", None) + + def preexec(): + # If a target root was specificed, chroot into it + if root and root != '/': + os.chroot(root) + os.chdir("/") + + # Signal handlers set to SIG_IGN persist across exec. Reset + # these to SIG_DFL if requested. In particular this will include the + # SIGPIPE handler set by python. + if reset_handlers: + for signum in range(1, signal.NSIG): + if signal.getsignal(signum) == signal.SIG_IGN: + signal.signal(signum, signal.SIG_DFL) + + # If the user specified an additional preexec_fn argument, run it + if preexec_fn is not None: + preexec_fn() + + with program_log_lock: + program_log.info("Running... %s", " ".join(argv)) + + env = augmentEnv() + for var in env_prune: + env.pop(var, None) + + if reset_lang: + env.update({"LC_ALL": "C"}) + + if env_add: + env.update(env_add) + + # pylint: disable=subprocess-popen-preexec-fn + return subprocess.Popen(argv, + stdin=stdin, + stdout=stdout, + stderr=stderr, + close_fds=True, + preexec_fn=preexec, cwd=root, env=env, **kwargs)
+ +def _run_program(argv, root='/', stdin=None, stdout=None, env_prune=None, log_output=True, + binary_output=False, filter_stderr=False, raise_err=False, callback=None, + env_add=None, reset_handlers=True, reset_lang=True): + """ Run an external program, log the output and return it to the caller + + :param argv: The command to run and argument + :param root: The directory to chroot to before running command. + :param stdin: The file object to read stdin from. + :param stdout: Optional file object to write the output to. + :param env_prune: environment variable to remove before execution + :param log_output: whether to log the output of command + :param binary_output: whether to treat the output of command as binary data + :param filter_stderr: whether to exclude the contents of stderr from the returned output + :param raise_err: whether to raise a CalledProcessError if the returncode is non-zero + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: The return code of the command and the output + :raises: OSError or CalledProcessError + """ + try: + if filter_stderr: + stderr = subprocess.PIPE + else: + stderr = subprocess.STDOUT + + proc = startProgram(argv, root=root, stdin=stdin, stdout=subprocess.PIPE, stderr=stderr, + env_prune=env_prune, universal_newlines=not binary_output, + env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang) + + output_string = None + err_string = None + if callback: + while callback(proc) and proc.poll() is None: + try: + (output_string, err_string) = proc.communicate(timeout=1) + break + except TimeoutExpired: + pass + else: + (output_string, err_string) = proc.communicate() + if output_string: + if binary_output: + output_lines = [output_string] + else: + if output_string[-1] != "\n": + output_string = output_string + "\n" + output_lines = output_string.splitlines(True) + + if log_output: + with program_log_lock: + for line in output_lines: + program_log.info(line.strip()) + + if stdout: + stdout.write(output_string) + + # If stderr was filtered, log it separately + if filter_stderr and err_string and log_output: + err_lines = err_string.splitlines(True) + + with program_log_lock: + for line in err_lines: + program_log.info(line.strip()) + + except OSError as e: + with program_log_lock: + program_log.error("Error running %s: %s", argv[0], e.strerror) + raise + + with program_log_lock: + program_log.debug("Return code: %s", proc.returncode) + + if proc.returncode and raise_err: + output = (output_string or "") + (err_string or "") + raise subprocess.CalledProcessError(proc.returncode, argv, output) + + return (proc.returncode, output_string) + +
[docs]def execWithRedirect(command, argv, stdin=None, stdout=None, root='/', env_prune=None, + log_output=True, binary_output=False, raise_err=False, callback=None, + env_add=None, reset_handlers=True, reset_lang=True): + """ Run an external program and redirect the output to a file. + + :param command: The command to run + :param argv: The argument list + :param stdin: The file object to read stdin from. + :param stdout: Optional file object to redirect stdout and stderr to. + :param root: The directory to chroot to before running command. + :param env_prune: environment variable to remove before execution + :param log_output: whether to log the output of command + :param binary_output: whether to treat the output of command as binary data + :param raise_err: whether to raise a CalledProcessError if the returncode is non-zero + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: The return code of the command + """ + argv = [command] + list(argv) + return _run_program(argv, stdin=stdin, stdout=stdout, root=root, env_prune=env_prune, + log_output=log_output, binary_output=binary_output, raise_err=raise_err, callback=callback, + env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang)[0]
+ +
[docs]def execWithCapture(command, argv, stdin=None, root='/', log_output=True, filter_stderr=False, + raise_err=False, callback=None, env_add=None, reset_handlers=True, reset_lang=True): + """ Run an external program and capture standard out and err. + + :param command: The command to run + :param argv: The argument list + :param stdin: The file object to read stdin from. + :param root: The directory to chroot to before running command. + :param log_output: Whether to log the output of command + :param filter_stderr: Whether stderr should be excluded from the returned output + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: The output of the command + """ + argv = [command] + list(argv) + return _run_program(argv, stdin=stdin, root=root, log_output=log_output, filter_stderr=filter_stderr, + raise_err=raise_err, callback=callback, env_add=env_add, + reset_handlers=reset_handlers, reset_lang=reset_lang)[1]
+ +
[docs]def execReadlines(command, argv, stdin=None, root='/', env_prune=None, filter_stderr=False, + callback=lambda x: True, env_add=None, reset_handlers=True, reset_lang=True): + """ Execute an external command and return the line output of the command + in real-time. + + This method assumes that there is a reasonably low delay between the + end of output and the process exiting. If the child process closes + stdout and then keeps on truckin' there will be problems. + + NOTE/WARNING: UnicodeDecodeError will be raised if the output of the + external command can't be decoded as UTF-8. + + :param command: The command to run + :param argv: The argument list + :param stdin: The file object to read stdin from. + :param stdout: Optional file object to redirect stdout and stderr to. + :param root: The directory to chroot to before running command. + :param env_prune: environment variable to remove before execution + :param filter_stderr: Whether stderr should be excluded from the returned output + :param callback: method to call while waiting for process to finish, passed Popen object + :param env_add: environment variables to add before execution + :param reset_handlers: whether to reset to SIG_DFL any signal handlers set to SIG_IGN + :param reset_lang: whether to set the locale of the child process to C + :return: Iterator of the lines from the command + + Output from the file is not logged to program.log + This returns an iterator with the lines from the command until it has finished + """ + + class ExecLineReader(object): + """Iterator class for returning lines from a process and cleaning + up the process when the output is no longer needed. + """ + + def __init__(self, proc, argv, callback): + self._proc = proc + self._argv = argv + self._callback = callback + self._data = "" + + def __iter__(self): + return self + + def __del__(self): + # See if the process is still running + if self._proc.poll() is None: + # Stop the process and ignore any problems that might arise + try: + self._proc.terminate() + except OSError: + pass + + def __next__(self): + # Return lines from stdout while also calling _callback + while True: + # Check for input without blocking + if select.select([self._proc.stdout], [], [], 0)[0]: + size = len(self._proc.stdout.peek(1)) + if size > 0: + self._data += self._proc.stdout.read(size).decode("utf-8") + + if self._data.find("\n") >= 0: + line = self._data.split("\n", 1) + self._data = line[1] + return line[0] + + if self._proc.poll() is not None or not self._callback(self._proc): + # Output finished, wait 60s for the process to end + try: + self._proc.communicate(timeout=60) + except subprocess.TimeoutExpired: + # Did not exit in 60s, kill it and wait 30s more + self._proc.kill() + try: + self._proc.communicate(timeout=30) + except subprocess.TimeoutExpired: + pass + + if self._proc.returncode is None: + raise OSError("process '%s' failed to be killed" % self._argv) + elif self._proc.returncode < 0: + raise OSError("process '%s' was killed by signal %s" % + (self._argv, -self._proc.returncode)) + elif self._proc.returncode > 0: + raise OSError("process '%s' exited with status %s" % + (self._argv, self._proc.returncode)) + raise StopIteration + + # Don't loop too fast with no input to read + time.sleep(0.5) + + argv = [command] + argv + + if filter_stderr: + stderr = subprocess.DEVNULL + else: + stderr = subprocess.STDOUT + + try: + proc = startProgram(argv, root=root, stdin=stdin, stdout=subprocess.PIPE, stderr=stderr, + env_prune=env_prune, env_add=env_add, reset_handlers=reset_handlers, reset_lang=reset_lang) + except OSError as e: + with program_log_lock: + program_log.error("Error running %s: %s", argv[0], e.strerror) + raise + + return ExecLineReader(proc, argv, callback)
+ +
[docs]def runcmd(cmd, **kwargs): + """ run execWithRedirect with raise_err=True + """ + kwargs["raise_err"] = True + return execWithRedirect(cmd[0], cmd[1:], **kwargs)
+ +
[docs]def runcmd_output(cmd, **kwargs): + """ run execWithCapture with raise_err=True + """ + kwargs["raise_err"] = True + return execWithCapture(cmd[0], cmd[1:], **kwargs)
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/imgutils.html b/f34-branch/_modules/pylorax/imgutils.html new file mode 100644 index 00000000..e78d511a --- /dev/null +++ b/f34-branch/_modules/pylorax/imgutils.html @@ -0,0 +1,703 @@ + + + + + + pylorax.imgutils — Lorax 34.13 documentation + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for pylorax.imgutils

+# imgutils.py - utility functions/classes for building disk images
+#
+# Copyright (C) 2011-2018 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s):  Will Woods <wwoods@redhat.com>
+
+import logging
+logger = logging.getLogger("pylorax.imgutils")
+
+import os, tempfile
+from os.path import join, dirname
+from subprocess import Popen, PIPE, CalledProcessError
+import sys
+import time
+import traceback
+import multiprocessing
+from time import sleep
+import shutil
+
+from pylorax.sysutils import cpfile
+from pylorax.executils import execWithRedirect, execWithCapture
+from pylorax.executils import runcmd, runcmd_output
+
+######## Functions for making container images (cpio, tar, squashfs) ##########
+
+
[docs]def compress(command, root, outfile, compression="xz", compressargs=None): + '''Make a compressed archive of the given rootdir or file. + command is a list of the archiver commands to run + compression should be "xz", "gzip", "lzma", "bzip2", or None. + compressargs will be used on the compression commandline.''' + if compression not in (None, "xz", "gzip", "lzma", "bzip2"): + raise ValueError("Unknown compression type %s" % compression) + compressargs = compressargs or ["-9"] + if compression == "xz": + compressargs.insert(0, "--check=crc32") + if compression is None: + compression = "cat" # this is a little silly + compressargs = [] + + # make compression run with multiple threads if possible + if compression in ("xz", "lzma"): + compressargs.insert(0, "-T%d" % multiprocessing.cpu_count()) + elif compression == "gzip": + compression = "pigz" + compressargs.insert(0, "-p%d" % multiprocessing.cpu_count()) + elif compression == "bzip2": + compression = "pbzip2" + compressargs.insert(0, "-p%d" % multiprocessing.cpu_count()) + + find, archive, comp = None, None, None + + try: + if os.path.isdir(root): + logger.debug("find %s -print0 |%s | %s %s > %s", root, " ".join(command), + compression, " ".join(compressargs), outfile) + + find = Popen(["find", ".", "-print0"], stdout=PIPE, cwd=root) + archive = Popen(command, stdin=find.stdout, stdout=PIPE, cwd=root) + else: + logger.debug("echo %s |%s | %s %s > %s", root, " ".join(command), + compression, " ".join(compressargs), outfile) + + archive = Popen(command, stdin=PIPE, stdout=PIPE, cwd=os.path.dirname(root)) + archive.stdin.write(os.path.basename(root).encode("utf-8") + b"\0") + archive.stdin.close() + + with open(outfile, "wb") as fout: + comp = Popen([compression] + compressargs, + stdin=archive.stdout, stdout=fout) + comp.wait() + + # Clean up the open fds and processes + if find: + find.wait() + find.stdout.close() + archive.wait() + if archive.stdin: + archive.stdin.close() + if archive.stdout: + archive.stdout.close() + return comp.returncode + except OSError as e: + logger.error(e) + # Kill off any hanging processes + list(p.kill() for p in (find, archive, comp) if p) + return 1
+ +
[docs]def mkcpio(root, outfile, compression="xz", compressargs=None): + compressargs = compressargs or ["-9"] + return compress(["cpio", "--null", "--quiet", "-H", "newc", "-o"], + root, outfile, compression, compressargs)
+ +
[docs]def mktar(root, outfile, compression="xz", compressargs=None, selinux=True): + compressargs = compressargs or ["-9"] + tar_cmd = ["tar", "--no-recursion"] + if selinux: + tar_cmd += ["--selinux", "--acls", "--xattrs"] + tar_cmd += ["-cf-", "--null", "-T-"] + return compress(tar_cmd, root, outfile, compression, compressargs)
+ +
[docs]def mksquashfs(rootdir, outfile, compression="default", compressargs=None): + '''Make a squashfs image containing the given rootdir.''' + compressargs = compressargs or [] + if compression != "default": + compressargs = ["-comp", compression] + compressargs + return execWithRedirect("mksquashfs", [rootdir, outfile] + compressargs)
+ +
[docs]def mkrootfsimg(rootdir, outfile, label, size=2, sysroot=""): + """ + Make rootfs image from a directory + + :param str rootdir: Root directory + :param str outfile: Path of output image file + :param str label: Filesystem label + :param int size: Size of the image in GiB, if None computed automatically + :param str sysroot: path to system (deployment) root relative to physical root + """ + if size: + fssize = size * (1024*1024*1024) # 2GB sparse file compresses down to nothin' + else: + fssize = None # Let mkext4img figure out the needed size + + mkext4img(rootdir, outfile, label=label, size=fssize)
+ + +######## Utility functions ############################################### + +
[docs]def mksparse(outfile, size): + '''use os.ftruncate to create a sparse file of the given size.''' + with open(outfile, "w") as fobj: + os.ftruncate(fobj.fileno(), size)
+ +
[docs]def mkqcow2(outfile, size, options=None): + '''use qemu-img to create a file of the given size. + options is a list of options passed to qemu-img + + Default format is qcow2, override by passing "-f", fmt + in options. + ''' + mkqemu_img(outfile, size, options)
+ +
[docs]def mkqemu_img(outfile, size, options=None): + '''use qemu-img to create a file of the given size. + options is a list of options passed to qemu-img + + Default format is qcow2, override by passing "-f", fmt + in options. + ''' + options = options or [] + if "-f" not in options: + options.extend(["-f", "qcow2"]) + runcmd(["qemu-img", "create"] + options + [outfile, str(size)])
+ +
[docs]def loop_waitfor(loop_dev, outfile): + """Make sure the loop device is attached to the outfile. + + It seems that on rare occasions losetup can return before the /dev/loopX is + ready for use, causing problems with mkfs. This tries to make sure that the + loop device really is associated with the backing file before continuing. + + Raise RuntimeError if it isn't setup after 5 tries. + """ + for _x in range(0,5): + runcmd(["udevadm", "settle", "--timeout", "300"]) + ## XXX Note that losetup --list output can be truncated to 64 bytes in some + ## situations. Don't use it to lookup backing file, go the other way + ## and lookup the loop for the backing file. See util-linux lib/loopdev.c + ## loopcxt_get_backing_file() + if get_loop_name(outfile) == os.path.basename(loop_dev): + return + + # If this really is a race, give it some time to settle down + time.sleep(1) + + raise RuntimeError("Unable to setup %s on %s" % (loop_dev, outfile))
+ +
[docs]def loop_attach(outfile): + """Attach a loop device to the given file. Return the loop device name. + + On rare occasions it appears that the device never shows up, some experiments + seem to indicate that it may be a race with another process using /dev/loop* devices. + + So we now try 3 times before actually failing. + + Raises CalledProcessError if losetup fails. + """ + retries = 0 + while True: + try: + retries += 1 + dev = runcmd_output(["losetup", "--find", "--show", outfile]).strip() + + # Sometimes the loop device isn't ready yet, make extra sure before returning + loop_waitfor(dev, outfile) + except RuntimeError: + # Try to setup the loop device 3 times + if retries == 3: + logger.error("loop_attach failed, retries exhausted.") + raise + logger.debug("Try %d failed, %s did not appear.", retries, dev) + break + return dev
+ +
[docs]def loop_detach(loopdev): + '''Detach the given loop device. Return False on failure.''' + return (execWithRedirect("losetup", ["--detach", loopdev]) == 0)
+ +
[docs]def get_loop_name(path): + '''Return the loop device associated with the path. + Raises RuntimeError if more than one loop is associated''' + buf = runcmd_output(["losetup", "-j", path]) + if len(buf.splitlines()) > 1: + # there should never be more than one loop device listed + raise RuntimeError("multiple loops associated with %s" % path) + name = os.path.basename(buf.split(":")[0]) + return name
+ +
[docs]def dm_attach(dev, size, name=None): + '''Attach a devicemapper device to the given device, with the given size. + If name is None, a random name will be chosen. Returns the device name. + raises CalledProcessError if dmsetup fails.''' + if name is None: + name = tempfile.mktemp(prefix="lorax.imgutils.", dir="") + runcmd(["dmsetup", "create", name, "--table", + "0 %i linear %s 0" % (size/512, dev)]) + return name
+ +
[docs]def dm_detach(dev): + '''Detach the named devicemapper device. Returns False if dmsetup fails.''' + dev = dev.replace("/dev/mapper/", "") # strip prefix, if it's there + return execWithRedirect("dmsetup", ["remove", dev])
+ +
[docs]def mount(dev, opts="", mnt=None): + '''Mount the given device at the given mountpoint, using the given opts. + opts should be a comma-separated string of mount options. + if mnt is none, a temporary directory will be created and its path will be + returned. + raises CalledProcessError if mount fails.''' + if mnt is None: + mnt = tempfile.mkdtemp(prefix="lorax.imgutils.") + logger.debug("make tmp mountdir %s", mnt) + cmd = ["mount"] + if opts: + cmd += ["-o", opts] + cmd += [dev, mnt] + runcmd(cmd) + return mnt
+ +
[docs]def umount(mnt, lazy=False, maxretry=3, retrysleep=1.0, delete=True): + '''Unmount the given mountpoint. If lazy is True, do a lazy umount (-l). + If the mount was a temporary dir created by mount, it will be deleted. + raises CalledProcessError if umount fails.''' + cmd = ["umount"] + if lazy: cmd += ["-l"] + cmd += [mnt] + count = 0 + while maxretry > 0: + try: + rv = runcmd(cmd) + except CalledProcessError: + count += 1 + if count == maxretry: + raise + logger.warning("failed to unmount %s. retrying (%d/%d)...", + mnt, count, maxretry) + if logger.getEffectiveLevel() <= logging.DEBUG: + fuser = execWithCapture("fuser", ["-vm", mnt]) + logger.debug("fuser -vm:\n%s\n", fuser) + sleep(retrysleep) + else: + break + if delete and 'lorax.imgutils' in mnt: + os.rmdir(mnt) + logger.debug("remove tmp mountdir %s", mnt) + return (rv == 0)
+ +
[docs]def copytree(src, dest, preserve=True): + '''Copy a tree of files using cp -a, thus preserving modes, timestamps, + links, acls, sparse files, xattrs, selinux contexts, etc. + If preserve is False, uses cp -R (useful for modeless filesystems) + raises CalledProcessError if copy fails.''' + logger.debug("copytree %s %s", src, dest) + cp = ["cp", "-a"] if preserve else ["cp", "-R", "-L", "--preserve=timestamps"] + cp += [join(src, "."), os.path.abspath(dest)] + runcmd(cp)
+ +
[docs]def do_grafts(grafts, dest, preserve=True): + '''Copy each of the items listed in grafts into dest. + If the key ends with '/' it's assumed to be a directory which should be + created, otherwise just the leading directories will be created.''' + for imgpath, filename in grafts.items(): + if imgpath[-1] == '/': + targetdir = join(dest, imgpath) + imgpath = imgpath[:-1] + else: + targetdir = join(dest, dirname(imgpath)) + if not os.path.isdir(targetdir): + os.makedirs(targetdir) + if os.path.isdir(filename): + copytree(filename, join(dest, imgpath), preserve) + else: + cpfile(filename, join(dest, imgpath))
+ +
[docs]def round_to_blocks(size, blocksize): + '''If size isn't a multiple of blocksize, round up to the next multiple''' + diff = size % blocksize + if diff or not size: + size += blocksize - diff + return size
+ +# TODO: move filesystem data outside this function +
[docs]def estimate_size(rootdir, graft=None, fstype=None, blocksize=4096, overhead=256): + graft = graft or {} + getsize = lambda f: os.lstat(f).st_size + if fstype == "btrfs": + overhead = 64*1024 # don't worry, it's all sparse + if fstype == "hfsplus": + overhead = 200 # hack to deal with two bootloader copies + if fstype in ("vfat", "msdos"): + blocksize = 2048 + getsize = lambda f: os.stat(f).st_size # no symlinks, count as copies + total = overhead*blocksize + dirlist = list(graft.values()) + if rootdir: + dirlist.append(rootdir) + for root in dirlist: + for top, dirs, files in os.walk(root): + for f in files + dirs: + total += round_to_blocks(getsize(join(top,f)), blocksize) + if fstype == "btrfs": + total = max(256*1024*1024, total) # btrfs minimum size: 256MB + logger.info("Size of %s block %s fs at %s estimated to be %s", blocksize, fstype, rootdir, total) + return total
+ +######## Execution contexts - use with the 'with' statement ############## + +
[docs]class LoopDev(object): + def __init__(self, filename, size=None): + self.loopdev = None + self.filename = filename + if size: + mksparse(self.filename, size) + def __enter__(self): + self.loopdev = loop_attach(self.filename) + return self.loopdev + def __exit__(self, exc_type, exc_value, tracebk): + loop_detach(self.loopdev)
+ +
[docs]class DMDev(object): + def __init__(self, dev, size, name=None): + self.mapperdev = None + (self.dev, self.size, self.name) = (dev, size, name) + def __enter__(self): + self.mapperdev = dm_attach(self.dev, self.size, self.name) + return self.mapperdev + def __exit__(self, exc_type, exc_value, tracebk): + dm_detach(self.mapperdev)
+ +
[docs]class Mount(object): + def __init__(self, dev, opts="", mnt=None): + (self.dev, self.opts, self.mnt) = (dev, opts, mnt) + def __enter__(self): + self.mnt = mount(self.dev, self.opts, self.mnt) + return self.mnt + def __exit__(self, exc_type, exc_value, tracebk): + umount(self.mnt)
+ +
[docs]def kpartx_disk_img(disk_img): + """Attach a disk image's partitions to /dev/loopX using kpartx + + :param disk_img: The full path to a partitioned disk image + :type disk_img: str + :returns: list of (loopXpN, size) + :rtype: list of tuples + """ + # Example kpartx output + # kpartx -p p -v -a /tmp/diskV2DiCW.im + # add map loop2p1 (253:2): 0 3481600 linear /dev/loop2 2048 + # add map loop2p2 (253:3): 0 614400 linear /dev/loop2 3483648 + kpartx_output = runcmd_output(["kpartx", "-v", "-a", "-s", disk_img]) + logger.debug(kpartx_output) + + # list of (deviceName, sizeInBytes) + loop_devices = [] + for line in kpartx_output.splitlines(): + # add map loop2p3 (253:4): 0 7139328 linear /dev/loop2 528384 + # 3rd element is size in 512 byte blocks + if line.startswith("add map "): + fields = line[8:].split() + loop_devices.append( (fields[0], int(fields[3])*512) ) + return loop_devices
+ +
[docs]class PartitionMount(object): + """ Mount a partitioned image file using kpartx """ + def __init__(self, disk_img, mount_ok=None, submount=None): + """ + :param str disk_img: The full path to a partitioned disk image + :param mount_ok: A function that is passed the mount point and + returns True if it should be mounted. + :param str submount: Directory inside mount_dir to mount at + + If mount_ok is not set it will look for /etc/passwd + + If the partition is found it will be mounted under a temporary + directory and self.temp_dir set to it. If submount is passed it will be + created and mounted there instead, with self.mount_dir set to point to + it. self.mount_dev is set to the loop device, and self.mount_size is + set to the size of the partition. + + When no subdir is passed self.temp_dir and self.mount_dir will be the same. + """ + self.mount_dev = None + self.mount_size = None + self.mount_dir = None + self.disk_img = disk_img + self.mount_ok = mount_ok + self.submount = submount + self.temp_dir = None + + # Default is to mount partition with /etc/passwd + if not self.mount_ok: + self.mount_ok = lambda mount_dir: os.path.isfile(mount_dir+"/etc/passwd") + + # list of (deviceName, sizeInBytes) + self.loop_devices = kpartx_disk_img(self.disk_img) + + def __enter__(self): + # Mount the device selected by mount_ok, if possible + self.temp_dir = tempfile.mkdtemp() + if self.submount: + mount_dir = os.path.normpath(os.path.sep.join([self.temp_dir, self.submount])) + os.makedirs(mount_dir, mode=0o755, exist_ok=True) + else: + mount_dir = self.temp_dir + for dev, size in self.loop_devices: + try: + mount( "/dev/mapper/"+dev, mnt=mount_dir ) + if self.mount_ok(mount_dir): + self.mount_dir = mount_dir + self.mount_dev = dev + self.mount_size = size + break + umount( mount_dir ) + except CalledProcessError: + logger.debug(traceback.format_exc()) + if self.mount_dir: + logger.info("Partition mounted on %s size=%s", self.mount_dir, self.mount_size) + else: + logger.debug("Unable to mount anything from %s", self.disk_img) + os.rmdir(self.temp_dir) + self.temp_dir = None + return self + + def __exit__(self, exc_type, exc_value, tracebk): + if self.temp_dir: + umount(self.mount_dir) + shutil.rmtree(self.temp_dir) + self.mount_dir = None + self.temp_dir = None + execWithRedirect("kpartx", ["-d", "-s", self.disk_img])
+ + +
[docs]class DracutChroot(object): + """Setup the chroot for running dracut inside it, cleanup when done + + This mount /proc, /dev, and /var/tmp plus optional bind mounted directories + as a list of (source, destination) tuples where destination is relative to the chroot. + """ + def __init__(self, root, bind=None): + self.root = root + self.bind = [("/var/tmp", "/var/tmp")] + (bind if bind else []) + + def __enter__(self): + for d in [d for _, d in self.bind] + ["/proc", "/dev"]: + if not os.path.exists(self.root + d): + logger.warning("Making missing dracut chroot directory: %s", d) + os.makedirs(self.root + d) + + runcmd(["mount", "-t", "proc", "-o", "nosuid,noexec,nodev", "proc", self.root + "/proc" ]) + runcmd(["mount", "-t", "devtmpfs", "-o", "mode=0755,noexec,nosuid,strictatime", "devtmpfs", self.root + "/dev" ]) + + for s, d in self.bind: + runcmd(["mount", "-o", "bind", s, self.root + d]) + + return self + + def __exit__(self, exc_type, exc_value, tracebk): + runcmd(["umount", self.root + "/proc" ]) + runcmd(["umount", self.root + "/dev" ]) + + # cleanup bind mounts + for _, d in self.bind: + runcmd(["umount", self.root + d ]) + +
[docs] def Run(self, args): + runcmd(["dracut"] + args, root=self.root)
+ + +######## Functions for making filesystem images ########################## + +
[docs]def mkfsimage(fstype, rootdir, outfile, size=None, mkfsargs=None, mountargs="", graft=None): + '''Generic filesystem image creation function. + fstype should be a filesystem type - "mkfs.${fstype}" must exist. + graft should be a dict: {"some/path/in/image": "local/file/or/dir"}; + if the path ends with a '/' it's assumed to be a directory. + Will raise CalledProcessError if something goes wrong.''' + mkfsargs = mkfsargs or [] + graft = graft or {} + preserve = (fstype not in ("msdos", "vfat")) + if not size: + size = estimate_size(rootdir, graft, fstype) + with LoopDev(outfile, size) as loopdev: + try: + runcmd(["mkfs.%s" % fstype] + mkfsargs + [loopdev]) + except CalledProcessError as e: + logger.error("mkfs exited with a non-zero return code: %d", e.returncode) + logger.error(e.output) + sys.exit(e.returncode) + + with Mount(loopdev, mountargs) as mnt: + if rootdir: + copytree(rootdir, mnt, preserve) + do_grafts(graft, mnt, preserve) + + # Save information about filesystem usage + execWithRedirect("df", [mnt]) + + # Make absolutely sure that the data has been written + runcmd(["sync"])
+ +# convenience functions with useful defaults +
[docs]def mkdosimg(rootdir, outfile, size=None, label="", mountargs="shortname=winnt,umask=0077", graft=None): + graft = graft or {} + mkfsargs = ["-n", label] + if 'SOURCE_DATE_EPOCH' in os.environ: + mkfsargs.extend(["-i", + "{:x}".format(int(os.environ['SOURCE_DATE_EPOCH']))]) + mkfsimage("msdos", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=mkfsargs, graft=graft)
+ +
[docs]def mkext4img(rootdir, outfile, size=None, label="", mountargs="", graft=None): + graft = graft or {} + mkfsimage("ext4", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-L", label, "-b", "4096", "-m", "0"], graft=graft)
+ +
[docs]def mkbtrfsimg(rootdir, outfile, size=None, label="", mountargs="", graft=None): + graft = graft or {} + mkfsimage("btrfs", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-L", label], graft=graft)
+ +
[docs]def mkhfsimg(rootdir, outfile, size=None, label="", mountargs="", graft=None): + graft = graft or {} + mkfsimage("hfsplus", rootdir, outfile, size, mountargs=mountargs, + mkfsargs=["-v", label], graft=graft)
+ +
[docs]def mkfsimage_from_disk(diskimage, fsimage, img_size=None, label="Anaconda"): + """ + Copy the / partition of a partitioned disk image to an un-partitioned + disk image. + + :param str diskimage: The full path to partitioned disk image with a / + :param str fsimage: The full path of the output fs image file + :param int img_size: Optional size of the fsimage in MiB or None to make + it as small as possible + :param str label: The label to apply to the image. Defaults to "Anaconda" + """ + with PartitionMount(diskimage) as img_mount: + if not img_mount or not img_mount.mount_dir: + return None + + logger.info("Creating fsimage %s (%s)", fsimage, img_size or "minimized") + if img_size: + # convert to Bytes + img_size *= 1024**2 + + mkext4img(img_mount.mount_dir, fsimage, size=img_size, label=label)
+ +
[docs]def default_image_name(compression, basename): + """ Return a default image name with the correct suffix for the compression type. + + :param str compression: Compression type + :param str basename: Base filename + :returns: basename with compression suffix + + If the compression is unknown it defaults to xz + """ + SUFFIXES = {"xz": ".xz", "gzip": ".gz", "bzip2": ".bz2", "lzma": ".lzma"} + return basename + SUFFIXES.get(compression, ".xz")
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/installer.html b/f34-branch/_modules/pylorax/installer.html new file mode 100644 index 00000000..5d9ee445 --- /dev/null +++ b/f34-branch/_modules/pylorax/installer.html @@ -0,0 +1,783 @@ + + + + + + pylorax.installer — Lorax 34.13 documentation + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for pylorax.installer

+#
+# Copyright (C) 2011-2018  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+import logging
+log = logging.getLogger("pylorax")
+
+import glob
+import json
+from math import ceil
+import os
+import subprocess
+import shutil
+import socket
+import tempfile
+
+# Use the Lorax treebuilder branch for iso creation
+from pylorax.executils import execWithRedirect, execReadlines
+from pylorax.imgutils import PartitionMount, mksparse, mkext4img, loop_detach
+from pylorax.imgutils import get_loop_name, dm_detach, mount, umount
+from pylorax.imgutils import mkqemu_img, mktar, mkcpio, mkfsimage_from_disk
+from pylorax.monitor import LogMonitor
+from pylorax.mount import IsoMountpoint
+from pylorax.sysutils import joinpaths
+from pylorax.treebuilder import udev_escape
+
+
+ROOT_PATH = "/mnt/sysimage/"
+
+
[docs]class InstallError(Exception): + pass
+ + +
[docs]def create_vagrant_metadata(path, size=0): + """ Create a default Vagrant metadata.json file + + :param str path: Path to metadata.json file + :param int size: Disk size in MiB + """ + metadata = { "provider":"libvirt", "format":"qcow2", "virtual_size": ceil(size / 1024) } + with open(path, "wt") as f: + json.dump(metadata, f, indent=4)
+ + +
[docs]def update_vagrant_metadata(path, size): + """ Update the Vagrant metadata.json file + + :param str path: Path to metadata.json file + :param int size: Disk size in MiB + + This function makes sure that the provider, format and virtual size of the + metadata file are set correctly. All other values are left untouched. + """ + with open(path, "rt") as f: + try: + metadata = json.load(f) + except ValueError as e: + log.error("Problem reading metadata file %s: %s", path, e) + return + + metadata["provider"] = "libvirt" + metadata["format"] = "qcow2" + metadata["virtual_size"] = ceil(size / 1024) + with open(path, "wt") as f: + json.dump(metadata, f, indent=4)
+ + +
[docs]def find_free_port(start=5900, end=5999, host="127.0.0.1"): + """ Return first free port in range. + + :param int start: Starting port number + :param int end: Ending port number + :param str host: Host IP to search + :returns: First free port or -1 if none found + :rtype: int + """ + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + for port in range(start, end+1): + try: + s.bind((host, port)) + s.close() + return port + except OSError: + pass + + return -1
+ +
[docs]def append_initrd(initrd, files): + """ Append files to an initrd. + + :param str initrd: Path to initrd + :param list files: list of file paths to add + :returns: Path to a new initrd + :rtype: str + + The files are added to the initrd by creating a cpio image + of the files (stored at /) and writing the cpio to the end of a + copy of the initrd. + + The initrd is not changed, a copy is made before appending the + cpio archive. + """ + qemu_initrd = tempfile.mktemp(prefix="lmc-initrd-", suffix=".img") + shutil.copy2(initrd, qemu_initrd) + ks_dir = tempfile.mkdtemp(prefix="lmc-ksdir-") + for ks in files: + shutil.copy2(ks, ks_dir) + ks_initrd = tempfile.mktemp(prefix="lmc-ks-", suffix=".img") + mkcpio(ks_dir, ks_initrd) + shutil.rmtree(ks_dir) + with open(qemu_initrd, "ab") as initrd_fp: + with open(ks_initrd, "rb") as ks_fp: + while True: + data = ks_fp.read(1024**2) + if not data: + break + initrd_fp.write(data) + os.unlink(ks_initrd) + + return qemu_initrd
+ +
[docs]class QEMUInstall(object): + """ + Run qemu using an iso and a kickstart + """ + # Mapping of arch to qemu command + QEMU_CMDS = {"x86_64": "qemu-system-x86_64", + "i386": "qemu-system-i386", + "arm": "qemu-system-arm", + "aarch64": "qemu-system-aarch64", + "ppc64le": "qemu-system-ppc64" + } + + def __init__(self, opts, iso, ks_paths, disk_img, img_size=2048, + kernel_args=None, memory=1024, vcpus=None, vnc=None, arch=None, + cancel_func=None, virtio_host="127.0.0.1", virtio_port=6080, + image_type=None, boot_uefi=False, ovmf_path=None): + """ + Start the installation + + :param iso: Information about the iso to use for the installation + :type iso: IsoMountpoint + :param list ks_paths: Paths to kickstart files. All are injected, the + first one is the one executed. + :param str disk_img: Path to a disk image, created it it doesn't exist + :param int img_size: The image size, in MiB, to create if it doesn't exist + :param str kernel_args: Extra kernel arguments to pass on the kernel cmdline + :param int memory: Amount of RAM to assign to the virt, in MiB + :param int vcpus: Number of virtual cpus + :param str vnc: Arguments to pass to qemu -display + :param str arch: Optional architecture to use in the virt + :param cancel_func: Function that returns True if the installation fails + :type cancel_func: function + :param str virtio_host: Hostname to connect virtio log to + :param int virtio_port: Port to connect virtio log to + :param str image_type: Type of qemu-img disk to create, or None. + :param bool boot_uefi: Use OVMF to boot the VM in UEFI mode + :param str ovmf_path: Path to the OVMF firmware + """ + # Lookup qemu-system- for arch if passed, or try to guess using host arch + qemu_cmd = [self.QEMU_CMDS.get(arch or os.uname().machine, "qemu-system-"+os.uname().machine)] + if not os.path.exists("/usr/bin/"+qemu_cmd[0]): + raise InstallError("%s does not exist, cannot run qemu" % qemu_cmd[0]) + + qemu_cmd += ["-no-user-config"] + qemu_cmd += ["-m", str(memory)] + if vcpus: + qemu_cmd += ["-smp", str(vcpus)] + + if not opts.no_kvm and os.path.exists("/dev/kvm"): + qemu_cmd += ["-machine", "accel=kvm"] + + if boot_uefi: + qemu_cmd += ["-machine", "q35,smm=on"] + qemu_cmd += ["-global", "driver=cfi.pflash01,property=secure,value=on"] + + # Copy the initrd from the iso, create a cpio archive of the kickstart files + # and append it to the temporary initrd. + qemu_initrd = append_initrd(iso.initrd, ks_paths) + qemu_cmd += ["-kernel", iso.kernel] + qemu_cmd += ["-initrd", qemu_initrd] + + # Add the disk and cdrom + if not os.path.isfile(disk_img): + mksparse(disk_img, img_size * 1024**2) + drive_args = "file=%s" % disk_img + drive_args += ",cache=unsafe,discard=unmap" + if image_type: + drive_args += ",format=%s" % image_type + else: + drive_args += ",format=raw" + qemu_cmd += ["-drive", drive_args] + + drive_args = "file=%s,media=cdrom,readonly=on" % iso.iso_path + qemu_cmd += ["-drive", drive_args] + + # Setup the cmdline args + # ====================== + cmdline_args = "inst.ks=file:/%s" % os.path.basename(ks_paths[0]) + cmdline_args += " inst.stage2=hd:LABEL=%s" % udev_escape(iso.label) + if opts.proxy: + cmdline_args += " inst.proxy=%s" % opts.proxy + if kernel_args: + cmdline_args += " "+kernel_args + cmdline_args += " inst.text inst.cmdline" + + qemu_cmd += ["-append", cmdline_args] + + if not opts.vnc: + vnc_port = find_free_port() + if vnc_port == -1: + raise InstallError("No free VNC ports") + display_args = "vnc=127.0.0.1:%d" % (vnc_port - 5900) + else: + display_args = opts.vnc + log.info("qemu %s", display_args) + qemu_cmd += ["-nographic", "-monitor", "none", "-serial", "null", "-display", display_args ] + + # Setup the virtio log port + qemu_cmd += ["-device", "virtio-serial-pci,id=virtio-serial0"] + qemu_cmd += ["-device", "virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0" + ",id=channel0,name=org.fedoraproject.anaconda.log.0"] + qemu_cmd += ["-chardev", "socket,id=charchannel0,host=%s,port=%s" % (virtio_host, virtio_port)] + + # Pass through rng from host + if opts.with_rng != "none": + qemu_cmd += ["-object", "rng-random,id=virtio-rng0,filename=%s" % opts.with_rng] + if boot_uefi: + qemu_cmd += ["-device", "virtio-rng-pci,rng=virtio-rng0,id=rng0,bus=pcie.0,addr=0x9"] + else: + qemu_cmd += ["-device", "virtio-rng-pci,rng=virtio-rng0,id=rng0,bus=pci.0,addr=0x9"] + + if boot_uefi and ovmf_path: + qemu_cmd += ["-drive", "file=%s/OVMF_CODE.secboot.fd,if=pflash,format=raw,unit=0,readonly=on" % ovmf_path] + + # Make a copy of the OVMF_VARS.secboot.fd for this run + ovmf_vars = tempfile.mktemp(prefix="lmc-OVMF_VARS-", suffix=".fd") + shutil.copy2(joinpaths(ovmf_path, "/OVMF_VARS.secboot.fd"), ovmf_vars) + + qemu_cmd += ["-drive", "file=%s,if=pflash,format=raw,unit=1" % ovmf_vars] + + log.info("Running qemu") + log.debug(qemu_cmd) + try: + execWithRedirect(qemu_cmd[0], qemu_cmd[1:], reset_lang=False, raise_err=True, + callback=lambda p: not (cancel_func and cancel_func())) + except subprocess.CalledProcessError as e: + log.error("Running qemu failed:") + log.error("cmd: %s", " ".join(e.cmd)) + log.error("output: %s", e.output or "") + raise InstallError("QEMUInstall failed") + except (OSError, KeyboardInterrupt) as e: + log.error("Running qemu failed: %s", str(e)) + raise InstallError("QEMUInstall failed") + finally: + os.unlink(qemu_initrd) + if boot_uefi and ovmf_path: + os.unlink(ovmf_vars) + + if cancel_func and cancel_func(): + log.error("Installation error detected. See logfile for details.") + raise InstallError("QEMUInstall failed") + else: + log.info("Installation finished without errors.")
+ + +
[docs]def novirt_cancel_check(cancel_funcs, proc): + """ + Check to see if there has been an error in the logs + + :param cancel_funcs: list of functions to call, True from any one cancels the build + :type cancel_funcs: list + :param proc: Popen object for the anaconda process + :type proc: subprocess.Popen + :returns: True if the process has been terminated + + The cancel_funcs functions should return a True if an error has been detected. + When an error is detected the process is terminated and this returns True + """ + for f in cancel_funcs: + if f(): + # Anaconda runs from unshare, anaconda doesn't exit correctly so try to + # send TERM to all of them directly + import psutil + for p in psutil.Process(proc.pid).children(recursive=True): + p.terminate() + psutil.Process(proc.pid).terminate() + return True + return False
+ + +
[docs]def anaconda_cleanup(dirinstall_path): + """ + Cleanup any leftover mounts from anaconda + + :param str dirinstall_path: Path where anaconda mounts things + :returns: True if cleanups were successful. False if any of them failed. + + If anaconda crashes it may leave things mounted under this path. It will + typically be set to /mnt/sysimage/ + + Attempts to cleanup may also fail. Catch these and continue trying the + other mountpoints. + + Anaconda may also leave /run/anaconda.pid behind, clean that up as well. + """ + # Anaconda may not clean up its /var/run/anaconda.pid file + # Make sure the process is really finished (it should be, since it was started from a subprocess call) + # and then remove the pid file. + if os.path.exists("/var/run/anaconda.pid"): + # anaconda may be started using unshare so the pid is always 1 + if open("/var/run/anaconda.pid").read().strip() == "1": + os.unlink("/var/run/anaconda.pid") + + rc = True + dirinstall_path = os.path.abspath(dirinstall_path) + # unmount filesystems + for mounted in reversed(open("/proc/mounts").readlines()): + (_device, mountpoint, _rest) = mounted.split(" ", 2) + if mountpoint.startswith(dirinstall_path) and os.path.ismount(mountpoint): + try: + umount(mountpoint) + except subprocess.CalledProcessError: + log.error("Cleanup of %s failed. See program.log for details", mountpoint) + rc = False + return rc
+ + +
[docs]def novirt_install(opts, disk_img, disk_size, cancel_func=None, tar_img=None): + """ + Use Anaconda to install to a disk image + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str disk_img: The full path to the disk image to be created + :param int disk_size: The size of the disk_img in MiB + :param cancel_func: Function that returns True to cancel build + :type cancel_func: function + :param str tar_img: For make_tar_disk, the path to final tarball to be created + + This method runs anaconda to create the image and then based on the opts + passed creates a qemu disk image or tarfile. + """ + dirinstall_path = ROOT_PATH + + # Clean up /tmp/ from previous runs to prevent stale info from being used + for path in ["/tmp/yum.repos.d/", "/tmp/yum.cache/"]: + if os.path.isdir(path): + shutil.rmtree(path) + + args = ["--kickstart", opts.ks[0], "--cmdline"] + if opts.anaconda_args: + for arg in opts.anaconda_args: + args += arg.split(" ", 1) + if opts.proxy: + args += ["--proxy", opts.proxy] + if opts.armplatform: + args += ["--armplatform", opts.armplatform] + + if opts.make_iso or opts.make_fsimage or opts.make_pxe_live: + # Make a blank fs image + args += ["--dirinstall"] + + mkext4img(None, disk_img, label=opts.fs_label, size=disk_size * 1024**2) + if not os.path.isdir(dirinstall_path): + os.mkdir(dirinstall_path) + mount(disk_img, opts="loop", mnt=dirinstall_path) + elif opts.make_tar or opts.make_oci: + # Install under dirinstall_path, make sure it starts clean + if os.path.exists(dirinstall_path): + shutil.rmtree(dirinstall_path) + + if opts.make_oci: + # OCI installs under /rootfs/ + dirinstall_path = joinpaths(dirinstall_path, "rootfs") + args += ["--dirinstall", dirinstall_path] + else: + args += ["--dirinstall"] + + os.makedirs(dirinstall_path) + else: + args += ["--image", disk_img] + + # Create the sparse image + mksparse(disk_img, disk_size * 1024**2) + + log_monitor = LogMonitor(timeout=opts.timeout) + args += ["--remotelog", "%s:%s" % (log_monitor.host, log_monitor.port)] + cancel_funcs = [log_monitor.server.log_check] + if cancel_func is not None: + cancel_funcs.append(cancel_func) + + # Make sure anaconda has the right product and release + log.info("Running anaconda.") + try: + unshare_args = ["--pid", "--kill-child", "--mount", "--propagation", "unchanged", "anaconda"] + args + for line in execReadlines("unshare", unshare_args, reset_lang=False, + env_add={"ANACONDA_PRODUCTNAME": opts.project, + "ANACONDA_PRODUCTVERSION": opts.releasever}, + callback=lambda p: not novirt_cancel_check(cancel_funcs, p)): + log.info(line) + + # Make sure the new filesystem is correctly labeled + setfiles_args = ["-e", "/proc", "-e", "/sys", + "/etc/selinux/targeted/contexts/files/file_contexts", "/"] + + if "--dirinstall" in args: + # setfiles may not be available, warn instead of fail + try: + execWithRedirect("setfiles", setfiles_args, root=dirinstall_path) + except (subprocess.CalledProcessError, OSError) as e: + log.warning("Running setfiles on install tree failed: %s", str(e)) + else: + with PartitionMount(disk_img) as img_mount: + if img_mount and img_mount.mount_dir: + try: + execWithRedirect("setfiles", setfiles_args, root=img_mount.mount_dir) + except (subprocess.CalledProcessError, OSError) as e: + log.warning("Running setfiles on install tree failed: %s", str(e)) + + # For image installs, run fstrim to discard unused blocks. This way + # unused blocks do not need to be allocated for sparse image types + execWithRedirect("fstrim", [img_mount.mount_dir]) + + except (subprocess.CalledProcessError, OSError) as e: + log.error("Running anaconda failed: %s", e) + raise InstallError("novirt_install failed") + finally: + log_monitor.shutdown() + + # Move the anaconda logs over to a log directory + log_dir = os.path.abspath(os.path.dirname(opts.logfile)) + log_anaconda = joinpaths(log_dir, "anaconda") + if not os.path.isdir(log_anaconda): + os.mkdir(log_anaconda) + for l in glob.glob("/tmp/*log")+glob.glob("/tmp/anaconda-tb-*"): + shutil.copy2(l, log_anaconda) + os.unlink(l) + + # Make sure any leftover anaconda mounts have been cleaned up + if not anaconda_cleanup(dirinstall_path): + raise InstallError("novirt_install cleanup of anaconda mounts failed.") + + if not opts.make_iso and not opts.make_fsimage and not opts.make_pxe_live: + dm_name = os.path.splitext(os.path.basename(disk_img))[0] + + # Remove device-mapper for partitions and disk + log.debug("Removing device-mapper setup on %s", dm_name) + for d in sorted(glob.glob("/dev/mapper/"+dm_name+"*"), reverse=True): + dm_detach(d) + + log.debug("Removing loop device for %s", disk_img) + loop_detach("/dev/"+get_loop_name(disk_img)) + + # qemu disk image is used by bare qcow2 images and by Vagrant + if opts.image_type: + log.info("Converting %s to %s", disk_img, opts.image_type) + qemu_args = [] + for arg in opts.qemu_args: + qemu_args += arg.split(" ", 1) + + # convert the image to the selected format + if "-O" not in qemu_args: + qemu_args.extend(["-O", opts.image_type]) + qemu_img = tempfile.mktemp(prefix="lmc-disk-", suffix=".img") + execWithRedirect("qemu-img", ["convert"] + qemu_args + [disk_img, qemu_img], raise_err=True) + if not opts.make_vagrant: + execWithRedirect("mv", ["-f", qemu_img, disk_img], raise_err=True) + else: + # Take the new qcow2 image and package it up for Vagrant + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + vagrant_dir = tempfile.mkdtemp(prefix="lmc-tmpdir-") + metadata_path = joinpaths(vagrant_dir, "metadata.json") + execWithRedirect("mv", ["-f", qemu_img, joinpaths(vagrant_dir, "box.img")], raise_err=True) + if opts.vagrant_metadata: + shutil.copy2(opts.vagrant_metadata, metadata_path) + else: + create_vagrant_metadata(metadata_path) + update_vagrant_metadata(metadata_path, disk_size) + if opts.vagrantfile: + shutil.copy2(opts.vagrantfile, joinpaths(vagrant_dir, "vagrantfile")) + + log.info("Creating Vagrant image") + rc = mktar(vagrant_dir, disk_img, opts.compression, compress_args, selinux=False) + if rc: + raise InstallError("novirt_install mktar failed: rc=%s" % rc) + shutil.rmtree(vagrant_dir) + elif opts.make_tar: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + rc = mktar(dirinstall_path, disk_img, opts.compression, compress_args) + shutil.rmtree(dirinstall_path) + + if rc: + raise InstallError("novirt_install mktar failed: rc=%s" % rc) + elif opts.make_oci: + # An OCI image places the filesystem under /rootfs/ and adds the json files at the top + # And then creates a tar of the whole thing. + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + shutil.copy2(opts.oci_config, ROOT_PATH) + shutil.copy2(opts.oci_runtime, ROOT_PATH) + rc = mktar(ROOT_PATH, disk_img, opts.compression, compress_args) + + if rc: + raise InstallError("novirt_install mktar failed: rc=%s" % rc) + else: + # For raw disk images, use fallocate to deallocate unused space + execWithRedirect("fallocate", ["--dig-holes", disk_img], raise_err=True) + + # For make_tar_disk, wrap the result in a tar file, and remove the original disk image. + if opts.make_tar_disk: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + rc = mktar(disk_img, tar_img, opts.compression, compress_args, selinux=False) + + if rc: + raise InstallError("novirt_install mktar failed: rc=%s" % rc) + + os.unlink(disk_img)
+ +
[docs]def virt_install(opts, install_log, disk_img, disk_size, cancel_func=None, tar_img=None): + """ + Use qemu to install to a disk image + + :param opts: options passed to livemedia-creator + :type opts: argparse options + :param str install_log: The path to write the log from qemu + :param str disk_img: The full path to the disk image to be created + :param int disk_size: The size of the disk_img in MiB + :param cancel_func: Function that returns True to cancel build + :type cancel_func: function + :param str tar_img: For make_tar_disk, the path to final tarball to be created + + This uses qemu with a boot.iso and a kickstart to create a disk + image and then optionally, based on the opts passed, creates tarfile. + """ + iso_mount = IsoMountpoint(opts.iso, opts.location) + if not iso_mount.stage2: + iso_mount.umount() + raise InstallError("ISO is missing stage2, cannot continue") + + log_monitor = LogMonitor(install_log, timeout=opts.timeout) + cancel_funcs = [log_monitor.server.log_check] + if cancel_func is not None: + cancel_funcs.append(cancel_func) + + kernel_args = "" + if opts.kernel_args: + kernel_args += opts.kernel_args + if opts.proxy: + kernel_args += " proxy="+opts.proxy + + if opts.image_type and not opts.make_fsimage: + qemu_args = [] + for arg in opts.qemu_args: + qemu_args += arg.split(" ", 1) + if "-f" not in qemu_args: + qemu_args += ["-f", opts.image_type] + + mkqemu_img(disk_img, disk_size*1024**2, qemu_args) + + if opts.make_fsimage or opts.make_tar or opts.make_oci: + diskimg_path = tempfile.mktemp(prefix="lmc-disk-", suffix=".img") + else: + diskimg_path = disk_img + + try: + QEMUInstall(opts, iso_mount, opts.ks, diskimg_path, disk_size, + kernel_args, opts.ram, opts.vcpus, opts.vnc, opts.arch, + cancel_func = lambda : any(f() for f in cancel_funcs), + virtio_host = log_monitor.host, + virtio_port = log_monitor.port, + image_type=opts.image_type, boot_uefi=opts.virt_uefi, + ovmf_path=opts.ovmf_path) + log_monitor.shutdown() + except InstallError as e: + log.error("VirtualInstall failed: %s", e) + raise + finally: + log.info("unmounting the iso") + iso_mount.umount() + + if log_monitor.server.log_check(): + if not log_monitor.server.error_line and opts.timeout: + msg = "virt_install failed due to timeout" + else: + msg = "virt_install failed on line: %s" % log_monitor.server.error_line + raise InstallError(msg) + elif cancel_func and cancel_func(): + raise InstallError("virt_install canceled by cancel_func") + + if opts.make_fsimage: + mkfsimage_from_disk(diskimg_path, disk_img, disk_size, label=opts.fs_label) + os.unlink(diskimg_path) + elif opts.make_tar: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + with PartitionMount(diskimg_path) as img_mount: + if img_mount and img_mount.mount_dir: + rc = mktar(img_mount.mount_dir, disk_img, opts.compression, compress_args) + else: + rc = 1 + os.unlink(diskimg_path) + + if rc: + raise InstallError("virt_install failed") + elif opts.make_oci: + # An OCI image places the filesystem under /rootfs/ and adds the json files at the top + # And then creates a tar of the whole thing. + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + with PartitionMount(diskimg_path, submount="rootfs") as img_mount: + if img_mount and img_mount.temp_dir: + shutil.copy2(opts.oci_config, img_mount.temp_dir) + shutil.copy2(opts.oci_runtime, img_mount.temp_dir) + rc = mktar(img_mount.temp_dir, disk_img, opts.compression, compress_args) + else: + rc = 1 + os.unlink(diskimg_path) + + if rc: + raise InstallError("virt_install failed") + elif opts.make_vagrant: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + vagrant_dir = tempfile.mkdtemp(prefix="lmc-tmpdir-") + metadata_path = joinpaths(vagrant_dir, "metadata.json") + execWithRedirect("mv", ["-f", disk_img, joinpaths(vagrant_dir, "box.img")], raise_err=True) + if opts.vagrant_metadata: + shutil.copy2(opts.vagrant_metadata, metadata_path) + else: + create_vagrant_metadata(metadata_path) + update_vagrant_metadata(metadata_path, disk_size) + if opts.vagrantfile: + shutil.copy2(opts.vagrantfile, joinpaths(vagrant_dir, "vagrantfile")) + + rc = mktar(vagrant_dir, disk_img, opts.compression, compress_args, selinux=False) + if rc: + raise InstallError("virt_install failed") + shutil.rmtree(vagrant_dir) + + # For make_tar_disk, wrap the result in a tar file, and remove the original disk image. + if opts.make_tar_disk: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + rc = mktar(disk_img, tar_img, opts.compression, compress_args, selinux=False) + + if rc: + raise InstallError("virt_install mktar failed: rc=%s" % rc) + + os.unlink(disk_img)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/ltmpl.html b/f34-branch/_modules/pylorax/ltmpl.html new file mode 100644 index 00000000..0a3fbb3e --- /dev/null +++ b/f34-branch/_modules/pylorax/ltmpl.html @@ -0,0 +1,1091 @@ + + + + + + + + + + pylorax.ltmpl — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.ltmpl

+#
+# ltmpl.py
+#
+# Copyright (C) 2009-2018  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#                     Will Woods <wwoods@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.ltmpl")
+
+import os, re, glob, shlex, fnmatch
+from os.path import basename, isdir
+from subprocess import CalledProcessError
+import shutil
+
+from pylorax.sysutils import joinpaths, cpfile, mvfile, replace, remove
+from pylorax.dnfhelper import LoraxDownloadCallback, LoraxRpmCallback
+from pylorax.base import DataHolder
+from pylorax.executils import runcmd, runcmd_output
+from pylorax.imgutils import mkcpio
+
+from mako.lookup import TemplateLookup
+from mako.exceptions import text_error_template
+import sys, traceback
+import struct
+import dnf
+import collections.abc
+
+
[docs]class LoraxTemplate(object): + def __init__(self, directories=None): + directories = directories or ["/usr/share/lorax"] + # we have to add ["/"] to the template lookup directories or the + # file includes won't work properly for absolute paths + self.directories = ["/"] + directories + +
[docs] def parse(self, template_file, variables): + lookup = TemplateLookup(directories=self.directories) + template = lookup.get_template(template_file) + + try: + textbuf = template.render(**variables) + except: + logger.error("Problem rendering %s (%s):", template_file, variables) + logger.error(text_error_template().render()) + raise + + # split, strip and remove empty lines + lines = textbuf.splitlines() + lines = [line.strip() for line in lines] + lines = [line for line in lines if line] + + # remove comments + lines = [line for line in lines if not line.startswith("#")] + + # split with shlex and perform brace expansion. This can fail, so we unroll the loop + # for better error reporting. + expanded_lines = [] + try: + for line in lines: + expanded_lines.append(split_and_expand(line)) + except Exception as e: + logger.error('shlex error processing "%s": %s', line, str(e)) + raise + return expanded_lines
+ +
[docs]def split_and_expand(line): + return [exp for word in shlex.split(line) for exp in brace_expand(word)]
+ +
[docs]def brace_expand(s): + if not ('{' in s and ',' in s and '}' in s): + yield s + else: + right = s.find('}') + left = s[:right].rfind('{') + (prefix, choices, suffix) = (s[:left], s[left+1:right], s[right+1:]) + for choice in choices.split(','): + for alt in brace_expand(prefix+choice+suffix): + yield alt
+ +
[docs]def rglob(pathname, root="/", fatal=False): + seen = set() + rootlen = len(root)+1 + for f in glob.iglob(joinpaths(root, pathname)): + if f not in seen: + seen.add(f) + yield f[rootlen:] # remove the root to produce relative path + if fatal and not seen: + raise IOError("nothing matching %s in %s" % (pathname, root))
+ +
[docs]def rexists(pathname, root=""): + # Generator is always True, even with no values; + # bool(rglob(...)) won't work here. + for _path in rglob(pathname, root): + return True + return False
+ +
[docs]class TemplateRunner(object): + ''' + This class parses and executes Lorax templates. Sample usage: + + # install a bunch of packages + runner = LoraxTemplateRunner(inroot=rundir, outroot=rundir, dbo=dnf_obj) + runner.run("install-packages.ltmpl") + + NOTES: + + * Parsing procedure is roughly: + 1. Mako template expansion (on the whole file) + 2. For each line of the result, + + a. Whitespace splitting (using shlex.split()) + b. Brace expansion (using brace_expand()) + c. If the first token is the name of a function, call that function + with the rest of the line as arguments + + * Parsing and execution are *separate* passes - so you can't use the result + of a command in an %if statement (or any other control statements)! + ''' + def __init__(self, fatalerrors=True, templatedir=None, defaults=None, builtins=None): + self.fatalerrors = fatalerrors + self.templatedir = templatedir or "/usr/share/lorax" + self.templatefile = None + self.builtins = builtins or {} + self.defaults = defaults or {} + + +
[docs] def run(self, templatefile, **variables): + for k,v in list(self.defaults.items()) + list(self.builtins.items()): + variables.setdefault(k,v) + logger.debug("executing %s with variables=%s", templatefile, variables) + self.templatefile = templatefile + t = LoraxTemplate(directories=[self.templatedir]) + commands = t.parse(templatefile, variables) + self._run(commands)
+ + + def _run(self, parsed_template): + logger.info("running %s", self.templatefile) + for (num, line) in enumerate(parsed_template,1): + logger.debug("template line %i: %s", num, " ".join(line)) + skiperror = False + (cmd, args) = (line[0], line[1:]) + # Following Makefile convention, if the command is prefixed with + # a dash ('-'), we'll ignore any errors on that line. + if cmd.startswith('-'): + cmd = cmd[1:] + skiperror = True + try: + # grab the method named in cmd and pass it the given arguments + f = getattr(self, cmd, None) + if cmd[0] == '_' or cmd == 'run' or not isinstance(f, collections.abc.Callable): + raise ValueError("unknown command %s" % cmd) + f(*args) + except Exception: # pylint: disable=broad-except + if skiperror: + logger.debug("ignoring error") + continue + logger.error("template command error in %s:", self.templatefile) + logger.error(" %s", " ".join(line)) + # format the exception traceback + exclines = traceback.format_exception(*sys.exc_info()) + # skip the bit about "ltmpl.py, in _run()" - we know that + exclines.pop(1) + # log the "ErrorType: this is what happened" line + logger.error(" %s", exclines[-1].strip()) + # and log the entire traceback to the debug log + for _line in ''.join(exclines).splitlines(): + logger.debug(" %s", _line) + if self.fatalerrors: + raise
+ + +# TODO: operate inside an actual chroot for safety? Not that RPM bothers.. +
[docs]class LoraxTemplateRunner(TemplateRunner): + ''' + This class parses and executes Lorax templates. Sample usage: + + # install a bunch of packages + runner = LoraxTemplateRunner(inroot=rundir, outroot=rundir, dbo=dnf_obj) + runner.run("install-packages.ltmpl") + + # modify a runtime dir + runner = LoraxTemplateRunner(inroot=rundir, outroot=newrun) + runner.run("runtime-transmogrify.ltmpl") + + NOTES: + + * Commands that run external programs (e.g. systemctl) currently use + the *host*'s copy of that program, which may cause problems if there's a + big enough difference between the host and the image you're modifying. + + * The commands are not executed under a real chroot, so absolute symlinks + will point *outside* the inroot/outroot. Be careful with symlinks! + + ADDING NEW COMMANDS: + + * Each template command is just a method of the LoraxTemplateRunner + object - so adding a new command is as easy as adding a new function. + + * Each function gets arguments that correspond to the rest of the tokens + on that line (after word splitting and brace expansion) + + * Commands should raise exceptions for errors - don't use sys.exit() + ''' + def __init__(self, inroot, outroot, dbo=None, fatalerrors=True, + templatedir=None, defaults=None): + self.inroot = inroot + self.outroot = outroot + self.dbo = dbo + builtins = DataHolder(exists=lambda p: rexists(p, root=inroot), + glob=lambda g: list(rglob(g, root=inroot))) + self.results = DataHolder(treeinfo=dict()) # just treeinfo for now + + super(LoraxTemplateRunner, self).__init__(fatalerrors, templatedir, defaults, builtins) + # TODO: set up custom logger with a filter to add line info + + def _out(self, path): + return joinpaths(self.outroot, path) + def _in(self, path): + return joinpaths(self.inroot, path) + + def _filelist(self, *pkgs): + """ Return the list of files in the packages """ + pkglist = [] + for pkg_glob in pkgs: + pkglist += list(self.dbo.sack.query().installed().filter(name__glob=pkg_glob)) + + # dnf/hawkey doesn't make any distinction between file, dir or ghost like yum did + # so only return the files. + return set(f for pkg in pkglist for f in pkg.files if not os.path.isdir(self._out(f))) + + def _getsize(self, *files): + return sum(os.path.getsize(self._out(f)) for f in files if os.path.isfile(self._out(f))) + + def _write_package_log(self): + """ + Write the list of installed packages to /root/ on the boot.iso + + If lorax is called with a debug repo find the corresponding debuginfo package + names and write them to /root/debubg-pkgs.log on the boot.iso + The non-debuginfo packages are written to /root/lorax-packages.log + """ + os.makedirs(self._out("root/"), exist_ok=True) + available = self.dbo.sack.query().available() + pkgs = [] + debug_pkgs = [] + for p in list(self.dbo.transaction.install_set): + pkgs.append(f"{p.name}-{p.version}-{p.release}.{p.arch}") + if available.filter(name=p.name+"-debuginfo"): + debug_pkgs.append(f"{p.name}-debuginfo-{p.epoch}:{p.version}-{p.release}") + + with open(self._out("root/lorax-packages.log"), "w") as f: + f.write("\n".join(sorted(pkgs))) + f.write("\n") + + if debug_pkgs: + with open(self._out("root/debug-pkgs.log"), "w") as f: + f.write("\n".join(sorted(debug_pkgs))) + f.write("\n") + +
[docs] def install(self, srcglob, dest): + ''' + install SRC DEST + Copy the given file (or files, if a glob is used) from the input + tree to the given destination in the output tree. + The path to DEST must exist in the output tree. + If DEST is a directory, SRC will be copied into that directory. + If DEST doesn't exist, SRC will be copied to a file with that name, + assuming the rest of the path exists. + This is pretty much like how the 'cp' command works. + + Examples: + install usr/share/myconfig/grub.conf /boot + install /usr/share/myconfig/grub.conf.in /boot/grub.conf + ''' + for src in rglob(self._in(srcglob), fatal=True): + try: + cpfile(src, self._out(dest)) + except shutil.Error as e: + logger.error(e)
+ +
[docs] def installimg(self, *args): + ''' + installimg [--xz|--gzip|--bzip2|--lzma] [-ARG|--ARG=OPTION] SRCDIR DESTFILE + Create a compressed cpio archive of the contents of SRCDIR and place + it in DESTFILE. + + If SRCDIR doesn't exist or is empty nothing is created. + + Examples: + installimg ${LORAXDIR}/product/ images/product.img + installimg ${LORAXDIR}/updates/ images/updates.img + installimg --xz -6 ${LORAXDIR}/updates/ images/updates.img + installimg --xz -9 --memlimit-compress=3700MiB ${LORAXDIR}/updates/ images/updates.img + + Optionally use a different compression type and override the default args + passed to it. The default is xz -9 + ''' + COMPRESSORS = ("--xz", "--gzip", "--bzip2", "--lzma") + if len(args) < 2: + raise ValueError("Not enough args for installimg.") + + srcdir = args[-2] + destfile = args[-1] + if not os.path.isdir(self._in(srcdir)) or not os.listdir(self._in(srcdir)): + return + + compression = "xz" + compressargs = [] + if args[0] in COMPRESSORS: + compression = args[0][2:] + + for arg in args[1:-2]: + if arg.startswith('-'): + compressargs.append(arg) + else: + raise ValueError("Argument is missing -") + + logger.info("Creating image file %s from contents of %s", self._out(destfile), self._in(srcdir)) + logger.debug("Using %s %s compression", compression, compressargs or "") + mkcpio(self._in(srcdir), self._out(destfile), compression=compression, compressargs=compressargs)
+ +
[docs] def mkdir(self, *dirs): + ''' + mkdir DIR [DIR ...] + Create the named DIR(s). Will create leading directories as needed. + + Example: + mkdir /images + ''' + for d in dirs: + d = self._out(d) + if not isdir(d): + os.makedirs(d)
+ +
[docs] def replace(self, pat, repl, *fileglobs): + ''' + replace PATTERN REPLACEMENT FILEGLOB [FILEGLOB ...] + Find-and-replace the given PATTERN (Python-style regex) with the given + REPLACEMENT string for each of the files listed. + + Example: + replace @VERSION@ ${product.version} /boot/grub.conf /boot/isolinux.cfg + ''' + match = False + for g in fileglobs: + for f in rglob(self._out(g)): + match = True + replace(f, pat, repl) + if not match: + raise IOError("no files matched %s" % " ".join(fileglobs))
+ +
[docs] def append(self, filename, data): + ''' + append FILE STRING + Append STRING (followed by a newline character) to FILE. + Python character escape sequences ('\\n', '\\t', etc.) will be + converted to the appropriate characters. + + Examples: + + append /etc/depmod.d/dd.conf "search updates built-in" + append /etc/resolv.conf "" + ''' + with open(self._out(filename), "a") as fobj: + fobj.write(bytes(data, "utf8").decode('unicode_escape')+"\n")
+ +
[docs] def treeinfo(self, section, key, *valuetoks): + ''' + treeinfo SECTION KEY ARG [ARG ...] + Add an item to the treeinfo data store. + The given SECTION will have a new item added where + KEY = ARG ARG ... + + Example: + treeinfo images-${kernel.arch} boot.iso images/boot.iso + ''' + if section not in self.results.treeinfo: + self.results.treeinfo[section] = dict() + self.results.treeinfo[section][key] = " ".join(valuetoks)
+ +
[docs] def installkernel(self, section, src, dest): + ''' + installkernel SECTION SRC DEST + Install the kernel from SRC in the input tree to DEST in the output + tree, and then add an item to the treeinfo data store, in the named + SECTION, where "kernel" = DEST. + + Equivalent to: + install SRC DEST + treeinfo SECTION kernel DEST + ''' + self.install(src, dest) + self.treeinfo(section, "kernel", dest)
+ +
[docs] def installinitrd(self, section, src, dest): + ''' + installinitrd SECTION SRC DEST + Same as installkernel, but for "initrd". + ''' + self.install(src, dest) + self.chmod(dest, '644') + self.treeinfo(section, "initrd", dest)
+ +
[docs] def installupgradeinitrd(self, section, src, dest): + ''' + installupgradeinitrd SECTION SRC DEST + Same as installkernel, but for "upgrade". + ''' + self.install(src, dest) + self.chmod(dest, '644') + self.treeinfo(section, "upgrade", dest)
+ + + + + +
[docs] def copy(self, src, dest): + ''' + copy SRC DEST + Copy SRC to DEST. + If DEST is a directory, SRC will be copied inside it. + If DEST doesn't exist, SRC will be copied to a file with + that name, if the path leading to it exists. + ''' + try: + cpfile(self._out(src), self._out(dest)) + except shutil.Error as e: + logger.error(e)
+ +
[docs] def move(self, src, dest): + ''' + move SRC DEST + Move SRC to DEST. + ''' + mvfile(self._out(src), self._out(dest))
+ +
[docs] def remove(self, *fileglobs): + ''' + remove FILEGLOB [FILEGLOB ...] + Remove all the named files or directories. + Will *not* raise exceptions if the file(s) are not found. + ''' + for g in fileglobs: + for f in rglob(self._out(g)): + remove(f) + logger.debug("removed %s", f)
+ +
[docs] def chmod(self, fileglob, mode): + ''' + chmod FILEGLOB OCTALMODE + Change the mode of all the files matching FILEGLOB to OCTALMODE. + ''' + for f in rglob(self._out(fileglob), fatal=True): + os.chmod(f, int(mode,8))
+ +
[docs] def log(self, msg): + ''' + log MESSAGE + Emit the given log message. Be sure to put it in quotes! + + Example: + log "Reticulating splines, please wait..." + ''' + logger.info(msg)
+ + # TODO: add ssh-keygen, mkisofs(?), find, and other useful commands +
[docs] def runcmd(self, *cmdlist): + ''' + runcmd CMD [ARG ...] + Run the given command with the given arguments. + + NOTE: All paths given MUST be COMPLETE, ABSOLUTE PATHS to the file + or files mentioned. ${root}/${inroot}/${outroot} are good for + constructing these paths. + + FURTHER NOTE: Please use this command only as a last resort! + Whenever possible, you should use the existing template commands. + If the existing commands don't do what you need, fix them! + + Examples: + (this should be replaced with a "find" function) + runcmd find ${root} -name "*.pyo" -type f -delete + %for f in find(root, name="*.pyo"): + remove ${f} + %endfor + ''' + cmd = cmdlist + logger.debug('running command: %s', cmd) + if cmd[0].startswith("--chdir="): + logger.error("--chdir is no longer supported for runcmd.") + raise ValueError("--chdir is no longer supported for runcmd.") + + try: + stdout = runcmd_output(cmd) + if stdout: + logger.debug('command output:\n%s', stdout) + logger.debug("command finished successfully") + except CalledProcessError as e: + if e.output: + logger.error('command output:\n%s', e.output) + logger.error('command returned failure (%d)', e.returncode) + raise
+ +
[docs] def installpkg(self, *pkgs): + ''' + installpkg [--required|--optional] [--except PKGGLOB [--except PKGGLOB ...]] PKGGLOB [PKGGLOB ...] + Request installation of all packages matching the given globs. + Note that this is just a *request* - nothing is *actually* installed + until the 'run_pkg_transaction' command is given. + + --required is now the default. If the PKGGLOB can be missing pass --optional + ''' + if pkgs[0] == '--optional': + pkgs = pkgs[1:] + required = False + elif pkgs[0] == '--required': + pkgs = pkgs[1:] + required = True + else: + required = True + + excludes = [] + while '--except' in pkgs: + idx = pkgs.index('--except') + if len(pkgs) == idx+1: + raise ValueError("installpkg needs an argument after --except") + + excludes.append(pkgs[idx+1]) + pkgs = pkgs[:idx] + pkgs[idx+2:] + + errors = False + for p in pkgs: + try: + # Start by using Subject to generate a package query, which will + # give us a query object similar to what dbo.install would select, + # minus the handling for multilib. This query may contain + # multiple arches. Pull the package names out of that, filter any + # that match the excludes patterns, and pass those names back to + # dbo.install to do the actual, arch and version and multilib + # aware, package selction. + + # dnf queries don't have a concept of negative globs which is why + # the filtering is done the hard way. + + pkgnames = [pkg for pkg in dnf.subject.Subject(p).get_best_query(self.dbo.sack).filter(latest=True)] + if not pkgnames: + raise dnf.exceptions.PackageNotFoundError("no package matched", p) + + # Apply excludes to the name only + for exclude in excludes: + pkgnames = [pkg for pkg in pkgnames if not fnmatch.fnmatch(pkg.name, exclude)] + + # Convert to a sorted NVR list for installation + pkgnvrs = sorted(["{}-{}-{}".format(pkg.name, pkg.version, pkg.release) for pkg in pkgnames]) + + # If the request is a glob, expand it in the log + if any(g for g in ['*','?','.'] if g in p): + logger.info("installpkg: %s expands to %s", p, ",".join(pkgnvrs)) + + for pkgnvr in pkgnvrs: + try: + self.dbo.install(pkgnvr) + except Exception as e: # pylint: disable=broad-except + if required: + raise + # Not required, log it and continue processing pkgs + logger.error("installpkg %s failed: %s", pkgnvr, str(e)) + except Exception as e: # pylint: disable=broad-except + logger.error("installpkg %s failed: %s", p, str(e)) + errors = True + + if errors and required: + raise Exception("Required installpkg failed.")
+ +
[docs] def removepkg(self, *pkgs): + ''' + removepkg PKGGLOB [PKGGLOB...] + Delete the named package(s). + + IMPLEMENTATION NOTES: + RPM scriptlets (%preun/%postun) are *not* run. + Files are deleted, but directories are left behind. + ''' + for p in pkgs: + filepaths = [f.lstrip('/') for f in self._filelist(p)] + # TODO: also remove directories that aren't owned by anything else + if filepaths: + logger.debug("removepkg %s: %ikb", p, self._getsize(*filepaths)/1024) + self.remove(*filepaths) + else: + logger.debug("removepkg %s: no files to remove!", p)
+ +
[docs] def run_pkg_transaction(self): + ''' + run_pkg_transaction + Actually install all the packages requested by previous 'installpkg' + commands. + ''' + try: + logger.info("Checking dependencies") + self.dbo.resolve() + except dnf.exceptions.DepsolveError as e: + logger.error("Dependency check failed: %s", e) + raise + logger.info("%d packages selected", len(self.dbo.transaction)) + if len(self.dbo.transaction) == 0: + raise Exception("No packages in transaction") + + # Write out the packages installed, including debuginfo packages + self._write_package_log() + + pkgs_to_download = self.dbo.transaction.install_set + logger.info("Downloading packages") + progress = LoraxDownloadCallback() + try: + self.dbo.download_packages(pkgs_to_download, progress) + except dnf.exceptions.DownloadError as e: + logger.error("Failed to download the following packages: %s", e) + raise + + logger.info("Preparing transaction from installation source") + try: + display = LoraxRpmCallback() + self.dbo.do_transaction(display=display) + except BaseException as e: + logger.error("The transaction process has ended abruptly: %s", e) + raise + + # Reset the package sack to pick up the installed packages + self.dbo.reset(repos=False) + self.dbo.fill_sack(load_system_repo=True, load_available_repos=False) + + # At this point dnf should know about the installed files. Double check that it really does. + if len(self._filelist("anaconda-core")) == 0: + raise Exception("Failed to reset dbo to installed package set")
+ +
[docs] def removefrom(self, pkg, *globs): + ''' + removefrom PKGGLOB [--allbut] FILEGLOB [FILEGLOB...] + Remove all files matching the given file globs from the package + (or packages) named. + If '--allbut' is used, all the files from the given package(s) will + be removed *except* the ones which match the file globs. + + Examples: + removefrom usbutils /usr/bin/* + removefrom xfsprogs --allbut /sbin/* + ''' + cmd = "%s %s" % (pkg, " ".join(globs)) # save for later logging + keepmatches = False + if globs[0] == '--allbut': + keepmatches = True + globs = globs[1:] + # get pkg filelist and find files that match the globs + filelist = self._filelist(pkg) + matches = set() + for g in globs: + globs_re = re.compile(fnmatch.translate(g)) + m = [f for f in filelist if globs_re.match(f)] + if m: + matches.update(m) + else: + logger.debug("removefrom %s %s: no files matched!", pkg, g) + # are we removing the matches, or keeping only the matches? + if keepmatches: + remove_files = filelist.difference(matches) + else: + remove_files = matches + # remove the files + if remove_files: + logger.debug("removefrom %s: removed %i/%i files, %ikb/%ikb", cmd, + len(remove_files), len(filelist), + self._getsize(*remove_files)/1024, self._getsize(*filelist)/1024) + self.remove(*remove_files) + else: + logger.debug("removefrom %s: no files to remove!", cmd)
+ + # pylint: disable=anomalous-backslash-in-string +
[docs] def removekmod(self, *globs): + ''' + removekmod GLOB [GLOB...] [--allbut] KEEPGLOB [KEEPGLOB...] + Remove all files and directories matching the given file globs from the kernel + modules directory. + + If '--allbut' is used, all the files from the modules will be removed *except* + the ones which match the file globs. There must be at least one initial GLOB + to search and one KEEPGLOB to keep. The KEEPGLOB is expanded to be *KEEPGLOB* + so that it will match anywhere in the path. + + This only removes files from under /lib/modules/\\*/kernel/ + + Examples: + removekmod sound drivers/media drivers/hwmon drivers/video + removekmod drivers/char --allbut virtio_console hw_random + ''' + cmd = " ".join(globs) + if "--allbut" in globs: + idx = globs.index("--allbut") + if idx == 0: + raise ValueError("removekmod needs at least one GLOB before --allbut") + + # Apply keepglobs anywhere they appear in the path + keepglobs = globs[idx+1:] + if len(keepglobs) == 0: + raise ValueError("removekmod needs at least one GLOB after --allbut") + + globs = globs[:idx] + else: + # Nothing to keep + keepglobs = [] + + filelist = set() + for g in globs: + for top_dir in rglob(self._out("/lib/modules/*/kernel/"+g)): + for root, _dirs, files in os.walk(top_dir): + filelist.update(root+"/"+f for f in files) + + # Remove anything matching keepglobs from the list + matches = set() + for g in keepglobs: + globs_re = re.compile(fnmatch.translate("*"+g+"*")) + m = [f for f in filelist if globs_re.match(f)] + if m: + matches.update(m) + else: + logger.debug("removekmod %s: no files matched!", g) + remove_files = filelist.difference(matches) + + if remove_files: + logger.debug("removekmod: removing %d files", len(remove_files)) + list(remove(f) for f in remove_files) + else: + logger.debug("removekmod %s: no files to remove!", cmd)
+ +
[docs] def createaddrsize(self, addr, src, dest): + ''' + createaddrsize INITRD_ADDRESS INITRD ADDRSIZE + Create the initrd.addrsize file required in LPAR boot process. + + Examples: + createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize + ''' + addrsize = open(dest, "wb") + addrsize_data = struct.pack(">iiii", 0, int(addr, 16), 0, os.stat(src).st_size) + addrsize.write(addrsize_data) + addrsize.close()
+ +
[docs] def systemctl(self, cmd, *units): + ''' + systemctl [enable|disable|mask] UNIT [UNIT...] + Enable, disable, or mask the given systemd units. + + Examples: + systemctl disable lvm2-monitor.service + systemctl mask fedora-storage-init.service fedora-configure.service + ''' + if cmd not in ('enable', 'disable', 'mask'): + raise ValueError('unsupported systemctl cmd: %s' % cmd) + if not units: + logger.debug("systemctl: no units given for %s, ignoring", cmd) + return + self.mkdir("/run/systemd/system") # XXX workaround for systemctl bug + systemctl = ['systemctl', '--root', self.outroot, '--no-reload', cmd] + # When a unit doesn't exist systemd aborts the command. Run them one at a time. + # XXX for some reason 'systemctl enable/disable' always returns 1 + for unit in units: + try: + cmd = systemctl + [unit] + runcmd(cmd) + except CalledProcessError: + pass
+ +
[docs]class LiveTemplateRunner(TemplateRunner): + """ + This class parses and executes a limited Lorax template. Sample usage: + + # install a bunch of packages + runner = LiveTemplateRunner(dbo, templatedir, defaults) + runner.run("live-install.tmpl") + + It is meant to be used with the live-install.tmpl which lists the per-arch + pacages needed to build the live-iso output. + """ + def __init__(self, dbo, fatalerrors=True, templatedir=None, defaults=None): + self.dbo = dbo + self.pkgs = [] + self.pkgnames = [] + + super(LiveTemplateRunner, self).__init__(fatalerrors, templatedir, defaults) + +
[docs] def installpkg(self, *pkgs): + ''' + installpkg [--required|--optional] [--except PKGGLOB [--except PKGGLOB ...]] PKGGLOB [PKGGLOB ...] + Request installation of all packages matching the given globs. + Note that this is just a *request* - nothing is *actually* installed + until the 'run_pkg_transaction' command is given. + + --required is now the default. If the PKGGLOB can be missing pass --optional + ''' + if pkgs[0] == '--optional': + pkgs = pkgs[1:] + required = False + elif pkgs[0] == '--required': + pkgs = pkgs[1:] + required = True + else: + required = True + + excludes = [] + while '--except' in pkgs: + idx = pkgs.index('--except') + if len(pkgs) == idx+1: + raise ValueError("installpkg needs an argument after --except") + + excludes.append(pkgs[idx+1]) + pkgs = pkgs[:idx] + pkgs[idx+2:] + + errors = False + for p in pkgs: + try: + # Start by using Subject to generate a package query, which will + # give us a query object similar to what dbo.install would select, + # minus the handling for multilib. This query may contain + # multiple arches. Pull the package names out of that, filter any + # that match the excludes patterns, and pass those names back to + # dbo.install to do the actual, arch and version and multilib + # aware, package selction. + + # dnf queries don't have a concept of negative globs which is why + # the filtering is done the hard way. + + pkgnames = [pkg for pkg in dnf.subject.Subject(p).get_best_query(self.dbo.sack).filter(latest=True)] + if not pkgnames: + raise dnf.exceptions.PackageNotFoundError("no package matched", p) + + # Apply excludes to the name only + for exclude in excludes: + pkgnames = [pkg for pkg in pkgnames if not fnmatch.fnmatch(pkg.name, exclude)] + + # Convert to a sorted NVR list for installation + pkgnvrs = sorted(["{}-{}-{}".format(pkg.name, pkg.version, pkg.release) for pkg in pkgnames]) + + # If the request is a glob, expand it in the log + if any(g for g in ['*','?','.'] if g in p): + logger.info("installpkg: %s expands to %s", p, ",".join(pkgnvrs)) + + self.pkgs.extend(pkgnvrs) + self.pkgnames.extend([pkg.name for pkg in pkgnames]) + except Exception as e: # pylint: disable=broad-except + logger.error("installpkg %s failed: %s", p, str(e)) + errors = True + + if errors and required: + raise Exception("Required installpkg failed.")
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/monitor.html b/f34-branch/_modules/pylorax/monitor.html new file mode 100644 index 00000000..ff020500 --- /dev/null +++ b/f34-branch/_modules/pylorax/monitor.html @@ -0,0 +1,411 @@ + + + + + + + + + + pylorax.monitor — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.monitor

+# monitor.py
+#
+# Copyright (C) 2011-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s): Brian C. Lane <bcl@redhat.com>
+#
+import logging
+log = logging.getLogger("livemedia-creator")
+
+import re
+import socket
+import socketserver
+import threading
+import time
+
+
[docs]class LogRequestHandler(socketserver.BaseRequestHandler): + """ + Handle monitoring and saving the logfiles from the virtual install + + Incoming data is written to self.server.log_path and each line is checked + for patterns that would indicate that the installation failed. + self.server.log_error is set True when this happens. + """ + + simple_tests = [ + "Traceback (", + "traceback script(s) have been run", + "Out of memory:", + "Call Trace:", + "insufficient disk space:", + "Not enough disk space to download the packages", + "error populating transaction after", + "crashed on signal", + "packaging: Missed: NoSuchPackage", + "packaging: Installation failed", + "The following error occurred while installing. This is a fatal error", + "Error in POSTIN scriptlet in rpm package" + ] + + re_tests = [ + r"packaging: base repo .* not valid", + r"packaging: .* requires .*" + ] + +
[docs] def setup(self): + """Start writing to self.server.log_path""" + + if self.server.log_path: + self.fp = open(self.server.log_path, "w") # pylint: disable=attribute-defined-outside-init + else: + self.fp = None + self.request.settimeout(10)
+ +
[docs] def handle(self): + """ + Write incoming data to a logfile and check for errors + + Split incoming data into lines and check for any Tracebacks or other + errors that indicate that the install failed. + + Loops until self.server.kill is True + """ + log.info("Processing logs from %s", self.client_address) + line = "" + while True: + if self.server.kill: + break + + try: + data = str(self.request.recv(4096), "utf8") + if self.fp: + self.fp.write(data) + self.fp.flush() + + # check the data for errors and set error flag + # need to assemble it into lines so we can test for the error + # string. + while data: + more = data.split("\n", 1) + line += more[0] + if len(more) > 1: + self.iserror(line) + line = "" + data = more[1] + else: + data = None + + except socket.timeout: + pass + except Exception as e: # pylint: disable=broad-except + log.info("log processing killed by exception: %s", e) + break
+ +
[docs] def finish(self): + log.info("Shutting down log processing") + self.request.close() + if self.fp: + self.fp.close()
+ +
[docs] def iserror(self, line): + """ + Check a line to see if it contains an error indicating installation failure + + :param str line: log line to check for failure + + If the line contains IGNORED it will be skipped. + """ + if "IGNORED" in line: + return + + for t in self.simple_tests: + if t in line: + self.server.log_error = True + self.server.error_line = line + return + for t in self.re_tests: + if re.search(t, line): + self.server.log_error = True + self.server.error_line = line + return
+ + +
[docs]class LogServer(socketserver.TCPServer): + """A TCP Server that listens for log data""" + + # Number of seconds to wait for a connection after startup + timeout = 60 + + def __init__(self, log_path, *args, **kwargs): + """ + Setup the log server + + :param str log_path: Path to the log file to write + """ + self.kill = False + self.log_error = False + self.error_line = "" + self.log_path = log_path + self._timeout = kwargs.pop("timeout", None) + if self._timeout: + self._start_time = time.time() + socketserver.TCPServer.__init__(self, *args, **kwargs) + +
[docs] def log_check(self): + """ + Check to see if an error has been found in the log + + :returns: True if there has been an error + :rtype: bool + """ + if self._timeout: + taking_too_long = time.time() > self._start_time + (self._timeout * 60) + if taking_too_long: + log.error("Canceling installation due to timeout") + else: + taking_too_long = False + return self.log_error or taking_too_long
+ + +
[docs]class LogMonitor(object): + """ + Setup a server to monitor the logs output by the installation + + This needs to be running before the virt-install runs, it expects + there to be a listener on the port used for the virtio log port. + """ + def __init__(self, log_path=None, host="localhost", port=0, timeout=None, log_request_handler_class=LogRequestHandler): + """ + Start a thread to monitor the logs. + + :param str log_path: Path to the logfile to write + :param str host: Host to bind to. Default is localhost. + :param int port: Port to listen to or 0 to pick a port + + If 0 is passed for the port the dynamically assigned port will be + available as self.port + + If log_path isn't set then it only monitors the logs, instead of + also writing them to disk. + """ + self.server = LogServer(log_path, (host, port), log_request_handler_class, timeout=timeout) + self.host, self.port = self.server.server_address + self.log_path = log_path + self.server_thread = threading.Thread(target=self.server.handle_request) + self.server_thread.daemon = True + self.server_thread.start() + +
[docs] def shutdown(self): + """Force shutdown of the monitoring thread""" + self.server.kill = True + self.server_thread.join()
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/mount.html b/f34-branch/_modules/pylorax/mount.html new file mode 100644 index 00000000..87968291 --- /dev/null +++ b/f34-branch/_modules/pylorax/mount.html @@ -0,0 +1,206 @@ + + + + + + pylorax.mount — Lorax 34.13 documentation + + + + + + + + + + + + + +
+ + +
+ +
+
+
+ +
+
+
+
+ +

Source code for pylorax.mount

+# mount.py
+#
+# Copyright (C) 2011-2015  Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s): Brian C. Lane <bcl@redhat.com>
+#
+import logging
+log = logging.getLogger("livemedia-creator")
+
+import os
+import pycdlib
+from pycdlib.pycdlibexception import PyCdlibException
+
+from pylorax.imgutils import mount, umount
+
+
[docs]class IsoMountpoint(object): + """ + Mount the iso and check to make sure the vmlinuz and initrd.img files exist + + Also check the iso for a a stage2 image and set a flag and extract the + iso's label. + + stage2 can be either LiveOS/squashfs.img or images/install.img + """ + def __init__(self, iso_path, initrd_path=None): + """ + Mount the iso + + :param str iso_path: Path to the iso to mount + :param str initrd_path: Optional path to initrd + + initrd_path can be used to point to a tree with a newer + initrd.img than the iso has. The iso is still used for stage2. + + self.kernel and self.initrd point to the kernel and initrd. + self.stage2 is set to True if there is a stage2 image. + self.repo is the path to the mounted iso if there is a /repodata dir. + """ + self.label = None + self.iso_path = iso_path + self.initrd_path = initrd_path + + if not self.initrd_path: + self.mount_dir = mount(self.iso_path, opts="loop") + else: + self.mount_dir = self.initrd_path + + kernel_list = [("/isolinux/vmlinuz", "/isolinux/initrd.img"), + ("/ppc/ppc64/vmlinuz", "/ppc/ppc64/initrd.img"), + ("/images/pxeboot/vmlinuz", "/images/pxeboot/initrd.img")] + + if os.path.isdir(self.mount_dir+"/repodata"): + self.repo = self.mount_dir + else: + self.repo = None + self.stage2 = os.path.exists(self.mount_dir+"/LiveOS/squashfs.img") or \ + os.path.exists(self.mount_dir+"/images/install.img") + + try: + for kernel, initrd in kernel_list: + if (os.path.isfile(self.mount_dir+kernel) and + os.path.isfile(self.mount_dir+initrd)): + self.kernel = self.mount_dir+kernel + self.initrd = self.mount_dir+initrd + break + else: + raise Exception("Missing kernel and initrd file in iso, failed" + " to search under: {0}".format(kernel_list)) + except: + self.umount() + raise + + self.get_iso_label() + +
[docs] def umount( self ): + """Unmount the iso""" + if not self.initrd_path: + umount(self.mount_dir)
+ +
[docs] def get_iso_label(self): + """ + Get the iso's label using isoinfo + + Sets self.label if one is found + """ + try: + iso = pycdlib.PyCdlib() + iso.open(self.iso_path) + self.label = iso.pvd.volume_identifier.decode("UTF-8").strip() + except PyCdlibException as e: + log.error("Problem reading label from %s: %s", self.iso_path, e)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/sysutils.html b/f34-branch/_modules/pylorax/sysutils.html new file mode 100644 index 00000000..88816ecc --- /dev/null +++ b/f34-branch/_modules/pylorax/sysutils.html @@ -0,0 +1,367 @@ + + + + + + + + + + pylorax.sysutils — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.sysutils

+#
+# sysutils.py
+#
+# Copyright (C) 2009-2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+__all__ = ["joinpaths", "touch", "replace", "chown_", "chmod_", "remove",
+           "linktree"]
+
+import sys
+import os
+import re
+import fileinput
+import pwd
+import grp
+import glob
+import shutil
+import shlex
+from configparser import ConfigParser
+
+from pylorax.executils import runcmd
+
+
[docs]def joinpaths(*args, **kwargs): + path = os.path.sep.join(args) + + if kwargs.get("follow_symlinks"): + return os.path.realpath(path) + else: + return path
+ + +
[docs]def touch(fname): + with open(fname, "w") as f: + f.write("")
+ + +
[docs]def replace(fname, find, sub): + fin = fileinput.input(fname, inplace=1) + pattern = re.compile(find) + + for line in fin: + line = pattern.sub(sub, line) + sys.stdout.write(line) + + fin.close()
+ + +
[docs]def chown_(path, user=None, group=None, recursive=False): + uid = gid = -1 + + if user is not None: + uid = pwd.getpwnam(user)[2] + if group is not None: + gid = grp.getgrnam(group)[2] + + for fname in glob.iglob(path): + os.chown(fname, uid, gid) + + if recursive and os.path.isdir(fname): + for nested in os.listdir(fname): + nested = joinpaths(fname, nested) + chown_(nested, user, group, recursive)
+ + +
[docs]def chmod_(path, mode, recursive=False): + for fname in glob.iglob(path): + os.chmod(fname, mode) + + if recursive and os.path.isdir(fname): + for nested in os.listdir(fname): + nested = joinpaths(fname, nested) + chmod_(nested, mode, recursive)
+ + +def cpfile(src, dst): + shutil.copy2(src, dst) + if os.path.isdir(dst): + dst = joinpaths(dst, os.path.basename(src)) + + return dst + +def mvfile(src, dst): + if os.path.isdir(dst): + dst = joinpaths(dst, os.path.basename(src)) + os.rename(src, dst) + return dst + +
[docs]def remove(target): + if os.path.isdir(target) and not os.path.islink(target): + shutil.rmtree(target) + else: + os.unlink(target)
+ +
[docs]def linktree(src, dst): + runcmd(["/bin/cp", "-alx", src, dst])
+ +def unquote(s): + return ' '.join(shlex.split(s)) + +class UnquotingConfigParser(ConfigParser): + """A ConfigParser, only with unquoting of the values.""" + # pylint: disable=arguments-differ + def get(self, *args, **kwargs): + ret = super().get(*args, **kwargs) + if ret: + ret = unquote(ret) + return ret + +def flatconfig(filename): + """Use UnquotingConfigParser to read a flat config file (without + section headers) by adding a section header. + """ + with open (filename, 'r') as conffh: + conftext = "[main]\n" + conffh.read() + config = UnquotingConfigParser() + config.read_string(conftext) + return config['main'] + +def read_tail(path, size): + """Read up to `size` kibibytes from the end of a file""" + + # NOTE: In py3 text files are unicode, not bytes so we have to open it as bytes + with open(path, "rb") as f: + return _read_file_end(f, size) + +def _read_file_end(f, size): + """Read the end of a file + + This skips to the next line to avoid starting in the middle of a unicode character. + And returns "" in the case of a UnicodeDecodeError + """ + f.seek(0, 2) + end = f.tell() + if end < 1024 * size: + f.seek(0, 0) + else: + f.seek(end - (1024 * size)) + data = f.read() + try: + # Find the first newline in the block + newline = min(1+data.find(b'\n'), len(data)) + text = data[newline:].decode("UTF-8") + except UnicodeDecodeError: + return "" + return text +
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/treebuilder.html b/f34-branch/_modules/pylorax/treebuilder.html new file mode 100644 index 00000000..cadcd20d --- /dev/null +++ b/f34-branch/_modules/pylorax/treebuilder.html @@ -0,0 +1,630 @@ + + + + + + + + + + pylorax.treebuilder — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.treebuilder

+# treebuilder.py - handle arch-specific tree building stuff using templates
+#
+# Copyright (C) 2011-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s):  Will Woods <wwoods@redhat.com>
+
+import logging
+logger = logging.getLogger("pylorax.treebuilder")
+
+import os, re
+from os.path import basename
+from shutil import copytree, copy2
+from subprocess import CalledProcessError
+from pathlib import Path
+import itertools
+
+from pylorax.sysutils import joinpaths, remove
+from pylorax.base import DataHolder
+from pylorax.ltmpl import LoraxTemplateRunner
+import pylorax.imgutils as imgutils
+from pylorax.executils import runcmd, runcmd_output, execWithCapture
+
+templatemap = {
+    'i386':    'x86.tmpl',
+    'x86_64':  'x86.tmpl',
+    'ppc64le': 'ppc64le.tmpl',
+    's390':    's390.tmpl',
+    's390x':   's390.tmpl',
+    'aarch64': 'aarch64.tmpl',
+    'arm':     'arm.tmpl',
+    'armhfp':  'arm.tmpl',
+}
+
+
[docs]def generate_module_info(moddir, outfile=None): + def module_desc(mod): + output = runcmd_output(["modinfo", "-F", "description", mod]) + return output.strip() + def read_module_set(name): + return set(l.strip() for l in open(joinpaths(moddir,name)) if ".ko" in l) + modsets = {'scsi':read_module_set("modules.block"), + 'eth':read_module_set("modules.networking")} + + modinfo = list() + for root, _dirs, files in os.walk(moddir): + for modtype, modset in modsets.items(): + for mod in modset.intersection(files): # modules in this dir + (name, _ext) = os.path.splitext(mod) # foo.ko -> (foo, .ko) + desc = module_desc(joinpaths(root,mod)) or "%s driver" % name + modinfo.append(dict(name=name, type=modtype, desc=desc)) + + out = open(outfile or joinpaths(moddir,"module-info"), "w") + out.write("Version 0\n") + for mod in sorted(modinfo, key=lambda m: m.get('name')): + out.write('{name}\n\t{type}\n\t"{desc:.65}"\n'.format(**mod))
+ +
[docs]class RuntimeBuilder(object): + '''Builds the anaconda runtime image.''' + def __init__(self, product, arch, dbo, templatedir=None, + installpkgs=None, excludepkgs=None, + add_templates=None, + add_template_vars=None, + skip_branding=False): + root = dbo.conf.installroot + # use a copy of product so we can modify it locally + product = product.copy() + product.name = product.name.lower() + self.vars = DataHolder(arch=arch, product=product, dbo=dbo, root=root, + basearch=arch.basearch, libdir=arch.libdir) + self.dbo = dbo + self._runner = LoraxTemplateRunner(inroot=root, outroot=root, + dbo=dbo, templatedir=templatedir) + self.add_templates = add_templates or [] + self.add_template_vars = add_template_vars or {} + self._installpkgs = installpkgs or [] + self._excludepkgs = excludepkgs or [] + self._runner.defaults = self.vars + self.dbo.reset() + self._skip_branding = skip_branding + + def _install_branding(self): + """Select the branding from the available 'system-release' packages + The *best* way to control this is to have a single package in the repo provide 'system-release' + When there are more than 1 package it will: + - Make a list of the available packages + - If variant is set look for a package ending with lower(variant) and use that + - If there are one or more non-generic packages, use the first one after sorting + """ + if self._skip_branding: + return + + release = None + q = self.dbo.sack.query() + a = q.available() + pkgs = sorted([p.name for p in a.filter(provides='system-release') + if not p.name.startswith("generic")]) + if not pkgs: + logger.error("No system-release packages found, could not get the release") + return + + logger.debug("system-release packages: %s", pkgs) + if self.vars.product.variant: + variant = [p for p in pkgs if p.endswith("-"+self.vars.product.variant.lower())] + if variant: + release = variant[0] + if not release: + release = pkgs[0] + + # release + logger.info('got release: %s', release) + self._runner.installpkg(release) + + # logos + release, _suffix = release.split('-', 1) + self._runner.installpkg('%s-logos' % release) + +
[docs] def install(self): + '''Install packages and do initial setup with runtime-install.tmpl''' + self._install_branding() + if len(self._installpkgs) > 0: + self._runner.installpkg(*self._installpkgs) + if len(self._excludepkgs) > 0: + self._runner.removepkg(*self._excludepkgs) + self._runner.run("runtime-install.tmpl") + for tmpl in self.add_templates: + self._runner.run(tmpl, **self.add_template_vars)
+ +
[docs] def writepkglists(self, pkglistdir): + '''debugging data: write out lists of package contents''' + if not os.path.isdir(pkglistdir): + os.makedirs(pkglistdir) + q = self.dbo.sack.query() + for pkgobj in q.installed(): + with open(joinpaths(pkglistdir, pkgobj.name), "w") as fobj: + for fname in pkgobj.files: + fobj.write("{0}\n".format(fname))
+ +
[docs] def postinstall(self): + '''Do some post-install setup work with runtime-postinstall.tmpl''' + # copy configdir into runtime root beforehand + configdir = joinpaths(self._runner.templatedir,"config_files") + configdir_path = "tmp/config_files" + fullpath = joinpaths(self.vars.root, configdir_path) + if os.path.exists(fullpath): + remove(fullpath) + copytree(configdir, fullpath) + self._runner.run("runtime-postinstall.tmpl", configdir=configdir_path)
+ +
[docs] def cleanup(self): + '''Remove unneeded packages and files with runtime-cleanup.tmpl''' + self._runner.run("runtime-cleanup.tmpl")
+ +
[docs] def verify(self): + '''Ensure that contents of the installroot can run''' + status = True + + ELF_MAGIC = b'\x7fELF' + + # Iterate over all files in /usr/bin and /usr/sbin + # For ELF files, gather them into a list and we'll check them all at + # the end. For files with a #!, check them as we go + elf_files = [] + usr_bin = Path(self.vars.root + '/usr/bin') + usr_sbin = Path(self.vars.root + '/usr/sbin') + for path in (str(x) for x in itertools.chain(usr_bin.iterdir(), usr_sbin.iterdir()) \ + if x.is_file()): + with open(path, "rb") as f: + magic = f.read(4) + if magic == ELF_MAGIC: + # Save the path, minus the chroot prefix + elf_files.append(path[len(self.vars.root):]) + elif magic[:2] == b'#!': + # Reopen the file as text and read the first line. + # Open as latin-1 so that stray 8-bit characters don't make + # things blow up. We only really care about ASCII parts. + with open(path, "rt", encoding="latin-1") as f_text: + # Remove the #!, split on space, and take the first part + shabang = f_text.readline()[2:].split()[0] + + # Does the path exist? + if not os.path.exists(self.vars.root + shabang): + logger.error('%s, needed by %s, does not exist', shabang, path) + status = False + + # Now, run ldd on all the ELF files + # Just run ldd once on everything so it isn't logged a million times. + # At least one thing in the list isn't going to be a dynamic executable, + # so use execWithCapture to ignore the exit code. + filename = '' + for line in execWithCapture('ldd', elf_files, root=self.vars.root, + log_output=False, filter_stderr=True).split('\n'): + if line and not line[0].isspace(): + # New filename header, strip the : at the end and save + filename = line[:-1] + elif 'not found' in line: + logger.error('%s, needed by %s, not found', line.split()[0], filename) + status = False + + return status
+ +
[docs] def writepkgsizes(self, pkgsizefile): + '''debugging data: write a big list of pkg sizes''' + fobj = open(pkgsizefile, "w") + getsize = lambda f: os.lstat(f).st_size if os.path.exists(f) else 0 + q = self.dbo.sack.query() + for p in sorted(q.installed()): + pkgsize = sum(getsize(joinpaths(self.vars.root,f)) for f in p.files) + fobj.write("{0.name}.{0.arch}: {1}\n".format(p, pkgsize))
+ +
[docs] def generate_module_data(self): + root = self.vars.root + moddir = joinpaths(root, "lib/modules/") + for kernel in findkernels(root=root): + ksyms = joinpaths(root, "boot/System.map-%s" % kernel.version) + logger.info("doing depmod and module-info for %s", kernel.version) + runcmd(["depmod", "-a", "-F", ksyms, "-b", root, kernel.version]) + generate_module_info(moddir+kernel.version, outfile=moddir+"module-info")
+ +
[docs] def create_squashfs_runtime(self, outfile="/var/tmp/squashfs.img", compression="xz", compressargs=None, size=2): + """Create a plain squashfs runtime""" + compressargs = compressargs or [] + os.makedirs(os.path.dirname(outfile)) + + # squash the rootfs + return imgutils.mksquashfs(self.vars.root, outfile, compression, compressargs)
+ +
[docs] def create_ext4_runtime(self, outfile="/var/tmp/squashfs.img", compression="xz", compressargs=None, size=2): + """Create a squashfs compressed ext4 runtime""" + # make live rootfs image - must be named "LiveOS/rootfs.img" for dracut + compressargs = compressargs or [] + workdir = joinpaths(os.path.dirname(outfile), "runtime-workdir") + os.makedirs(joinpaths(workdir, "LiveOS")) + + # Catch problems with the rootfs being too small and clearly log them + try: + imgutils.mkrootfsimg(self.vars.root, joinpaths(workdir, "LiveOS/rootfs.img"), + "Anaconda", size=size) + except CalledProcessError as e: + if e.stdout and "No space left on device" in e.stdout: + logger.error("The rootfs ran out of space with size=%d", size) + raise + + # squash the live rootfs and clean up workdir + rc = imgutils.mksquashfs(workdir, outfile, compression, compressargs) + remove(workdir) + return rc
+ +
[docs] def finished(self): + """ Done using RuntimeBuilder + + Close the dnf base object + """ + self.dbo.close()
+ +
[docs]class TreeBuilder(object): + '''Builds the arch-specific boot images. + inroot should be the installtree root (the newly-built runtime dir)''' + def __init__(self, product, arch, inroot, outroot, runtime, isolabel, domacboot=True, doupgrade=True, + templatedir=None, add_templates=None, add_template_vars=None, workdir=None, extra_boot_args=""): + + # NOTE: if you pass an arg named "runtime" to a mako template it'll + # clobber some mako internal variables - hence "runtime_img". + self.vars = DataHolder(arch=arch, product=product, runtime_img=runtime, + runtime_base=basename(runtime), + inroot=inroot, outroot=outroot, + basearch=arch.basearch, libdir=arch.libdir, + isolabel=isolabel, udev=udev_escape, domacboot=domacboot, doupgrade=doupgrade, + workdir=workdir, lower=string_lower, + extra_boot_args=extra_boot_args) + self._runner = LoraxTemplateRunner(inroot, outroot, templatedir=templatedir) + self._runner.defaults = self.vars + self.add_templates = add_templates or [] + self.add_template_vars = add_template_vars or {} + self.templatedir = templatedir + self.treeinfo_data = None + + @property + def kernels(self): + return findkernels(root=self.vars.inroot) + +
[docs] def rebuild_initrds(self, add_args=None, backup="", prefix=""): + '''Rebuild all the initrds in the tree. If backup is specified, each + initrd will be renamed with backup as a suffix before rebuilding. + If backup is empty, the existing initrd files will be overwritten. + If suffix is specified, the existing initrd is untouched and a new + image is built with the filename "${prefix}-${kernel.version}.img" + + If the initrd doesn't exist its name will be created based on the + name of the kernel. + ''' + add_args = add_args or [] + dracut = ["dracut", "--nomdadmconf", "--nolvmconf"] + add_args + if not backup: + dracut.append("--force") + + if not self.kernels: + raise Exception("No kernels found, cannot rebuild_initrds") + + for kernel in self.kernels: + if prefix: + idir = os.path.dirname(kernel.path) + outfile = joinpaths(idir, prefix+'-'+kernel.version+'.img') + elif hasattr(kernel, "initrd"): + # If there is an existing initrd, use that + outfile = kernel.initrd.path + else: + # Construct an initrd from the kernel name + outfile = kernel.path.replace("vmlinuz-", "initrd-") + ".img" + logger.info("rebuilding %s", outfile) + logger.info("dracut warnings about /proc are safe to ignore") + + if backup: + initrd = joinpaths(self.vars.inroot, outfile) + if os.path.exists(initrd): + os.rename(initrd, initrd + backup) + cmd = dracut + [outfile, kernel.version] + runcmd(cmd, root=self.vars.inroot)
+ +
[docs] def build(self): + templatefile = templatemap[self.vars.arch.basearch] + for tmpl in self.add_templates: + self._runner.run(tmpl, **self.add_template_vars) + self._runner.run(templatefile, kernels=self.kernels) + self.treeinfo_data = self._runner.results.treeinfo + self.implantisomd5()
+ +
[docs] def implantisomd5(self): + for _section, data in self.treeinfo_data.items(): + if 'boot.iso' in data: + iso = joinpaths(self.vars.outroot, data['boot.iso']) + runcmd(["implantisomd5", iso])
+ + @property + def dracut_hooks_path(self): + """ Return the path to the lorax dracut hooks scripts + + Use the configured share dir if it is setup, + otherwise default to /usr/share/lorax/dracut_hooks + """ + if self.templatedir: + return joinpaths(self.templatedir, "dracut_hooks") + else: + return "/usr/share/lorax/dracut_hooks" + +
[docs] def copy_dracut_hooks(self, hooks): + """ Copy the hook scripts in hooks into the installroot's /tmp/ + and return a list of commands to pass to dracut when creating the + initramfs + + hooks is a list of tuples with the name of the hook script and the + target dracut hook directory + (eg. [("99anaconda-copy-ks.sh", "/lib/dracut/hooks/pre-pivot")]) + """ + dracut_commands = [] + for hook_script, dracut_path in hooks: + src = joinpaths(self.dracut_hooks_path, hook_script) + if not os.path.exists(src): + logger.error("Missing lorax dracut hook script %s", (src)) + continue + dst = joinpaths(self.vars.inroot, "/tmp/", hook_script) + copy2(src, dst) + dracut_commands += ["--include", joinpaths("/tmp/", hook_script), + dracut_path] + return dracut_commands
+ +#### TreeBuilder helper functions + +
[docs]def findkernels(root="/", kdir="boot"): + # To find possible flavors, awk '/BuildKernel/ { print $4 }' kernel.spec + flavors = ('debug', 'PAE', 'PAEdebug', 'smp', 'xen', 'lpae') + kre = re.compile(r"vmlinuz-(?P<version>.+?\.(?P<arch>[a-z0-9_]+)" + r"(.(?P<flavor>{0}))?)$".format("|".join(flavors))) + kernels = [] + bootfiles = os.listdir(joinpaths(root, kdir)) + for f in bootfiles: + match = kre.match(f) + if match: + kernel = DataHolder(path=joinpaths(kdir, f)) + kernel.update(match.groupdict()) # sets version, arch, flavor + kernels.append(kernel) + + # look for associated initrd/initramfs/etc. + for kernel in kernels: + for f in bootfiles: + if f.endswith('-'+kernel.version+'.img'): + imgtype, _rest = f.split('-',1) + # special backwards-compat case + if imgtype == 'initramfs': + imgtype = 'initrd' + kernel[imgtype] = DataHolder(path=joinpaths(kdir, f)) + + logger.debug("kernels=%s", kernels) + return kernels
+ +# udev whitelist: 'a-zA-Z0-9#+.:=@_-' (see is_whitelisted in libudev-util.c) +udev_blacklist=' !"$%&\'()*,/;<>?[\\]^`{|}~' # ASCII printable, minus whitelist +udev_blacklist += ''.join(chr(i) for i in range(32)) # ASCII non-printable +
[docs]def udev_escape(label): + out = '' + for ch in label: + out += ch if ch not in udev_blacklist else '\\x%02x' % ord(ch) + return out
+ +
[docs]def string_lower(string): + """ Return a lowercase string. + + :param string: String to lowercase + + This is used as a filter in the templates. + """ + return string.lower()
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_modules/pylorax/treeinfo.html b/f34-branch/_modules/pylorax/treeinfo.html new file mode 100644 index 00000000..6dd84503 --- /dev/null +++ b/f34-branch/_modules/pylorax/treeinfo.html @@ -0,0 +1,270 @@ + + + + + + + + + + pylorax.treeinfo — Lorax 34.10 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +

Source code for pylorax.treeinfo

+#
+# treeinfo.py
+#
+# Copyright (C) 2010-2015 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Red Hat Author(s):  Martin Gracik <mgracik@redhat.com>
+#
+
+import logging
+logger = logging.getLogger("pylorax.treeinfo")
+
+import configparser
+import os
+import time
+
+
+
[docs]class TreeInfo(object): + + def __init__(self, product, version, variant, basearch, + packagedir=""): + + self.c = configparser.ConfigParser() + + if 'SOURCE_DATE_EPOCH' in os.environ: + timestamp = os.environ['SOURCE_DATE_EPOCH'] + else: + timestamp = str(time.time()) + + section = "general" + data = {"timestamp": timestamp, + "family": product, + "version": version, + "name": "%s-%s" % (product, version), + "variant": variant or "", + "arch": basearch, + "packagedir": packagedir} + + self.c.add_section(section) + list(self.c.set(section, key, value) for key, value in data.items()) + +
[docs] def add_section(self, section, data): + if not self.c.has_section(section): + self.c.add_section(section) + + list(self.c.set(section, key, value) for key, value in data.items())
+ +
[docs] def write(self, outfile): + logger.info("writing .treeinfo file") + with open(outfile, "w") as fobj: + self.c.write(fobj)
+
+ +
+ +
+
+ +
+ +
+

+ © Copyright 2018, Red Hat, Inc.. + +

+
+ + + + Built with Sphinx using a + + theme + + provided by Read the Docs. + +
+
+
+ +
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/f34-branch/_sources/index.rst.txt b/f34-branch/_sources/index.rst.txt new file mode 100644 index 00000000..1cc32989 --- /dev/null +++ b/f34-branch/_sources/index.rst.txt @@ -0,0 +1,35 @@ +.. Lorax documentation master file, created by + sphinx-quickstart on Wed Apr 8 13:46:00 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Lorax's documentation! +================================= + +Contents: + +.. toctree:: + :maxdepth: 1 + + intro + lorax + livemedia-creator + mkksiso + product-images + modules + +Documentation for other Lorax Branches +====================================== + +* `Fedora 34 `_ +* `Fedora 33 `_ +* `RHEL8 lorax-composer `_ +* `RHEL7 lorax-composer `_ + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/f34-branch/_sources/intro.rst.txt b/f34-branch/_sources/intro.rst.txt new file mode 100644 index 00000000..01857ee9 --- /dev/null +++ b/f34-branch/_sources/intro.rst.txt @@ -0,0 +1,67 @@ +Introduction to Lorax +===================== + +I am the Lorax. I speak for the trees [and images]. + +Lorax is used to build the Anaconda Installer boot.iso, it consists of a +library, pylorax, a set of templates, and the lorax script. Its operation +is driven by a customized set of Mako templates that lists the packages +to be installed, steps to execute to remove unneeded files, and creation +of the iso for all of the supported architectures. + + + + + + +Before Lorax +============ + +Tree building tools such as pungi and revisor rely on 'buildinstall' in +anaconda/scripts/ to produce the boot images and other such control files +in the final tree. The existing buildinstall scripts written in a mix of +bash and Python are unmaintainable. Lorax is an attempt to replace them +with something more flexible. + + +EXISTING WORKFLOW: + +pungi and other tools call scripts/buildinstall, which in turn call other +scripts to do the image building and data generation. Here's how it +currently looks: + + -> buildinstall + * process command line options + * write temporary yum.conf to point to correct repo + * find anaconda release RPM + * unpack RPM, pull in those versions of upd-instroot, mk-images, + maketreeinfo.py, makestamp.py, and buildinstall + + -> call upd-instroot + + -> call maketreeinfo.py + + -> call mk-images (which figures out which mk-images.ARCH to call) + + -> call makestamp.py + + * clean up + + +PROBLEMS: + +The existing workflow presents some problems with maintaining the scripts. +First, almost all knowledge of what goes in to the stage 1 and stage 2 +images lives in upd-instroot. The mk-images* scripts copy things from the +root created by upd-instroot in order to build the stage 1 image, though +it's not completely clear from reading the scripts. + + +NEW IDEAS: + +Create a new central driver with all information living in Python modules. +Configuration files will provide the knowledge previously contained in the +upd-instroot and mk-images* scripts. + + + diff --git a/f34-branch/_sources/livemedia-creator.rst.txt b/f34-branch/_sources/livemedia-creator.rst.txt new file mode 100644 index 00000000..962be311 --- /dev/null +++ b/f34-branch/_sources/livemedia-creator.rst.txt @@ -0,0 +1,670 @@ +livemedia-creator +================= + +:Authors: + Brian C. Lane + +livemedia-creator uses `Anaconda `_, +`kickstart `_ and `Lorax +`_ to create bootable media that use the +same install path as a normal system installation. It can be used to make live +isos, bootable (partitioned) disk images, tarfiles, and filesystem images for +use with virtualization and container solutions like libvirt, docker, and +OpenStack. + +The general idea is to use qemu with kickstart and an Anaconda boot.iso to +install into a disk image and then use the disk image to create the bootable +media. + +livemedia-creator --help will describe all of the options available. At the +minimum you need: + +``--make-iso`` to create a final bootable .iso or one of the other ``--make-*`` options. + +``--iso`` to specify the Anaconda install media to use with qemu. + +``--ks`` to select the kickstart file describing what to install. + +To use livemedia-creator with virtualization you will need to have qemu installed. + +If you are going to be using Anaconda directly, with ``--no-virt`` mode, make sure +you have the anaconda-tui package installed. + +Conventions used in this document: + +``lmc`` is an abbreviation for livemedia-creator. + +``builder`` is the system where livemedia-creator is being run + +``image`` is the disk image being created by running livemedia-creator + + +livemedia-creator cmdline arguments +----------------------------------- + +.. argparse:: + :ref: pylorax.cmdline.lmc_parser + :prog: livemedia-creator + + --macboot : @replace + Make the iso bootable on UEFI based Mac systems + + Default: True + + --nomacboot : @replace + Do not create a Mac bootable iso + + Default: False + + +Quickstart +---------- + +Run this to create a bootable live iso:: + + sudo livemedia-creator --make-iso \ + --iso=/extra/iso/boot.iso --ks=./docs/fedora-livemedia.ks + +You can run it directly from the lorax git repo like this:: + + sudo PATH=./src/sbin/:$PATH PYTHONPATH=./src/ ./src/sbin/livemedia-creator \ + --make-iso --iso=/extra/iso/boot.iso \ + --ks=./docs/fedora-livemedia.ks --lorax-templates=./share/ + +You can observe the installation using vnc. The logs will show what port was +chosen, or you can use a specific port by passing it. eg. ``--vnc vnc:127.0.0.1:5`` + +This is usually a good idea when testing changes to the kickstart. lmc tries +to monitor the logs for fatal errors, but may not catch everything. + + +How ISO creation works +---------------------- + +There are 2 stages, the install stage which produces a disk or filesystem image +as its output, and the boot media creation which uses the image as its input. +Normally you would run both stages, but it is possible to stop after the +install stage, by using ``--image-only``, or to skip the install stage and use +a previously created disk image by passing ``--disk-image`` or ``--fs-image`` + +When creating an iso qemu boots using the passed Anaconda installer iso +and installs the system based on the kickstart. The ``%post`` section of the +kickstart is used to customize the installed system in the same way that +current spin-kickstarts do. + +livemedia-creator monitors the install process for problems by watching the +install logs. They are written to the current directory or to the base +directory specified by the --logfile command. You can also monitor the install +by using a vnc client. This is recommended when first modifying a kickstart, +since there are still places where Anaconda may get stuck without the log +monitor catching it. + +The output from this process is a partitioned disk image. kpartx can be used +to mount and examine it when there is a problem with the install. It can also +be booted using kvm. + +When creating an iso the disk image's / partition is copied into a formatted +filesystem image which is then used as the input to lorax for creation of the +final media. + +The final image is created by lorax, using the templates in /usr/share/lorax/live/ +or the live directory below the directory specified by ``--lorax-templates``. The +templates are written using the Mako template system with some extra commands +added by lorax. + +.. note:: + The output from --make-iso includes the artifacts used to create the boot.iso; + the kernel, initrd, the squashfs filesystem, etc. If you only want the + boot.iso you can pass ``--iso-only`` and the other files will be removed. You + can also name the iso by using ``--iso-name my-live.iso``. + + +Kickstarts +---------- + +The docs/ directory includes several example kickstarts, one to create a live +desktop iso using GNOME, and another to create a minimal disk image. When +creating your own kickstarts you should start with the minimal example, it +includes several needed packages that are not always included by dependencies. + +Or you can use existing spin kickstarts to create live media with a few +changes. Here are the steps I used to convert the Fedora XFCE spin. + +1. Flatten the xfce kickstart using ksflatten +2. Add zerombr so you don't get the disk init dialog +3. Add clearpart --all +4. Add swap partition +5. bootloader target +6. Add shutdown to the kickstart +7. Add network --bootproto=dhcp --activate to activate the network + This works for F16 builds but for F15 and before you need to pass + something on the cmdline that activate the network, like sshd: + + ``livemedia-creator --kernel-args="sshd"`` + +8. Add a root password:: + + rootpw rootme + network --bootproto=dhcp --activate + zerombr + clearpart --all + bootloader --location=mbr + part swap --size=512 + shutdown + +9. In the livesys script section of the %post remove the root password. This + really depends on how the spin wants to work. You could add the live user + that you create to the %wheel group so that sudo works if you wanted to. + + ``passwd -d root > /dev/null`` + +10. Remove /etc/fstab in %post, dracut handles mounting the rootfs + + ``cat /dev/null > /dev/fstab`` + + Do this only for live iso's, the filesystem will be mounted read only if + there is no /etc/fstab + +11. Don't delete initramfs files from /boot in %post +12. When creating live iso's you need to have, at least, these packages in the %package section:: + dracut-config-generic + dracut-live + -dracut-config-rescue + grub2-efi + memtest86+ + syslinux + +User created repositories +~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you are using your own repositories and installing groups (eg. @core) make +sure you create the repodata with groups like this ``createrepo -g +/path/to/groups.xml /path/to/rpms`` + +Using a Proxy with repos +~~~~~~~~~~~~~~~~~~~~~~~~ + +One drawback to using qemu is that it pulls the packages from the repo each +time you run it. To speed things up you either need a local mirror of the +packages, or you can use a caching proxy. When using a proxy you pass it to +livemedia-creator like this: + + ``--proxy=http://proxy.yourdomain.com:3128`` + +You also need to use a specific mirror instead of mirrormanager so that the +packages will get cached, so your kickstart url would look like: + + ``url --url="http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/x86_64/os/"`` + +You can also add an update repo, but don't name it updates. Add --proxy to it +as well. You can use all of the `kickstart commands `_ in your kickstart. Make sure there +is only one ``url`` command, other repos have to use the ``repo`` command and cannot be +named ``updates`` which is reserved for Anaconda's use. eg.:: + + url --url=PRIMARY-REPO-URL --proxy=PROXY-URL + repo --name="repo1" --baseurl=FIRST-REPO-URL --proxy=PROXY-URL + repo --name="repo2" --baseurl=SECOND-REPO_URL --proxy=PROXY-URL + + +Anaconda image install (no-virt) +-------------------------------- + +You can create images without using qemu by passing ``--no-virt`` on the +cmdline. This will use Anaconda's directory install feature to handle the +install. There are a couple of things to keep in mind when doing this: + +1. It will be most reliable when building images for the same release that the + host is running. Because Anaconda has expectations about the system it is + running under you may encounter strange bugs if you try to build newer or + older releases. + +2. It may totally trash your host. So far I haven't had this happen, but the + possibility exists that a bug in Anaconda could result in it operating on + real devices. I recommend running it in a virt or on a system that you can + afford to lose all data from. + +The logs from anaconda will be placed in an ./anaconda/ directory in either +the current directory or in the directory used for --logfile + +Example cmdline: + +``sudo livemedia-creator --make-iso --no-virt --ks=./fedora-livemedia.ks`` + +.. note:: + Using no-virt to create a partitioned disk image (eg. --make-disk or + --make-vagrant) will only create disks usable on the host platform (BIOS + or UEFI). You can create BIOS partitioned disk images on UEFI by using + virt. + +.. note:: + As of version 30.7 SELinux can be set to Enforcing. The current state is + logged for debugging purposes and if there are SELinux denials they should + be reported as a bug. + +AMI Images +---------- + +Amazon EC2 images can be created by using the --make-ami switch and an appropriate +kickstart file. All of the work to customize the image is handled by the kickstart. +The example currently included was modified from the cloud-kickstarts version so +that it would work with livemedia-creator. + +Example cmdline: + +``sudo livemedia-creator --make-ami --iso=/path/to/boot.iso --ks=./docs/fedora-livemedia-ec2.ks`` + +This will produce an ami-root.img file in the working directory. + +At this time I have not tested the image with EC2. Feedback would be welcome. + + +Appliance Creation +------------------ + +livemedia-creator can now replace appliance-tools by using the --make-appliance +switch. This will create the partitioned disk image and an XML file that can be +used with virt-image to setup a virtual system. + +The XML is generated using the Mako template from +/usr/share/lorax/appliance/libvirt.xml You can use a different template by +passing ``--app-template