Remove loop_status_update function

Remove loop_status_update function and use
wait_for_status which is provided by zhmcclient

Closes-Bug: #1672979

Change-Id: I9b0d4edbfd9ccf44bae38afceff6200501511807
Signed-off-by: Prabhat Ranjan <pranjank@in.ibm.com>
This commit is contained in:
Prabhat Ranjan 2017-08-02 16:41:16 +05:30
parent 8e0e94a95a
commit 0b23d509e0
1 changed files with 19 additions and 25 deletions

View File

@ -18,7 +18,6 @@ Partition will map nova parameter to PRSM parameter
"""
import re
import sys
import time
from nova.compute import manager as compute_manager
from nova.compute import power_state
@ -37,6 +36,7 @@ from zhmcclient import HTTPError
CONF = conf.CONF
OPENSTACK_PREFIX = 'OpenStack'
CPCSUBSET_PREFIX = 'CPCSubset='
STATUS_TIMEOUT = 60
STARTED_STATUSES = (
utils.PartitionState.RUNNING,
@ -294,7 +294,9 @@ class PartitionInstance(object):
self.partition.start(True)
# TODO(preethipy): The below method to be removed once the bug
# on DPM is fixed to return correct status on API return
self._loop_status_update(5, 'Active')
self.partition.wait_for_status(
status=utils.PartitionState.RUNNING,
status_timeout=STATUS_TIMEOUT)
def destroy(self):
LOG.debug('Partition Destroy triggered')
@ -310,20 +312,19 @@ class PartitionInstance(object):
pass
else:
raise http_error
# TODO(preethipy): The below method to be removed once the bug
# on DPM is fixed to return correct status on API return
self._loop_status_update(5, 'stopped')
if (self.partition.properties['status'] == 'stopped'):
try:
self.partition.wait_for_status(
status=utils.PartitionState.STOPPED,
status_timeout=STATUS_TIMEOUT)
self.instance.vm_state = vm_states.STOPPED
self.instance.save()
self.partition.delete()
else:
except exception.InstanceInvalidState as invalid_state:
errormsg = (_("Partition - %(partition)s status "
"%(status)s is invalid") %
{'partition': self.partition.properties['name'],
'status': self.partition.properties['status']})
raise exception.InstanceInvalidState(errormsg)
raise invalid_state(errormsg)
else:
errormsg = (_("Partition corresponding to the instance "
"%(instance)s and instance uuid %(uuid)s "
@ -363,32 +364,25 @@ class PartitionInstance(object):
self.partition.stop(True)
# TODO(preethipy): The below method to be removed once the bug
# on DPM(701894) is fixed to return correct status on API return
self._loop_status_update(5, 'stopped')
self.partition.wait_for_status(
status=utils.PartitionState.STOPPED,
status_timeout=STATUS_TIMEOUT)
def reboot_vm(self):
LOG.debug('Partition reboot triggered')
self.partition.stop(True)
# TODO(preethipy): The below method to be removed once the bug
# on DPM(701894) is fixed to return correct status on API return
self._loop_status_update(5, 'stopped')
self.partition.wait_for_status(
status=utils.PartitionState.STOPPED,
status_timeout=STATUS_TIMEOUT)
self.partition.start(True)
# TODO(preethipy): The below method to be removed once the bug
# on DPM(701894) is fixed to return correct status on API return
self._loop_status_update(5, 'Active')
def _loop_status_update(self, iterations, status):
# TODO(preethipy): This method loops until the partition goes out
# of pause state or until the iterations complete. Introduced because
# of the bug in DPM for having status populated correctly only
# after 4-5 seconds
self.partition.pull_full_properties()
while (self.partition.properties['status'] != status) and (
iterations):
LOG.debug("sleep for 2 seconds every iteration "
"for status check")
time.sleep(2)
iterations -= 1
self.partition.wait_for_status(
status=utils.PartitionState.RUNNING,
status_timeout=STATUS_TIMEOUT)
def get_partition(self):
"""Get the zhmcclient partition object for this PartitionInstance