1
0
mirror of synced 2026-02-21 06:15:04 +00:00

Compare commits

...

26 Commits

Author SHA1 Message Date
Axel Beckert
12960c8f2b Release 4.4 beta 1 2013-08-23 19:31:47 +02:00
Axel Beckert
029faab59c Add build-dependencies on libdata-validate-{domain,ip,uri}-perl 2013-08-23 19:31:47 +02:00
Axel Beckert
cb5ce9ea5c Bump Standards-Version to 3.9.4 (no changes) 2013-08-23 19:08:42 +02:00
Axel Beckert
fbc903877a Declare POD encoding to be UTF-8 in bin/*
Fixes FTBFS with Perl 5.18.

Closes: #720519
2013-08-23 09:08:43 +02:00
Axel Beckert
fb8b494b41 Preliminary support for Ubuntu Saucy
Does not yet work due to missing support for Saucy in debootstrap.

Also move default mirror for Ubuntu Hardy from archive to old-releases
as Hardy is now EoL.
2013-07-11 01:49:46 +02:00
Axel Beckert
516a7a1625 Update descriptions of distributions 2013-07-11 01:30:41 +02:00
Axel Beckert
d0c4439a10 README: Update list of required Perl modules 2013-07-11 01:13:45 +02:00
Axel Beckert
87fc2a76a0 Remove some redundancy in the README 2013-07-11 00:59:33 +02:00
Axel Beckert
34838811f9 Reorder list of Perl modules in README alphabetically 2013-07-11 00:57:59 +02:00
Axel Beckert
ad68cdb46b Change CPAN links from search.cpan.org to metacpan.org 2013-07-11 00:55:51 +02:00
Axel Beckert
e5abe64ae0 Fix broken quoting in list of required binaries 2013-07-11 00:44:25 +02:00
Axel Beckert
9c47e5da4f Use File::Which instead of findBinary or which 2013-07-11 00:39:05 +02:00
Axel Beckert
b271bf6a63 TODO: Still to many backticks in use
Also merge the two findBinary TODOs
2013-07-11 00:26:12 +02:00
Axel Beckert
a72fbb5f79 TODO: The mess after hitting Ctrl-C has been fixed, too 2013-07-11 00:16:09 +02:00
Axel Beckert
149ad47c5f TODO: Remove #623443-related stuff. Fixed in 74f35d65 2013-07-11 00:13:28 +02:00
Axel Beckert
4442c1a17f TODO: Move remaining code deduplication to Break-Backwards-Compatibility list 2013-07-11 00:11:54 +02:00
Axel Beckert
be55a4a6f2 Remove reference to removed t/xen-tools.t from KNOWN_BUGS 2013-07-11 00:07:37 +02:00
Axel Beckert
5883b7a15c TODO: Generate ECDSA host keys where possible 2013-07-10 23:54:46 +02:00
Axel Beckert
9e05298832 Add dependency on ${perl:Depends} to fix dpkg-gencontrol warning 2013-07-10 22:55:20 +02:00
Axel Beckert
be05397249 Bump debhelper compatibility to 9
Update versioned debhelper build-dependency
2013-07-10 22:53:14 +02:00
Axel Beckert
3b72f2ee4b Mention that #715340 is fixed by 1de424a6 2013-07-10 22:45:05 +02:00
Axel Beckert
699025f33e Use Data::Validate::{Domain,IP} for IP addresses and hostname checks
Add corresponding dependencies on libdata-validate-{domain,ip}-perl.
2013-07-10 22:38:29 +02:00
Axel Beckert
74f35d6550 Better document and check requirements for --apt_proxy
See http://bugs.debian.org/623443 for the corresponding apt issue.

Also add a dependency on libdata-validate-uri-perl which is used to do
the syntax check.
2013-07-10 21:50:09 +02:00
Axel Beckert
72a2a637be Mention issue about #623443 in TODO 2013-07-09 22:38:42 +02:00
Axel Beckert
5ac0f15c32 Remove all redundant pod-inline occurrences of "=cut"
Also care that there are always two blank lines before each "=head1"
(except behind "=head1 NAME").
2013-04-18 20:41:51 +02:00
Axel Beckert
dcb9284636 Remove unused Perl modules Xen::Tools and Xen::Tools::Log
Further developement of the (if any) will happen in the git branch
"xen-tools-moose" where they are still available.

Also remove the according (already disabled) tests and test
modifications from the test suite.

Also remove no the more needed build-dependency on Moose as well as
one Makefile line installing the above mentioned Perl modules.
2013-04-18 20:17:33 +02:00
26 changed files with 146 additions and 814 deletions

View File

@@ -32,12 +32,3 @@ Bugs to fix rather soon
Current (unreleased) fix is to sort by mountpoint length. Current (unreleased) fix is to sort by mountpoint length.
Fix would be to reproduce what mount does with mount `-a`. Fix would be to reproduce what mount does with mount `-a`.
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

@@ -14,7 +14,7 @@
# #
TMP ?= /tmp TMP ?= /tmp
DIST_PREFIX = ${TMP} DIST_PREFIX = ${TMP}
VERSION = 4.4~dev VERSION = 4.4beta1
DEBVERSION = $(shell echo $(VERSION)|sed 's/\(rc\|pre\|beta\|alpha\)/~\1/') DEBVERSION = $(shell echo $(VERSION)|sed 's/\(rc\|pre\|beta\|alpha\)/~\1/')
BASE = xen-tools BASE = xen-tools
VCS = git VCS = git
@@ -201,6 +201,7 @@ install-hooks:
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d precise.d -cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d precise.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d quantal.d -cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d quantal.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d raring.d -cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d raring.d
-cd ${prefix}/usr/share/xen-tools/ && ln -s karmic.d saucy.d
cp hooks/common.sh ${prefix}/usr/share/xen-tools cp hooks/common.sh ${prefix}/usr/share/xen-tools
cp -r hooks/common ${prefix}/usr/share/xen-tools cp -r hooks/common ${prefix}/usr/share/xen-tools
@@ -210,7 +211,6 @@ install-hooks:
# #
install-libraries: install-libraries:
-mkdir -p ${prefix}/usr/share/perl5/Xen/Tools -mkdir -p ${prefix}/usr/share/perl5/Xen/Tools
cp ./lib/Xen/*.pm ${prefix}/usr/share/perl5/Xen
cp ./lib/Xen/Tools/*.pm ${prefix}/usr/share/perl5/Xen/Tools cp ./lib/Xen/Tools/*.pm ${prefix}/usr/share/perl5/Xen/Tools
# #

View File

@@ -32,9 +32,9 @@ known to work reliably, i.e.:
* Etch 4.0 (Dom0 no more tested) * Etch 4.0 (Dom0 no more tested)
* Lenny 5.0 * Lenny 5.0
* Squeeze 6.0 * Squeeze 6.0
* Wheezy 7.0 * Wheezy 7
* Jessie 8.0 (preliminary support as it's not yet available) * Jessie 8 (under developement)
* Sid (works at least at the moment of writing :-) * Sid (always under developement; works at least at the moment of writing :-)
### Ubuntu ### Ubuntu
@@ -54,7 +54,8 @@ known to work reliably, i.e.:
* Oneiric Ocelot 11.10 * Oneiric Ocelot 11.10
* Precise Pangolin 12.04 * Precise Pangolin 12.04
* Quantal Quetzal 12.10 * Quantal Quetzal 12.10
* Raring Ringtail 13.04 (preliminary support as it's not yet available) * Raring Ringtail 13.04
* Saucy Salamander 13.10 (under developement)
[1]: http://bugs.debian.org/659360 [1]: http://bugs.debian.org/659360
"debootstrap in Wheezy can no more build Ubuntu Edgy or earlier" "debootstrap in Wheezy can no more build Ubuntu Edgy or earlier"
@@ -83,11 +84,22 @@ Requirements
To use these tools you'll need the following software: To use these tools you'll need the following software:
* [debootstrap](http://packages.debian.org/debootstrap) * [debootstrap](http://packages.debian.org/debootstrap)
* Perl * Perl and the following Perl modules
* The Perl module [Text::Template](http://search.cpan.org/dist/Text-Template/) * [Config::IniFiles](http://metacpan.org/release/Config-IniFiles)
([Debian Package libtext-template-perl](http://packages.debian.org/libtext-template-perl))
* The Perl module [Config::IniFiles](http://search.cpan.org/dist/Config-IniFiles/)
([Debian Package libconfig-inifiles-perl](http://packages.debian.org/libconfig-inifiles-perl)) ([Debian Package libconfig-inifiles-perl](http://packages.debian.org/libconfig-inifiles-perl))
* [Text::Template](http://metacpan.org/release/Text-Template)
([Debian Package libtext-template-perl](http://packages.debian.org/libtext-template-perl))
* [Data::Validate::Domain](http://metacpan.org/release/Data-Validate-Domain)
([Debian Package libdata-validate-domain-perl](http://packages.debian.org/libdata-validate-domain-perl))
* [Data::Validate::IP](http://metacpan.org/release/Data-Validate-IP)
([Debian Package libdata-validate-ip-perl](http://packages.debian.org/libdata-validate-ip-perl))
* [Data::Validate::URI](http://metacpan.org/release/Data-Validate-URI)
([Debian Package libdata-validate-uri-perl](http://packages.debian.org/libdata-validate-uri-perl))
* [File::Slurp](http://metacpan.org/release/File-Slurp)
([Debian Package libfile-slurp-perl](http://packages.debian.org/libfile-slurp-perl))
* [File::Which](http://metacpan.org/release/File-Which)
([Debian Package libfile-which-perl](http://packages.debian.org/libfile-which-perl))
* and some more modules which are part of the Perl core and hence do not need to be installed separately.
* Make, if you are not installing through a package manager * Make, if you are not installing through a package manager
You can try to install RPM-based distributions such as CentOS, or You can try to install RPM-based distributions such as CentOS, or

View File

@@ -73,12 +73,6 @@ Bugs to fix and features to add for 5.0
* LVM snapshot support as an install source. * LVM snapshot support as an install source.
* 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"
this should be a matter of unmounting the mounted volume from /tmp.
* Generic grub support * Generic grub support
This will generate a much nicer `menu.lst` as a side effect, as its This will generate a much nicer `menu.lst` as a side effect, as its
@@ -128,6 +122,9 @@ Bugs to fix and features to add for 5.0
`authorized_keys` (e.g. a users public key) or to just add the Dom0's `authorized_keys` (e.g. a users public key) or to just add the Dom0's
`/root/.ssh/authorized_keys` as the DomU's one. `/root/.ssh/authorized_keys` as the DomU's one.
* Generate ECDSA host keys where possible. (Likely depends on the
to-be-installed SSH version.)
* More generic roles * More generic roles
Deploy a web server or setup ssmtp directly via flag when setting up Deploy a web server or setup ssmtp directly via flag when setting up
@@ -165,11 +162,6 @@ Bugs to fix and features to add for 5.0
* Make used Xen toolstack configurable, i.e. via --xen-toolstack=xl * Make used Xen toolstack configurable, i.e. via --xen-toolstack=xl
* Code Deduplication / Refactor the code for less code duplication
`bin/x*` currently contain the same or similar code like e.g. in the
function readConfigurationFile. This needs to be cleaned up.
* Unify --debug and --dumpconfig. Likely make --debug exit * Unify --debug and --dumpconfig. Likely make --debug exit
gracefully. Document --debug if --dumpconfig is removed. gracefully. Document --debug if --dumpconfig is removed.
@@ -182,8 +174,6 @@ Bugs to fix and features to add for 5.0
distributions the same. Currently Debian is a special case and distributions the same. Currently Debian is a special case and
Ubuntu half a special case. Ubuntu half a special case.
* Replace findBinary() with File::Which
* Remove from the (unused) Xen::Tools what's already in the used * Remove from the (unused) Xen::Tools what's already in the used
Xen::Tools::Common. Xen::Tools::Common.
@@ -194,6 +184,10 @@ Bugs to fix and features to add for 5.0
`xen-create-image` first. Which probably both would be a good `xen-create-image` first. Which probably both would be a good
idea. idea.
* Replace several occurences of backticks with runCommand. (Mostly
mount commands in `xen-update-image`. The calls to uname or
lsb_release should be fine.)
Stuff from Steve's TODO list / Generic TODOs Stuff from Steve's TODO list / Generic TODOs
-------------------------------------------- --------------------------------------------
@@ -238,10 +232,14 @@ Axel's Break-Backwards-Compatibility Wishlist
Maybe add some `--autostart` or such. Maybe add some `--autostart` or such.
* Maybe replace findBinary with File::Which
* MAC addresses should no more depend on the distribution. * MAC addresses should no more depend on the distribution.
* Let the admin switch between MAC addresses based on XenSource's OUI, * Let the admin switch between MAC addresses based on XenSource's OUI,
its organisation's own OUI or locally administrated MAC addresses. its organisation's own OUI or locally administrated MAC addresses.
See also http://wiki.xen.org/wiki/Xen_Networking#MAC_addresses See also http://wiki.xen.org/wiki/Xen_Networking#MAC_addresses
* More radical Code Deduplication
`bin/x*` currently still contain similar code like e.g. in the
function parseCommandLineArguments. This should be cleaned up, too,
but may need a bigger redesign.

View File

@@ -1,15 +1,16 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-create-image - Easily create new Xen instances with networking and OpenSSH. xen-create-image - Easily create new Xen instances with networking and OpenSSH.
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
xen-create-image --hostname=<hostname> <further options> xen-create-image --hostname=<hostname> <further options>
=head1 EXAMPLES =head1 EXAMPLES
xen-create-image --hostname=some-domu --dist=wheezy --lvm=vg0 xen-create-image --hostname=some-domu --dist=wheezy --lvm=vg0
@@ -19,6 +20,7 @@ xen-create-image --hostname=some-domu --dist=precise --dir=/srv/xen
See below for more specific examples: LOOPBACK EXAMPLES, LVM EXAMPLE See below for more specific examples: LOOPBACK EXAMPLES, LVM EXAMPLE
and EVMS EXAMPLE. and EVMS EXAMPLE.
=head1 OPTIONS =head1 OPTIONS
Help Options: Help Options:
@@ -243,9 +245,10 @@ and EVMS EXAMPLE.
Debian mirror. See http://http.debian.net/ for Debian mirror. See http://http.debian.net/ for
details. details.
--apt_proxy=url --apt_proxy=protocol://hostname:port/
Specify a proxy to be used by debootstrap, and within Specify a proxy to be used by debootstrap, and within
the guest. the guest. Needs the same syntax as APT's
Acquire::http::Proxy. See apt.conf(5).
--template=tmpl --template=tmpl
Specify which template file to use when creating the Specify which template file to use when creating the
@@ -326,8 +329,6 @@ and EVMS EXAMPLE.
If you do not wish to use LVM specify --dir or --evms. If you do not wish to use LVM specify --dir or --evms.
(These three options are mutually exclusive.) (These three options are mutually exclusive.)
=cut
=head1 NOTES =head1 NOTES
@@ -350,8 +351,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
The result of invoking these three scripts, and some minor glue between The result of invoking these three scripts, and some minor glue between
them, is a simple means of creating new Xen guest domains. them, is a simple means of creating new Xen guest domains.
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -374,7 +373,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
If you wish to install additional packages or do any additional If you wish to install additional packages or do any additional
configuration of your new guests, please read the section on "ROLES". configuration of your new guests, please read the section on "ROLES".
=cut
=head1 CONFIGURATION =head1 CONFIGURATION
@@ -454,9 +452,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
This makes use of loopback images stored beneath /home/xen and This makes use of loopback images stored beneath /home/xen and
will be installed via the debootstrap command. will be installed via the debootstrap command.
=cut
=head1 NETWORKING AUTO-SETUP =head1 NETWORKING AUTO-SETUP
@@ -492,8 +487,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
and would no longer be available. If all the IP addresses are taken and would no longer be available. If all the IP addresses are taken
then the system will fail. then the system will fail.
=cut
=head1 PARTITIONING =head1 PARTITIONING
@@ -508,8 +501,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
Now when you create a new image specify the name of this file with as Now when you create a new image specify the name of this file with as
an argument to the --partition option. an argument to the --partition option.
=cut
=head1 XEN CONFIGURATION FILE =head1 XEN CONFIGURATION FILE
@@ -527,8 +518,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
Alternatively you can create multiple configuration files and Alternatively you can create multiple configuration files and
specify the one to use with the --template option. specify the one to use with the --template option.
=cut
=head1 LOOPBACK EXAMPLES =head1 LOOPBACK EXAMPLES
@@ -564,8 +553,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
The '/domains/' subdirectory will be created if necessary. The '/domains/' subdirectory will be created if necessary.
=cut
=head1 LVM EXAMPLE =head1 LVM EXAMPLE
@@ -587,7 +574,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
mkdir -p /mnt/foo mkdir -p /mnt/foo
mount /dev/myvolumegroup/vm01.my.flat-disk /mnt/foo mount /dev/myvolumegroup/vm01.my.flat-disk /mnt/foo
=cut
=head1 EVMS EXAMPLE =head1 EVMS EXAMPLE
@@ -609,8 +595,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
mkdir -p /mnt/foo mkdir -p /mnt/foo
mount /dev/evms/vm01.my.flat-disk /mnt/foo mount /dev/evms/vm01.my.flat-disk /mnt/foo
=cut
=head1 INSTALLATION METHODS =head1 INSTALLATION METHODS
@@ -626,7 +610,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
arguments, or settings in the configuration file. Only one installation arguments, or settings in the configuration file. Only one installation
method may be specified at a time; they are mutually-exclusive. method may be specified at a time; they are mutually-exclusive.
=cut
=head1 INSTALLATION SPEEDUPS =head1 INSTALLATION SPEEDUPS
@@ -656,8 +639,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
--lvm=myvolumegroup --hostname=vm01.my.flat \ --lvm=myvolumegroup --hostname=vm01.my.flat \
--install-method=copy --install-source=/path/to/copy/from --install-method=copy --install-source=/path/to/copy/from
=cut
=head1 DEBOOTSTRAP CACHING =head1 DEBOOTSTRAP CACHING
@@ -685,8 +666,6 @@ Create a Xen configuration file in so that xm/xl can start the new domain.
If you set your cache directory to anything else, simply rm the If you set your cache directory to anything else, simply rm the
contents of the directory. contents of the directory.
=cut
=head1 ROLES =head1 ROLES
@@ -763,9 +742,6 @@ Install an X11 server, using VNC and XDM
NOTE: Multiple role scripts may be invoked if you separate their NOTE: Multiple role scripts may be invoked if you separate their
names with commas. names with commas.
=cut
=head1 THE SKELETON DIRECTORY =head1 THE SKELETON DIRECTORY
@@ -793,7 +769,6 @@ Install an X11 server, using VNC and XDM
Dmitry Nedospasov, http://nedos.net/ Dmitry Nedospasov, http://nedos.net/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -820,6 +795,9 @@ use File::Which;
use Getopt::Long; use Getopt::Long;
use Pod::Usage; use Pod::Usage;
use Data::Dumper; use Data::Dumper;
use Data::Validate::URI qw/ is_uri /;
use Data::Validate::IP qw/ is_ipv4 /;
use Data::Validate::Domain qw/ is_hostname /;
use Xen::Tools::Common; use Xen::Tools::Common;
@@ -853,7 +831,7 @@ my $MOUNT_POINT = undef;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';
# #
@@ -1171,11 +1149,11 @@ E_O_ERROR
# Check that all the binaries have been installed properly # Check that all the binaries have been installed properly
# #
my @required = my @required =
qw ( / xt-customize-image xt-install-image xt-create-xen-config / ); qw(xt-customize-image xt-install-image xt-create-xen-config);
foreach my $bin (@required) foreach my $bin (@required)
{ {
if ( !defined( findBinary($bin) ) ) if ( !defined( which($bin) ) )
{ {
logprint( "The script '$bin' was not found.\nAborting\n\n" ); logprint( "The script '$bin' was not found.\nAborting\n\n" );
$CONFIG{'FAIL'} = 1; $CONFIG{'FAIL'} = 1;
@@ -1356,10 +1334,10 @@ sub setupDefaultOptions
$CONFIG{ 'mirror_'.$debdist } = 'http://http.debian.net/debian-archive/debian'; $CONFIG{ 'mirror_'.$debdist } = 'http://http.debian.net/debian-archive/debian';
} }
# Initialize per distribution mirror defaults: Ubuntu # Initialize per distribution mirror defaults: Ubuntu
foreach my $ubuntudist (qw(hardy lucid oneiric precise quantal raring)) { foreach my $ubuntudist (qw(lucid precise quantal raring saucy)) {
$CONFIG{ 'mirror_'.$ubuntudist } = 'http://archive.ubuntu.com/ubuntu'; $CONFIG{ 'mirror_'.$ubuntudist } = 'http://archive.ubuntu.com/ubuntu';
} }
foreach my $ubuntudist (qw(dapper edgy feisty gutsy intrepid jaunty karmic maverick natty)) { foreach my $ubuntudist (qw(dapper edgy feisty gutsy hardy intrepid jaunty karmic maverick natty oneiric)) {
$CONFIG{ 'mirror_'.$ubuntudist } = 'http://old-releases.ubuntu.com/ubuntu'; $CONFIG{ 'mirror_'.$ubuntudist } = 'http://old-releases.ubuntu.com/ubuntu';
} }
$CONFIG{ 'apt_proxy' } = ''; $CONFIG{ 'apt_proxy' } = '';
@@ -1478,15 +1456,15 @@ sub checkOption
message => "must be a disk device (xvd[a-z]+, sd[a-z]+).\n", message => "must be a disk device (xvd[a-z]+, sd[a-z]+).\n",
}, },
ipv4 => { ipv4 => {
check => qr/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/, check => sub { is_ipv4($_[0]) },
message => "must be valid IPv4.\n", message => "must be valid IPv4.\n",
}, },
ipv4_or_auto => { ipv4_or_auto => {
check => qr/^(?:auto|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$/, check => sub { is_ipv4($_[0]) or $_[0] eq 'auto' },
message => "must be valid IPv4 or the keyword 'auto'.\n", message => "must be valid IPv4 or the keyword 'auto'.\n",
}, },
hostname => { hostname => {
check => qr/^[a-z0-9][a-z0-9.-]{0,254}$/i, check => sub { is_hostname($_[0]) },
message => "must be a valid hostname.\n", message => "must be a valid hostname.\n",
}, },
supportedFs => { supportedFs => {
@@ -1517,6 +1495,10 @@ sub checkOption
check => qr/^md5|sha256|sha512$/i, check => qr/^md5|sha256|sha512$/i,
message => "must be md5, sha256 or sha512.\n", message => "must be md5, sha256 or sha512.\n",
}, },
uri => {
check => sub { is_uri($_[0]) },
message => "must be an URI including the protocol\n",
},
); );
# Define what argument each option accepts. # Define what argument each option accepts.
@@ -1551,6 +1533,7 @@ sub checkOption
mac => 'mac', mac => 'mac',
ip => 'ipv4_or_auto', ip => 'ipv4_or_auto',
hash_method => 'hashMethod', hash_method => 'hashMethod',
apt_proxy => 'uri',
); );
# If given option does not exists in optionsTypes, # If given option does not exists in optionsTypes,
@@ -1845,7 +1828,7 @@ sub checkArguments
# #
# Lucid and probably all later Ubuntus, too, don't work without pygrub # Lucid and probably all later Ubuntus, too, don't work without pygrub
# #
if ( $CONFIG{ 'dist' } =~ /lucid|maverick|natty|oneiric|precise|quantal|raring/ ) if ( $CONFIG{ 'dist' } =~ /lucid|maverick|natty|oneiric|precise|quantal|raring|saucy/ )
{ {
$CONFIG{ 'pygrub' } = 1; $CONFIG{ 'pygrub' } = 1;
} }
@@ -2293,7 +2276,7 @@ sub checkBinariesPresent
foreach my $file (@required) foreach my $file (@required)
{ {
if ( !defined( findBinary($file) ) ) if ( !defined( which($file) ) )
{ {
logprint("The following binary is required to run this tool\n"); logprint("The following binary is required to run this tool\n");
logprint("\t$file\n"); logprint("\t$file\n");
@@ -2309,7 +2292,7 @@ sub checkBinariesPresent
{ {
# loopback image # loopback image
if ( !defined( findBinary("dd") ) ) if ( !defined( which("dd") ) )
{ {
logprint("The following binary is required to run this tool\n"); logprint("The following binary is required to run this tool\n");
logprint("\tdd\n"); logprint("\tdd\n");
@@ -2330,7 +2313,7 @@ sub checkBinariesPresent
foreach my $file (@evms) foreach my $file (@evms)
{ {
if ( !defined( findBinary($file) ) ) if ( !defined( which($file) ) )
{ {
logprint("The following binary is required to run this tool\n"); logprint("The following binary is required to run this tool\n");
logprint("\t$file\n"); logprint("\t$file\n");
@@ -2350,7 +2333,7 @@ sub checkBinariesPresent
foreach my $file (@lvm) foreach my $file (@lvm)
{ {
if ( !defined( findBinary($file) ) ) if ( !defined( which($file) ) )
{ {
logprint("The following binary is required to run this tool\n"); logprint("The following binary is required to run this tool\n");
logprint("\t$file\n"); logprint("\t$file\n");
@@ -3324,7 +3307,7 @@ sub createFilesystem
# #
my ($binary, $args) = split(/ /, $command, 2); my ($binary, $args) = split(/ /, $command, 2);
if ( !defined( findBinary($binary) ) ) if ( !defined( which($binary) ) )
{ {
logprint( logprint(
"The binary '$binary' required to create the filesystem $fs is missing\n" "The binary '$binary' required to create the filesystem $fs is missing\n"

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-create-nfs - Create a Xen configuration file for an NFS-root guest. xen-create-nfs - Create a Xen configuration file for an NFS-root guest.
@@ -36,8 +38,6 @@ xen-create-nfs - Create a Xen configuration file for an NFS-root guest.
--nfs_server Specify the NFS server to mount the root partition from. --nfs_server Specify the NFS server to mount the root partition from.
--nfs_root Specify the path, upon the NFS server, to mount. --nfs_root Specify the path, upon the NFS server, to mount.
=cut
=head1 OPTIONS =head1 OPTIONS
@@ -55,11 +55,8 @@ Read the manual for this script.
=item B<--version> =item B<--version>
Show the version number and exit. Show the version number and exit.
=back =back
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -71,8 +68,6 @@ Show the version number and exit.
support more than the minimal number of options to completement the support more than the minimal number of options to completement the
existing xen-create-image script, however it is hopefully useful. existing xen-create-image script, however it is hopefully useful.
=cut
=head1 REFERENCE =head1 REFERENCE
@@ -81,16 +76,12 @@ Show the version number and exit.
http://www.debian-administration.org/articles/505 http://www.debian-administration.org/articles/505
=cut
=head1 AUTHORS =head1 AUTHORS
Steve Kemp, http://www.steve.org.uk/ Steve Kemp, http://www.steve.org.uk/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -102,7 +93,6 @@ you can redistribute it and/or modify it under
the same terms as Perl itself. the same terms as Perl itself.
The LICENSE file contains the full text of the license. The LICENSE file contains the full text of the license.
=cut =cut
@@ -131,7 +121,7 @@ $CONFIG{ 'template' } = '/etc/xen-tools/xm-nfs.tmpl';
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';
# store version number away. # store version number away.

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-delete-image - Delete previously created Xen instances. xen-delete-image - Delete previously created Xen instances.
@@ -30,8 +32,6 @@ xen-delete-image - Delete previously created Xen instances.
--test Don't complain if we're not invoked by root. --test Don't complain if we're not invoked by root.
--no-xen-ok Don't complain if xen seems not installed or xend is not running --no-xen-ok Don't complain if xen seems not installed or xend is not running
=cut
=head1 OPTIONS =head1 OPTIONS
@@ -61,11 +61,8 @@ Do not complain, or exit, if the script is not executed by the root user.
=item B<--version> =item B<--version>
Show the version number and exit. Show the version number and exit.
=back =back
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -79,8 +76,6 @@ Show the version number and exit.
but will fail to remove anything which the user does not have permission but will fail to remove anything which the user does not have permission
to delete.) to delete.)
=cut
=head1 LOOPBACK EXAMPLE =head1 LOOPBACK EXAMPLE
@@ -96,8 +91,6 @@ Show the version number and exit.
(The matching Xen configuration files beneath /etc/xen will also be (The matching Xen configuration files beneath /etc/xen will also be
removed.) removed.)
=cut
=head1 LVM EXAMPLE =head1 LVM EXAMPLE
@@ -114,8 +107,6 @@ Show the version number and exit.
The Xen configuration files will also be removed from beneath /etc/xen. The Xen configuration files will also be removed from beneath /etc/xen.
=cut
=head1 EVMS EXAMPLE =head1 EVMS EXAMPLE
@@ -132,8 +123,6 @@ Show the version number and exit.
The Xen configuration files will also be removed. The Xen configuration files will also be removed.
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -141,8 +130,6 @@ Show the version number and exit.
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -154,7 +141,6 @@ you can redistribute it and/or modify it under
the same terms as Perl itself. the same terms as Perl itself.
The LICENSE file contains the full text of the license. The LICENSE file contains the full text of the license.
=cut =cut
@@ -177,7 +163,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';
# #

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-list-images - List all the created and configured Xen images. xen-list-images - List all the created and configured Xen images.
@@ -20,6 +22,7 @@ xen-list-images - List all the created and configured Xen images.
Testing options: Testing options:
--test Specify an alternate Xen configuration directory. --test Specify an alternate Xen configuration directory.
=head1 OPTIONS =head1 OPTIONS
=over 8 =over 8
@@ -52,22 +55,18 @@ Show the version number and exit.
and then either the IP address configured, or "DHCP" to denote and then either the IP address configured, or "DHCP" to denote
a dynamic host. a dynamic host.
=cut
=head1 TODO =head1 TODO
It should be possible to determine the disk(s) used by the images, It should be possible to determine the disk(s) used by the images,
and then display their sizes. and then display their sizes.
=cut
=head1 AUTHORS =head1 AUTHORS
Steve Kemp, http://www.steve.org.uk/ Steve Kemp, http://www.steve.org.uk/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -107,7 +106,7 @@ $CONFIG{ 'extension' } = '.cfg';
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-resize-guest - Resize a loopback or LVM based xen guest. xen-resize-guest - Resize a loopback or LVM based xen guest.
@@ -20,8 +22,6 @@ xen-resize-guest - Resize a loopback or LVM based xen guest.
--force Force the resize to happen without a last-chance delay. --force Force the resize to happen without a last-chance delay.
--hostname Specify the hostname of the guest to resize. --hostname Specify the hostname of the guest to resize.
=cut
=head1 OPTIONS =head1 OPTIONS
@@ -53,8 +53,6 @@ Show the version number and exit.
=back =back
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -74,15 +72,12 @@ Show the version number and exit.
More than once I've heard of users making mistakes and breaking their More than once I've heard of users making mistakes and breaking their
filesystems; hence this tool. filesystems; hence this tool.
=cut
=head1 AUTHORS =head1 AUTHORS
Steve Kemp, http://www.steve.org.uk/ Steve Kemp, http://www.steve.org.uk/
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
=cut
=head1 LICENSE =head1 LICENSE
@@ -94,7 +89,6 @@ you can redistribute it and/or modify it under
the same terms as Perl itself. the same terms as Perl itself.
The LICENSE file contains the full text of the license. The LICENSE file contains the full text of the license.
=cut =cut
@@ -117,7 +111,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';
# #

View File

@@ -1,5 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xen-update-image - Update the software installed upon offline Xen images. xen-update-image - Update the software installed upon offline Xen images.
@@ -18,9 +20,6 @@ xen-update-image - Update the software installed upon offline Xen images.
--lvm Specify the LVM volume group which contains the image(s). --lvm Specify the LVM volume group which contains the image(s).
--evms Specify the EVMS container which contains the image(s). --evms Specify the EVMS container which contains the image(s).
=cut
=head1 OPTIONS =head1 OPTIONS
@@ -46,8 +45,6 @@ Show the version number and exit.
=back =back
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -65,8 +62,6 @@ Show the version number and exit.
corruption otherwise it will allow you to update your image without corruption otherwise it will allow you to update your image without
booting it. booting it.
=cut
=head1 EXAMPLES =head1 EXAMPLES
@@ -77,8 +72,6 @@ Show the version number and exit.
xen-update-images --dir=/home/xen test.my.flat x11.my.flat xen-update-images --dir=/home/xen test.my.flat x11.my.flat
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -86,7 +79,6 @@ Show the version number and exit.
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -121,7 +113,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';
# #

View File

@@ -1,11 +1,11 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xt-create-config - Create a Xen configuration file for a new guest xt-create-config - Create a Xen configuration file for a new guest
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
xt-create-config [options] xt-create-config [options]
@@ -39,7 +39,6 @@ xt-create-config - Create a Xen configuration file for a new guest
All other options from xen-create-image, such as the new IP address(es) All other options from xen-create-image, such as the new IP address(es)
to give to the new instance, will be passed as environmental variables. to give to the new instance, will be passed as environmental variables.
=cut
=head1 ABOUT =head1 ABOUT
@@ -53,8 +52,6 @@ xt-create-config - Create a Xen configuration file for a new guest
By default the script will use /etc/xen-tools/xm.tmpl as its input. By default the script will use /etc/xen-tools/xm.tmpl as its input.
=cut
=head1 INVOCATION =head1 INVOCATION
@@ -75,9 +72,6 @@ xt-create-config - Create a Xen configuration file for a new guest
=for example end =for example end
=cut
=head1 ARGUMENT PASSING =head1 ARGUMENT PASSING
This script will be invoked with a full copy of the arguments from This script will be invoked with a full copy of the arguments from
@@ -102,7 +96,6 @@ xt-create-config - Create a Xen configuration file for a new guest
for the "Text::Template" perl module. (If you have the perldoc for the "Text::Template" perl module. (If you have the perldoc
package installed you can read this with "perldoc Text::Template".) package installed you can read this with "perldoc Text::Template".)
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -110,7 +103,6 @@ xt-create-config - Create a Xen configuration file for a new guest
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -156,7 +148,7 @@ $CONFIG{ 'extension' } = '.cfg';
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';

View File

@@ -1,11 +1,11 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xt-customize-image - Customize a freshly installed copy of GNU/Linux xt-customize-image - Customize a freshly installed copy of GNU/Linux
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
xt-customize-image [options] xt-customize-image [options]
@@ -25,7 +25,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
All other options from xen-create-image, such as the new IP address(es) All other options from xen-create-image, such as the new IP address(es)
to give to the new instance, will be passed as environmental variables. to give to the new instance, will be passed as environmental variables.
=cut
=head1 NOTES =head1 NOTES
@@ -41,8 +40,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
--location - The temporary installation root of the new install --location - The temporary installation root of the new install
--dist - The distribution which has been installed. --dist - The distribution which has been installed.
=cut
=head1 HOOK SCRIPTS =head1 HOOK SCRIPTS
@@ -57,8 +54,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
executed from '/usr/share/xen-tools/foo.d'. Each executable will executed from '/usr/share/xen-tools/foo.d'. Each executable will
be loaded and executed in sorted order. be loaded and executed in sorted order.
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -66,8 +61,6 @@ xt-customize-image - Customize a freshly installed copy of GNU/Linux
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -98,7 +91,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';

View File

@@ -1,12 +1,12 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xt-guess-suite-and-mirror - Tries to guess the most suitable suite and xt-guess-suite-and-mirror - Tries to guess the most suitable suite and
mirror for DomUs on Debian and Ubuntu Dom0s. mirror for DomUs on Debian and Ubuntu Dom0s.
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
--suite Show suite --suite Show suite
@@ -20,7 +20,6 @@ mirror for DomUs on Debian and Ubuntu Dom0s.
--manual Show the manual for this script. --manual Show the manual for this script.
--version Show the version number and exit. --version Show the version number and exit.
=cut
=head1 DESCRIPTION =head1 DESCRIPTION
@@ -28,14 +27,12 @@ xt-guess-suite-and-mirror tries to find the mirror and suite the Xen
Dom0 is currently using and returns them in a way suitable for Dom0 is currently using and returns them in a way suitable for
xen-create-image(1) or the backticks feature in xen-tools.conf. xen-create-image(1) or the backticks feature in xen-tools.conf.
=cut
=head1 AUTHORS =head1 AUTHORS
Axel Beckert, http://noone.org/abe/ Axel Beckert, http://noone.org/abe/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -74,6 +71,7 @@ my @sources_list_files = ( '/etc/apt/sources.list',
use File::Slurp; use File::Slurp;
use Getopt::Long; use Getopt::Long;
use Pod::Usage; use Pod::Usage;
use File::Which;
use strict; use strict;
@@ -81,7 +79,7 @@ use strict;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';
# Init # Init
my $mirror = ''; my $mirror = '';
@@ -153,10 +151,8 @@ all_sources_list_files: foreach my $sources_list_file (@sources_list_files) {
die "Couldn't find a useful entry in the sources.list files of the Dom0. Tried:\n ". 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; join("\n ", @sources_list_files)."\n" unless $found;
my $lsb_release = `which lsb_release`; my $lsb_release = which('lsb_release');
chomp($lsb_release); if (!$found and defined($lsb_release) and -x $lsb_release) {
if (!$found and $lsb_release and -x $lsb_release) {
my $vendor = `$lsb_release -s -i`; my $vendor = `$lsb_release -s -i`;
if ($vendor eq 'Debian' or $vendor eq 'Ubuntu') { if ($vendor eq 'Debian' or $vendor eq 'Ubuntu') {

View File

@@ -1,11 +1,11 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
=encoding utf8
=head1 NAME =head1 NAME
xt-install-image - Install a fresh copy of GNU/Linux into a directory xt-install-image - Install a fresh copy of GNU/Linux into a directory
=cut
=head1 SYNOPSIS =head1 SYNOPSIS
xt-install-image [options] xt-install-image [options]
@@ -39,8 +39,6 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory
All other options from xen-create-image will be passed as environmental All other options from xen-create-image will be passed as environmental
variables. variables.
=cut
=head1 NOTES =head1 NOTES
@@ -50,8 +48,6 @@ xt-install-image - Install a fresh copy of GNU/Linux into a directory
configuration, etc. configuration, etc.
=cut
=head1 INSTALLATION METHODS =head1 INSTALLATION METHODS
There are several available methods of installation, depending upon the There are several available methods of installation, depending upon the
@@ -78,8 +74,6 @@ Untar a .tar file into the new installation location. This tarfile is assumed t
=back =back
=cut
=head1 AUTHORS =head1 AUTHORS
@@ -88,7 +82,6 @@ Untar a .tar file into the new installation location. This tarfile is assumed t
Dmitry Nedospasov, http://nedos.net/ Dmitry Nedospasov, http://nedos.net/
Stéphane Jourdois Stéphane Jourdois
=cut
=head1 LICENSE =head1 LICENSE
@@ -119,7 +112,7 @@ my %CONFIG;
# #
# Release number. # Release number.
# #
my $RELEASE = '4.4~dev'; my $RELEASE = '4.4beta1';
# #

4
debian/NEWS vendored
View File

@@ -1,4 +1,4 @@
xen-tools (4.4~dev-1) UNRELEASED; urgency=low xen-tools (4.4~beta1-1) unstable; urgency=low
* Exported environment variables no more contain dashes ("-"). Dashes in * Exported environment variables no more contain dashes ("-"). Dashes in
environment variable names are from now on converted to underscores environment variable names are from now on converted to underscores
@@ -11,7 +11,7 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
which all should be empty at that point, i.e. "rmdir -p which all should be empty at that point, i.e. "rmdir -p
/usr/lib/xen-tools/*" should do the trick. /usr/lib/xen-tools/*" should do the trick.
-- Axel Beckert <abe@debian.org> Fri, 05 Apr 2013 20:19:02 +0200 -- Axel Beckert <abe@debian.org> Fri, 23 Aug 2013 19:01:16 +0200
xen-tools (4.2~rc1-1) unstable; urgency=low xen-tools (4.2~rc1-1) unstable; urgency=low

31
debian/changelog vendored
View File

@@ -1,6 +1,6 @@
xen-tools (4.4~dev-1) UNRELEASED; urgency=low xen-tools (4.4~beta1-1) unstable; urgency=low
* New upstream release * New upstream beta release
- Code deduplication to unify the xen-*-image scripts - Code deduplication to unify the xen-*-image scripts
- Moves /usr/lib/xen-tools/ to /usr/share/xen-tools/ - Moves /usr/lib/xen-tools/ to /usr/share/xen-tools/
- Use http.debian.net as default Debian mirror if no mirror is given - Use http.debian.net as default Debian mirror if no mirror is given
@@ -20,14 +20,17 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
- Fixes "--extension=" with empty parameter. - Fixes "--extension=" with empty parameter.
- Sarge amd64 case handle properly - Sarge amd64 case handle properly
- Remove CVS revisions from --version output - Remove CVS revisions from --version output
- Preliminary support for Debian Jessie and Ubuntu Raring - Support for Debian Jessie, Ubuntu Raring and preliminary support for
Ubuntu Saucy (debootstrap doesn't have support for Saucy at the time
of writing)
- Preliminary support for xl toolstack - Preliminary support for xl toolstack
- xen-create-image: Consistently use runCommand() instead of system() - xen-create-image: Consistently use runCommand() instead of system()
- xt-install-image: Don't bail out if only cdebootstrap is installed - xt-install-image: Don't bail out if only cdebootstrap is installed
but not debootstrap (Thanks Elmar Heeb!) but not debootstrap (Thanks Elmar Heeb!)
- Makefile accepts DESTDIR=… - Makefile accepts DESTDIR=…
- Move examples from debian/examples to examples. - Move examples from debian/examples to examples.
- Uses File::Which, added (build-) dependency on libfile-which-perl - Uses File::Which exclusively (no more findBinary, no more `which`),
added (build-) dependency on libfile-which-perl
- Knows about module-init-tools → kmod transition in wheezy/raring. - Knows about module-init-tools → kmod transition in wheezy/raring.
- Adds default mount options for ext4, identical to ext2/ext3. - Adds default mount options for ext4, identical to ext2/ext3.
- Ships /etc/initramfs-tools/conf.d/xen-tools for generating Dom0 - Ships /etc/initramfs-tools/conf.d/xen-tools for generating Dom0
@@ -41,13 +44,25 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
Add installCentOS4Package wrapper for backward compatibility. Add installCentOS4Package wrapper for backward compatibility.
- Fix filesystem tools installation in 91-install-fs-tools (which was - Fix filesystem tools installation in 91-install-fs-tools (which was
broken since 4.3~rc1-1) by merging 91-install-fs-tools back into broken since 4.3~rc1-1) by merging 91-install-fs-tools back into
90-make-fstab. Also supports RPM-based distributions now. 90-make-fstab. (Closes: #715340) Also supports RPM-based
distributions now.
- Fixes export of environment variables. Previously they could contain - Fixes export of environment variables. Previously they could contain
dashes and then were only accessible from within Perl, but not from dashes and then were only accessible from within Perl, but not from
within Bash. within Bash.
- Fixes creation of "ARRAY(0x…).log" named log files. - Fixes creation of "ARRAY(0x…).log" named log files.
- Makes some options (like --pygrub) negatable. - Makes some options (like --pygrub) negatable.
- Uses Test::NoTabs; add according build-dependency. - Uses Test::NoTabs; add according build-dependency.
- Removes unused Perl modules Xen::Tools and Xen::Tools::Log from
source code. Also removes the according tests from the test suite.
→ Remove no more needed build-dependency on Moose.
- Better documents and checks requirements for the --apt_proxy
value. (See #623443 for the corresponding apt issue.) Add (build-)
dependency on libdata-validate-uri-perl.
- Use Data::Validate::{Domain,IP} for IP addresses and hostname checks.
Add corresponding (build-) dependencies on
libdata-validate-{domain,ip}-perl.
- Fixes broken quoting in list of required binaries
- Declares POD encoding. Fixes FTBFS with Perl 5.18. (Closes: #720519)
* Add debian/gbp.conf to be able to to build xen-tools with * Add debian/gbp.conf to be able to to build xen-tools with
git-buildpackage. git-buildpackage.
* Clean up debian/rules: * Clean up debian/rules:
@@ -59,10 +74,14 @@ xen-tools (4.4~dev-1) UNRELEASED; urgency=low
dh_auto_* can't help. No more explicitly call "make manpages", it's dh_auto_* can't help. No more explicitly call "make manpages", it's
a depedency of "make install" in the next line anyway. a depedency of "make install" in the next line anyway.
- Finally switch to a minimal dh style debian/rules. - Finally switch to a minimal dh style debian/rules.
* Bump debhelper compatibility to 9
- Update versioned debhelper build-dependency
* Bump Standards-Version to 3.9.4 (no changes)
* Add dependency on ${perl:Depends} to fix dpkg-gencontrol warning.
* Bump copyright years in debian/copyright. * Bump copyright years in debian/copyright.
* Apply wrap-and-sort. * Apply wrap-and-sort.
-- Axel Beckert <abe@debian.org> Thu, 17 Jan 2013 17:09:02 +0100 -- Axel Beckert <abe@debian.org> Fri, 23 Aug 2013 19:00:03 +0200
xen-tools (4.3.1-1) unstable; urgency=low xen-tools (4.3.1-1) unstable; urgency=low

2
debian/compat vendored
View File

@@ -1 +1 @@
7 9

20
debian/control vendored
View File

@@ -2,17 +2,19 @@ Source: xen-tools
Section: utils Section: utils
Priority: extra Priority: extra
Maintainer: Axel Beckert <abe@debian.org> Maintainer: Axel Beckert <abe@debian.org>
Build-Depends: debhelper (>= 7.0.0), Build-Depends: debhelper (>= 9~),
devscripts, devscripts,
git, git,
libdata-validate-domain-perl,
libdata-validate-ip-perl,
libdata-validate-uri-perl,
libfile-slurp-perl, libfile-slurp-perl,
libfile-which-perl, libfile-which-perl,
libmoose-perl,
libtest-notabs-perl, libtest-notabs-perl,
libtest-pod-coverage-perl, libtest-pod-coverage-perl,
libtest-pod-perl, libtest-pod-perl,
libtext-template-perl libtext-template-perl
Standards-Version: 3.9.3 Standards-Version: 3.9.4
Homepage: http://xen-tools.org/software/xen-tools Homepage: http://xen-tools.org/software/xen-tools
Vcs-Browser: http://gitorious.org/xen-tools/xen-tools Vcs-Browser: http://gitorious.org/xen-tools/xen-tools
Vcs-Git: git://gitorious.org/xen-tools/xen-tools.git Vcs-Git: git://gitorious.org/xen-tools/xen-tools.git
@@ -21,12 +23,16 @@ Package: xen-tools
Architecture: all Architecture: all
Depends: debootstrap | cdebootstrap, Depends: debootstrap | cdebootstrap,
libconfig-inifiles-perl, libconfig-inifiles-perl,
libdata-validate-domain-perl,
libdata-validate-ip-perl,
libdata-validate-uri-perl,
libfile-slurp-perl, libfile-slurp-perl,
libfile-which-perl, libfile-which-perl,
libtext-template-perl, libtext-template-perl,
openssh-client, openssh-client,
perl-modules, perl-modules,
${misc:Depends} ${misc:Depends},
${perl:Depends}
Recommends: libexpect-perl, Recommends: libexpect-perl,
rinse (>= 1.9.1-1), rinse (>= 1.9.1-1),
xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae, xen-hypervisor-amd64 | xen-hypervisor-i386 | xen-hypervisor-i386-pae,
@@ -47,7 +53,8 @@ Description: Tools to manage Xen virtual servers
* Debian 4.0 Etch * Debian 4.0 Etch
* Debian 5.0 Lenny * Debian 5.0 Lenny
* Debian 6.0 Squeeze * Debian 6.0 Squeeze
* Debian 7.0 Wheezy * Debian 7 Wheezy
* Debian 8 Jessie (under development)
* Debian Sid (Unstable) * Debian Sid (Unstable)
* Ubuntu 6.06 Dapper Drake (LTS) * Ubuntu 6.06 Dapper Drake (LTS)
* Ubuntu 6.10 Edgy Eft * Ubuntu 6.10 Edgy Eft
@@ -62,5 +69,8 @@ Description: Tools to manage Xen virtual servers
* Ubuntu 11.04 Natty Narwhal * Ubuntu 11.04 Natty Narwhal
* Ubuntu 11.10 Oneiric Ocelot * Ubuntu 11.10 Oneiric Ocelot
* Ubuntu 12.04 Precise Pangolin (LTS) * Ubuntu 12.04 Precise Pangolin (LTS)
* Ubuntu 12.10 Quantal Quetzal
* Ubuntu 13.04 Raring Ringtail
* Ubuntu 13.10 Saucy Salamander (under development)
* CentOS 5 * CentOS 5
* CentOS 6 * CentOS 6

View File

@@ -280,7 +280,7 @@ mirror = `xt-guess-suite-and-mirror --mirror`
# mirror_edgy = http://old-releases.ubuntu.com/ubuntu # mirror_edgy = http://old-releases.ubuntu.com/ubuntu
# mirror_feisty = http://old-releases.ubuntu.com/ubuntu # mirror_feisty = http://old-releases.ubuntu.com/ubuntu
# mirror_gutsy = http://old-releases.ubuntu.com/ubuntu # mirror_gutsy = http://old-releases.ubuntu.com/ubuntu
# mirror_hardy = http://archive.ubuntu.com/ubuntu # mirror_hardy = http://old-releases.ubuntu.com/ubuntu
# mirror_intrepid = http://old-releases.ubuntu.com/ubuntu # mirror_intrepid = http://old-releases.ubuntu.com/ubuntu
# mirror_jaunty = http://old-releases.ubuntu.com/ubuntu # mirror_jaunty = http://old-releases.ubuntu.com/ubuntu
# mirror_karmic = http://old-releases.ubuntu.com/ubuntu # mirror_karmic = http://old-releases.ubuntu.com/ubuntu
@@ -291,6 +291,7 @@ mirror = `xt-guess-suite-and-mirror --mirror`
# mirror_precise = http://archive.ubuntu.com/ubuntu # mirror_precise = http://archive.ubuntu.com/ubuntu
# mirror_quantal = http://archive.ubuntu.com/ubuntu # mirror_quantal = http://archive.ubuntu.com/ubuntu
# mirror_raring = http://archive.ubuntu.com/ubuntu # mirror_raring = http://archive.ubuntu.com/ubuntu
# mirror_saucy = http://archive.ubuntu.com/ubuntu
# If this is defined it will be used by debootstrap, and configured as the # If this is defined it will be used by debootstrap, and configured as the
# proxy for the guest # proxy for the guest

View File

@@ -1,332 +0,0 @@
package Xen::Tools;
use warnings;
use strict;
use Moose;
use Xen::Tools::Log;
=head1 NAME
Xen::Tools - Build Xen domains with Perl
=head1 VERSION
Version 0.01
=cut
our $VERSION = '0.01';
=head1 SYNOPSIS
my $xt = Xen::Tools->new();
=head1 FUNCTIONS
=head2 new
Instantiate the object.
=cut
override 'new' => sub {
my $class = shift;
# Initialize the base class
my $self = $class->super(@_);
$self->{_xtl} = Xen::Tools::Log->new( hostname => $self->hostname,
logpath => $self->logpath,
);
$self->_checkSystem();
return $self;
};
=head2 meta
This is a method which provides access to the current class's meta-
class. Inherited from Moose.
=cut
=head2 log
This method sends a log message to the current object's logging
mechanism
=cut
sub log {
my $self = shift;
$self->{_xtl}->print(@_);
}
=head2 hostname
Attribute which indicates the domain's hostname
=cut
has 'hostname' => ( is => 'ro', isa => 'Str', required => 1 );
=head2 logpath
Attribute which indicates the log directory. Defaults to /var/log/xen-tools
=cut
has 'logpath' => ( is => 'ro',
isa => 'Str',
default => '/var/log/xen-tools'
);
=begin doc
_findBinary
Find the location of the specified binary on the curent user's PATH.
Return undef if the named binary isn't found.
=end doc
=cut
sub _findBinary {
my $self = shift;
my( $bin ) = (@_);
# strip any path which might be present.
$bin = $2 if ( $bin =~ /(.*)[\/\\](.*)/ );
foreach my $entry ( split( /:/, $ENV{'PATH'} ) )
{
# guess of location.
my $guess = $entry . "/" . $bin;
# return it if it exists and is executable
return $guess if ( -e $guess && -x $guess );
}
return;
}
=begin doc
_checkSystem
Test that this system is fully setup for the new xen-create-image
script.
This means that the the companion scripts xt-* are present on the
host and executable.
=end doc
=cut
sub _checkSystem {
my $self = shift;
my @required = qw ( / xt-customize-image
xt-install-image
xt-create-xen-config / );
foreach my $bin ( @required )
{
if ( ! defined( $self->_findBinary( $bin ) ) )
{
$self->log("The script '$bin' was not found.\n",
"Aborting\n\n"
);
exit;
}
}
#
# Make sure that we have Text::Template installed - this
# will be used by `xt-create-xen-config` and if that fails then
# running is pointless.
#
my $test = "use Text::Template";
eval( $test );
if ( ( $@ ) && ( ! $self->{_force} ) )
{
print <<E_O_ERROR;
Aborting: The Text::Template perl module isn't installed or available.
Specify '--force' to skip this check and continue regardless.
E_O_ERROR
exit;
}
#
# Make sure that xen-shell is installed if we've got an --admin
# flag specified
#
if ( $self->{_admins} )
{
my $shell = undef;
$shell = "/usr/bin/xen-login-shell" if ( -x "/usr/bin/xen-login-shell" );
$shell = "/usr/local/bin/xen-login-shell" if ( -x "/usr/bin/local/xen-login-shell" );
if ( !defined( $shell ) )
{
print <<EOF;
You've specified administrator accounts for use with the xen-shell,
however the xen-shell doesn't appear to be installed.
Aborting.
EOF
exit;
}
}
#
# Test the system has a valid (network-script) + (vif-script) setup.
#
return $self->_testXenConfig();
}
=begin doc
Test that the current Xen host has a valid network configuration,
this is designed to help newcomers to Xen.
=end doc
=cut
sub _testXenConfig {
my $self = shift;
# wierdness.
return if ( ! -d "/etc/xen" );
#
# Temporary hash.
#
my %cfg;
#
# Read the configuration file.
#
open( my $config_fh, q{<}, '/etc/xen/xend-config.sxp' )
or die "Failed to read /etc/xen/xend-config.sxp: $!";
while( <$config_fh> )
{
next if ( ! $_ || !length( $_ ) );
# vif
if ( $_ =~ /^\(vif-script ([^)]+)/ )
{
$cfg{'vif-script'} = $1;
}
# network
if ( $_ =~ /^\(network-script ([^)]+)/ )
{
$cfg{'network-script'} = $1;
}
}
close( $config_fh );
if ( !defined( $cfg{'network-script'} ) ||
!defined( $cfg{'vif-script'} ) )
{
print <<EOF;
WARNING
-------
You appear to have a missing vif-script, or network-script, in the
Xen configuration file /etc/xen/xend-config.sxp.
Please fix this and restart Xend, or your guests will not be able
to use any networking!
EOF
}
else
{
if ( ( $cfg{'network-script'} =~ /dummy/i ) ||
( $cfg{'vif-script'} =~ /dummy/i ) )
{
print <<EOF;
WARNING
-------
You appear to have a "dummy" vif-script, or network-script, setting
in the Xen configuration file /etc/xen/xend-config.sxp.
Please fix this and restart Xend, or your guests will not be able to
use any networking!
EOF
}
}
return 1;
}
=head1 AUTHOR
C.J. Adams-Collier, C<< <cjac at colliertech.org> >>
=head1 BUGS
Please report any bugs or feature requests to C<bug-xen-tools at rt.cpan.org>, or through
the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Xen-Tools>. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Xen::Tools
You can also look for information at:
=over 4
=item * RT: CPAN's request tracker
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Xen-Tools>
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/Xen-Tools>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/Xen-Tools>
=item * Search CPAN
L<http://search.cpan.org/dist/Xen-Tools>
=back
=head1 COPYRIGHT & LICENSE
Copyright 2007 C.J. Adams-Collier, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
1; # End of Xen::Tools

View File

@@ -6,6 +6,7 @@ package Xen::Tools::Common;
Xen::Tools::Common - Common funtions used in xen-tools' Perl scripts Xen::Tools::Common - Common funtions used in xen-tools' Perl scripts
=head1 SYNOPSIS =head1 SYNOPSIS
use Xen::Tools::Common; use Xen::Tools::Common;
@@ -19,9 +20,10 @@ use Exporter 'import';
use vars qw(@EXPORT_OK @EXPORT); use vars qw(@EXPORT_OK @EXPORT);
use English; use English;
use File::Which;
@EXPORT = qw(readConfigurationFile xenRunning runCommand setupAdminUsers @EXPORT = qw(readConfigurationFile xenRunning runCommand setupAdminUsers
findXenToolstack findBinary findXenToolstack
logprint_with_config logonly_with_config fail_with_config); logprint_with_config logonly_with_config fail_with_config);
=head1 FUNCTIONS =head1 FUNCTIONS
@@ -138,38 +140,6 @@ sub xenRunning ($$)
return ($running); return ($running);
} }
=head2 findBinary
=begin doc
Find the location of the specified binary on the curent user's PATH.
Return undef if the named binary isn't found.
=end doc
=cut
sub findBinary
{
my ($bin) = (@_);
# strip any path which might be present.
$bin = $2 if ( $bin =~ /(.*)[\/\\](.*)/ );
foreach my $entry ( split( /:/, $ENV{ 'PATH' } ) )
{
# guess of location.
my $guess = $entry . "/" . $bin;
# return it if it exists and is executable
return $guess if ( -e $guess && -x $guess );
}
return undef;
}
=head2 findXenToolstack =head2 findXenToolstack
=begin doc =begin doc
@@ -191,12 +161,12 @@ sub findXenToolstack
return $toolstack if $toolstack; return $toolstack if $toolstack;
} }
my $xm = findBinary('xm'); my $xm = which('xm');
if ($xm and system("$xm list >/dev/null 2>/dev/null") == 0) { if ($xm and system("$xm list >/dev/null 2>/dev/null") == 0) {
return $xm; return $xm;
} }
my $xl = findBinary('xl'); my $xl = which('xl');
if ($xl and system("$xl list >/dev/null 2>/dev/null") == 0) { if ($xl and system("$xl list >/dev/null 2>/dev/null") == 0) {
return $xl; return $xl;
} }

View File

@@ -1,212 +0,0 @@
package Xen::Tools::Log;
use warnings;
use strict;
use Moose;
use File::Spec;
use POSIX; # strftime
use Carp;
=head1 NAME
Xen::Tools::Log - Log Xen::Tools events
=head1 VERSION
Version 0.01
=cut
our $VERSION = '0.01';
=head1 SYNOPSIS
Mostly internal to Xen::Tools. Use this to create a logging mechanism.
my $xtl = Xen::Tools::Log->new( hostname => 'firewall' );
$xtl->print("Yay for logging.");
=head1 FUNCTIONS
=head2 new
Create the log object
=cut
=head2 print
Print the given string both to our screen, and to the logfile.
=cut
sub print {
my $self = shift;
$self->print_screen( @_ );
$self->print_log( @_ );
}
=head2 print_screen
Print the given string to our screen
=cut
sub print_screen {
my $self = shift;
print map { "$_\n" } @_;
}
=head2 print_log
Print the given string to the logfile.
=cut
sub print_log {
my $self = shift;
# Create an RFC 822 conformant date string
my $date = strftime( "%a, %d %b %Y %H:%M:%S %z", localtime );
my $fh = $self->log_fh();
print $fh ( map { "$date - $_" } @_ );
}
=head2 hostname
Attribute storing the hostname this log describes
=cut
has 'hostname' => ( is => 'rw', isa => 'Str', required => 1 );
=head2 logpath
Attribute storing the directory in which the log file resides
=cut
has 'logpath' => ( is => 'rw',
isa => 'Str',
default => '/var/log/xen-tools'
);
=head2 log_fh
FileHandle attribute storing the filehandle of the log
=cut
has 'log_fh' => ( is => 'ro',
isa => 'FileHandle',
lazy => 1,
default => \&_init_fh,
);
=head2 clean_up
Boolean attribute indicating whether the log will be cleaned up when the
logger is closed
=cut
has 'clean_up' => ( is => 'ro',
isa => 'Bool',
default => 0,
);
before 'DESTROY' => sub {
my $self = shift;
# Deconstructor
};
=head2 meta
This is a method which provides access to the current class's meta-
class. Inherited from Moose.
=cut
=begin doc
_init_fh
This private method initializes the logging filehandle, creating the
containing directory if it does not exist.
=end doc
=cut
sub _init_fh {
my $self = shift;
my $logFile =
File::Spec->catfile( $self->logpath(), $self->hostname() . '.log' );
system( qw(mkdir -p), $self->logpath() ) unless -d $self->logpath();
carp "Couldn't create log directory: $!" unless $? == 0;
open( $self->{log_fh}, q{>>}, $logFile ) or
carp "Couldn't open log file for append: $!";
};
=head1 AUTHOR
C.J. Adams-Collier, C<< <cjac at colliertech.org> >>
=head1 BUGS
Please report any bugs or feature requests to C<bug-xen-tools-log at rt.cpan.org>, or through
the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Xen-Tools>. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Xen::Tools
You can also look for information at:
=over 4
=item * RT: CPAN's request tracker
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Xen-Tools>
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/Xen-Tools>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/Xen-Tools>
=item * Search CPAN
L<http://search.cpan.org/dist/Xen-Tools>
=back
=head1 COPYRIGHT & LICENSE
Copyright 2007 C.J. Adams-Collier, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut
1; # End of Xen::Tools::Log

View File

@@ -25,7 +25,7 @@ use Test::More qw( no_plan );
EOF EOF
for i in `grep '^use ' -r .. | grep -v Expect | grep -v POSIX | grep -v Xen:: | grep -v Moose | awk '{print $2}' | tr -d for i in `grep '^use ' -r .. | grep -v Expect | grep -v POSIX | grep -v Xen:: | awk '{print $2}' | tr -d
\;\(\) | sort | uniq`; \ \;\(\) | sort | uniq`; \
do \ do \
echo "BEGIN{ use_ok( '$i' ); }"; \ echo "BEGIN{ use_ok( '$i' ); }"; \

View File

@@ -13,11 +13,6 @@ use strict;
use File::Find; use File::Find;
use Test::More; use Test::More;
eval "use Moose";
plan skip_all => "Moose required for testing Perl syntax"
if $@;
# #
# Find all the files beneath the current directory, # Find all the files beneath the current directory,
# and call 'checkFile' with the name. # and call 'checkFile' with the name.

View File

@@ -1,15 +0,0 @@
#!/usr/bin/perl -I../lib -I./lib
use strict;
use warnings;
use Test::More tests => 1, skip_all => 'Xen::Tools::Log is not used for now';
use File::Temp;
use Xen::Tools::Log;
my $dir = File::Temp::tempdir( CLEANUP => 1 );
my $xtl = Xen::Tools::Log->new( hostname => 'xen-tools-log-test',
logpath => $dir );
ok( $xtl->isa('Xen::Tools::Log') );

View File

@@ -1,23 +0,0 @@
#!/usr/bin/perl -I../lib -I./lib
#
# Test we can load the (stub) Xen::Tools package.
#
use strict;
use warnings;
use Test::More skip_all => 'Xen::Tools is not used for now';
SKIP: {
skip "Test only works as root", 1 if $< > 0;
eval {
use Xen::Tools;
my $xt = Xen::Tools->new( hostname => 'xen-tools-test' );
ok( $xt->isa('Xen::Tools') );
};
}
done_testing();