From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: [OSSTEST PATCH 21/26] sg-run-job: Provide infrastructure for layers of nesting Date: Fri, 25 Sep 2015 20:15:17 +0100 Message-ID: <1443208522-24905-13-git-send-email-ian.jackson@eu.citrix.com> References: <1443181028-22705-1-git-send-email-ian.jackson@eu.citrix.com> <1443208522-24905-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZfYT4-0001MB-Bo for xen-devel@lists.xenproject.org; Fri, 25 Sep 2015 19:15:38 +0000 In-Reply-To: <1443208522-24905-1-git-send-email-ian.jackson@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Robert Ho , Ian Jackson , Ian Campbell List-Id: xen-devel@lists.xenproject.org Provides nested-layer-descend, which can be called in an individual test job at the appropriate point (after the L1 has been set up). The inner host is a guest of the outer host; powering it off means destroying it. Putting the poweroff at this point in the loop, rather than in per-host-finish, avoids powering off physical servers. The use of `.' rather than `!.' for iffail means we do not power off after failures (as we might want to preserve the state for debugging etc). Signed-off-by: Ian Jackson Tested-by: Robert Ho Signed-off-by: Robert Ho --- v14: Squash syntax fix from Robert Ho into this patch --- sg-run-job | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/sg-run-job b/sg-run-job index 884a21d..8174ef7 100755 --- a/sg-run-job +++ b/sg-run-job @@ -39,6 +39,7 @@ proc per-host-finish {} { proc run-job {job} { global jobinfo builds flight ok need_xen_hosts anyfailed + global nested_layers_hosts set ok 1 set anyfailed 0 @@ -52,6 +53,7 @@ proc run-job {job} { set need_xen_hosts $nh set need_build_host 0 } + set nested_layers_hosts {} catching-otherwise blocked check-not-blocked if {!$ok} return @@ -70,7 +72,15 @@ proc run-job {job} { if {$ok} { catching-otherwise fail run-job/$jobinfo(recipe) } - per-host-finish + while 1 { + per-host-finish + + if {![llength $nested_layers_hosts]} break + + per-host-ts . = final-poweroff {ts-host-powercycle --power=0} + + set need_xen_hosts [lunappend nested_layers_hosts] + } if {$need_build_host && $anyfailed} { run-ts !broken capture-logs ts-logs-capture + host @@ -247,6 +257,15 @@ proc per-host-ts {iffail ident script args} { } } +proc nested-layer-descend {nested_hosts} { + # We save need_xen_hosts on a stack in nested_layers_hosts + # It gets popped again during the cleanup part of run-job + global nested_layers_hosts need_xen_hosts + lappend nested_layers_hosts $need_xen_hosts + set need_xen_hosts $nested_hosts + per-host-prep +} + #---------- test recipes ---------- proc need-hosts/test-debian-nomigr {} { return host } -- 1.7.10.4