[master 4/4] livemedia-creator: Make --make-oci work with --no-virt
bcl
installerbot-noreply at redhat.com
Wed Oct 21 00:55:27 UTC 2015
From: "Brian C. Lane" <bcl at redhat.com>
Also added a check to exit early if the config and runtime files don't
actually exist.
---
src/sbin/livemedia-creator | 57 +++++++++++++++++++++++++++++++++-------------
1 file changed, 41 insertions(+), 16 deletions(-)
diff --git a/src/sbin/livemedia-creator b/src/sbin/livemedia-creator
index 7344688..9d46de5 100755
--- a/src/sbin/livemedia-creator
+++ b/src/sbin/livemedia-creator
@@ -563,6 +563,7 @@ def novirt_install(opts, disk_img, disk_size, repo_url):
or tarfile.
"""
import selinux
+ dirinstall_path = ROOT_PATH
# Set selinux to Permissive if it is Enforcing
selinux_enforcing = False
@@ -589,17 +590,22 @@ def novirt_install(opts, disk_img, disk_size, repo_url):
args += ["--dirinstall"]
mkext4img(None, disk_img, label=opts.fs_label, size=disk_size * 1024**2)
- if not os.path.isdir(ROOT_PATH):
- os.mkdir(ROOT_PATH)
- mount(disk_img, opts="loop", mnt=ROOT_PATH)
- elif opts.make_tar:
- args += ["--dirinstall"]
+ 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"]
- # Install directly into ROOT_PATH, make sure it starts clean
- if os.path.exists(ROOT_PATH):
- shutil.rmtree(ROOT_PATH)
- if not os.path.isdir(ROOT_PATH):
- os.mkdir(ROOT_PATH)
+ os.makedirs(dirinstall_path)
else:
args += ["--image", disk_img]
@@ -619,14 +625,14 @@ def novirt_install(opts, disk_img, disk_size, repo_url):
log.info(line)
# Make sure the new filesystem is correctly labeled
- args = ["-e", "/proc", "-e", "/sys", "-e", "/dev",
- "/etc/selinux/targeted/contexts/files/file_contexts", "/"]
- if opts.make_iso or opts.make_fsimage or opts.make_tar:
- execWithRedirect("setfiles", args, root=ROOT_PATH)
+ setfiles_args = ["-e", "/proc", "-e", "/sys", "-e", "/dev",
+ "/etc/selinux/targeted/contexts/files/file_contexts", "/"]
+ if "--dirinstall" in args:
+ execWithRedirect("setfiles", setfiles_args, root=dirinstall_path)
else:
with PartitionMount(disk_img) as img_mount:
if img_mount and img_mount.mount_dir:
- execWithRedirect("setfiles", args, root=img_mount.mount_dir)
+ execWithRedirect("setfiles", setfiles_args, root=img_mount.mount_dir)
except (subprocess.CalledProcessError, OSError) as e:
log.error("Running anaconda failed: %s", e)
raise InstallError("novirt_install failed")
@@ -672,8 +678,21 @@ def novirt_install(opts, disk_img, disk_size, repo_url):
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)
- shutil.rmtree(ROOT_PATH)
if rc:
raise InstallError("novirt_install mktar failed: rc=%s" % rc)
@@ -1118,6 +1137,12 @@ def main():
if opts.make_oci and not (opts.oci_config and opts.oci_runtime):
errors.append("--make-oci requires --oci-config and --oci-runtime")
+ if opts.make_oci and not os.path.exists(opts.oci_config):
+ errors.append("oci % file is missing" % opts.oci_config)
+
+ if opts.make_oci and not os.path.exists(opts.oci_runtime):
+ errors.append("oci % file is missing" % opts.oci_runtime)
+
if os.getuid() != 0:
errors.append("You need to run this as root")
--
To view this commit on github, visit https://github.com/rhinstaller/lorax/commit/6ccebefc26f474edc7384be67655cad59c50cc99
More information about the anaconda-patches
mailing list