Hi, Did anyone have some time to have a look at this small example tool? Regards, -- Cedric On Tue, 2014-03-11 at 13:40 +0100, Cédric Bosdonnat wrote: > --- > Makefile.am | 2 +- > configure.ac | 1 + > examples/lxcconvert/Makefile.am | 19 ++++++++++ > examples/lxcconvert/virt-lxc-convert | 67 ++++++++++++++++++++++++++++++++++++ > 4 files changed, 88 insertions(+), 1 deletion(-) > create mode 100644 examples/lxcconvert/Makefile.am > create mode 100644 examples/lxcconvert/virt-lxc-convert > > diff --git a/Makefile.am b/Makefile.am > index 9847ff0..0ef983f 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -23,7 +23,7 @@ SUBDIRS = . gnulib/lib include src daemon tools docs gnulib/tests \ > tests po examples/object-events examples/hellolibvirt \ > examples/dominfo examples/domsuspend examples/apparmor \ > examples/xml/nwfilter examples/openauth examples/systemtap \ > - tools/wireshark > + examples/lxcconvert tools/wireshark > > ACLOCAL_AMFLAGS = -I m4 > > diff --git a/configure.ac b/configure.ac > index 62b74c5..f970de0 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -2695,6 +2695,7 @@ AC_CONFIG_FILES([\ > examples/hellolibvirt/Makefile \ > examples/systemtap/Makefile \ > examples/xml/nwfilter/Makefile \ > + examples/lxcconvert/Makefile \ > tools/wireshark/Makefile \ > tools/wireshark/src/Makefile]) > AC_OUTPUT > diff --git a/examples/lxcconvert/Makefile.am b/examples/lxcconvert/Makefile.am > new file mode 100644 > index 0000000..c5ae537 > --- /dev/null > +++ b/examples/lxcconvert/Makefile.am > @@ -0,0 +1,19 @@ > +## Copyright (C) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. > +## > +## This library is free software; you can redistribute it and/or > +## modify it under the terms of the GNU Lesser General Public > +## License as published by the Free Software Foundation; either > +## version 2.1 of the License, or (at your option) any later version. > +## > +## This library 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 > +## Lesser General Public License for more details. > +## > +## You should have received a copy of the GNU Lesser General Public > +## License along with this library. If not, see > +## <http://www.gnu.org/licenses/>. > + > +EXTRA_DIST= \ > + virt-lxc-convert > + > diff --git a/examples/lxcconvert/virt-lxc-convert b/examples/lxcconvert/virt-lxc-convert > new file mode 100644 > index 0000000..ea32ff4 > --- /dev/null > +++ b/examples/lxcconvert/virt-lxc-convert > @@ -0,0 +1,67 @@ > +#!/usr/bin/env sh > + > +function show_help() > +{ > + cat << EOF > +$0 /path/to/lxc/config/file > + > +Wrapper around virsh domxml-from-native to ease conversion of LXC > +containers configuration to libvirt domain XML. > +EOF > +} > + > +if test "$#" != 1; then > + show_help > + exit 1 > +fi > + > +conf=$1 > + > + > +conf_new=/tmp/config-$$ > +domain_new=/tmp/config-$$.xml > + > +cp $conf $conf_new > + > +# Do we have lxc.mount, and is it pointing to a readable file? > +fstab=`grep 'lxc.mount[[:space:]]*=' $conf_new | sed -e 's/[[:space:]]\+=[[:space:]]\+/=/' | cut -f 2 -d '='` > +if test \( -n "$fstab" \) -a \( -r "$fstab" \); then > + sed -i -e 's/^lxc.mount[[:space:]]*=.*$//' $conf_new > + sed -e 's/^\([^#]\)/lxc.mount.entry = \1/' $fstab | cat $conf_new - >${conf_new}.tmp > + mv ${conf_new}.tmp $conf_new > +fi > + > +memory=`free | grep 'Mem:' | sed -e 's: \+: :g' | cut -f 2 -d ' '` > +default_tmpfs="size=$((memory/2))" > + > +# Do we have tmpfs without size param? > +grep -e 'lxc.mount.entry[[:space:]]*=[[:space:]]*tmpfs[[:space:]]' $conf_new | while read line; do > + has_size=`echo $line | grep -v -e 'size='` > + # Add the default size here (50%) if no size is given > + if test -n "$has_size"; then > + sed -i -e "\;$line;s/\([[:space:]]\+[0-9][[:space:]]\+[0-9][::space::]*$\)/,$default_tmpfs\1/" $conf_new > + fi > + # Convert relative sizes > + has_rel_size=`echo $line | grep -e 'size=[0-9]\+%'` > + if test -n "$has_rel_size"; then > + percent=`echo "$line" | sed -e 's:size=\([0-9]\+\)%:\n\1%\n:' | grep '\%' | sed -e 's/%//'` > + size="$((memory*percent/100))" > + sed -i -e "\;$line;s/size=[0-9]\+%/size=${size}/" $conf_new > + fi > +done > + > +# Do we have any memory limit set? > +mem_limit=`grep 'lxc.cgroup.memory.limit_in_bytes[[:space:]]*=' $conf_new` > +if test -z "$mem_limit"; then > + sed -i -e "1s:^:lxc.cgroup.memory.limit_in_bytes = $memory\n:" $conf_new > +fi > + > +virsh -c lxc:/// domxml-from-native lxc-tools $conf_new >$domain_new > + > +cat $domain_new > + > +# Remove the temporary config > +rm $conf_new > +rm $domain_new > + > +exit 0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list