On Tue, 9 Jul 2013 14:56:20 -0400 Stéphane Graber <stgra...@ubuntu.com> wrote:
> On Tue, Jul 09, 2013 at 02:44:30PM -0400, Dwight Engen wrote: > > This hook script updates the hostname in various files under /etc > > in the cloned container. In order to do so, the old container name > > is passed in the LXC_SRC_NAME environment variable. > > > > Looks good, just a few comments below. > > > > Signed-off-by: Dwight Engen <dwight.en...@oracle.com> > > --- > > doc/lxc-clone.sgml.in | 3 ++- > > hooks/Makefile.am | 1 + > > hooks/clonehostname | 29 +++++++++++++++++++++++++++++ > > src/lxc/lxccontainer.c | 9 +++++++-- > > 4 files changed, 39 insertions(+), 3 deletions(-) > > create mode 100755 hooks/clonehostname > > > > diff --git a/doc/lxc-clone.sgml.in b/doc/lxc-clone.sgml.in > > index 6885ff7..74982a1 100644 > > --- a/doc/lxc-clone.sgml.in > > +++ b/doc/lxc-clone.sgml.in > > @@ -255,7 +255,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, > > Boston, MA 02111-1307 USA argument 4. The > > <filename>LXC_ROOTFS_MOUNT</filename> environment variable gives > > the path under which the container's root filesystem is mounted. > > The configuration file pathname is stored in > > <filename>LXC_CONFIG_FILE</filename>, the > > - container name in <filename>LXC_NAME</filename>, and the > > path or device on which > > + new container name in <filename>LXC_NAME</filename>, the old > > container name in > > + <filename>LXC_SRC_NAME</filename>, and the path or device on > > which the rootfs is located is in > > <filename>LXC_ROOTFS_PATH</filename>. </para> > > </refsect1> > > diff --git a/hooks/Makefile.am b/hooks/Makefile.am > > index 196e632..3e32ce0 100644 > > --- a/hooks/Makefile.am > > +++ b/hooks/Makefile.am > > @@ -1,6 +1,7 @@ > > hooksdir=@LXCHOOKDIR@ > > > > hooks_SCRIPTS = \ > > + clonehostname \ > > mountcgroups \ > > mountecryptfsroot > > > > diff --git a/hooks/clonehostname b/hooks/clonehostname > > new file mode 100755 > > index 0000000..79d14a5 > > --- /dev/null > > +++ b/hooks/clonehostname > > @@ -0,0 +1,29 @@ > > +#!/bin/bash > > Not seeing any bashism below, so could be "#!/bin/sh" which should be > identical on RedHat-based distro and is recommended on Debian-based > distros for performance reason (dash is faster than bash). Sure, thats what I get for starting from hooks/mountcgroup without realizing it had bashisms. Makes sense to use /bin/sh where possible. > > +# > > +# Update the hostname in the cloned container's scripts > > +# > > +# Copyright © 2013 Oracle. > > +# > > +# This library is free software; you can redistribute it and/or > > modify +# it under the terms of the GNU General Public License > > version 2, as +# published by the Free Software Foundation. > > +# > > +# 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, write to the Free > > Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, > > Boston, MA 02110-1301 USA. + > > +# Note that /etc/hostname is updated by lxc itself > > +for file in \ > > + $LXC_ROOTFS_PATH/etc/sysconfig/network \ > > + $LXC_ROOTFS_PATH/etc/sysconfig/network-scripts/ifcfg-* ; > > +do > > + if [ -f $file ]; then > > + sed -i "s|$LXC_SRC_NAME|$LXC_NAME|" $file > > + fi > > +done > > +exit 0 > > diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c > > index 4e71fb1..43acf47 100644 > > --- a/src/lxc/lxccontainer.c > > +++ b/src/lxc/lxccontainer.c > > @@ -1767,7 +1767,9 @@ static int copy_storage(struct lxc_container > > *c0, struct lxc_container *c, return 0; > > } > > > > -static int clone_update_rootfs(struct lxc_container *c, int flags, > > char **hookargs) +static int clone_update_rootfs(struct > > lxc_container *c0, > > + struct lxc_container *c, int flags, > > + char **hookargs) > > { > > int ret = -1; > > char path[MAXPATHLEN]; > > @@ -1797,6 +1799,9 @@ static int clone_update_rootfs(struct > > lxc_container *c, int flags, char **hookar > > if (!lxc_list_empty(&conf->hooks[LXCHOOK_CLONE])) { > > /* Start of environment variable setup for hooks */ > > + if (setenv("LXC_SRC_NAME", c0->name, 1)) { > > + SYSERROR("failed to set environment > > variable for container name"); > > + } > > "for source container name" maybe? that way it's different from the > other error message. Will change it in v2. > > if (setenv("LXC_NAME", c->name, 1)) { > > SYSERROR("failed to set environment > > variable for container name"); } > > @@ -1955,7 +1960,7 @@ struct lxc_container *lxcapi_clone(struct > > lxc_container *c, const char *newname, if (!c2->save_config(c2, > > NULL)) goto out; > > > > - if (clone_update_rootfs(c2, flags, hookargs) < 0) > > + if (clone_update_rootfs(c, c2, flags, hookargs) < 0) > > goto out; > > > > // TODO: update c's lxc.snapshot = count > > -- > > 1.8.1.4 > > > > > > ------------------------------------------------------------------------------ > > See everything from the browser to the database with AppDynamics > > Get end-to-end visibility with application monitoring from > > AppDynamics Isolate bottlenecks and diagnose root cause in seconds. > > Start your free trial of AppDynamics Pro today! > > http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk > > _______________________________________________ > > Lxc-devel mailing list > > Lxc-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/lxc-devel > ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel