From deab6ec41d3f3bfef7c40cc98eb63d283f03a08b Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Fri, 18 Oct 2019 17:29:52 +0200 Subject: [PATCH] Allow introspection some time to start in ironic-inspector We expect introspection to start immediately after issuing "inspect" action to ironic. In reality, it can take a few seconds, so wait up to 90 seconds (by default). Change-Id: If6c23e139d7d7bcadd416b6228c16a5fb4975c48 --- ironic_tempest_plugin/config.py | 3 +++ .../tests/scenario/introspection_manager.py | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py index d5cdcfa..004612a 100644 --- a/ironic_tempest_plugin/config.py +++ b/ironic_tempest_plugin/config.py @@ -178,6 +178,9 @@ BaremetalIntrospectionGroup = [ cfg.IntOpt('introspection_timeout', default=600, help="Introspection time out"), + cfg.IntOpt('introspection_start_timeout', + default=90, + help="Timeout to start introspection"), cfg.IntOpt('hypervisor_update_sleep', default=60, help="Time to wait until nova becomes aware of " diff --git a/ironic_tempest_plugin/tests/scenario/introspection_manager.py b/ironic_tempest_plugin/tests/scenario/introspection_manager.py index c45f285..0131089 100644 --- a/ironic_tempest_plugin/tests/scenario/introspection_manager.py +++ b/ironic_tempest_plugin/tests/scenario/introspection_manager.py @@ -177,11 +177,24 @@ class InspectorScenarioTest(BaremetalScenarioTest): node_ids = [node_ids] start = int(time.time()) not_introspected = {node_id for node_id in node_ids} + introspection_start_timeout = ( + CONF.baremetal_introspection.introspection_start_timeout) while not_introspected: time.sleep(CONF.baremetal_introspection.introspection_sleep) for node_id in node_ids: - status = self.introspection_status(node_id) + try: + status = self.introspection_status(node_id) + except lib_exc.NotFound as exc: + if int(time.time()) - start >= introspection_start_timeout: + message = ('Node %(node_id)s did not appear in the ' + 'baremetal introspection API after ' + '%(timeout)d seconds: %(error)s' % + {'node_id': node_id, 'error': exc, + 'timeout': introspection_start_timeout}) + raise exceptions.IntrospectionFailed(message) + else: + continue if status['finished']: if status['error']: message = ('Node %(node_id)s introspection failed '