|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH OSSTEST v2 08/18] Toolstack: Refactor guest lifecycle.
Implement destory/create as per toolstack methods, including implementing the
libvirt version which previously didn't work. To do this we use the virsh
capability to convert an xl/xm style config file into the correct XML.
xend basically calls into the xl helper since they are compatible.
xl/x, uses ->{Command} which will eventually become private.
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
Osstest/TestSupport.pm | 5 ++---
Osstest/Toolstack/libvirt.pm | 20 ++++++++++++++++++++
Osstest/Toolstack/xend.pm | 5 +++++
Osstest/Toolstack/xl.pm | 13 +++++++++++++
ts-guest-saverestore | 2 +-
ts-guest-start | 4 +---
ts-windows-install | 7 +------
7 files changed, 43 insertions(+), 13 deletions(-)
diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index 616f7ed..16ab4c6 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -1326,13 +1326,12 @@ sub guest_await_shutdown ($$$) {
sub guest_destroy ($$) {
my ($ho,$gho) = @_;
- target_cmd_root($ho, toolstack($ho)->{Command}." destroy $gho->{Name}",
40);
+ toolstack($ho)->destroy($gho);
}
sub guest_create ($$) {
my ($ho,$gho) = @_;
- my $ts= toolstack($ho);
- target_cmd_root($ho, $ts->{Command}." create $gho->{CfgPath}", 100);
+ toolstack($ho)->create($gho->{CfgPath});
}
diff --git a/Osstest/Toolstack/libvirt.pm b/Osstest/Toolstack/libvirt.pm
index 90fe434..ea83995 100644
--- a/Osstest/Toolstack/libvirt.pm
+++ b/Osstest/Toolstack/libvirt.pm
@@ -20,15 +20,35 @@ package Osstest::Toolstack::libvirt;
use strict;
use warnings;
+use Osstest::TestSupport;
+
sub new {
my ($class, $ho, $methname,$asset) = @_;
return bless { Name => "libvirt",
Host => $ho,
NewDaemons => [qw(libvirtd)],
Dom0MemFixed => 1,
+ CfgPathVar => 'cfgpath',
Command => 'virsh',
ExtraPackages => [qw(libnl1 libavahi-client3)],
}, $class;
}
+sub destroy ($$) {
+ my ($self,$gho) = @_;
+ my $gn = $gho->{Name};
+ target_cmd_root($self->{Host}, "virsh destroy $gn", 40);
+}
+
+sub create ($$) {
+ my ($self,$cfg) = @_;
+ my $ho = $self->{Host};
+ my $lcfg = $cfg;
+ $lcfg =~ s,/,-,g;
+ $lcfg = "$ho->{Name}--$lcfg";
+ target_cmd_root($ho, "virsh domxml-from-native xen-xm $cfg > $cfg.xml",
30);
+ target_getfile_root($ho,60,"$cfg.xml", "$stash/$lcfg");
+ target_cmd_root($ho, "virsh create --file $cfg.xml", 100);
+}
+
1;
diff --git a/Osstest/Toolstack/xend.pm b/Osstest/Toolstack/xend.pm
index 881417d..c921c20 100644
--- a/Osstest/Toolstack/xend.pm
+++ b/Osstest/Toolstack/xend.pm
@@ -19,6 +19,7 @@ package Osstest::Toolstack::xend;
use strict;
use warnings;
+use Osstest::Toolstack::xl;
sub new {
my ($class, $ho, $methname,$asset) = @_;
@@ -32,4 +33,8 @@ sub new {
}, $class;
}
+# Defer to xl driver for most things
+sub destroy { return &Osstest::Toolstack::xl::destroy; }
+sub create { return &Osstest::Toolstack::xl::create; }
+
1;
diff --git a/Osstest/Toolstack/xl.pm b/Osstest/Toolstack/xl.pm
index 0b66201..12417ca 100644
--- a/Osstest/Toolstack/xl.pm
+++ b/Osstest/Toolstack/xl.pm
@@ -20,6 +20,8 @@ package Osstest::Toolstack::xl;
use strict;
use warnings;
+use Osstest::TestSupport;
+
sub new {
my ($class, $ho, $methname,$asset) = @_;
return bless { Name => "xl",
@@ -32,4 +34,15 @@ sub new {
}, $class;
}
+sub destroy ($$) {
+ my ($self,$gho) = @_;
+ my $gn = $gho->{Name};
+ target_cmd_root($self->{Host}, $self->{Command}." destroy $gn", 40);
+}
+
+sub create ($$) {
+ my ($self,$cfg) = @_;
+ target_cmd_root($self->{Host}, $self->{Command}." create $cfg", 100);
+}
+
1;
diff --git a/ts-guest-saverestore b/ts-guest-saverestore
index 9e04ae9..8911aed 100755
--- a/ts-guest-saverestore
+++ b/ts-guest-saverestore
@@ -38,7 +38,7 @@ sub restore () {
toolstack($ho)->{Command}
." restore "
.(toolstack($ho)->{RestoreNeedsConfig} ?
- $r{ $gho->{Guest}.'_'. toolstack($ho)->{CfgPathVar} } :
'')
+ $gho->{CfgPath} : '')
." image", 200);
target_ping_check_up($gho);
}
diff --git a/ts-guest-start b/ts-guest-start
index bfbb734..fb6a174 100755
--- a/ts-guest-start
+++ b/ts-guest-start
@@ -26,9 +26,7 @@ our ($ho,$gho) = ts_get_host_guest(@ARGV);
sub start () {
guest_umount_lv($ho, $gho);
- my $cmd= toolstack($ho)->{Command}." create ".
- $r{ $gho->{Guest}.'_'. toolstack($ho)->{CfgPathVar} };
- target_cmd_root($ho, $cmd, 30);
+ toolstack($ho)->create($r{ $gho->{Guest}.'_'. toolstack($ho)->{CfgPathVar}
});
}
sub checkstart () {
diff --git a/ts-windows-install b/ts-windows-install
index 4b06310..f12a4f4 100755
--- a/ts-windows-install
+++ b/ts-windows-install
@@ -49,13 +49,8 @@ END
store_runvar("$gho->{Guest}_pingbroken", 1);
}
-sub start () {
- target_cmd_root($ho, toolstack($ho)->{Command}.
- " create $gho->{CfgPath}", 100);
-}
-
prep();
-start();
+guest_create($ho,$gho);
guest_await_dhcp_tcp($gho,7000);
guest_check_up($gho);
--
2.1.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |