From df82d28c3cfd3b8b16ce2494e4a115af968122fb Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Sun, 23 May 2010 21:38:11 +0200 Subject: [PATCH 01/30] Refactoring: Make check for sources.list more readable --- hooks/debian/20-setup-apt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hooks/debian/20-setup-apt b/hooks/debian/20-setup-apt index e008d39..0d9353f 100755 --- a/hooks/debian/20-setup-apt +++ b/hooks/debian/20-setup-apt @@ -78,7 +78,7 @@ E_O_APT # # If the host system has security support then enable that here too. # -if ( test '!' -e /etc/apt/sources.list || \ +if ( test -e /etc/apt/sources.list && \ grep ^deb.*security -r /etc/apt/sources.list /etc/apt/sources.list.d >/dev/null 2>/dev/null ) ; then cat <> ${prefix}/etc/apt/sources.list From e1c1793232dcd9cd7362d44861d00fd02f0bdde5 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Sun, 23 May 2010 21:40:30 +0200 Subject: [PATCH 02/30] Do not add security support if we're installing Sid --- hooks/debian/20-setup-apt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hooks/debian/20-setup-apt b/hooks/debian/20-setup-apt index 0d9353f..9c8189b 100755 --- a/hooks/debian/20-setup-apt +++ b/hooks/debian/20-setup-apt @@ -76,9 +76,11 @@ E_O_APT # -# If the host system has security support then enable that here too. +# If the host system has security support then enable that here, too, +# except if we're installing Debian Unstable. # -if ( test -e /etc/apt/sources.list && \ +if ( test "${dist}" '!=' 'sid' && test "${dist}" '!=' 'unstable' && \ + test -e /etc/apt/sources.list && \ grep ^deb.*security -r /etc/apt/sources.list /etc/apt/sources.list.d >/dev/null 2>/dev/null ) ; then cat <> ${prefix}/etc/apt/sources.list From b55d27c290699c35e05fbeed99b980248db1bd3c Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Sun, 23 May 2010 23:02:48 +0200 Subject: [PATCH 03/30] Add option --debootstrap-cmd to xen-create-image and xt-install-image --- bin/xen-create-image | 22 ++++++++++++++++++---- bin/xt-install-image | 8 +++++--- debian/changelog | 5 +++++ debian/control | 2 +- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/bin/xen-create-image b/bin/xen-create-image index 4c1952f..8df122c 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -39,7 +39,8 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH. --copy-cmd NOP: Ignored. --debootstrap-cmd - NOP: Ignored. + Specify which debootstrap command is used, either + debootstrap (default) or cdebootstrap. --force Force overwriting existing images. This will remove existing images or LVM volumes which match those which @@ -1272,9 +1273,11 @@ sub setupDefaultOptions $CONFIG{ 'extension' } = '.cfg'; # - # Installation method defaults to "debootstrap". + # Installation method defaults to "debootstrap" using + # "debootstrap" (instead of cdebootstrap). # $CONFIG{ 'install-method' } = 'debootstrap'; + $CONFIG{ 'debootstrap-cmd' } = ''; # # The program to run to create a filesystem. @@ -1465,8 +1468,9 @@ sub parseCommandLineArguments # # NOTE: We set the local variable here, not the global. # - "install-method=s", \$CONFIG{ 'install-method' }, - "install-source=s", \$CONFIG{ 'install-source' }, + "install-method=s", \$CONFIG{ 'install-method' }, + "install-source=s", \$CONFIG{ 'install-source' }, + "debootstrap-cmd=s", \$CONFIG{ 'debootstrap-cmd' }, # Misc. options "accounts", \$CONFIG{ 'accounts' }, @@ -3229,6 +3233,16 @@ sub installSystem } + # + # Propagate --debootstrap-cmd if install-method is debootstrap + # + if ( $CONFIG{ 'install-method' } eq 'debootstrap' and + $CONFIG{ 'debootstrap-cmd' } ) + { + $cmd .= " --debootstrap-cmd=$CONFIG{'debootstrap-cmd'}"; + } + + # # Show the user what they are installing # diff --git a/bin/xt-install-image b/bin/xt-install-image index caed1be..599acbf 100755 --- a/bin/xt-install-image +++ b/bin/xt-install-image @@ -29,8 +29,9 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory --mirror The mirror to use when installing with 'debootstrap'. Installation Options: - --install-method Specify the installation method to use. - --install-source Specify the installation source to use. + --install-method Specify the installation method to use. + --install-source Specify the installation source to use. + --debootstrap-cmd Specify which debootstrap command to use. All other options from xen-create-image will be passed as environmental variables. @@ -401,6 +402,7 @@ sub parseCommandLineArguments # Installation method "install-method=s", \$CONFIG{ 'install-method' }, "install-source=s", \$CONFIG{ 'install-source' }, + "debootstrap-cmd=s", \$CONFIG{ 'debootstrap-cmd' }, # Misc "arch=s", \$CONFIG{ 'arch' }, @@ -686,7 +688,7 @@ sub do_debootstrap # to use cdebootstrap. # my $cmd = $CONFIG{ 'debootstrap-cmd' }; - if ( !defined($cmd) ) + if ( !$cmd ) { print "Falling back to default debootstrap command\n"; $cmd = '/usr/sbin/debootstrap'; diff --git a/debian/changelog b/debian/changelog index 1fed193..d920159 100644 --- a/debian/changelog +++ b/debian/changelog @@ -34,6 +34,11 @@ xen-tools (4.2~rc1-1) UNRELEASED; urgency=low - xt-install-image now exits with return value 127 instead of 0 to indicate errors on running the command given in --install-method. (Closes: #534290) + - The debootstrap command now also can be configured on the + commandline with --debootstrap-cmd in xen-create-image and + xt-install-image (Enhances fix for #436480 which added the + debootstrap-cmd config file option; Changed "Depends: debootstrap" + to "Depends: debootstrap | cdebootstrap" in debian/control) * Removal of /etc/bash_completion.d/xm from the package since bash-completion ships a more elaborate version of that file. (Closes: #566683, #550590, LP: #538917, #484098) diff --git a/debian/control b/debian/control index 76bfcbb..4f9bb97 100644 --- a/debian/control +++ b/debian/control @@ -10,7 +10,7 @@ Vcs-Git: git://gitorious.org/xen-tools/xen-tools.git Package: xen-tools Architecture: all -Depends: debootstrap, perl-modules, libtext-template-perl, libconfig-inifiles-perl, libfile-slurp-perl, ${misc:Depends} +Depends: debootstrap | cdebootstrap, perl-modules, libtext-template-perl, libconfig-inifiles-perl, libfile-slurp-perl, ${misc:Depends} Recommends: xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae, rinse, xen-shell, libexpect-perl Suggests: reiserfsprogs, xfsprogs, xen-utils Description: Tools to manage Xen virtual servers From 95a83dc5b910c5c489abad642c43482bb5a5a0e8 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Sun, 23 May 2010 23:14:25 +0200 Subject: [PATCH 04/30] Check for debootstrap and cdebootstrap installation, decide default based on that --- bin/xen-create-image | 5 +++-- bin/xt-install-image | 15 ++++++++++++--- debian/changelog | 6 ++++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/bin/xen-create-image b/bin/xen-create-image index 8df122c..37a079f 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -39,8 +39,9 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH. --copy-cmd NOP: Ignored. --debootstrap-cmd - Specify which debootstrap command is used, either - debootstrap (default) or cdebootstrap. + Specify which debootstrap command is used. Defaults to + debootstrap if both, debootstrap and cdebootstrap are + installed. --force Force overwriting existing images. This will remove existing images or LVM volumes which match those which diff --git a/bin/xt-install-image b/bin/xt-install-image index 599acbf..537ac2b 100755 --- a/bin/xt-install-image +++ b/bin/xt-install-image @@ -31,7 +31,9 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory Installation Options: --install-method Specify the installation method to use. --install-source Specify the installation source to use. - --debootstrap-cmd Specify which debootstrap command to use. + --debootstrap-cmd Specify which debootstrap command to + use. Defaults to debootstrap if both, debootstrap + and cdebootstrap are installed. All other options from xen-create-image will be passed as environmental variables. @@ -690,8 +692,15 @@ sub do_debootstrap my $cmd = $CONFIG{ 'debootstrap-cmd' }; if ( !$cmd ) { - print "Falling back to default debootstrap command\n"; - $cmd = '/usr/sbin/debootstrap'; + if (-x '/usr/sbin/debootstrap') { + $cmd = '/usr/sbin/debootstrap'; + } elsif (-x '/usr/sbin/cdebootstrap') { + $cmd = '/usr/sbin/cdebootstrap'; + } else { + print STDERR "Found neither debootstrap nor cdebootstrap and no --debootstrap-cmd given\n"; + exit 1; + } + print "Using $cmd as debootstrap command\n"; } diff --git a/debian/changelog b/debian/changelog index d920159..f80388a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -37,8 +37,10 @@ xen-tools (4.2~rc1-1) UNRELEASED; urgency=low - The debootstrap command now also can be configured on the commandline with --debootstrap-cmd in xen-create-image and xt-install-image (Enhances fix for #436480 which added the - debootstrap-cmd config file option; Changed "Depends: debootstrap" - to "Depends: debootstrap | cdebootstrap" in debian/control) + debootstrap-cmd config file option) + - Checks for debootstrap and cdebootstrap, uses debootstrap if both + are installed (Changed "Depends: debootstrap" to "Depends: + debootstrap | cdebootstrap" in debian/control) * Removal of /etc/bash_completion.d/xm from the package since bash-completion ships a more elaborate version of that file. (Closes: #566683, #550590, LP: #538917, #484098) From c93a08fee205b4cf14961bb055098e3239d390a5 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Tue, 25 May 2010 23:45:36 +0200 Subject: [PATCH 05/30] TODO: xen-delete-image doesn't delete all disk-images if --partitions is used --- TODO | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/TODO b/TODO index 3399d5e..0a41baf 100644 --- a/TODO +++ b/TODO @@ -44,6 +44,13 @@ Bugs to fix and Features to add before a 4.2 release stored in the configuration hash. The only issue is that trailing whitespace is missing from the "make_fs_foo" option. +* xen-delete-image doesn't remove all logical volumes if --partitions is used. + + See the link below for details how to reproduce. Reproducable at + least with --lvm. Thanks to Antoine Benkemoun for reporting. + + http://xen-tools.org/pipermail/xen-tools-discuss/2010-May/000757.html + * Should check all integer expection options on other characters than digits. * Test suite should pass From fa4e023e688091da52b15c33bcdcb41a91e0d879 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 20:54:42 +0200 Subject: [PATCH 06/30] TODO: Password handling --- TODO | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/TODO b/TODO index 0a41baf..c8b8af6 100644 --- a/TODO +++ b/TODO @@ -38,6 +38,16 @@ Bugs to fix and Features to add before a 4.2 release /etc/xen-tools/sources.list.d/ because that directory is no runparts-like directory. +* Interactive Password Handling + + Allow setting the password again if we failed on the first try. + +* Non-Interactive Password Handling + + Option to generate passwords (check pwgen, apg, makepasswd, and + gpw which of them are best suited for generating complete + /etc/passwd and /etc/shadow lines). + * Test and support more file system types. Actually this should be pretty simple now that the parameters are From b452461473a2a2c75db2e448567a72052dc44604 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:03:09 +0200 Subject: [PATCH 07/30] xen-create-image(1): Don't talk aber Sarge and Etch, talk about Debian Stable, so we won't have to change to docs with every new Debian release. ;-) --- TODO | 2 -- bin/xen-create-image | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index c8b8af6..d5c4e33 100644 --- a/TODO +++ b/TODO @@ -8,8 +8,6 @@ Bugs to fix and Features to add before a 4.2 release - ambiguous option list with regards to parameters -- talks about Sarge and Etch - * xen-create-image --dist=... / sources.list generation should be more fine-grained xen-tools should offer the possibility to enabled/disable diff --git a/bin/xen-create-image b/bin/xen-create-image index 37a079f..e0caabb 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -329,7 +329,7 @@ Create a Xen configuration file in so that xm can start the new domain. memory = 128Mb # Memory size swap = 128Mb # Swap size fs = ext3 # use EXT3 filesystems - dist = sarge # Default distribution to install. + dist = stable # Default distribution to install. # # Kernel options. @@ -440,9 +440,9 @@ Create a Xen configuration file in so that xm can start the new domain. =head1 LOOPBACK EXAMPLES The following will create a 2Gb disk image, along with a 128Mb - swap file with Debian Sarge setup and running via DHCP. + swap file with Debian Stable setup and running via DHCP. - xen-create-image --size=2Gb --swap=128Mb --dhcp \ + xen-create-image --size=2Gb --swap=128Mb --dhcp --dist=stable \ --dir=/home/xen --hostname=vm01.my.flat This next example sets up a host which has the name 'vm02.my.flat' and @@ -592,7 +592,7 @@ Create a Xen configuration file in so that xm can start the new domain. =head1 ROLES Currently there are some roles scripts included which work for - the Debian Sarge and Etch distrubtions only. They are included + the Debian and Ubuntu distrubtions only. They are included primarily as examples of the kind of things you could accomplish. The supplied scripts are: From ec848be65002f48c7ea3365a92f279e91a9f26f3 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:04:05 +0200 Subject: [PATCH 08/30] TODO: xen-create-image(1): not all roles are listed --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index d5c4e33..5afbeb3 100644 --- a/TODO +++ b/TODO @@ -8,6 +8,8 @@ Bugs to fix and Features to add before a 4.2 release - ambiguous option list with regards to parameters +- not all roles are listed + * xen-create-image --dist=... / sources.list generation should be more fine-grained xen-tools should offer the possibility to enabled/disable From d575169b42f9c4a794844577e63a1892fce65636 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:13:36 +0200 Subject: [PATCH 09/30] Document the cfengine role, add cfengine to debian/control:Suggests. Also fix some documentation bugs in roles/cfengine --- bin/xen-create-image | 4 ++++ debian/control | 2 +- roles/cfengine | 6 +++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bin/xen-create-image b/bin/xen-create-image index e0caabb..b5890cd 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -603,6 +603,10 @@ Create a Xen configuration file in so that xm can start the new domain. Setup the new virtual images with commonly used packages for rebuilding Debian packages from their source. +=item cfengine +Install cfengine2 on the virtual image and copy the cfengine +configuration from Dom0. + =item gdm Install an X11 server, using VNC and GDM diff --git a/debian/control b/debian/control index 4f9bb97..0467ea3 100644 --- a/debian/control +++ b/debian/control @@ -12,7 +12,7 @@ Package: xen-tools Architecture: all Depends: debootstrap | cdebootstrap, perl-modules, libtext-template-perl, libconfig-inifiles-perl, libfile-slurp-perl, ${misc:Depends} Recommends: xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae, rinse, xen-shell, libexpect-perl -Suggests: reiserfsprogs, xfsprogs, xen-utils +Suggests: reiserfsprogs, xfsprogs, xen-utils, cfengine2 Description: Tools to manage Xen virtual servers This package contains tools to manage Debian based Xen virtual servers. . diff --git a/roles/cfengine b/roles/cfengine index 382ad4c..e071f53 100755 --- a/roles/cfengine +++ b/roles/cfengine @@ -26,14 +26,14 @@ logMessage Script $0 starting # -# Install ssh +# Install CFengine # installDebianPackage ${prefix} cfengine2 # -# Make sure sshd isn't running, this will cause our unmounting of the -# disk image to fail.. +# Make sure the CFengine server isn't running, this will cause our +# unmounting of the disk image to fail.. # chroot ${prefix} /etc/init.d/cfengine2 stop From f7316431a0312535ad3b3e1535ee7b1fbce3169d Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:19:13 +0200 Subject: [PATCH 10/30] Document the editor (sed) role. Also fix a typo in roles/editor --- bin/xen-create-image | 15 +++++++++++++++ roles/editor | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/bin/xen-create-image b/bin/xen-create-image index b5890cd..9fc7260 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -607,6 +607,21 @@ Debian packages from their source. Install cfengine2 on the virtual image and copy the cfengine configuration from Dom0. +=item editor +Allows generalised editing of files for guests. + +This script works via a skeleton directory containing small sed files +which will contain edits to be applied to an arbitary tree of files +upon the new domU. + +For example if we have the following sed file: + + /etc/xen-tools/sed.d/etc/ssh/sshd_config.sed + +this will be applied to /etc/ssh/sshd_config upon the new guest *if* +it exists. If the file encoded in the name doesn't exist then it will +be ignored. + =item gdm Install an X11 server, using VNC and GDM diff --git a/roles/editor b/roles/editor index 8c0b74c..2f7771b 100755 --- a/roles/editor +++ b/roles/editor @@ -2,7 +2,7 @@ # # Role-script for the generalised editing of files for guests. # -# This script works via a skelington directory containing small +# This script works via a skeleton directory containing small # .sed files which will contain edits to be applied to an arbitary # tree of files upon the new domU. # From a0fb2e22b0c04693fbb5599dded5360ff78c9908 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:21:48 +0200 Subject: [PATCH 11/30] Document the puppet role. --- bin/xen-create-image | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/xen-create-image b/bin/xen-create-image index 9fc7260..b9acde8 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -628,6 +628,10 @@ Install an X11 server, using VNC and GDM =item minimal Customise the generated images to remove some packages. +=item puppet +Install puppet on the virtual image and copy the cfengine +configuration from Dom0. + =item xdm Install an X11 server, using VNC and XDM From 3520cc7076a6c57004d053ee7a58cf02cff9c612 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:26:39 +0200 Subject: [PATCH 12/30] roles/tmpfs: Forgot to adjust authorship since it initially was just though for internal usage --- roles/tmpfs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/tmpfs b/roles/tmpfs index 70a09e8..c5d6ba6 100755 --- a/roles/tmpfs +++ b/roles/tmpfs @@ -7,9 +7,9 @@ # differences between filesystems - some root filesystems will require # the installation of new packages, and we have to handle that here. # -# Steve +# Axel # -- -# http://www.steve.org.uk/ +# prefix=$1 From c464c336bd6fe95a33a22dce19ebd651eed22bfb Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:27:45 +0200 Subject: [PATCH 13/30] roles/tmpfs: Also remove legacy comment --- roles/tmpfs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/roles/tmpfs b/roles/tmpfs index c5d6ba6..fc51625 100755 --- a/roles/tmpfs +++ b/roles/tmpfs @@ -3,10 +3,6 @@ # This script is responsible for setting up /etc/fstab upon the # new instance. # -# This should be a simple job, but it is complicated by some of the -# differences between filesystems - some root filesystems will require -# the installation of new packages, and we have to handle that here. -# # Axel # -- # From 03532c16a62f0c3edb493cf9827dbd4daf7adf9a Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:28:27 +0200 Subject: [PATCH 14/30] Document the tmpfs role. --- bin/xen-create-image | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/xen-create-image b/bin/xen-create-image index b9acde8..d06f0e7 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -632,6 +632,10 @@ Customise the generated images to remove some packages. Install puppet on the virtual image and copy the cfengine configuration from Dom0. +=item tmpfs +Install puppet on the virtual image and copy the cfengine +configuration from Dom0. + =item xdm Install an X11 server, using VNC and XDM From ff2867f73278adf48a4eefee7f4dda321a9634a5 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:30:36 +0200 Subject: [PATCH 15/30] Document the udev role. --- bin/xen-create-image | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bin/xen-create-image b/bin/xen-create-image index d06f0e7..1cfd2f7 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -633,8 +633,12 @@ Install puppet on the virtual image and copy the cfengine configuration from Dom0. =item tmpfs -Install puppet on the virtual image and copy the cfengine -configuration from Dom0. +Sets up /tmp, /var/run and /var/lock as tmpfs in the DomU. + +=item udev +Install udev in the DomU. Most distributions install udev by default +nowadays, so this role is probably only interesting for legacy systems +which need udev anyway. =item xdm Install an X11 server, using VNC and XDM From babf60a9b798c55eb3b1d168633d53b7a6adca07 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:33:04 +0200 Subject: [PATCH 16/30] roles/README: Hint to document new roles --- TODO | 2 -- roles/README | 6 ++++++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 roles/README diff --git a/TODO b/TODO index 5afbeb3..d5c4e33 100644 --- a/TODO +++ b/TODO @@ -8,8 +8,6 @@ Bugs to fix and Features to add before a 4.2 release - ambiguous option list with regards to parameters -- not all roles are listed - * xen-create-image --dist=... / sources.list generation should be more fine-grained xen-tools should offer the possibility to enabled/disable diff --git a/roles/README b/roles/README new file mode 100644 index 0000000..850324d --- /dev/null +++ b/roles/README @@ -0,0 +1,6 @@ +These files are roles which you can use with xen-create-image(1) with +the --role= option. + +If you add new roles to the xen-tools distribution in this directory, +please document them in the POD code of bin/xen-create-image under +"ROLES". From 4c43c34025dafc11d24da0b5905f0f2d6f5091ef Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:39:25 +0200 Subject: [PATCH 17/30] TODO: Move new sources.list generation to post-4.2 --- TODO | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/TODO b/TODO index d5c4e33..47cfb49 100644 --- a/TODO +++ b/TODO @@ -8,34 +8,6 @@ Bugs to fix and Features to add before a 4.2 release - ambiguous option list with regards to parameters -* xen-create-image --dist=... / sources.list generation should be more fine-grained - - xen-tools should offer the possibility to enabled/disable - security/volatile/backports as well as - contrib/non-free/universe/restricted/multiverse for each of them - not only based on defaults plus the Dom0's sources.list - - One idea is to allow parameters like - - --dist="lenny:main,contrib,non-free;security;volatile:main" - - and maybe (if the default will be to include security) to also - allow - - --dist="lenny;no-security" - - The second idea (by Mathieu Parent) is to have an - /etc/xen-tools/sources.list.d/ which then contains files like - lenny.list, lenny-server.list, karmic.list, etc. which defaults to - $dist.list, but can be also select with --sources-list=lenny-server - (which looks for ./lenny-server.list, ./lenny-server, - /etc/xen-tools/sources.list.d/lenny-server.list and - /etc/xen-tools/sources.list.d/lenny-server in that order). - - Third variant is to use /etc/xen-tools/sources.lists/ instead of - /etc/xen-tools/sources.list.d/ because that directory is no - runparts-like directory. - * Interactive Password Handling Allow setting the password again if we failed on the first try. @@ -92,6 +64,34 @@ Bugs to fix and Features to add before a 4.2 release Maybe for a 4.3 or 5.0 release ------------------------------ +* xen-create-image --dist=... / sources.list generation should be more fine-grained + + xen-tools should offer the possibility to enable/disable + security/volatile/backports as well as + contrib/non-free/universe/restricted/multiverse for each of them + not only based on defaults plus the Dom0's sources.list + + One idea is to allow parameters like + + --dist="lenny:main,contrib,non-free;security;volatile:main" + + and maybe (if the default will be to include security) to also + allow + + --dist="lenny;no-security" + + The second idea (by Mathieu Parent) is to have an + /etc/xen-tools/sources.list.d/ which then contains files like + lenny.list, lenny-server.list, karmic.list, etc. which defaults to + $dist.list, but can be also select with --sources-list=lenny-server + (which looks for ./lenny-server.list, ./lenny-server, + /etc/xen-tools/sources.list.d/lenny-server.list and + /etc/xen-tools/sources.list.d/lenny-server in that order). + + Third variant is to use /etc/xen-tools/sources.lists/ instead of + /etc/xen-tools/sources.list.d/ because that directory is no + runparts-like directory. + * LVM snapshot support as an install source. * Clean up mounts on Ctrl-C, causes error while installing otherwise: From 3990d298aede4377c2df54a8cb5d126b4e3dd163 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:42:22 +0200 Subject: [PATCH 18/30] TODO: Merge passwd changing issues which were more or less listed twice --- TODO | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/TODO b/TODO index 47cfb49..4f24763 100644 --- a/TODO +++ b/TODO @@ -8,9 +8,9 @@ Bugs to fix and Features to add before a 4.2 release - ambiguous option list with regards to parameters -* Interactive Password Handling +* Interactive Password Handling (maybe also the passwd role) - Allow setting the password again if we failed on the first try. + Shouldn't give up after only one password missmatch. * Non-Interactive Password Handling @@ -51,9 +51,6 @@ Bugs to fix and Features to add before a 4.2 release - --bridge This one is also trivial -- --passwd - shouldn't give up after only one password missmatch - - Clean up setup-hostname - copying the dom0s /etc/hosts isn't reliable - Add a flag to not copy /etc/hosts file From 7a052cde713cf49dbeddf9355e1c8633687438cf Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 21:45:00 +0200 Subject: [PATCH 19/30] TODO: Remove --vcpus and --bridge (implemented by Dmitry) --- TODO | 5 ----- 1 file changed, 5 deletions(-) diff --git a/TODO b/TODO index 4f24763..5ec0084 100644 --- a/TODO +++ b/TODO @@ -45,11 +45,6 @@ Bugs to fix and Features to add before a 4.2 release * Add distro name and release number to pygrub screen * Hooks -- --vcpus - This one is trivial - -- --bridge - This one is also trivial - Clean up setup-hostname - copying the dom0s /etc/hosts isn't reliable From e121eca49acb4d8fb2d742b075b4ee8574e68af9 Mon Sep 17 00:00:00 2001 From: Dmitry Nedospasov Date: Wed, 26 May 2010 21:58:32 +0200 Subject: [PATCH 20/30] Updated todo with (relevant for 4.2 and later) * Removed several bullet points which are already implemented * Added or changed several bullet points for the 4.2 release, most notably: 1. Fix 70-install-ssh 2. Clean up setup-hostname * Added or changed several bullet points for a later release, most notably: 1. Generic grub support --- TODO | 51 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/TODO b/TODO index d5c4e33..5714449 100644 --- a/TODO +++ b/TODO @@ -39,12 +39,25 @@ Bugs to fix and Features to add before a 4.2 release * Interactive Password Handling Allow setting the password again if we failed on the first try. + This is just a mater of wrapping the passwd call in a loop. * Non-Interactive Password Handling Option to generate passwords (check pwgen, apg, makepasswd, and gpw which of them are best suited for generating complete - /etc/passwd and /etc/shadow lines). + /etc/passwd and /etc/shadow lines). The password should be echo'ed + after installation in a way that can be easily grep'ed into other + scripts. + +* Fix 70-install-ssh + + Currently 70-install-ssh fails to finish installing the ssh-server + because it does not have a random seed to generate the host keys. + Mounting /proc and /dev in chroot prior to calling the install + function should fix this. If ssh-server is successfully installed + in the domU, it's key fingerprint should be echo'd in a way that + can easily be grep'ed into other scripts. + * Test and support more file system types. @@ -70,23 +83,16 @@ Bugs to fix and Features to add before a 4.2 release t/xen-tools.t t/xt-create-xen-config.t -* Add distro name and release number to pygrub screen +* Clean up setup-hostname - copying /etc/hosts isn't reliable -* Hooks -- --vcpus - This one is trivial + One could argue that that this gives "extra" information to the domU, since + the /etc/hosts file may contain more than just hosts on the same subnet. + This should atleast be disabled via a flag. -- --bridge - This one is also trivial +* Setup locales in the hooks? -- --passwd - shouldn't give up after only one password missmatch - -- Clean up setup-hostname - copying the dom0s /etc/hosts isn't reliable - -- Add a flag to not copy /etc/hosts file - -- Setup locales in the hooks? + Currently no locales are set and this causes several domU errors which appear + in the domU's logs. Maybe for a 4.3 or 5.0 release @@ -97,12 +103,18 @@ Maybe for a 4.3 or 5.0 release * Clean up mounts on Ctrl-C, causes error while installing otherwise: Removing /dev/vg0/acromantula-domu1-disk - since we're forcing the install - Can't remove open logical volume "acromantula-domu1-disk" + Can't remove open logical volume "acromantula-domu1-disk" this should be a + matter of unmounting the mounted volume from /tmp. -* btrfs support +* Generic grub support + + This will generate a much nicer menu.lst as a side effect, as its currently + generated once at install, and is never updated. Installing a full grub into + the domU should update the menu.lst every time a new kernel is installed and + will also use the domU distro's menu.lst conform. * Move the hooks directory to /etc/xen-tools/ to officially allow - added and modified hooks. + added and modified hooks. * Clean up the hooks directory @@ -128,7 +140,8 @@ Maybe for a 4.3 or 5.0 release * More generic hooks Deploy a web server or setup ssmtp directly via flag when setting up - the machine. Open to suggestions, should just be simple applications + the machine. Open to suggestions, should just be some general use-cases + that are fairly common. * Sections for the xen-tools.conf file From e16af7679b4a82e30527e9bab590e3ee44e63c23 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 22:11:47 +0200 Subject: [PATCH 21/30] Fix spelling error: arbitary -> arbitrary --- bin/xen-create-image | 2 +- roles/editor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/xen-create-image b/bin/xen-create-image index 1cfd2f7..9d0ccea 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -611,7 +611,7 @@ configuration from Dom0. Allows generalised editing of files for guests. This script works via a skeleton directory containing small sed files -which will contain edits to be applied to an arbitary tree of files +which will contain edits to be applied to an arbitrary tree of files upon the new domU. For example if we have the following sed file: diff --git a/roles/editor b/roles/editor index 2f7771b..67ada89 100755 --- a/roles/editor +++ b/roles/editor @@ -3,7 +3,7 @@ # Role-script for the generalised editing of files for guests. # # This script works via a skeleton directory containing small -# .sed files which will contain edits to be applied to an arbitary +# .sed files which will contain edits to be applied to an arbitrary # tree of files upon the new domU. # # For example if we have the following sed file: From 15b8ece37aedee03b122d33dd66b47fcc2313eed Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 22:19:55 +0200 Subject: [PATCH 22/30] Implement --dry-run for xen-delete-image --- bin/xen-delete-image | 56 +++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/bin/xen-delete-image b/bin/xen-delete-image index c153869..546e13e 100755 --- a/bin/xen-delete-image +++ b/bin/xen-delete-image @@ -340,10 +340,12 @@ sub parseCommandLineArguments my $HELP = 0; my $MANUAL = 0; my $VERSION = 0; + $CONFIG{ 'dry-run' } = 0; # Parse options. # GetOptions( "dir=s", \$CONFIG{ 'dir' }, + "dry-run", \$CONFIG{ 'dry-run' }, "lvm=s", \$CONFIG{ 'lvm' }, "evms=s", \$CONFIG{ 'evms' }, "hostname=s@", \$CONFIG{ 'hostname' }, @@ -488,8 +490,12 @@ sub deleteXenImage { if ( -e $file ) { - print "Deleting: $file\n"; - unlink($file); + if ($CONFIG{ 'dry-run' }) { + print "Would delete: $file\n"; + } else { + print "Deleting: $file\n"; + unlink($file); + } } else { @@ -507,8 +513,12 @@ sub deleteXenImage # if ( -d $prefix . $hostname ) { - print "Removing: " . $prefix . $hostname . "\n"; - rmdir( $prefix . $hostname ); + if ($CONFIG{ 'dry-run' }) { + print "Would delete: $prefix$hostname\n"; + } else { + print "Removing: " . $prefix . $hostname . "\n"; + rmdir( $prefix . $hostname ); + } } } elsif ( defined( $CONFIG{ 'lvm' } ) ) @@ -523,14 +533,22 @@ sub deleteXenImage if ( -e "/dev/$CONFIG{'lvm'}/$hostname-swap" ) { - print "Removing swap volume\n"; - runCommand("lvremove /dev/$CONFIG{'lvm'}/$hostname-swap --force"); + if ($CONFIG{ 'dry-run' }) { + print "Would remove LVM swap volume /dev/$CONFIG{'lvm'}/$hostname-swap\n"; + } else { + print "Removing swap volume\n"; + runCommand("lvremove /dev/$CONFIG{'lvm'}/$hostname-swap --force"); + } } if ( -e "/dev/$CONFIG{'lvm'}/$hostname-disk" ) { - print "Removing LVM disk volume\n"; - runCommand("lvremove /dev/$CONFIG{'lvm'}/$hostname-disk --force"); + if ($CONFIG{ 'dry-run' }) { + print "Would remove LVM disk volume /dev/$CONFIG{'lvm'}/$hostname-disk\n"; + } else { + print "Removing LVM disk volume\n"; + runCommand("lvremove /dev/$CONFIG{'lvm'}/$hostname-disk --force"); + } } } @@ -546,16 +564,26 @@ sub deleteXenImage if ( -e "/dev/evms/$hostname-swap" ) { - print "Removing EVMS swap volume\n"; - runCommand("echo Delete : /dev/evms/$hostname-swap | evms"); - runCommand("echo Delete : $CONFIG{'evms'}/$hostname-swap | evms"); + if ($CONFIG{ 'dry-run' }) { + print "Would remove EVMS swap volume: /dev/evms/$hostname-swap\n"; + print "Would remove EVMS swap volume: $CONFIG{'evms'}/$hostname-swap\n"; + } else { + print "Removing EVMS swap volume\n"; + runCommand("echo Delete : /dev/evms/$hostname-swap | evms"); + runCommand("echo Delete : $CONFIG{'evms'}/$hostname-swap | evms"); + } } if ( -e "/dev/evms/$hostname-disk" ) { - print "Removing EVMS disk volume\n"; - runCommand("echo Delete : /dev/evms/$hostname-disk | evms"); - runCommand("echo Delete : $CONFIG{'evms'}/$hostname-disk | evms"); + if ($CONFIG{ 'dry-run' }) { + print "Would remove EVMS disk volume: /dev/evms/$hostname-swap\n"; + print "Would remove EVMS disk volume: $CONFIG{'evms'}/$hostname-swap\n"; + } else { + print "Removing EVMS disk volume\n"; + runCommand("echo Delete : /dev/evms/$hostname-disk | evms"); + runCommand("echo Delete : $CONFIG{'evms'}/$hostname-disk | evms"); + } } } From e169ca95a7c1f8b604bc113ef248c64d4ddadf09 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 22:38:05 +0200 Subject: [PATCH 23/30] Fix cut & paste error in error message: wrong directory mentioned --- bin/xen-create-image | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/xen-create-image b/bin/xen-create-image index 9d0ccea..7c99949 100755 --- a/bin/xen-create-image +++ b/bin/xen-create-image @@ -1956,7 +1956,7 @@ EOF The output directory for creating the xen configuration file within doesn\'t exist: - $CONFIG{'dir'} + $CONFIG{ 'output' } Aborting. From b674db90c90aeb4a5a9646bea4be7d629d4ee6e0 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 22:53:48 +0200 Subject: [PATCH 24/30] Debian package: Add evms-cli to Suggests. EVMS has been removed[1] from Debian before Lenny, but it is necessary for some optional functionality of xen-tools. And since some Debian derived distributions (e.g. Ubuntu 6.06 LTS Server, Ubuntu 8.04 LTS and grml) still support it, it's included in the list of suggested dependencies for the sake of completeness and correctness. [1] http://bugs.debian.org/491808 --- debian/changelog | 5 +++++ debian/control | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f80388a..31439a4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -46,6 +46,11 @@ xen-tools (4.2~rc1-1) UNRELEASED; urgency=low #566683, #550590, LP: #538917, #484098) * Downgrade reiserfsprogs and xfsprogs to Suggests. (Closes: #561618, LP: #80233) + * Added evms-cli to Suggests. It has been removed from Debian before + Lenny, but it is necessary for some optional functionality of + xen-tools. And since some Debian derived distributions (e.g. Ubuntu + LTS and grml) still support it, it's included for the sake of + completeness and correctness. * Bump Standards-Version to 3.8.4 (no changes necessary) * Bump Debhelper Compatibility to 7 - Replace "dh_clean -k" by "dh_prep" diff --git a/debian/control b/debian/control index 0467ea3..86b7836 100644 --- a/debian/control +++ b/debian/control @@ -12,7 +12,7 @@ Package: xen-tools Architecture: all Depends: debootstrap | cdebootstrap, perl-modules, libtext-template-perl, libconfig-inifiles-perl, libfile-slurp-perl, ${misc:Depends} Recommends: xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae, rinse, xen-shell, libexpect-perl -Suggests: reiserfsprogs, xfsprogs, xen-utils, cfengine2 +Suggests: reiserfsprogs, xfsprogs, xen-utils, cfengine2, evms-cli Description: Tools to manage Xen virtual servers This package contains tools to manage Debian based Xen virtual servers. . From 6e5ea6a385c72c792a146531a78eca39306ae9b6 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 22:59:35 +0200 Subject: [PATCH 25/30] Debian Changelog Mention the addition of cfengine2 to the list of suggested packages --- debian/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index 31439a4..5c32fa5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -51,6 +51,8 @@ xen-tools (4.2~rc1-1) UNRELEASED; urgency=low xen-tools. And since some Debian derived distributions (e.g. Ubuntu LTS and grml) still support it, it's included for the sake of completeness and correctness. + * Added cfengine2 to Suggests. It is helpful to have it installed when + using the cfengine2 role. * Bump Standards-Version to 3.8.4 (no changes necessary) * Bump Debhelper Compatibility to 7 - Replace "dh_clean -k" by "dh_prep" From 78e134ea95be66712a55c3102d7c1f386d7d897b Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 23:26:09 +0200 Subject: [PATCH 26/30] xen-update-image: Reformat source code comment to fit into 80 columns --- bin/xen-update-image | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/bin/xen-update-image b/bin/xen-update-image index 6cbef5b..bd5f97c 100755 --- a/bin/xen-update-image +++ b/bin/xen-update-image @@ -242,19 +242,24 @@ sub updateXenImage elsif ( $CONFIG{ 'evms' } ) { - # The EVMS volume -- note, unlike LVM, you don't need the $CONFIG{'evms'} - # to see it and mount the volume. $CONFIG{'evms'} is only used for manipulating - # the underlying object. Still, I don't want to mess with the parse code and - # make it confusing - otherwise --evms takes an argument everywhere but here, - # which will confuse users. The better solution is to make it so that --evms can - # take a following container, but doesn't require it. For the moment, it is - # better to leave it as it is, take a container, and then ignore it. + # The EVMS volume -- note, unlike LVM, you don't need the + # $CONFIG{'evms'} to see it and mount the + # volume. $CONFIG{'evms'} is only used for manipulating the + # underlying object. Still, I don't want to mess with the + # parse code and make it confusing - otherwise --evms takes an + # argument everywhere but here, which will confuse users. The + # better solution is to make it so that --evms can take a + # following container, but doesn't require it. For the + # moment, it is better to leave it as it is, take a container, + # and then ignore it. - # The best way to do it is to just read it out of the configuration file, - # tell the user what you got and where you got it from, and not bother the user - # with picking --dir or --lvm or --evms at all, but infer it from the config - # file's disk = parameter. xen-delete-image might work the same way, but - # it could be *slightly* more dangerous in the context of deleting. + # The best way to do it is to just read it out of the + # configuration file, tell the user what you got and where you + # got it from, and not bother the user with picking --dir or + # --lvm or --evms at all, but infer it from the config file's + # disk = parameter. xen-delete-image might work the same way, + # but it could be *slightly* more dangerous in the context of + # deleting. $img = "/dev/evms/$name-disk"; # make sure it exists. From 6e8ce650fdb8245932a8738d7c9156252390ea51 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Wed, 26 May 2010 23:54:25 +0200 Subject: [PATCH 27/30] TODO: Move Non-Interactive Password Handling to post-4.2 --- TODO | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/TODO b/TODO index 1b98105..6972189 100644 --- a/TODO +++ b/TODO @@ -13,14 +13,6 @@ Bugs to fix and Features to add before a 4.2 release Shouldn't give up after only one password missmatch. This is just a mater of wrapping the passwd call in a loop. -* Non-Interactive Password Handling - - Option to generate passwords (check pwgen, apg, makepasswd, and - gpw which of them are best suited for generating complete - /etc/passwd and /etc/shadow lines). The password should be echo'ed - after installation in a way that can be easily grep'ed into other - scripts. - * Fix 70-install-ssh Currently 70-install-ssh fails to finish installing the ssh-server @@ -105,6 +97,14 @@ Maybe for a 4.3 or 5.0 release Can't remove open logical volume "acromantula-domu1-disk" this should be a matter of unmounting the mounted volume from /tmp. +* Non-Interactive Password Handling + + Option to generate passwords (check pwgen, apg, makepasswd, and + gpw which of them are best suited for generating complete + /etc/passwd and /etc/shadow lines). The password should be echo'ed + after installation in a way that can be easily grep'ed into other + scripts. + * Generic grub support This will generate a much nicer menu.lst as a side effect, as its currently From dd2487a2e92d1cd1498d798b70a8cee9a1d5099f Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Thu, 27 May 2010 01:00:23 +0200 Subject: [PATCH 28/30] TODO: Hooks: Add the idea of package-manager or -format based hook directories --- TODO | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 6972189..4209984 100644 --- a/TODO +++ b/TODO @@ -123,12 +123,14 @@ Maybe for a 4.3 or 5.0 release I'm sure this won't scale forever. So to minimise code duplication I'd like to have one common directory per distribution (e.g. called - ubuntu-common, fedora-common, etc.) with generic hooks valid for - all or most of the releases of one distribution and then one hook - directory per release (e.g. called ubuntu-10.04 or ubuntu-lucid or - so) which has symbolic links to everything which can be used - unchanged from the common directory and new files for everything - which has to be different or only there. + ubuntu-common, fedora-common, debian-common, maybe even deb-common, + rpm-common or yum-common for dpkg/apt-, rpm/yum-based + distributions, etc.) with generic hooks valid for all or most of + the releases of one distribution and then one hook directory per + release (e.g. called ubuntu-10.04 or ubuntu-lucid or so) which has + symbolic links to everything which can be used unchanged from the + common directory and new files for everything which has to be + different or only there. * Create users, add ssh pubkeys to .ssh/authorized_keys From 24704f0bbad69c8a7a6b361e07d6ef994d179c34 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Thu, 27 May 2010 22:01:57 +0200 Subject: [PATCH 29/30] Reword necessarity of x-c-i to check integer options on non-digits --- TODO | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO b/TODO index 4209984..d716944 100644 --- a/TODO +++ b/TODO @@ -36,7 +36,7 @@ Bugs to fix and Features to add before a 4.2 release http://xen-tools.org/pipermail/xen-tools-discuss/2010-May/000757.html -* Should check all integer expection options on other characters than digits. +* xen-create-image should check all integer options on non-digits. * Test suite should pass From 3a4fda345b2cd4ae9053015640d9e1ebe0953e13 Mon Sep 17 00:00:00 2001 From: Axel Beckert Date: Thu, 27 May 2010 22:04:52 +0200 Subject: [PATCH 30/30] New bug found: xen-delete-image ignores extension setting --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index d716944..b1a3bba 100644 --- a/TODO +++ b/TODO @@ -36,6 +36,8 @@ Bugs to fix and Features to add before a 4.2 release http://xen-tools.org/pipermail/xen-tools-discuss/2010-May/000757.html +* xen-delete-image ignores extension setting + * xen-create-image should check all integer options on non-digits. * Test suite should pass