[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH OSSTEST] PDU/xenuse: Support xenuse on machine not locked by current user



xenuse checks that whoever is trying to reboot a machine "owns" that machine
via a locking mechanism. This is usually fine doesn't work well when one wants
to book a machine out of the osstest pool for adhoc testing. In this case
machine ownership is maintained by osstest ahd the machine remains locked to
osstest as far as xenuse is concerned.

Therefore add a global configuration option and perhost override to override
$USER (which xenuse obeys) to osstest.

I used eval + save/restore the original user so as not to pollute the whole
process, it might have been better to actually fork?
---
 Osstest/PDU/xenuse.pm |   16 ++++++++++++++--
 production-config     |    1 +
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/Osstest/PDU/xenuse.pm b/Osstest/PDU/xenuse.pm
index 73a542d..da966e3 100644
--- a/Osstest/PDU/xenuse.pm
+++ b/Osstest/PDU/xenuse.pm
@@ -44,8 +44,20 @@ sub pdu_power_state {
     my ($mo, $on) = @_;
     my $onoff= $on ? "on" : "off";
     my $xenuse= $c{XenUsePath} || "xenuse";
-
-    system_checked($xenuse, "--$onoff", "$mo->{Host}{Name}");
+    my $user= $c{XenUseUser} || undef;
+    $user= get_host_property($mo->{Host}, "XenUseUser", $user);
+
+    my $saved_user = $ENV{USER} if $user;
+    eval {
+       if ($user) {
+           logm("XenUse overriding \$USER to $user");
+           $ENV{USER} = $user;
+       }
+
+       system_checked($xenuse, "--$onoff", "$mo->{Host}{Name}");
+    };
+    $ENV{USER} = $saved_user if $user;
+    die $@ if $@;
 }
 
 1;
diff --git a/production-config b/production-config
index de9e55c..fb9d750 100644
--- a/production-config
+++ b/production-config
@@ -75,6 +75,7 @@ TftpPxeGroup osstest
 TftpDiVersion 2013-09-23
 
 XenUsePath /usr/groups/xencore/systems/bin/xenuse
+XenUseUser osstest
 
 # We use the IP address because Citrix can't manage reliable nameservice
 #DebianMirrorHost debian.uk.xensource.com
-- 
1.7.10.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.