Merge "Virt driver logging improvements"

This commit is contained in:
Jenkins 2014-06-20 08:25:18 +00:00 committed by Gerrit Code Review
commit e9a194bcbd

View File

@ -138,6 +138,21 @@ def _get_nodes_supported_instances(cpu_arch=''):
return [(cpu_arch, 'baremetal', 'baremetal')]
def _log_ironic_polling(what, node, instance):
prov_state = (None if node.provision_state is None else
'"%s"' % node.provision_state)
tgt_prov_state = (None if node.target_provision_state is None else
'"%s"' % node.target_provision_state)
LOG.debug('Still waiting for ironic node %(node)s to %(what)s: '
'provision_state=%(prov_state)s, '
'target_provision_state=%(tgt_prov_state)s',
dict(what=what,
node=node.uuid,
prov_state=prov_state,
tgt_prov_state=tgt_prov_state),
instance=instance)
class IronicDriver(virt_driver.ComputeDriver):
"""Hypervisor driver for Ironic - bare metal provisioning."""
@ -268,6 +283,8 @@ class IronicDriver(virt_driver.ComputeDriver):
node = validate_instance_and_node(icli, instance)
if node.provision_state == ironic_states.ACTIVE:
# job is done
LOG.debug("Ironic node %(node)s is now ACTIVE",
dict(node=node.uuid), instance=instance)
raise loopingcall.LoopingCallDone()
if node.target_provision_state == ironic_states.DELETED:
@ -284,6 +301,8 @@ class IronicDriver(virt_driver.ComputeDriver):
% {'inst': instance['uuid'], 'reason': node.last_error})
raise exception.InstanceDeployFailure(msg)
_log_ironic_polling('become ACTIVE', node, instance)
@classmethod
def instance(cls):
if not hasattr(cls, '_instance'):
@ -343,7 +362,8 @@ class IronicDriver(virt_driver.ComputeDriver):
icli = client_wrapper.IronicClientWrapper()
node_list = icli.call("node.list")
nodes = [n.uuid for n in node_list]
LOG.debug("Returning Nodes: %s" % nodes)
LOG.debug("Returning %(num_nodes)s available node(s): %(nodes)s",
dict(num_nodes=len(nodes), nodes=nodes))
return nodes
def get_available_resource(self, node):
@ -483,6 +503,8 @@ class IronicDriver(virt_driver.ComputeDriver):
def _wait_for_provision_state():
node = validate_instance_and_node(icli, instance)
if not node.provision_state:
LOG.debug("Ironic node %(node)s is now unprovisioned",
dict(node=node.uuid), instance=instance)
raise loopingcall.LoopingCallDone()
if data['tries'] >= CONF.ironic.api_max_retries:
@ -495,6 +517,8 @@ class IronicDriver(virt_driver.ComputeDriver):
else:
data['tries'] += 1
_log_ironic_polling('unprovision', node, instance)
# wait for the state transition to finish
timer = loopingcall.FixedIntervalLoopingCall(_wait_for_provision_state)
timer.start(interval=CONF.ironic.api_retry_interval).wait()