Wait for server console output if empty

Change-Id: Iad2d716a34ae175c21674c78d2d122674c0835be
This commit is contained in:
Federico Ressi 2019-09-24 12:03:36 +02:00
parent 80cdd62629
commit e08aa0286e
2 changed files with 25 additions and 4 deletions

View File

@ -13,14 +13,18 @@
# under the License.
from __future__ import absolute_import
import time
from novaclient import client as novaclient
from novaclient.v2 import client as client_v2
from oslo_log import log
import tobiko
from tobiko.openstack import _client
CLIENT_CLASSES = (client_v2.Client,)
LOG = log.getLogger(__name__)
class NovaClientFixture(_client.OpenstackClientFixture):
@ -94,6 +98,22 @@ def get_server(server, client=None):
return nova_client(client).servers.get(server)
def get_console_output(server, length=None, client=None):
return nova_client(client).servers.get_console_output(server=server,
length=length)
def get_console_output(server, timeout=None, interval=1., length=None,
client=None):
client = nova_client(client)
start_time = time.time()
while True:
output = client.servers.get_console_output(server=server,
length=length)
if timeout is None or output:
break
if time.time() - start_time > timeout:
LOG.warning("No console output produced by server (%r) after "
"%r seconds", server, timeout)
break
LOG.debug('Waiting for server (%r) console output...', server)
time.sleep(interval)
return output

View File

@ -77,7 +77,8 @@ class ClientTest(testtools.TestCase):
def test_get_console_output(self):
output = nova.get_console_output(server=self.stack.server_id,
length=50)
length=50,
timeout=60.)
self.assertTrue(output)
def test_list_servers(self):