Move argument parsers into pylorax.cmdline
This will make it possible to use sphinx-argparse to generate all the documentation and manual pages.
This commit is contained in:
		
							parent
							
								
									6798f7c5ec
								
							
						
					
					
						commit
						0b9077ceaa
					
				| @ -33,7 +33,8 @@ extensions = [ | |||||||
|     'sphinx.ext.viewcode', |     'sphinx.ext.viewcode', | ||||||
|     'sphinx.ext.intersphinx', |     'sphinx.ext.intersphinx', | ||||||
|     'sphinx.ext.todo', |     'sphinx.ext.todo', | ||||||
|     'sphinx.ext.coverage' |     'sphinx.ext.coverage', | ||||||
|  |     'sphinxarg.ext' | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| # Add any paths that contain templates here, relative to this directory. | # Add any paths that contain templates here, relative to this directory. | ||||||
|  | |||||||
							
								
								
									
										286
									
								
								src/pylorax/cmdline.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										286
									
								
								src/pylorax/cmdline.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,286 @@ | |||||||
|  | # | ||||||
|  | # 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 | ||||||
|  | 
 | ||||||
|  | def lorax_parser(): | ||||||
|  |     """ Return the ArgumentParser for lorax""" | ||||||
|  | 
 | ||||||
|  |     # get lorax version | ||||||
|  |     try: | ||||||
|  |         from pylorax import version | ||||||
|  |         vernum = version.num | ||||||
|  |     except ImportError: | ||||||
|  |         vernum = "devel" | ||||||
|  | 
 | ||||||
|  |     version = "{0}-{1}".format(os.path.basename(sys.argv[0]), vernum) | ||||||
|  | 
 | ||||||
|  |     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", | ||||||
|  |                         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("--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", | ||||||
|  |                         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") | ||||||
|  |     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") | ||||||
|  | 
 | ||||||
|  |     # 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 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 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-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") | ||||||
|  | 
 | ||||||
|  |     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("--fs-label", default="Anaconda", | ||||||
|  |                              help="Label to set on fsimage, default is 'Anaconda'") | ||||||
|  |     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=1024, | ||||||
|  |                             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/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.") | ||||||
|  | 
 | ||||||
|  |     # dracut arguments | ||||||
|  |     dracut_group = parser.add_argument_group("dracut arguments") | ||||||
|  |     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 default. (default: %s)" % dracut_default) | ||||||
|  | 
 | ||||||
|  |     # 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("--title", default="Linux Live Media", | ||||||
|  |                         help="Substituted for @TITLE@ in bootloader config files") | ||||||
|  |     parser.add_argument("--project", default="Linux", | ||||||
|  |                         help="substituted for @PROJECT@ in bootloader config files") | ||||||
|  |     parser.add_argument("--releasever", default="25", | ||||||
|  |                         help="substituted for @VERSION@ in bootloader config files") | ||||||
|  |     parser.add_argument("--volid", default=None, help="volume id") | ||||||
|  |     parser.add_argument("--squashfs_args", | ||||||
|  |                         help="additional squashfs args") | ||||||
|  |     parser.add_argument("--timeout", default=None, type=int, | ||||||
|  |                         help="Cancel installer after X minutes") | ||||||
|  | 
 | ||||||
|  |     return parser | ||||||
| @ -27,7 +27,6 @@ import sys | |||||||
| import tempfile | import tempfile | ||||||
| import subprocess | import subprocess | ||||||
| import shutil | import shutil | ||||||
| import argparse |  | ||||||
| import hashlib | import hashlib | ||||||
| import glob | import glob | ||||||
| import json | import json | ||||||
| @ -56,6 +55,7 @@ from pylorax.imgutils import copytree, mkcpio | |||||||
| from pylorax.executils import execWithRedirect, execReadlines, runcmd | from pylorax.executils import execWithRedirect, execReadlines, runcmd | ||||||
| from pylorax.monitor import LogMonitor | from pylorax.monitor import LogMonitor | ||||||
| from pylorax.mount import IsoMountpoint | from pylorax.mount import IsoMountpoint | ||||||
|  | from pylorax.cmdline import lmc_parser | ||||||
| 
 | 
 | ||||||
| # Default parameters for rebuilding initramfs, override with --dracut-args | # Default parameters for rebuilding initramfs, override with --dracut-args | ||||||
| DRACUT_DEFAULT = ["--xz", "--add", "livenet dmsquash-live convertfs pollcdrom qemu qemu-net", | DRACUT_DEFAULT = ["--xz", "--add", "livenet dmsquash-live convertfs pollcdrom qemu qemu-net", | ||||||
| @ -1099,172 +1099,7 @@ def make_live_images(opts, work_dir, root_dir, rootfs_image=None, size=None): | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def main(): | def main(): | ||||||
|     parser = argparse.ArgumentParser(description="Create Live Install Media", |     parser = lmc_parser() | ||||||
|                                      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-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") |  | ||||||
| 
 |  | ||||||
|     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("--fs-label", default="Anaconda", |  | ||||||
|                              help="Label to set on fsimage, default is 'Anaconda'") |  | ||||||
|     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=1024, |  | ||||||
|                             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/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.") |  | ||||||
| 
 |  | ||||||
|     # dracut arguments |  | ||||||
|     dracut_group = parser.add_argument_group("dracut arguments") |  | ||||||
|     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 default. (default: %s)" % (DRACUT_DEFAULT,)) |  | ||||||
| 
 |  | ||||||
|     # 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("--title", default="Linux Live Media", |  | ||||||
|                         help="Substituted for @TITLE@ in bootloader config files") |  | ||||||
|     parser.add_argument("--project", default="Linux", |  | ||||||
|                         help="substituted for @PROJECT@ in bootloader config files") |  | ||||||
|     parser.add_argument("--releasever", default="25", |  | ||||||
|                         help="substituted for @VERSION@ in bootloader config files") |  | ||||||
|     parser.add_argument("--volid", default=None, help="volume id") |  | ||||||
|     parser.add_argument("--squashfs_args", |  | ||||||
|                         help="additional squashfs args") |  | ||||||
|     parser.add_argument("--timeout", default=None, type=int, |  | ||||||
|                         help="Cancel installer after X minutes") |  | ||||||
| 
 |  | ||||||
|     opts = parser.parse_args() |     opts = parser.parse_args() | ||||||
| 
 | 
 | ||||||
|     setup_logging(opts.logfile, log) |     setup_logging(opts.logfile, log) | ||||||
|  | |||||||
| @ -27,11 +27,11 @@ dnf_log = logging.getLogger("dnf") | |||||||
| import sys | import sys | ||||||
| import os | import os | ||||||
| import tempfile | import tempfile | ||||||
| import argparse |  | ||||||
| import shutil | import shutil | ||||||
| 
 | 
 | ||||||
| import dnf | import dnf | ||||||
| import pylorax | import pylorax | ||||||
|  | from pylorax.cmdline import lorax_parser | ||||||
| 
 | 
 | ||||||
| def setup_logging(opts): | def setup_logging(opts): | ||||||
|     pylorax.setup_logging(opts.logfile, log) |     pylorax.setup_logging(opts.logfile, log) | ||||||
| @ -44,94 +44,8 @@ def setup_logging(opts): | |||||||
|     dnf_log.addHandler(fh) |     dnf_log.addHandler(fh) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def main(args): | def main(): | ||||||
|     # get lorax version |     parser = lorax_parser() | ||||||
|     try: |  | ||||||
|         from pylorax import version |  | ||||||
|         vernum = version.num |  | ||||||
|     except ImportError: |  | ||||||
|         vernum = "devel" |  | ||||||
| 
 |  | ||||||
|     version = "{0}-{1}".format(os.path.basename(args[0]), vernum) |  | ||||||
|     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", |  | ||||||
|                         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("--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", |  | ||||||
|                         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") |  | ||||||
|     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") |  | ||||||
| 
 |  | ||||||
|     # 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) |  | ||||||
| 
 |  | ||||||
|     # parse the arguments |  | ||||||
|     opts = parser.parse_args() |     opts = parser.parse_args() | ||||||
| 
 | 
 | ||||||
|     if not opts.source and not opts.repos: |     if not opts.source and not opts.repos: | ||||||
| @ -350,4 +264,4 @@ def get_dnf_base_object(installroot, sources, mirrorlists=None, repos=None, | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
|     main(sys.argv) |     main() | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user