git.annexia.org
/
libguestfs.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
17b26be
)
virt-sysprep: Use Augeas for config file manipulation.
author
Richard W.M. Jones
<rjones@redhat.com>
Thu, 13 Oct 2011 14:07:41 +0000
(15:07 +0100)
committer
Richard W.M. Jones
<rjones@redhat.com>
Thu, 13 Oct 2011 14:25:13 +0000
(15:25 +0100)
clone/virt-sysprep.in
patch
|
blob
|
history
diff --git
a/clone/virt-sysprep.in
b/clone/virt-sysprep.in
index
b98e4b0
..
cf4ad96
100644
(file)
--- a/
clone/virt-sysprep.in
+++ b/
clone/virt-sysprep.in
@@
-167,6
+167,11
@@
fi
# Create a temporary directory for general purpose use during operations.
tmpdir="$(mktemp -d)"
# Create a temporary directory for general purpose use during operations.
tmpdir="$(mktemp -d)"
+# Increase the amount of memory allocated to the appliance because
+# we're using augeas. The user can override this by setting
+# $LIBGUESTFS_MEMSIZE before running the script.
+export LIBGUESTFS_MEMSIZE=${LIBGUESTFS_MEMSIZE:-2048}
+
# Call guestfish.
GUESTFISH_PID=
eval $("${guestfish[@]}")
# Call guestfish.
GUESTFISH_PID=
eval $("${guestfish[@]}")
@@
-209,6
+214,12
@@
if [ "$type" = "windows" ]; then
systemroot="$($gf -inspect-get-windows-systemroot $root)"
fi
systemroot="$($gf -inspect-get-windows-systemroot $root)"
fi
+# Start Augeas if it's a Linux guest.
+if [ "$type" = "linux" ]; then
+ $gf aug-init / 0
+ using_augeas=yes
+fi
+
#----------------------------------------------------------------------
# Useful functions.
#----------------------------------------------------------------------
# Useful functions.
@@
-265,8
+276,8
@@
rm_file ()
if [ "$hostname" = "yes" ]; then
case "$type/$distro" in
linux/fedora)
if [ "$hostname" = "yes" ]; then
case "$type/$distro" in
linux/fedora)
-
erase_line /etc/sysconfig/network "^HOSTNAME=
"
- prepend_line /etc/sysconfig/network "HOSTNAME=$hostname_param"
+
$gf aug-set /files/etc/sysconfig/network/HOSTNAME "$hostname_param
"
+ augeas_save_needed=yes
;;
linux/debian|linux/ubuntu)
$gf write /etc/hostname "$hostname_param"
;;
linux/debian|linux/ubuntu)
$gf write /etc/hostname "$hostname_param"
@@
-278,9
+289,11
@@
if [ "$net_hwaddr" = "yes" ]; then
case "$type/$distro" in
linux/fedora)
# XXX these filenames can have spaces and untrusted chars in them!
case "$type/$distro" in
linux/fedora)
# XXX these filenames can have spaces and untrusted chars in them!
- files=$($gf glob-expand '/etc/sysconfig/network-scripts/ifcfg-*')
- for f in $files; do
- erase_line "$f" "^HWADDR="
+ nodes=$( $gf aug-ls /files/etc/sysconfig/network-scripts |
+ grep /files/etc/sysconfig/network-scripts/ifcfg- )
+ for node in $nodes; do
+ $gf -aug-rm "$node/HWADDR" >/dev/null
+ augeas_save_needed=yes
done
;;
esac
done
;;
esac
@@
-294,8
+307,14
@@
if [ "$udev_persistent_net" = "yes" -a "$type" = "linux" ]; then
rm_file /etc/udev/rules.d/70-persistent-net.rules
fi
rm_file /etc/udev/rules.d/70-persistent-net.rules
fi
+#----------------------------------------------------------------------
# Clean up and close down.
# Clean up and close down.
+if [ "$using_augeas" = "yes" -a "$augeas_save_needed" = "yes" ]; then
+ $gf aug-save
+ $gf aug-close
+fi
+
$gf umount-all
$gf sync
$gf exit
$gf umount-all
$gf sync
$gf exit