1
0
mirror of synced 2026-01-26 19:51:56 +00:00

Merge branch 'domaindir' of gitorious.org:xen-tools/xen-tools into domaindir

This commit is contained in:
Axel Beckert
2010-05-28 00:12:04 +02:00
6 changed files with 121 additions and 41 deletions

View File

@@ -216,19 +216,35 @@ xen-create-image - Easily create new Xen instances with networking and OpenSSH.
Mandatory options:
--domaindir=dir
--dir=dir Specify where the output images should go.
Subdirectories will be created for each guest
If you do not wish to use loopback images specify --lvm
or --evms. (These three options are mutually exclusive.)
Subdirectories will be created for each guest.
Using --dir will create subdirectory domains as before
for backwards compatibility, e.g. if you use
--dir=foo, the default disk image will go to
foo/domains/$hostname/disk.img.
Using --domaindir will create direct subdirectories
named after the hostname as discussed in
http://bugs.debian.org/477238, e.g. if you use
--domaindir=foo, the default disk image will go to
foo/$hostname/disk.img.
If you do not wish to use loopback images specify
--lvm or --evms. (These three respectively four
options are mutually exclusive.)
--lvm=vg Specify the volume group to save images within.
If you do not wish to use LVM specify --dir or --evms.
(These three options are mutually exclusive.)
If you do not wish to use LVM specify --evms. or
--dir/--domaindir (These three respectively four
options are mutually exclusive.)
--evms=lvm2/container
Specify the container to save images within, i.e. '--evms
lvm2/mycontainer'. If you do not wish to use EVMS specify
--dir or --lvm. (These three options are mutually exclusive.)
--dir/--domaindir or --lvm. (These three respectively
four options are mutually exclusive.)
--hostname=host.example.org
Set the hostname of the new guest system. Ideally
@@ -862,7 +878,7 @@ checkBinariesPresent();
if ( !$#PARTITIONS )
{
populatePartitionsData()
if ( ( $CONFIG{ 'dir' } ) ||
if ( ( $CONFIG{ 'domaindir' } ) ||
( $CONFIG{ 'evms' } ) ||
( $CONFIG{ 'lvm' } ) );
}
@@ -878,7 +894,7 @@ showSummary();
#
# Create and format the images if we're using loopback filesystems.
#
if ( $CONFIG{ 'dir' } )
if ( $CONFIG{ 'domaindir' } )
{
#
@@ -1447,6 +1463,7 @@ sub parseCommandLineArguments
my %install;
$install{ 'evms' } = undef;
$install{ 'dir' } = undef;
$install{ 'domaindir' } = undef;
$install{ 'lvm' } = undef;
$install{ 'image-dev' } = undef;
@@ -1469,6 +1486,7 @@ sub parseCommandLineArguments
# Locations
"dir=s", \$install{ 'dir' },
"domaindir=s", \$install{ 'domaindir' },
"evms=s", \$install{ 'evms' },
"kernel=s", \$CONFIG{ 'kernel' },
"initrd=s", \$CONFIG{ 'initrd' },
@@ -1557,12 +1575,22 @@ sub parseCommandLineArguments
#
# Now make ensure that the command line setting of '--lvm', '--evms'
# and '--dir=x' override anything specified in the configuration file.
# Now make ensure that the command line setting of '--lvm', '--evms',
# '--domaindir=x' and '--dir=x' override anything specified in the
# configuration file.
#
if ( $install{ 'dir' } )
{
$CONFIG{ 'dir' } = $install{ 'dir' };
$CONFIG{ 'dir' } = undef;
$CONFIG{ 'domaindir' } = $install{ 'dir' }.'/domains';
$CONFIG{ 'evms' } = undef;
$CONFIG{ 'lvm' } = undef;
$CONFIG{ 'image-dev' } = undef;
}
if ( $install{ 'domaindir' } )
{
$CONFIG{ 'dir' } = undef;
$CONFIG{ 'domaindir' } = $install{ 'domaindir' };
$CONFIG{ 'evms' } = undef;
$CONFIG{ 'lvm' } = undef;
$CONFIG{ 'image-dev' } = undef;
@@ -1570,6 +1598,7 @@ sub parseCommandLineArguments
if ( $install{ 'evms' } )
{
$CONFIG{ 'dir' } = undef;
$CONFIG{ 'domaindir' } = undef;
$CONFIG{ 'evms' } = $install{ 'evms' };
$CONFIG{ 'lvm' } = undef;
$CONFIG{ 'image-dev' } = undef;
@@ -1577,6 +1606,7 @@ sub parseCommandLineArguments
if ( $install{ 'lvm' } )
{
$CONFIG{ 'dir' } = undef;
$CONFIG{ 'domaindir' } = undef;
$CONFIG{ 'evms' } = undef;
$CONFIG{ 'lvm' } = $install{ 'lvm' };
$CONFIG{ 'image-dev' } = undef;
@@ -1584,6 +1614,7 @@ sub parseCommandLineArguments
if ( $install{ 'image-dev' } )
{
$CONFIG{ 'dir' } = undef;
$CONFIG{ 'domaindir' } = undef;
$CONFIG{ 'evms' } = undef;
$CONFIG{ 'lvm' } = undef;
$CONFIG{ 'image-dev' } = $install{ 'image-dev' };
@@ -1709,7 +1740,7 @@ sub checkArguments
my $err = <<E_OR;
We are trying to configure an installation of $CONFIG{'dist'} in
$CONFIG{'dir'} - but there is no hook directory for us to use.
$CONFIG{'domaindir'} - but there is no hook directory for us to use.
This means we do not know how to configure this installation.
@@ -2107,7 +2138,7 @@ sub checkBinariesPresent
#
# Image type specific binaries
#
if ( defined( $CONFIG{ 'dir' } ) )
if ( defined( $CONFIG{ 'domaindir' } ) )
{
# loopback image
@@ -2642,7 +2673,7 @@ sub createLoopbackImages
#
# Make sure we have the relevant output directory.
#
my $output = $CONFIG{ 'dir' } . "/domains/" . $CONFIG{ 'hostname' };
my $output = $CONFIG{ 'domaindir' } . '/' . $CONFIG{ 'hostname' };
if ( !-d $output )
{
@@ -2666,7 +2697,7 @@ sub createLoopbackImages
foreach my $partition (@PARTITIONS)
{
my $disk =
$CONFIG{ 'dir' } . '/domains/' . $CONFIG{ 'hostname' } . '/' .
$CONFIG{ 'domaindir' } . '/' . $CONFIG{ 'hostname' } . '/' .
$partition->{ 'name' } . '.img';
if ( -e $disk )
@@ -2685,7 +2716,7 @@ sub createLoopbackImages
foreach my $partition (@PARTITIONS)
{
my $disk =
$CONFIG{ 'dir' } . '/domains/' . $CONFIG{ 'hostname' } . '/' .
$CONFIG{ 'domaindir' } . '/' . $CONFIG{ 'hostname' } . '/' .
$partition->{ 'name' } . '.img';
#

View File

@@ -15,9 +15,12 @@ xen-delete-image - Delete previously created Xen instances.
--verbose Show diagnostic output.
General options:
--dir Specify the output directory where images were previously saved.
--lvm Specify the LVM volume to use.
--evms Specify the EVMS container to use.
--dir Specify the output directory where images were previously
saved. (old style)
--domaindir Specify the output directory where images were previously
saved. (new style)
--lvm Specify the LVM volume to use.
--evms Specify the EVMS container to use.
Specifying hosts:
--hostname Specify the image name to delete.
@@ -33,7 +36,14 @@ xen-delete-image - Delete previously created Xen instances.
=over 8
=item B<--dir>
Specify the output directory where images were previously saved.
Specify the output directory where images were previously saved. Looks
for directories named after the hostname in a subdirectory
"domains". (old style, see xen-create-image(1) for details)
=item B<--domaindir>
Specify the output directory where images were previously saved. Looks
for directories named after the hostname directorly in this
directory. (new style, see xen-create-image(1) for details)
=item B<--evms>
Specify the EVMS container where images were previously saved.
@@ -345,6 +355,7 @@ sub parseCommandLineArguments
# Parse options.
#
GetOptions( "dir=s", \$CONFIG{ 'dir' },
"domaindir=s", \$CONFIG{ 'domaindir' },
"dry-run", \$CONFIG{ 'dry-run' },
"lvm=s", \$CONFIG{ 'lvm' },
"evms=s", \$CONFIG{ 'evms' },
@@ -359,7 +370,6 @@ sub parseCommandLineArguments
pod2usage(1) if $HELP;
pod2usage( -verbose => 2 ) if $MANUAL;
if ($VERSION)
{
my $REVISION = '$Revision: 1.41 $';
@@ -373,6 +383,11 @@ sub parseCommandLineArguments
exit;
}
if ($CONFIG{ 'dir' }) {
$CONFIG{ 'domaindir' } = $CONFIG{ 'dir' }.'/domains';
$CONFIG{ 'dir' } = undef;
}
}
@@ -401,7 +416,7 @@ sub checkArguments
# Make sure we got one and only one installation method.
#
my $count = 0;
foreach my $type (qw/dir lvm evms/)
foreach my $type (qw/dir domaindir lvm evms/)
{
$count += 1 if defined( $CONFIG{ $type } );
}
@@ -414,6 +429,7 @@ sub checkArguments
{
print "Please select one and only one of the installation methods:\n";
print " --dir\n";
print " --domaindir\n";
print " --evms\n";
print " --lvm\n";
exit;
@@ -504,9 +520,9 @@ sub deleteXenImage
}
if ( defined( $CONFIG{ 'dir' } ) )
if ( defined( $CONFIG{ 'domaindir' } ) )
{
my $prefix = $CONFIG{ 'dir' } . "/domains/";
my $prefix = $CONFIG{ 'domaindir' } . '/';
#
# Now remove the directory.

View File

@@ -15,10 +15,11 @@ xen-resize-guest - Resize a loopback or LVM based xen guest.
--verbose Show diagnostic output.
General Options:
--add Specify the amount of space to add, e.g. --add=1gb
--dir Specify the path to the loopback image root.
--force Force the resize to happen without a last-chance delay.
--hostname Specify the hostname of the guest to resize.
--add Specify the amount of space to add, e.g. --add=1gb
--dir Specify the path to the loopback image root. (old style)
--domaindir Specify the path to the loopback image root. (new style)
--force Force the resize to happen without a last-chance delay.
--hostname Specify the hostname of the guest to resize.
=cut
@@ -28,10 +29,14 @@ xen-resize-guest - Resize a loopback or LVM based xen guest.
=over 8
=item B<--add>
Specify the amount of storage to add to the primary disk.
Specify the amount of storage to add to the primary disk. Looks
for directories named after the hostname in a subdirectory
"domains". (old style, see xen-create-image(1) for details)
=item B<--dir>
Specify the directory where the loopback files are based.
=item B<--domaindir>
Specify the directory where the loopback files are based. Looks
for directories named after the hostname directorly in this
directory. (new style, see xen-create-image(1) for details)
=item B<--force>
Don't pause for 10 seconds prior to commencing.
@@ -143,14 +148,14 @@ testArguments();
#
my $path = undef;
if ( $CONFIG{ 'dir' } )
if ( $CONFIG{ 'domaindir' } )
{
#
# Make sure we can find the disk
#
$path =
$CONFIG{ 'dir' } . "/domains/" . $CONFIG{ 'hostname' } . "/disk.img";
$CONFIG{ 'domaindir' } . '/' . $CONFIG{ 'hostname' } . "/disk.img";
if ( !-e $path )
{
print <<EOF;
@@ -392,6 +397,7 @@ sub parseCommandLineArguments
# Misc. options
"add=s", \$CONFIG{ 'add' },
"dir=s", \$install{ 'dir' },
"domaindir=s",\$install{ 'domaindir' },
"lvm=s", \$install{ 'lvm' },
"hostname=s", \$CONFIG{ 'hostname' },
"force", \$CONFIG{ 'force' },
@@ -426,7 +432,15 @@ sub parseCommandLineArguments
}
if ( $install{ 'dir' } )
{
$CONFIG{ 'dir' } = $install{ 'dir' };
$CONFIG{ 'domaindir' } = $install{ 'dir' }.'/domains';
$CONFIG{ 'dir' } = undef;
$CONFIG{ 'lvm' } = undef;
delete $CONFIG{ 'lvm' };
}
if ( $install{ 'domaindir' } )
{
$CONFIG{ 'domaindir' } = $install{ 'domaindir' };
$CONFIG{ 'dir' } = undef;
$CONFIG{ 'lvm' } = undef;
delete $CONFIG{ 'lvm' };
}
@@ -493,18 +507,20 @@ EOF
if ( defined( $CONFIG{ 'lvm' } ) && length( $CONFIG{ 'lvm' } ) );
$options += 1
if ( defined( $CONFIG{ 'dir' } ) && length( $CONFIG{ 'dir' } ) );
$options += 1
if ( defined( $CONFIG{ 'domaindir' } ) && length( $CONFIG{ 'domaindir' } ) );
#
# Report
#
if ( $options == 0 )
{
print "Please specify one of --lvm or --dir\n";
print "Please specify one of --lvm, --domaindir or --dir\n";
exit 1;
}
if ( $options > 1 )
{
print "Please specify only one of --lvm or --dir - not both!\n";
print "Please specify only one of --lvm, --domaindir or --dir - not several of them!\n";
exit 1;
}

View File

@@ -14,7 +14,8 @@ xen-update-image - Update the software installed upon offline Xen images.
--version Show the version number and exit.
General Options:
--dir Specify the directory which contains the image(s).
--dir Specify the directory which contains the image(s). (old style)
--domaindir Specify the directory which contains the image(s). (new style)
--lvm Specify the LVM volume group which contains the image(s).
--evms Specify the EVMS container which contains the image(s).
@@ -27,7 +28,14 @@ xen-update-image - Update the software installed upon offline Xen images.
=over 8
=item B<--dir>
Specify the directory which contains the image(s).
Specify the directory which contains the image(s). Looks
for directories named after the hostname in a subdirectory
"domains". (old style, see xen-create-image(1) for details)
=item B<--domaindir>
Specify the directory which contains the image(s). Looks
for directories named after the hostname directorly in this
directory. (new style, see xen-create-image(1) for details)
=item B<--evms>
Specify the EVMS container which contains the image(s).
@@ -214,7 +222,7 @@ sub updateXenImage
{
# The loopback image.
$img = $CONFIG{ 'dir' } . "/domains/" . $name . "/disk.img";
$img = $CONFIG{ 'domaindir' } . '/' . $name . "/disk.img";
if ( !-e $img )
{
@@ -438,6 +446,7 @@ sub parseCommandLineArguments
# Parse options.
#
GetOptions( "dir=s", \$CONFIG{ 'dir' }, "lvm=s", \$CONFIG{ 'lvm' },
"domaindir=s", \$CONFIG{ 'dir' },
"evms=s", \$CONFIG{ 'evms' }, "help", \$HELP,
"manual", \$MANUAL, "version", \$VERSION
);
@@ -457,6 +466,11 @@ sub parseCommandLineArguments
exit;
}
if ($CONFIG{ 'dir' }) {
$CONFIG{ 'domaindir' } = $CONFIG{ 'dir' }.'/domains';
$CONFIG{ 'dir' } = undef;
}
}
@@ -477,7 +491,7 @@ sub checkArguments
# Make sure we got one and only one installation method.
#
my $count = 0;
foreach my $type (qw/dir lvm evms/)
foreach my $type (qw/dir domaindir lvm evms/)
{
$count += 1 if defined( $CONFIG{ $type } );
}
@@ -490,6 +504,7 @@ sub checkArguments
{
print "Please select one and only one of the installation methods:\n";
print " --dir\n";
print " --domaindir\n";
print " --evms\n";
print " --lvm\n";
exit;

View File

@@ -419,7 +419,7 @@ sub createXenConfig
}
else
{
$ENV{ 'image_prefix' } = "file:$ENV{'dir'}/domains/$ENV{'hostname'}/";
$ENV{ 'image_prefix' } = "file:$ENV{'domaindir'}/$ENV{'hostname'}/";
$ENV{ 'image_suffix' } = '.img';
importPartitionsFromEnvironment();
}

2
debian/changelog vendored
View File

@@ -41,6 +41,8 @@ xen-tools (4.2~rc1-1) UNRELEASED; urgency=low
- Checks for debootstrap and cdebootstrap, uses debootstrap if both
are installed (Changed "Depends: debootstrap" to "Depends:
debootstrap | cdebootstrap" in debian/control)
- Introduces the --domaindir option as alternative to --dir which
always appends "/domains/" to the path. (Closes: #477238)
* Removal of /etc/bash_completion.d/xm from the package since
bash-completion ships a more elaborate version of that file. (Closes:
#566683, #550590, LP: #538917, #484098)