1
0
mirror of synced 2026-04-03 20:02:31 +00:00

Merge branch 'master' into code-deduplication

Conflicts:
	bin/xen-create-image
This commit is contained in:
Axel Beckert
2012-05-31 01:07:59 +02:00
32 changed files with 394 additions and 149 deletions

18
AUTHORS
View File

@@ -24,6 +24,16 @@ Contributions
Justin Azoff <JAzoff [at] edu.albany.uamail>
- Added LVM support to xen-create-image.
Pieter Barrezeele <macbar [at] be.fab4>
- Several small but useful enhancements
- Bugfixes
Brian Bennett <bahamat [at] net.digitalelf>
- Made multiple times given --ip options work
Vagrant Cascadian <vagrant [at] org.debian>
- Less redundant SSH key generation
Edd Dumbill <edd [at] com.usefulinc>
- Contributed APT sources.list file for Ubuntu's Dapper release.
@@ -42,6 +52,9 @@ Contributions
Joey Hess <joeyh [at] org.debian>
- Provided sample code for module copying and several useful bug reports
John Hughes <john [at] com.fallenbit>
- Physical devices reordering for pygrub
Kirk Ismay <captain [at] com.netidea>
- Added hook for automatic CFEngine installation.
@@ -93,6 +106,11 @@ Contributions
Gergely Tamas <dice [at] hu.kfki.mfa>
- Added patch to make initrd setup optional.
Alex Tomlins <alex.tomlins [at] com.unboxedconsulting>
- apt_proxy support
Ward Vandewege <ward [at] be.pong>
- Made several updates for Ubuntu support.
xstasi on Launchpad
- Proper upstart handling in the chroot

View File

@@ -29,6 +29,18 @@ Bugs to fix before a 4.3 release
* xen-create-image doesn't unmount the tempdir properly if /proc wasn't mounted inside
* xen-create-image says on startup summary that the Debian mirror is
used even if Ubuntu is going to be installed (and works)
* xen-list-images does not honour --extension
* --extension='' (i.e. empty string) no more works
Bugs to fix later
-----------------
t/xen-tools.t can't really test Xen::Tools as the latter requires a
local Xen installation. For proper testing, a dummy set of Xen
configuration files and configurable paths to them in Xen::Tools would
be necessary.

View File

@@ -2,7 +2,12 @@
xen-tools
---------
Copyright (c) 2005-2007 by Steve Kemp. All rights reserved.
Copyright (c) 2005-2009: Steve Kemp. All rights reserved.
Copyright (c) 2010-2012: The Xen-Tools Development Team, currently consisting of:
Axel Beckert <abe@deuxchevaux.org>,
Dmitry Nedospasov <dmitry@nedos.net>, and
Stéphane Jourdois <sjourdois@gmail.com>
This project is free software. You may redistribute it under the
terms of *either* the Perl Artistic License, or the GNU General

View File

@@ -189,6 +189,8 @@ install-hooks:
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d maverick.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d natty.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d oneiric.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d precise.d
-cd ${prefix}/usr/lib/xen-tools/ && ln -s karmic.d quantal.d
cp hooks/common.sh ${prefix}/usr/lib/xen-tools

48
NEWS Normal file
View File

@@ -0,0 +1,48 @@
xen-tools 4.3 (released [TODO])
================================
New Options
-----------
--dontformat (xen-create-image)
--finalrole (xen-create-image)
--apt_proxy (xen-create-image)
Newly Supported Distribution Releases
-------------------------------------
* Ubuntu 11.10 Oneiric
* Ubuntu 12.04 Precise
* Ubuntu 12.10 Quantal DomUs
xen-tools 4.2.1 (released 17 Mar 2011)
======================================
Bugfix Release only
xen-tools 4.2 (released 05 Oct 2010)
====================================
First final release of the new Xen-Tools Team.
Supports Ubuntu up to 11.04 (Natty) and Debian up to 7.0 (Wheezy).
New Options
-----------
--debootstrap-cmd (xen-create-image and xt-install-image)
New Features and Major Changes
------------------------------
* Uses hvc0 and xvda devices by default
* Also supports cdebootstrap
* Preliminary btrfs support.
* Uses GeoIP for Debian mirrors: Default Debian mirror is now
cdn.debian.net, see http://wiki.debian.org/DebianGeoMirror for
details.
* New helper program xt-guess-suite-and-mirror, used to find the
default mirror and suite.

9
README
View File

@@ -30,7 +30,7 @@ About:
* Etch 4.0 (Dom0 no more tested)
* Lenny 5.0
* Squeeze 6.0
* Wheezy 7.0 (preliminary support as it's not yet available)
* Wheezy 7.0
* Sid (works at least at the moment of writing :-)
Ubuntu (only DomUs tested):
@@ -43,8 +43,11 @@ About:
* Jaunty Jackaplope 9.04
* Karmic Koala 9.10
* Lucid Lynx 10.04
* Maverick Meerkat 10.10 (works at least at the moment of writing :-)
* Natty Narwhal 11.04 (preliminary support as it's not yet available)
* Maverick Meerkat 10.10
* Natty Narwhal 11.04
* Oneiric Ocelot 11.10
* Precise Pangolin 12.04
* Quantal Quetzal 12.10 (preliminary support as it's not yet available)
[1] There is an issue with debootstrap on hardy not installing ksyslogd
This can be fixed by chrooting into the newly installed system

View File

@@ -146,6 +146,10 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
Pass the named string literally to any role script.
This is useful for site-specific roles.
--finalrole=role
Similar to role scripts. Run the specified role script(s)
after cfg file creation.
--roledir=/path/to/directory
Specify the directory which contains the role scripts.
This defaults to /etc/xen-tools/role.d/
@@ -165,6 +169,11 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
--tar-cmd NOP: Ignored.
--dontformat Do not format the devices specified for installation.
Useful if you want tighter control over the filesystem
creation. Requires the filesystems to be created
beforehand.
--vcpus=num
Set the number of vcpus that the new instance will have
instead of the default value of "1".
@@ -204,6 +213,10 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
to choose a more or less close Debian mirror. See
http://wiki.debian.org/DebianGeoMirror for details.
--apt_proxy=url
Specify a proxy to be used by debootstrap, and within
the guest.
--template=tmpl
Specify which template file to use when creating the
Xen configuration file.
@@ -708,6 +721,9 @@ Install an X11 server, using VNC and XDM
installed system as their first argument, and anything passed
as a role-arg will be passed allong as additional arguments.
NOTE: Role scripts are invoked before the config file generation.
If you need access to the config file from within your role,
use --finalrole.
NOTE: Multiple role scripts may be invoked if you separate their
names with commas.
@@ -745,7 +761,7 @@ Install an X11 server, using VNC and XDM
=head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010-2012 by The Xen-Tools
Development Team. All rights reserved.
This module is free software;
@@ -1054,6 +1070,12 @@ runRoleScripts( $CONFIG{ 'role' } );
runXenConfigCreation();
#
# Run any specified role scripts.
#
runRoleScripts( $CONFIG{ 'finalrole' } );
#
# Setup the password if the user wanted that.
#
@@ -1252,7 +1274,7 @@ sub testXenConfig
# Read the configuration file.
#
open( CONFIG, "<", "/etc/xen/xend-config.sxp" ) or
die "Failed to read /etc/xen/xend-config.sxp: $!";
fail("Failed to read /etc/xen/xend-config.sxp: $!");
while (<CONFIG>)
{
next if ( !$_ || !length($_) );
@@ -1352,19 +1374,20 @@ sub setupDefaultOptions
$CONFIG{ 'mirror' } = '';
# Initialize per distribution mirror defaults: Debian
foreach my $debdist (qw(lenny squeeze wheezy sid testing stable unstable)) {
foreach my $debdist (qw(squeeze wheezy sid testing oldstable stable unstable)) {
$CONFIG{ 'mirror_'.$debdist } = $CONFIG{ 'mirror' }
}
foreach my $debdist (qw(sarge etch)) {
foreach my $debdist (qw(sarge etch lenny)) {
$CONFIG{ 'mirror_'.$debdist } = 'http://archive.debian.org/debian';
}
# Initialize per distribution mirror defaults: Ubuntu
foreach my $ubuntudist (qw(dapper hardy jaunty karmic lucid maverick natty oneiric)) {
foreach my $ubuntudist (qw(dapper hardy lucid natty oneiric precise quantal)) {
$CONFIG{ 'mirror_'.$ubuntudist } = 'http://archive.ubuntu.com/ubuntu';
}
foreach my $ubuntudist (qw(edgy feisty gutsy intrepid)) {
foreach my $ubuntudist (qw(edgy feisty gutsy intrepid jaunty karmic maverick)) {
$CONFIG{ 'mirror_'.$ubuntudist } = 'http://old-releases.ubuntu.com/ubuntu';
}
$CONFIG{ 'apt_proxy' } = '';
$CONFIG{ 'arch' } = '';
$CONFIG{ 'fs' } = 'ext3';
$CONFIG{ 'force' } = 0;
@@ -1560,7 +1583,7 @@ sub checkOption
my $type = $optionsTypes{ $option };
# First, check if type exists
die unless exists $types{ $type };
fail("Type $type does not exist") unless exists $types{ $type };
my $check = $types{ $type }{ 'check' };
if (
@@ -1568,10 +1591,15 @@ sub checkOption
(ref $check eq 'CODE' and &$check( $value ) )
) {
# Option did validate, copy it
$CONFIG{ $option } = $value;
if ( $option eq "ip" )
{
push @{ $CONFIG{ $option } }, $value;
} else {
$CONFIG{ $option } = $value;
}
} else {
# Option did _not_ validate
die "ERROR: '$option' argument " . $types{ $type }{ 'message' };
fail("ERROR: '$option' argument " . $types{ $type }{ 'message' });
}
}
}
@@ -1625,6 +1653,7 @@ sub parseCommandLineArguments
"kernel=s", \&checkOption,
"initrd=s", \&checkOption,
"mirror=s", \&checkOption,
"apt_proxy=s", \&checkOption,
"modules=s", \&checkOption,
"lvm=s", \$install{ 'lvm' },
"image-dev=s", \$install{ 'image-dev' },
@@ -1683,12 +1712,14 @@ sub parseCommandLineArguments
"partitions=s", \&checkOption,
"role=s", \&checkOption,
"role-args=s", \&checkOption,
"finalrole=s", \&checkOption,
"roledir=s", \&checkOption,
"force", \$CONFIG{ 'force' },
"keep", \$CONFIG{ 'keep' },
"template=s", \&checkOption,
"output=s", \&checkOption,
"extension=s", \&checkOption,
"dontformat", \&checkOption,
# Help options
"debug", \$CONFIG{ 'debug' },
@@ -1833,7 +1864,7 @@ sub checkArguments
#
# Lucid and probably all later Ubuntus, too, don't work without pygrub
#
if ( $CONFIG{ 'dist' } =~ /lucid|maverick|natty|oneiric/ )
if ( $CONFIG{ 'dist' } =~ /lucid|maverick|natty|oneiric|precise|quantal/ )
{
$CONFIG{ 'pygrub' } = 1;
}
@@ -2329,7 +2360,7 @@ sub checkBinariesPresent
}
}
}
else
elsif (defined( $CONFIG{ 'lvm' } ) )
{
# LVM-specific binaries.
@@ -2855,7 +2886,7 @@ sub createLoopbackImages
eval {mkpath( $output, 0, 0755 );};
if ($@)
{
die "Cannot create directory tree $output - $@";
fail("Cannot create directory tree $output - $@");
}
}
@@ -3304,37 +3335,28 @@ sub createFilesystem
# Split the command into "binary" + "args". Make sure that
# the binary exists and is executable.
#
if ( $command =~ /([^ ]+) (.*)$/ )
{
my $binary = $1;
my $args = $2;
my ($binary, $args) = split(/ /, $command, 2);
if ( !defined( findBinary($binary) ) )
{
logprint(
"The binary '$binary' required to create the filesystem $fs is missing\n"
);
$FAIL = 1;
exit 127;
}
}
else
if ( !defined( findBinary($binary) ) )
{
logprint(
"The filesystem creation hash is bogus for filesystem : $fs\n");
"The binary '$binary' required to create the filesystem $fs is missing\n"
);
$FAIL = 1;
exit 127;
}
#
# OK we have the command and the filesystem. Create it.
#
logprint("\nCreating $fs filesystem on $image\n");
unless ( $CONFIG{ 'dontformat' } ) {
#
# OK we have the command and the filesystem. Create it.
#
logprint("\nCreating $fs filesystem on $image\n");
$command .= " " . $image;
$command .= " " . $image;
runCommand($command, \%CONFIG);
logprint("Done\n");
runCommand($command, \%CONFIG);
logprint("Done\n");
}
}
@@ -3491,6 +3513,15 @@ sub installSystem
}
#
# Propagate --apt_proxy
#
if ( $CONFIG{ 'apt_proxy' } )
{
$cmd .= " --apt_proxy=$CONFIG{'apt_proxy'}";
}
#
# Show the user what they are installing
#
@@ -3674,7 +3705,7 @@ sub findIP
# Open and read the file.
#
open( RANGE, "<", $CONFIG{ 'ipfile' } ) or
die "Failed to read $CONFIG{'ipfile'} - $!";
fail("Failed to read $CONFIG{'ipfile'} - $!");
my @lines = <RANGE>;
my @updated;
close(RANGE);
@@ -3705,7 +3736,7 @@ sub findIP
# Now write out the new entries.
#
open( RANGE, ">", $CONFIG{ 'ipfile' } ) or
die "Failed to write to $CONFIG{'ipfile'} - $!";
fail("Failed to write to $CONFIG{'ipfile'} - $!");
print RANGE join( "\n", @updated );
close(RANGE);
@@ -3904,6 +3935,12 @@ sub runXenConfigCreation
$command .= " --admins=$CONFIG{'admins'}";
}
#
# Make sure the template gets a list of all IPs
#
$ENV{ 'ips' } = $IP_ADDRESSES;
logprint("\nCreating Xen configuration file\n");
runCommand($command, \%CONFIG);
logprint("Done\n");
@@ -3972,7 +4009,7 @@ sub setupRootPassword
}
else
{
die "oops... unknown hashing method, should not happen!";
fail("oops... unknown hashing method, should not happen!");
}
my $hash = crypt($PASSWORD, $hash_method . $salt);
@@ -3983,8 +4020,8 @@ sub setupRootPassword
#
my $tmp_shadow_path = "$shadow_path.tmp";
cp("$shadow_path","$tmp_shadow_path");
open(TMP, "<", $tmp_shadow_path) or die $!;
open(SHADOW, ">", $shadow_path) or die $!;
open(TMP, "<", $tmp_shadow_path) or fail($!);
open(SHADOW, ">", $shadow_path) or fail($!);
my $line;
while(defined($line = <TMP>))
{
@@ -4025,6 +4062,23 @@ sub generatePassword {
}
=begin doc
Properly set $FAIL on die
=end doc
=cut
sub fail
{
logprint(@_);
$FAIL = 1;
exit 127;
}
=begin doc
Print the given string to the logfile.

View File

@@ -303,23 +303,23 @@ sub testArguments
# this code is borrowed for now...
if ( exists($CONFIG{ 'memory' }) and
defined($CONFIG{ 'memory' }) ) {
defined($CONFIG{ 'memory' }) ) {
#
# The memory size: Convert Gb -> Mb.
#
if ( $CONFIG{ 'memory' } =~ /^(\d+)Gb.*$/i )
{
$CONFIG{ 'memory' } = $1 * 1024;
}
#
# The memory size: Convert Gb -> Mb.
#
if ( $CONFIG{ 'memory' } =~ /^(\d+)Gb.*$/i )
{
$CONFIG{ 'memory' } = $1 * 1024;
}
#
# Remove any trailing Mb.
#
if ( $CONFIG{ 'memory' } =~ /^(\d+)Mb.*$/i )
{
$CONFIG{ 'memory' } = $1;
}
#
# Remove any trailing Mb.
#
if ( $CONFIG{ 'memory' } =~ /^(\d+)Mb.*$/i )
{
$CONFIG{ 'memory' } = $1;
}
}
# All OK.

View File

@@ -114,7 +114,7 @@ xt-create-config - Create a Xen configuration file for a new guest
=head1 LICENSE
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010 by The Xen-Tools
Copyright (c) 2005-2009 by Steve Kemp, (c) 2010-2012 by The Xen-Tools
Development Team. All rights reserved.
This module is free software;

View File

@@ -39,7 +39,7 @@ xen-create-image(1) or the backticks feature in xen-tools.conf.
=head1 LICENSE
Copyright (C) 2010 by The Xen-Tools Development Team. All rights
Copyright (C) 2010-2012 by The Xen-Tools Development Team. All rights
reserved.
This module is free software; you can redistribute it and/or modify it
@@ -68,7 +68,8 @@ my %fallback_suite = ( Debian => 'stable',
Ubuntu => 'lucid' );
# Where to look for the sources.list to parse
my $sources_list_file = '/etc/apt/sources.list';
my @sources_list_files = ( '/etc/apt/sources.list',
glob('/etc/apt/sources.list.d/*.list'));
use File::Slurp;
use Getopt::Long;
@@ -108,47 +109,49 @@ if ($want_manual) {
pod2usage( -verbose => 2 );
}
if (-r $sources_list_file) {
# sources.list exists, so it's something debianoid.
all_sources_list_files: foreach my $sources_list_file (@sources_list_files) {
if (-r $sources_list_file) {
# sources.list file exists, so it's something debianoid.
# read sources.list and split it into lines
my @sources_list = read_file($sources_list_file);
# read sources.list and split it into lines
my @sources_list = read_file($sources_list_file);
# Find the first line which is a Debian or Ubuntu mirror but not
# an updates, backports, volatile or security mirror.
foreach my $sources_list_entry (@sources_list) {
# Normalize line
chomp($sources_list_entry);
$sources_list_entry =~ s/^\s*(.*?)\s*$/$1/;
# Find the first line which is a Debian or Ubuntu mirror but not
# an updates, backports, volatile or security mirror.
foreach my $sources_list_entry (@sources_list) {
# Normalize line
chomp($sources_list_entry);
$sources_list_entry =~ s/^\s*(.*?)\s*$/$1/;
# Skip definite non-entries
next if $sources_list_entry =~ /^\s*($|#)/;
# Skip definite non-entries
next if $sources_list_entry =~ /^\s*($|#)/;
# Split up into fields
my @source_components = split(/\s+/, $sources_list_entry);
# Split up into fields
my @source_components = split(/\s+/, $sources_list_entry);
# Minimum number of components is 4
next if $#source_components < 3;
# Minimum number of components is 4
next if $#source_components < 3;
# Don't use deb-src entries.
next if $source_components[0] eq 'deb-src';
# Don't use deb-src entries.
next if $source_components[0] eq 'deb-src';
# Skip updates, backports, volatile or security mirror.
next if $source_components[2] !~ /^[a-z]+$/;
# Skip updates, backports, volatile or security mirror.
next if $source_components[2] !~ /^[a-z]+$/;
if ($source_components[1] =~ m(/debian/?$|/ubuntu/?$)) {
# Seems a typical mirror. Let's use that one
if ($source_components[1] =~ m(/debian/?$|/ubuntu/?$)) {
# Seems a typical mirror. Let's use that one
$mirror = $source_components[1];
$suite = $source_components[2];
$mirror = $source_components[1];
$suite = $source_components[2];
$found = 1;
last;
$found = 1;
last all_sources_list_files;
}
}
}
warn "Couldn't parse $sources_list_file of the Dom0.\n" unless $found;
}
die "Couldn't find a useful entry in the sources.list files of the Dom0. Tried:\n ".
join("\n ", @sources_list_files)."\n" unless $found;
my $lsb_release = `which lsb_release`;
chomp($lsb_release);

View File

@@ -27,6 +27,7 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory
--config Read the specified config file in addition to the global
configuration file.
--mirror The mirror to use when installing with 'debootstrap'.
--apt_proxy The proxy to use when installing with 'debootstrap'.
Installation Options:
--install-method Specify the installation method to use.
@@ -315,6 +316,7 @@ sub parseCommandLineArguments
"cachedir=s", \$CONFIG{ 'cachedir' },
"config=s", \$CONFIG{ 'config' },
"mirror=s", \$CONFIG{ 'mirror' },
"apt_proxy=s", \$CONFIG{ 'apt_proxy' },
# Help.
"verbose", \$CONFIG{ 'verbose' },
@@ -630,6 +632,14 @@ sub do_debootstrap
$EXTRA .= " --arch $CONFIG{'arch'}";
}
#
# Setup http_proxy so that debootstrap pulls files through the apt-proxy
#
if ( $CONFIG{ 'apt_proxy' } )
{
print("Using apt_proxy: $CONFIG{'apt_proxy'}\n");
$ENV{'http_proxy'} = $CONFIG{'apt_proxy'};
}
#
# This is the command we'll run

40
debian/changelog vendored
View File

@@ -1,17 +1,43 @@
xen-tools (4.2.1+dev-1) UNRELEASED; urgency=low
xen-tools (4.3~dev-1) UNRELEASED; urgency=low
* New upstream snapshot
- Correctly checks and documents valid values for
disk_device. (Closes: #621499)
* Support creating Ubuntu 11.10 Oneiric DomUs (LP: #848654)
- Supports creating Ubuntu 11.10 Oneiric DomUs (LP: #848654)
- Supports creating Ubuntu 12.04 Precise and 12.10 Quantal DomUs
- Updated mirror list for discontinued releases of Debian and Ubuntu
- Workaround for missing unit parsing in xen-create-nfs (Closes:
#648814)
- Fix wildcard vs regexp in memory configuration parsing.
- Fix misbehaviour if --ip option is passed multiple times (Closes:
#652110; Thanks Brian Bennett and Alexander Mette!)
- Supports /etc/apt/sources.list.d/ (Closes: #650300)
- xt-guess-suite-and-mirror exits with non-zero if no proper mirror
could be extracted from /etc/apt/sources.list or
/etc/apt/sources.list.d/*.list (Thanks Phil Frost!)
- Only attempts to generate the ssh host keys if not already present
(Closes: #607236; Thanks Vagrant Cascadian!)
- New option --apt_proxy (Closes: #610457; Thanks Alex Tomlins!)
- Always write down root partition as first physical device, otherwise
pygrub fails (Closes: #609673)
- No more expect at least one option to mkfs.* calls. Fixes btrfs
creation. (Closes: #609982)
- Fixes call to non-existent function logPrint (Closes: #673335)
- Also disable initctl in the chroot, not only start-stop-daemon
(LP: #997063; Thanks xstasi!)
* Add dependency on openssh-client for ssh-keygen (Closes: #649108)
* Use dh_auto_test for build time tests and add according
build-dependencies on devscripts and libfile-slurp-perl.
* No more suggest evms-cli -- it's no more available on any supported
Dom0 distribution. Thanks to Markus Waldeck for the hint.
* Workaround for missing unit parsing in xen-create-nfs (Closes:
#648814)
* Fix wildcard vs regexp in memory configuration parsing.
* Fix Lintian warning copyright-refers-to-symlink-license.
* Add NEWS to debian/docs.
* Bump Standards-Version to 3.9.3 (no changes)
* Fix the following Lintian warnings:
- copyright-refers-to-symlink-license
- debian-rules-missing-recommended-target
* debian/copyright: Update copyright years
-- Axel Beckert <abe@debian.org> Tue, 15 Nov 2011 22:32:56 +0100
-- Axel Beckert <abe@debian.org> Wed, 30 May 2012 23:57:31 +0200
xen-tools (4.2.1-1) unstable; urgency=low

10
debian/control vendored
View File

@@ -2,15 +2,15 @@ Source: xen-tools
Section: utils
Priority: extra
Maintainer: Axel Beckert <abe@debian.org>
Build-Depends: debhelper (>= 7.0.0), libtest-pod-perl, libtext-template-perl
Standards-Version: 3.9.1
Build-Depends: debhelper (>= 7.0.0), libtest-pod-perl, libtext-template-perl, libfile-slurp-perl, devscripts
Standards-Version: 3.9.3
Homepage: http://xen-tools.org/software/xen-tools
Vcs-Browser: http://gitorious.org/xen-tools/xen-tools
Vcs-Git: git://gitorious.org/xen-tools/xen-tools.git
Package: xen-tools
Architecture: all
Depends: debootstrap | cdebootstrap, 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}, openssh-client
Recommends: xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae, rinse, xen-shell, libexpect-perl
Suggests: reiserfsprogs, xfsprogs, xen-utils, cfengine2, btrfs-tools
Description: Tools to manage Xen virtual servers
@@ -25,6 +25,7 @@ Description: Tools to manage Xen virtual servers
* Debian 4.0 Etch
* Debian 5.0 Lenny
* Debian 6.0 Squeeze
* Debian 7.0 Wheezy
* Debian Sid (Unstable)
* Ubuntu 6.06 Dapper Drake (LTS)
* Ubuntu 6.10 Edgy Eft
@@ -36,3 +37,6 @@ Description: Tools to manage Xen virtual servers
* Ubuntu 9.10 Karmic Koala
* Ubuntu 10.04 Lucid Lynx (LTS)
* Ubuntu 10.10 Maverick Meerkat
* Ubuntu 11.04 Natty Narwhal
* Ubuntu 11.10 Oneiric Ocelot
* Ubuntu 12.04 Precise Pangolin (LTS)

8
debian/copyright vendored
View File

@@ -4,10 +4,10 @@ Tue, 20 Dec 2005 02:21:05 +0200.
It was downloaded from http://xen-tools.org/software/xen-tools/
Copyright 2005-2009: Steve Kemp <steve@steve.org.uk>
Copyright 2010: The Xen-Tools Development Team, currently consisting of:
Axel Beckert <abe@deuxchevaux.org>,
Dmitry Nedospasov <dmitry@nedos.net>, and
Stéphane Jourdois <sjourdois@gmail.com>
Copyright 2010-2012: The Xen-Tools Development Team, currently consisting of:
Axel Beckert <abe@deuxchevaux.org>,
Dmitry Nedospasov <dmitry@nedos.net>, and
Stéphane Jourdois <sjourdois@gmail.com>
License:

1
debian/docs vendored
View File

@@ -4,3 +4,4 @@ SUPPORT
BUGS
TODO
KNOWN_BUGS
NEWS

6
debian/rules vendored
View File

@@ -9,8 +9,9 @@ configure-stamp:
touch configure-stamp
build: build-stamp
build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp: configure-stamp
dh_testdir
touch build-stamp
@@ -27,6 +28,7 @@ install: build
dh_testroot
dh_prep
dh_auto_test
make manpages
make install prefix=`pwd`/debian/xen-tools

View File

@@ -263,7 +263,7 @@ mirror = `xt-guess-suite-and-mirror --mirror`
#
# mirror_sarge = http://archive.debian.org/debian
# mirror_etch = http://archive.debian.org/debian
# mirror_lenny = http://cdn.debian.net/debian
# mirror_lenny = http://archive.debian.org/debian
# mirror_squeeze = http://cdn.debian.net/debian
# mirror_wheezy = http://cdn.debian.net/debian
# mirror_sid = http://cdn.debian.net/debian
@@ -273,12 +273,19 @@ mirror = `xt-guess-suite-and-mirror --mirror`
# mirror_gutsy = http://old-releases.ubuntu.com/ubuntu
# mirror_hardy = http://archive.ubuntu.com/ubuntu
# mirror_intrepid = http://old-releases.ubuntu.com/ubuntu
# mirror_karmic = http://archive.ubuntu.com/ubuntu
# mirror_jaunty = http://old-releases.ubuntu.com/ubuntu
# mirror_karmic = http://old-releases.ubuntu.com/ubuntu
# mirror_lucid = http://archive.ubuntu.com/ubuntu
# mirror_maverick = http://archive.ubuntu.com/ubuntu
# mirror_natty = http://archive.ubuntu.com/ubuntu
# mirror_oneiric = http://archive.ubuntu.com/ubuntu
# mirror_precise = http://archive.ubuntu.com/ubuntu
# mirror_quantal = http://archive.ubuntu.com/ubuntu
# If this is defined it will be used by debootstrap, and configured as the
# proxy for the guest
#
# apt_proxy =
#
# Filesystem options for the different filesystems we support.

View File

@@ -53,7 +53,17 @@ memory = '{$memory}'
$OUT .= "disk = [\n";
for ( my $i = $#PARTITIONS; $i >= 0 ; $i-- )
{
$OUT .= " '$PARTITIONS[$i]{'imagetype'}$PARTITIONS[$i]{'image'},$device" . ( $i + 1 ) .",w',\n";
if ( $PARTITIONS[$i]{'mountpoint'} eq '/' )
{
$OUT .= " '$PARTITIONS[$i]{'imagetype'}$PARTITIONS[$i]{'image'},$device" . ( $i + 1 ) .",w',\n";
}
}
for ( my $i = $#PARTITIONS; $i >= 0 ; $i-- )
{
if ( $PARTITIONS[$i]{'mountpoint'} ne '/' )
{
$OUT .= " '$PARTITIONS[$i]{'imagetype'}$PARTITIONS[$i]{'image'},$device" . ( $i + 1 ) .",w',\n";
}
}
$OUT .= " ]\n";
}
@@ -135,7 +145,7 @@ name = '{$hostname}'
$br = ",bridge=$bridge"
}
$OUT .= "vif = [ 'ip=$ip1";
$OUT .= "vif = [ 'ip=$ips";
$OUT .= "$m";
$OUT .= "$vn";
$OUT .= "$br";

View File

@@ -121,14 +121,16 @@ disableStartStopDaemon ()
{
local prefix="$1"
assert "$LINENO" "${prefix}"
local daemonfile="${prefix}/sbin/start-stop-daemon"
for starter in start-stop-daemon initctl; do
local daemonfile="${prefix}/sbin/${starter}"
mv "${daemonfile}" "${daemonfile}.REAL"
echo '#!/bin/sh' > "${daemonfile}"
echo "echo \"Warning: Fake start-stop-daemon called, doing nothing\"" >> "${daemonfile}"
mv "${daemonfile}" "${daemonfile}.REAL"
echo '#!/bin/sh' > "${daemonfile}"
echo "echo \"Warning: Fake ${starter} called, doing nothing\"" >> "${daemonfile}"
chmod 755 "${daemonfile}"
logMessage "start-stop-daemon disabled / made a stub."
chmod 755 "${daemonfile}"
logMessage "${starter} disabled / made a stub."
done
}
@@ -140,16 +142,17 @@ enableStartStopDaemon ()
{
local prefix=$1
assert "$LINENO" "${prefix}"
local daemonfile="${prefix}/sbin/start-stop-daemon"
#
# If the disabled file is present then enable it.
#
if [ -e "${daemonfile}.REAL" ]; then
mv "${daemonfile}.REAL" "${daemonfile}"
logMessage "start-stop-daemon restored to working order."
fi
for starter in start-stop-daemon initctl; do
local daemonfile="${prefix}/sbin/${starter}"
#
# If the disabled file is present then enable it.
#
if [ -e "${daemonfile}.REAL" ]; then
mv "${daemonfile}.REAL" "${daemonfile}"
logMessage "${starter} restored to working order."
fi
done
}

View File

@@ -33,9 +33,12 @@ logMessage Script $0 starting
# replicate that setup in our new guest via apt-config dump and save
# the setting to the proxy guess file.
#
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy \
> ${prefix}/etc/apt/apt.conf.d/proxy-guess
if [ ${apt_proxy} ]; then
echo "Acquire::http::Proxy \"${apt_proxy}\";" > ${prefix}/etc/apt/apt.conf.d/01proxy
else
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy > ${prefix}/etc/apt/apt.conf.d/01proxy
fi
#

View File

@@ -36,20 +36,24 @@ mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh

View File

@@ -32,9 +32,12 @@ logMessage Script $0 starting
# replicate that setup in our new guest via apt-config dump and save
# the setting to the proxy guess file.
#
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy \
> ${prefix}/etc/apt/apt.conf.d/proxy-guess
if [ ${apt_proxy} ]; then
echo "Acquire::http::Proxy \"${apt_proxy}\";" > ${prefix}/etc/apt/apt.conf.d/01proxy
else
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy > ${prefix}/etc/apt/apt.conf.d/01proxy
fi
#

View File

@@ -36,20 +36,24 @@ mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh

View File

@@ -33,9 +33,12 @@ logMessage Script $0 starting
# replicate that setup in our new guest via apt-config dump and save
# the setting to the proxy guess file.
#
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy \
> ${prefix}/etc/apt/apt.conf.d/proxy-guess
if [ ${apt_proxy} ]; then
echo "Acquire::http::Proxy \"${apt_proxy}\";" > ${prefix}/etc/apt/apt.conf.d/01proxy
else
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy > ${prefix}/etc/apt/apt.conf.d/01proxy
fi
#

View File

@@ -36,20 +36,24 @@ mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh

View File

@@ -33,9 +33,12 @@ logMessage Script $0 starting
# replicate that setup in our new guest via apt-config dump and save
# the setting to the proxy guess file.
#
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy \
> ${prefix}/etc/apt/apt.conf.d/proxy-guess
if [ ${apt_proxy} ]; then
echo "Acquire::http::Proxy \"${apt_proxy}\";" > ${prefix}/etc/apt/apt.conf.d/01proxy
else
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy > ${prefix}/etc/apt/apt.conf.d/01proxy
fi
#

View File

@@ -36,20 +36,24 @@ mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh

View File

@@ -33,9 +33,12 @@ logMessage Script $0 starting
# replicate that setup in our new guest via apt-config dump and save
# the setting to the proxy guess file.
#
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy \
> ${prefix}/etc/apt/apt.conf.d/proxy-guess
if [ ${apt_proxy} ]; then
echo "Acquire::http::Proxy \"${apt_proxy}\";" > ${prefix}/etc/apt/apt.conf.d/01proxy
else
logMessage The use of a proxy detected.
apt-config dump | grep -i Acquire::HTTP::Proxy > ${prefix}/etc/apt/apt.conf.d/01proxy
fi
#

View File

@@ -36,20 +36,24 @@ mkdir -p ${prefix}/etc/ssh
#
# Second, Generate the Host RSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_rsa_key ]; then
if ssh-keygen -t rsa -N "" -f ${prefix}/etc/ssh/ssh_host_rsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host RSA"
else
logMessage "failed to generate Host RSA Key"
fi
fi
#
# Third, Generate the Host DSA Key
#
if [ ! -f ${prefix}/etc/ssh/ssh_host_dsa_key ]; then
if ssh-keygen -t dsa -N "" -f ${prefix}/etc/ssh/ssh_host_dsa_key -C "root@${hostname}"; then
logMessage "successfully generetaged Host DSA"
else
logMessage "failed to generate Host DSA Key"
fi
fi
#
# Install ssh

View File

@@ -76,7 +76,7 @@ for i in `find ${source} -name '*.sed' -print`; do
#
# Log it.
#
logPrint "Running script $i - against ${prefix}/${file}"
logMessage "Running script $i - against ${prefix}/${file}"
#
# Invoke it.

View File

@@ -6,7 +6,7 @@
use strict;
use warnings;
use Test::More tests => 1, skip_all => 'Xen::Tools is not used for now';
use Test::More skip_all => 'Xen::Tools is not used for now';
SKIP: {
skip "Test only works as root", 1 if $< > 0;
@@ -17,5 +17,7 @@ SKIP: {
my $xt = Xen::Tools->new( hostname => 'xen-tools-test' );
ok( $xt->isa('Xen::Tools') );
}
};
}
done_testing();

View File

@@ -36,28 +36,28 @@ noMentionOf( "ip=",
# is no mention of DHCP.
#
testOutputContains( "ip=192.168.1.1",
memory => 128, ip1 => '192.168.1.1', dir => '/tmp' );
memory => 128, ips => '192.168.1.1', dir => '/tmp' );
noMentionOf( "dhcp",
memory => 128, ip1 => '192.168.1.1', dir => '/tmp' );
memory => 128, ips => '192.168.1.1', dir => '/tmp' );
#
# SCSI based systems:
#
testOutputContains( "xvda",
memory => 128, ip1 => '192.168.1.1', dir => '/tmp' );
memory => 128, ips => '192.168.1.1', dir => '/tmp' );
testOutputContains( "/dev/xvda1 ro",
memory => 128, ip1 => '192.168.1.1', dir => '/tmp' );
memory => 128, ips => '192.168.1.1', dir => '/tmp' );
noMentionOf( "hda1",
memory => 128, ip1 => '192.168.1.1', dir => '/tmp' );
memory => 128, ips => '192.168.1.1', dir => '/tmp' );
#
# IDE based systems
#
testOutputContains( "hda1",
memory => 128, ip1 => '192.168.1.1', dir => '/tmp', ide => 1 );
memory => 128, ips => '192.168.1.1', dir => '/tmp', ide => 1 );
testOutputContains( "/dev/hda1 ro",
memory => 128, ip1 => '192.168.1.1', dir => '/tmp', ide => 1 );
memory => 128, ips => '192.168.1.1', dir => '/tmp', ide => 1 );