1
0
mirror of synced 2026-02-20 22:05:15 +00:00

Compare commits

...

3 Commits

Author SHA1 Message Date
Axel Beckert
2ca9232fe9 Merge branch 'domaindir' of gitorious.org:xen-tools/xen-tools into domaindir 2010-05-28 00:12:04 +02:00
Axel Beckert
7d9ee76da3 Offer --domaindir as alternativ to --dir
See http://bugs.debian.org/477238 for the discussion.
2010-05-26 23:32:18 +02:00
Axel Beckert
aba94e4c73 xen-update-image: Reformat source code comment to fit into 80 columns 2010-05-26 23:26:09 +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: Mandatory options:
--domaindir=dir
--dir=dir Specify where the output images should go. --dir=dir Specify where the output images should go.
Subdirectories will be created for each guest 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.) 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. --lvm=vg Specify the volume group to save images within.
If you do not wish to use LVM specify --dir or --evms. If you do not wish to use LVM specify --evms. or
(These three options are mutually exclusive.) --dir/--domaindir (These three respectively four
options are mutually exclusive.)
--evms=lvm2/container --evms=lvm2/container
Specify the container to save images within, i.e. '--evms Specify the container to save images within, i.e. '--evms
lvm2/mycontainer'. If you do not wish to use EVMS specify 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 --hostname=host.example.org
Set the hostname of the new guest system. Ideally Set the hostname of the new guest system. Ideally
@@ -862,7 +878,7 @@ checkBinariesPresent();
if ( !$#PARTITIONS ) if ( !$#PARTITIONS )
{ {
populatePartitionsData() populatePartitionsData()
if ( ( $CONFIG{ 'dir' } ) || if ( ( $CONFIG{ 'domaindir' } ) ||
( $CONFIG{ 'evms' } ) || ( $CONFIG{ 'evms' } ) ||
( $CONFIG{ 'lvm' } ) ); ( $CONFIG{ 'lvm' } ) );
} }
@@ -878,7 +894,7 @@ showSummary();
# #
# Create and format the images if we're using loopback filesystems. # 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; my %install;
$install{ 'evms' } = undef; $install{ 'evms' } = undef;
$install{ 'dir' } = undef; $install{ 'dir' } = undef;
$install{ 'domaindir' } = undef;
$install{ 'lvm' } = undef; $install{ 'lvm' } = undef;
$install{ 'image-dev' } = undef; $install{ 'image-dev' } = undef;
@@ -1469,6 +1486,7 @@ sub parseCommandLineArguments
# Locations # Locations
"dir=s", \$install{ 'dir' }, "dir=s", \$install{ 'dir' },
"domaindir=s", \$install{ 'domaindir' },
"evms=s", \$install{ 'evms' }, "evms=s", \$install{ 'evms' },
"kernel=s", \$CONFIG{ 'kernel' }, "kernel=s", \$CONFIG{ 'kernel' },
"initrd=s", \$CONFIG{ 'initrd' }, "initrd=s", \$CONFIG{ 'initrd' },
@@ -1557,12 +1575,22 @@ sub parseCommandLineArguments
# #
# Now make ensure that the command line setting of '--lvm', '--evms' # Now make ensure that the command line setting of '--lvm', '--evms',
# and '--dir=x' override anything specified in the configuration file. # '--domaindir=x' and '--dir=x' override anything specified in the
# configuration file.
# #
if ( $install{ 'dir' } ) 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{ 'evms' } = undef;
$CONFIG{ 'lvm' } = undef; $CONFIG{ 'lvm' } = undef;
$CONFIG{ 'image-dev' } = undef; $CONFIG{ 'image-dev' } = undef;
@@ -1570,6 +1598,7 @@ sub parseCommandLineArguments
if ( $install{ 'evms' } ) if ( $install{ 'evms' } )
{ {
$CONFIG{ 'dir' } = undef; $CONFIG{ 'dir' } = undef;
$CONFIG{ 'domaindir' } = undef;
$CONFIG{ 'evms' } = $install{ 'evms' }; $CONFIG{ 'evms' } = $install{ 'evms' };
$CONFIG{ 'lvm' } = undef; $CONFIG{ 'lvm' } = undef;
$CONFIG{ 'image-dev' } = undef; $CONFIG{ 'image-dev' } = undef;
@@ -1577,6 +1606,7 @@ sub parseCommandLineArguments
if ( $install{ 'lvm' } ) if ( $install{ 'lvm' } )
{ {
$CONFIG{ 'dir' } = undef; $CONFIG{ 'dir' } = undef;
$CONFIG{ 'domaindir' } = undef;
$CONFIG{ 'evms' } = undef; $CONFIG{ 'evms' } = undef;
$CONFIG{ 'lvm' } = $install{ 'lvm' }; $CONFIG{ 'lvm' } = $install{ 'lvm' };
$CONFIG{ 'image-dev' } = undef; $CONFIG{ 'image-dev' } = undef;
@@ -1584,6 +1614,7 @@ sub parseCommandLineArguments
if ( $install{ 'image-dev' } ) if ( $install{ 'image-dev' } )
{ {
$CONFIG{ 'dir' } = undef; $CONFIG{ 'dir' } = undef;
$CONFIG{ 'domaindir' } = undef;
$CONFIG{ 'evms' } = undef; $CONFIG{ 'evms' } = undef;
$CONFIG{ 'lvm' } = undef; $CONFIG{ 'lvm' } = undef;
$CONFIG{ 'image-dev' } = $install{ 'image-dev' }; $CONFIG{ 'image-dev' } = $install{ 'image-dev' };
@@ -1709,7 +1740,7 @@ sub checkArguments
my $err = <<E_OR; my $err = <<E_OR;
We are trying to configure an installation of $CONFIG{'dist'} in 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. This means we do not know how to configure this installation.
@@ -2107,7 +2138,7 @@ sub checkBinariesPresent
# #
# Image type specific binaries # Image type specific binaries
# #
if ( defined( $CONFIG{ 'dir' } ) ) if ( defined( $CONFIG{ 'domaindir' } ) )
{ {
# loopback image # loopback image
@@ -2642,7 +2673,7 @@ sub createLoopbackImages
# #
# Make sure we have the relevant output directory. # Make sure we have the relevant output directory.
# #
my $output = $CONFIG{ 'dir' } . "/domains/" . $CONFIG{ 'hostname' }; my $output = $CONFIG{ 'domaindir' } . '/' . $CONFIG{ 'hostname' };
if ( !-d $output ) if ( !-d $output )
{ {
@@ -2666,7 +2697,7 @@ sub createLoopbackImages
foreach my $partition (@PARTITIONS) foreach my $partition (@PARTITIONS)
{ {
my $disk = my $disk =
$CONFIG{ 'dir' } . '/domains/' . $CONFIG{ 'hostname' } . '/' . $CONFIG{ 'domaindir' } . '/' . $CONFIG{ 'hostname' } . '/' .
$partition->{ 'name' } . '.img'; $partition->{ 'name' } . '.img';
if ( -e $disk ) if ( -e $disk )
@@ -2685,7 +2716,7 @@ sub createLoopbackImages
foreach my $partition (@PARTITIONS) foreach my $partition (@PARTITIONS)
{ {
my $disk = my $disk =
$CONFIG{ 'dir' } . '/domains/' . $CONFIG{ 'hostname' } . '/' . $CONFIG{ 'domaindir' } . '/' . $CONFIG{ 'hostname' } . '/' .
$partition->{ 'name' } . '.img'; $partition->{ 'name' } . '.img';
# #

View File

@@ -15,7 +15,10 @@ xen-delete-image - Delete previously created Xen instances.
--verbose Show diagnostic output. --verbose Show diagnostic output.
General options: General options:
--dir Specify the output directory where images were previously saved. --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. --lvm Specify the LVM volume to use.
--evms Specify the EVMS container to use. --evms Specify the EVMS container to use.
@@ -33,7 +36,14 @@ xen-delete-image - Delete previously created Xen instances.
=over 8 =over 8
=item B<--dir> =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> =item B<--evms>
Specify the EVMS container where images were previously saved. Specify the EVMS container where images were previously saved.
@@ -345,6 +355,7 @@ sub parseCommandLineArguments
# Parse options. # Parse options.
# #
GetOptions( "dir=s", \$CONFIG{ 'dir' }, GetOptions( "dir=s", \$CONFIG{ 'dir' },
"domaindir=s", \$CONFIG{ 'domaindir' },
"dry-run", \$CONFIG{ 'dry-run' }, "dry-run", \$CONFIG{ 'dry-run' },
"lvm=s", \$CONFIG{ 'lvm' }, "lvm=s", \$CONFIG{ 'lvm' },
"evms=s", \$CONFIG{ 'evms' }, "evms=s", \$CONFIG{ 'evms' },
@@ -359,7 +370,6 @@ sub parseCommandLineArguments
pod2usage(1) if $HELP; pod2usage(1) if $HELP;
pod2usage( -verbose => 2 ) if $MANUAL; pod2usage( -verbose => 2 ) if $MANUAL;
if ($VERSION) if ($VERSION)
{ {
my $REVISION = '$Revision: 1.41 $'; my $REVISION = '$Revision: 1.41 $';
@@ -373,6 +383,11 @@ sub parseCommandLineArguments
exit; 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. # Make sure we got one and only one installation method.
# #
my $count = 0; my $count = 0;
foreach my $type (qw/dir lvm evms/) foreach my $type (qw/dir domaindir lvm evms/)
{ {
$count += 1 if defined( $CONFIG{ $type } ); $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 "Please select one and only one of the installation methods:\n";
print " --dir\n"; print " --dir\n";
print " --domaindir\n";
print " --evms\n"; print " --evms\n";
print " --lvm\n"; print " --lvm\n";
exit; 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. # Now remove the directory.

View File

@@ -16,7 +16,8 @@ xen-resize-guest - Resize a loopback or LVM based xen guest.
General Options: General Options:
--add Specify the amount of space to add, e.g. --add=1gb --add Specify the amount of space to add, e.g. --add=1gb
--dir Specify the path to the loopback image root. --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. --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.
@@ -28,10 +29,14 @@ xen-resize-guest - Resize a loopback or LVM based xen guest.
=over 8 =over 8
=item B<--add> =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> =item B<--domaindir>
Specify the directory where the loopback files are based. 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> =item B<--force>
Don't pause for 10 seconds prior to commencing. Don't pause for 10 seconds prior to commencing.
@@ -143,14 +148,14 @@ testArguments();
# #
my $path = undef; my $path = undef;
if ( $CONFIG{ 'dir' } ) if ( $CONFIG{ 'domaindir' } )
{ {
# #
# Make sure we can find the disk # Make sure we can find the disk
# #
$path = $path =
$CONFIG{ 'dir' } . "/domains/" . $CONFIG{ 'hostname' } . "/disk.img"; $CONFIG{ 'domaindir' } . '/' . $CONFIG{ 'hostname' } . "/disk.img";
if ( !-e $path ) if ( !-e $path )
{ {
print <<EOF; print <<EOF;
@@ -392,6 +397,7 @@ sub parseCommandLineArguments
# Misc. options # Misc. options
"add=s", \$CONFIG{ 'add' }, "add=s", \$CONFIG{ 'add' },
"dir=s", \$install{ 'dir' }, "dir=s", \$install{ 'dir' },
"domaindir=s",\$install{ 'domaindir' },
"lvm=s", \$install{ 'lvm' }, "lvm=s", \$install{ 'lvm' },
"hostname=s", \$CONFIG{ 'hostname' }, "hostname=s", \$CONFIG{ 'hostname' },
"force", \$CONFIG{ 'force' }, "force", \$CONFIG{ 'force' },
@@ -426,7 +432,15 @@ sub parseCommandLineArguments
} }
if ( $install{ 'dir' } ) 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; $CONFIG{ 'lvm' } = undef;
delete $CONFIG{ 'lvm' }; delete $CONFIG{ 'lvm' };
} }
@@ -493,18 +507,20 @@ EOF
if ( defined( $CONFIG{ 'lvm' } ) && length( $CONFIG{ 'lvm' } ) ); if ( defined( $CONFIG{ 'lvm' } ) && length( $CONFIG{ 'lvm' } ) );
$options += 1 $options += 1
if ( defined( $CONFIG{ 'dir' } ) && length( $CONFIG{ 'dir' } ) ); if ( defined( $CONFIG{ 'dir' } ) && length( $CONFIG{ 'dir' } ) );
$options += 1
if ( defined( $CONFIG{ 'domaindir' } ) && length( $CONFIG{ 'domaindir' } ) );
# #
# Report # Report
# #
if ( $options == 0 ) if ( $options == 0 )
{ {
print "Please specify one of --lvm or --dir\n"; print "Please specify one of --lvm, --domaindir or --dir\n";
exit 1; exit 1;
} }
if ( $options > 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; 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. --version Show the version number and exit.
General Options: 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). --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).
@@ -27,7 +28,14 @@ xen-update-image - Update the software installed upon offline Xen images.
=over 8 =over 8
=item B<--dir> =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> =item B<--evms>
Specify the EVMS container which contains the image(s). Specify the EVMS container which contains the image(s).
@@ -214,7 +222,7 @@ sub updateXenImage
{ {
# The loopback image. # The loopback image.
$img = $CONFIG{ 'dir' } . "/domains/" . $name . "/disk.img"; $img = $CONFIG{ 'domaindir' } . '/' . $name . "/disk.img";
if ( !-e $img ) if ( !-e $img )
{ {
@@ -438,6 +446,7 @@ sub parseCommandLineArguments
# Parse options. # Parse options.
# #
GetOptions( "dir=s", \$CONFIG{ 'dir' }, "lvm=s", \$CONFIG{ 'lvm' }, GetOptions( "dir=s", \$CONFIG{ 'dir' }, "lvm=s", \$CONFIG{ 'lvm' },
"domaindir=s", \$CONFIG{ 'dir' },
"evms=s", \$CONFIG{ 'evms' }, "help", \$HELP, "evms=s", \$CONFIG{ 'evms' }, "help", \$HELP,
"manual", \$MANUAL, "version", \$VERSION "manual", \$MANUAL, "version", \$VERSION
); );
@@ -457,6 +466,11 @@ sub parseCommandLineArguments
exit; 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. # Make sure we got one and only one installation method.
# #
my $count = 0; my $count = 0;
foreach my $type (qw/dir lvm evms/) foreach my $type (qw/dir domaindir lvm evms/)
{ {
$count += 1 if defined( $CONFIG{ $type } ); $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 "Please select one and only one of the installation methods:\n";
print " --dir\n"; print " --dir\n";
print " --domaindir\n";
print " --evms\n"; print " --evms\n";
print " --lvm\n"; print " --lvm\n";
exit; exit;

View File

@@ -419,7 +419,7 @@ sub createXenConfig
} }
else else
{ {
$ENV{ 'image_prefix' } = "file:$ENV{'dir'}/domains/$ENV{'hostname'}/"; $ENV{ 'image_prefix' } = "file:$ENV{'domaindir'}/$ENV{'hostname'}/";
$ENV{ 'image_suffix' } = '.img'; $ENV{ 'image_suffix' } = '.img';
importPartitionsFromEnvironment(); 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 - Checks for debootstrap and cdebootstrap, uses debootstrap if both
are installed (Changed "Depends: debootstrap" to "Depends: are installed (Changed "Depends: debootstrap" to "Depends:
debootstrap | cdebootstrap" in debian/control) 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 * Removal of /etc/bash_completion.d/xm from the package since
bash-completion ships a more elaborate version of that file. (Closes: bash-completion ships a more elaborate version of that file. (Closes:
#566683, #550590, LP: #538917, #484098) #566683, #550590, LP: #538917, #484098)