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.intersphinx',
|
||||
'sphinx.ext.todo',
|
||||
'sphinx.ext.coverage'
|
||||
'sphinx.ext.coverage',
|
||||
'sphinxarg.ext'
|
||||
]
|
||||
|
||||
# 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 subprocess
|
||||
import shutil
|
||||
import argparse
|
||||
import hashlib
|
||||
import glob
|
||||
import json
|
||||
@ -56,6 +55,7 @@ from pylorax.imgutils import copytree, mkcpio
|
||||
from pylorax.executils import execWithRedirect, execReadlines, runcmd
|
||||
from pylorax.monitor import LogMonitor
|
||||
from pylorax.mount import IsoMountpoint
|
||||
from pylorax.cmdline import lmc_parser
|
||||
|
||||
# Default parameters for rebuilding initramfs, override with --dracut-args
|
||||
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():
|
||||
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")
|
||||
|
||||
parser = lmc_parser()
|
||||
opts = parser.parse_args()
|
||||
|
||||
setup_logging(opts.logfile, log)
|
||||
|
@ -27,11 +27,11 @@ dnf_log = logging.getLogger("dnf")
|
||||
import sys
|
||||
import os
|
||||
import tempfile
|
||||
import argparse
|
||||
import shutil
|
||||
|
||||
import dnf
|
||||
import pylorax
|
||||
from pylorax.cmdline import lorax_parser
|
||||
|
||||
def setup_logging(opts):
|
||||
pylorax.setup_logging(opts.logfile, log)
|
||||
@ -44,94 +44,8 @@ def setup_logging(opts):
|
||||
dnf_log.addHandler(fh)
|
||||
|
||||
|
||||
def main(args):
|
||||
# get lorax version
|
||||
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
|
||||
def main():
|
||||
parser = lorax_parser()
|
||||
opts = parser.parse_args()
|
||||
|
||||
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__":
|
||||
main(sys.argv)
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user