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

[Xen-devel] [OSSTEST PATCH 07/26] power: PowerApproaches replaces $ho->{PowerMethobjs}



This new variable contains a list of different approaches to try.

* Move the meat of power_state into power_approach_invoke.
* power_state now looks for a single approach to try.
* The default for power_state is to pick the last approach in
  the list, which by definition is supposed to be the most reliable.
* Currently there will only be one approach, `Only'.

No overall functional change other than to log messages.

Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 Osstest/TestSupport.pm | 35 +++++++++++++++++++++++++++++------
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
index fb6a407c..fa7c36e1 100644
--- a/Osstest/TestSupport.pm
+++ b/Osstest/TestSupport.pm
@@ -935,8 +935,15 @@ sub power_cycle_parse_method ($$) {
 
 sub power_cycle_host_setup ($) {
     my ($ho) = @_;
-    $spec = ($ho->{Power} // 'unsupported');
-    $ho->{PowerMethobjs} = power_cycle_parse_method($ho,$spec);
+    my $spec = ($ho->{Power} // 'unsupported');
+    # $ho->{PowerApproaches}[]{Name}        see below
+    # $ho->{PowerApproaches}[]{MethObjs}[]  each has ->pdu_power_state($on)
+    # `Name's are:
+    #    Only   Host only supports one method and this is it
+    $ho->{PowerApproaches} = {
+        Name => 'Only',
+        MethObjs => power_cycle_parse_method($ho, $spec),
+    };
 }
 
 sub power_reboot_attempts ($$$) {
@@ -978,10 +985,10 @@ sub power_cycle ($) {
     power_state($ho, 1);
 }
 
-sub power_state ($$) {
-    my ($ho, $on) = @_;
-    logm("power: setting $on for $ho->{Name}");
-    my @methobjs = @{ $ho->{PowerMethobjs} };
+sub power_approach_invoke ($$$) {
+    my ($ho, $approach, $on) = @_;
+    logm("power: setting $on (using $approach->{Name}) for $ho->{Name}");
+    my @methobjs = @{ $approach->{MethObjs} };
     if ($methobjs[0] eq 'nest') {
         shift @methobjs;
         @methobjs = reverse @methobjs if !$on;
@@ -991,6 +998,22 @@ sub power_state ($$) {
     }
 }
 
+sub power_state ($$;$) {
+    my ($ho, $on, $approach_re) = @_;
+    my @approaches = @{ $ho->{PowerApproaches} };
+    my $approach;
+    if (defined $approach_re) {
+       ($approach) = grep { $_->{Name} =~ qr{$approach_re} } @approaches
+           or die ("No matching power approach for $ho->{Name}".
+                   " (wanted $approach_re) (available: ".
+                   join(' ', map { $_->{Name} } @approaches).
+                   ")\n");
+    } else {
+       $approach = $approaches[-1];
+    }
+    power_approach_invoke($ho,$approach,$on);
+}
+
 #---------- host selection and properties ----------
 
 sub selecthost ($);
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

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