Re-introduce the old lxc-ls script and manpage under a new legacy sub-directory.
Those will be installed in place of their python equivalent when LXC is built without --enable-python. Any other script ported to python should be added to those lists. Signed-off-by: Stéphane Graber <stgra...@ubuntu.com> --- .gitignore | 1 + configure.ac | 2 + doc/Makefile.am | 9 ++- doc/legacy/lxc-ls.sgml.in | 156 ++++++++++++++++++++++++++++++++++++++++++++++ src/lxc/Makefile.am | 2 + src/lxc/legacy/lxc-ls.in | 94 ++++++++++++++++++++++++++++ 6 files changed, 263 insertions(+), 1 deletion(-) create mode 100644 doc/legacy/lxc-ls.sgml.in create mode 100644 src/lxc/legacy/lxc-ls.in diff --git a/.gitignore b/.gitignore index 76c9533..79dd77a 100644 --- a/.gitignore +++ b/.gitignore @@ -64,6 +64,7 @@ src/lxc/lxc-unfreeze src/lxc/lxc-unshare src/lxc/lxc-version src/lxc/lxc-wait +src/lxc/legacy/lxc-ls src/python-lxc/lxc/__pycache__/ diff --git a/configure.ac b/configure.ac index b73e07b..626d202 100644 --- a/configure.ac +++ b/configure.ac @@ -229,6 +229,7 @@ AC_CONFIG_FILES([ doc/lxc.sgml doc/common_options.sgml doc/see_also.sgml + doc/legacy/lxc-ls.sgml doc/rootfs/Makefile @@ -266,6 +267,7 @@ AC_CONFIG_FILES([ src/lxc/lxc-shutdown src/lxc/lxc-start-ephemeral src/lxc/lxc-destroy + src/lxc/legacy/lxc-ls src/python-lxc/Makefile diff --git a/doc/Makefile.am b/doc/Makefile.am index 1617186..86de2fe 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -19,7 +19,6 @@ man_MANS = \ lxc-unfreeze.1 \ lxc-monitor.1 \ lxc-wait.1 \ - lxc-ls.1 \ lxc-ps.1 \ lxc-cgroup.1 \ lxc-kill.1 \ @@ -29,15 +28,23 @@ man_MANS = \ \ lxc.7 +if ENABLE_PYTHON + man_MANS += lxc-ls.1 +else + man_MANS += legacy/lxc-ls.1 +endif %.1 : %.sgml $(db2xman) $< + test "$(shell basename $@)" != "$@" && mv $(shell basename $@) $@ || true %.5 : %.sgml $(db2xman) $< + test "$(shell basename $@)" != "$@" && mv $(shell basename $@) $@ || true %.7 : %.sgml $(db2xman) $< + test "$(shell basename $@)" != "$@" && mv $(shell basename $@) $@ || true lxc-%.sgml : common_options.sgml see_also.sgml diff --git a/doc/legacy/lxc-ls.sgml.in b/doc/legacy/lxc-ls.sgml.in new file mode 100644 index 0000000..c04a4a4 --- /dev/null +++ b/doc/legacy/lxc-ls.sgml.in @@ -0,0 +1,156 @@ + +<!-- + +lxc: linux Container library + +(C) Copyright IBM Corp. 2007, 2008 + +Authors: +Daniel Lezcano <dlezcano at fr.ibm.com> + +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, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +--> + +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ + +<!ENTITY seealso SYSTEM "@builddir@/../see_also.sgml"> +]> + +<refentry> + + <docinfo><date>@LXC_GENERATE_DATE@</date></docinfo> + + <refmeta> + <refentrytitle>lxc-ls</refentrytitle> + <manvolnum>1</manvolnum> + </refmeta> + + <refnamediv> + <refname>lxc-ls</refname> + + <refpurpose> + list the containers existing on the system + </refpurpose> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>lxc-ls</command> + <arg choice="opt">--active</arg> + <arg choice="opt">ls option</arg> + </cmdsynopsis> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + <para> + <command>lxc-ls</command> list the containers existing on the + system. + </para> + </refsect1> + + <refsect1> + <title>Options</title> + <variablelist> + + <varlistentry> + <term> + <option><optional>--active</optional></option> + </term> + <listitem> + <para> + List active containers. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term> + <option><optional>ls options</optional></option> + </term> + <listitem> + <para> + The option passed to <command>lxc-ls</command> are the + same as the <command>ls</command> command. + </para> + </listitem> + </varlistentry> + + </variablelist> + + </refsect1> + + <refsect1> + <title>Examples</title> + <variablelist> + <varlistentry> + <term>lxc-ls -l</term> + <listitem> + <para> + list all the container and their permissions. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term>lxc-ls --active -1</term> + <listitem> + <para> + list active containers and display the list in one column. + </para> + </listitem> + </varlistentry> + + </variablelist> + </refsect1> + + <refsect1> + <title>See Also</title> + + <simpara> + <citerefentry> + <refentrytitle>ls</refentrytitle> + <manvolnum>1</manvolnum> + </citerefentry>, + </simpara> + + </refsect1> + + &seealso; + + <refsect1> + <title>Author</title> + <para>Daniel Lezcano <email>daniel.lezc...@free.fr</email></para> + </refsect1> + +</refentry> + +<!-- Keep this comment at the end of the file +Local variables: +mode: sgml +sgml-omittag:t +sgml-shorttag:t +sgml-minimize-attributes:nil +sgml-always-quote-attributes:t +sgml-indent-step:2 +sgml-indent-data:t +sgml-parent-document:nil +sgml-default-dtd-file:nil +sgml-exposed-tags:nil +sgml-local-catalogs:nil +sgml-local-ecat-files:nil +End: +--> diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am index de227c7..bf675f9 100644 --- a/src/lxc/Makefile.am +++ b/src/lxc/Makefile.am @@ -100,6 +100,8 @@ if ENABLE_PYTHON bin_SCRIPTS += lxc-device bin_SCRIPTS += lxc-ls bin_SCRIPTS += lxc-start-ephemeral +else + bin_SCRIPTS += legacy/lxc-ls endif bin_PROGRAMS = \ diff --git a/src/lxc/legacy/lxc-ls.in b/src/lxc/legacy/lxc-ls.in new file mode 100644 index 0000000..f26572d --- /dev/null +++ b/src/lxc/legacy/lxc-ls.in @@ -0,0 +1,94 @@ +#!/bin/bash + +# +# lxc: linux Container library + +# 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, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +lxc_path=@LXCPATH@ + +usage() +{ + echo "usage: $(basename $0) [--active] [--] [LS_OPTIONS...]" >&2 +} + +help() { + usage + echo >&2 + echo "List containers existing on the system." >&2 + echo >&2 + echo " --active list active containers" >&2 + echo " LS_OPTIONS ls command options (see \`ls --help')" >&2 +} + +get_parent_cgroup() +{ + local hierarchies hierarchy fields subsystems init_cgroup mountpoint + + parent_cgroup="" + + # Obtain a list of hierarchies that contain one or more subsystems + hierarchies=$(tail -n +2 /proc/cgroups | cut -f 2) + + # Iterate through the list until a suitable hierarchy is found + for hierarchy in $hierarchies; do + # Obtain information about the init process in the hierarchy + fields=$(grep -E "^$hierarchy:" /proc/1/cgroup | head -n 1) + if [ -z "$fields" ]; then continue; fi + fields=${fields#*:} + + # Get a comma-separated list of the hierarchy's subsystems + subsystems=${fields%:*} + + # Get the cgroup of the init process in the hierarchy + init_cgroup=${fields#*:} + + # Get the filesystem mountpoint of the hierarchy + mountpoint=$(grep -E "^[^ ]+ [^ ]+ cgroup ([^ ]+,)?$subsystems(,[^ ]+)? " /proc/self/mounts | cut -d ' ' -f 2) + if [ -z "$mountpoint" ]; then continue; fi + + # Return the absolute path to the containers' parent cgroup + # (do not append '/lxc' if the hierarchy contains the 'ns' subsystem) + if [[ ",$subsystems," == *,ns,* ]]; then + parent_cgroup="${mountpoint}${init_cgroup%/}" + else + parent_cgroup="${mountpoint}${init_cgroup%/}/lxc" + fi + break + done +} + +directory=$(readlink -f "$lxc_path") + +for i in "$@"; do + case $i in + --help) + help; exit;; + --active) + get_parent_cgroup; directory="$parent_cgroup"; shift;; + --) + shift; break;; + *) + break;; + esac +done + +containers="" +if [ ! -z "$directory" ]; then + containers=$(find $directory -mindepth 1 -maxdepth 1 -type d -printf "%f\n" 2>/dev/null) +fi + +cd "$directory" +ls -d $@ -- $containers -- 1.8.0
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel