]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
suite: Implement --sleep-before-teardown option
authorNathan Cutler <ncutler@suse.com>
Fri, 14 Sep 2018 10:44:37 +0000 (12:44 +0200)
committerKyr Shatskyy <kyrylo.shatskyy@suse.com>
Sat, 11 Apr 2020 12:47:57 +0000 (14:47 +0200)
With this option, all jobs in the run sleep for the given number of seconds as
the very last thing they do, regardless of success or failure.

Use case: interactive debugging

Signed-off-by: Nathan Cutler <ncutler@suse.com>
Signed-off-by: Kyr Shatskyy <kyrylo.shatskyy@suse.com>
scripts/openstack.py
scripts/suite.py
teuthology/config.py
teuthology/run_tasks.py
teuthology/suite/placeholder.py
teuthology/suite/run.py

index acf34d081634fc5f5112df5144ad9a408e2466ef..c95f54bc5048b7e7aa09664c4f245305e942a03f 100644 (file)
@@ -187,6 +187,11 @@ def get_suite_parser():
         help=("Use tasks and suite definition in this repository"),
         default=os.getenv('TEUTH_SUITE_REPO', 'https://github.com/ceph/ceph'),
     )
+    parser.add_argument(
+        '--sleep-before-teardown',
+        help='Number of seconds to sleep before tearing down the target VMs',
+        default=0
+    )
     return parser
 
 def get_openstack_parser():
index 5da6a6881bb7cd3b3fbbb978840168cd6200146f..4a244678aa38376c1b1453f72840f3443c4be6f9 100644 (file)
@@ -79,6 +79,11 @@ Standard arguments:
   --validate-sha1 <bool>
                               Validate that git SHA1s passed to -S exist.
                               [default: true]
+  --sleep-before-teardown <seconds>
+                              Number of seconds to sleep before tearing down
+                              the test cluster(s). Use with care, as this
+                              applies to all jobs in the run.
+                              [default: 0]
 
 Scheduler arguments:
   --owner <owner>             Job owner
index 39f6847f05af4220c4e70f26dc38b78574eec335..1d5cee59b2e0c5fd2b0aed22707073afd9083719 100644 (file)
@@ -185,6 +185,7 @@ class TeuthologyConfig(YamlConfig):
                 'size': 1,
             },
         },
+        'sleep_before_teardown': 0,
     }
 
     def __init__(self, yaml_path=None):
index 5ad9214704c661f7cf546e4b22bd863654932a8f..615f7ba19ce03fdb26259e93c96756b01356462d 100644 (file)
@@ -1,6 +1,7 @@
 import logging
 import os
 import sys
+import time
 import types
 
 from copy import deepcopy
@@ -151,6 +152,13 @@ def run_tasks(tasks, ctx):
     finally:
         try:
             exc_info = sys.exc_info()
+            sleep_before_teardown = ctx.config.get('sleep_before_teardown')
+            if sleep_before_teardown:
+                log.info(
+                    'Sleeping for {} seconds before unwinding because'
+                    ' --sleep-before-teardown was given...'
+                    .format(sleep_before_teardown))
+                time.sleep(sleep_before_teardown)
             while stack:
                 taskname, manager = stack.pop()
                 log.debug('Unwinding manager %s', taskname)
index ef898eb096fc0d17d33f60f511c3879fbe869ba1..a3091f050e870902fe859454aedb0875619a5a68 100644 (file)
@@ -98,6 +98,7 @@ dict_templ = {
         }
     },
     'repo': Placeholder('ceph_repo'),
+    'sleep_before_teardown': 0,
     'suite': Placeholder('suite'),
     'suite_repo': Placeholder('suite_repo'),
     'suite_relpath': Placeholder('suite_relpath'),
index 6d216dfa1815f4e5cacd2d233c3137d9504507b5..ab7d6f4215decd01c859f67e1515ef831e955b33 100644 (file)
@@ -284,6 +284,8 @@ class Run(object):
             job_config.email = self.args.email
         if self.args.owner:
             job_config.owner = self.args.owner
+        if self.args.sleep_before_teardown:
+            job_config.sleep_before_teardown = int(self.args.sleep_before_teardown)
         return job_config
 
     def build_base_args(self):