Enhance error handling for volume creation failure

1. Enhance error handling for volume creation failure;
2. Fix the trackback of force_clean.py if other resourses are
pre-existed in the cloud under test;
3. Update requirements to support sphinx 1.4.0;

Change-Id: Ifa403a560a6673c23f791833992e188f4d15878e
This commit is contained in:
Yichen Wang 2016-03-29 12:35:12 -07:00
parent 84f2f3d741
commit 668a7ea9cb
5 changed files with 25 additions and 5 deletions

View File

@ -19,13 +19,16 @@ import log as logging
LOG = logging.getLogger(__name__)
class KBVolAttachException(Exception):
pass
class BaseCompute(object):
"""
The Base class for nova compute resources
1. Creates virtual machines with specific configs
"""
def __init__(self, vm_name, network):
self.novaclient = network.router.user.nova_client
self.network = network
@ -92,6 +95,8 @@ class BaseCompute(object):
time.sleep(2)
def attach_vol(self):
if self.vol.status != 'available':
raise KBVolAttachException('Volume must be in available status before attaching.')
for _ in range(10):
try:
self.novaclient.volumes.create_server_volume(self.instance.id, self.vol.id)

View File

@ -18,6 +18,9 @@ import log as logging
LOG = logging.getLogger(__name__)
class KBVolCreationException(Exception):
pass
class BaseStorage(object):
"""
The Base class for cinder storage resources
@ -27,7 +30,17 @@ class BaseStorage(object):
self.cinderclient = cinderclient
def create_vol(self, size, name=None):
return self.cinderclient.volumes.create(size, name=name)
vol = self.cinderclient.volumes.create(size, name=name)
for _ in range(10):
if vol.status == 'creating':
time.sleep(1)
elif vol.status == 'available':
break
elif vol.status == 'error':
raise KBVolCreationException('Not enough disk space in the host?')
vol = self.cinderclient.volumes.get(vol.id)
return vol
def delete_vol(self, volume):
"""

View File

@ -89,7 +89,7 @@ def fetch_resources(fetcher, options=None):
except AttributeError:
resid = res['id']
resname = res['name']
if resource_name_re.match(resname):
if resname and resource_name_re.match(resname):
resources[resid] = resname
return resources

View File

@ -3,6 +3,7 @@ flake8>=2.3.0
git-review>=1.24
pylint>=1.3
pep8>=1.5.7
sphinx>=1.2.3
sphinx>=1.4.0
sphinx_rtd_theme>=0.1.9
tox>=1.9.0
twine>=1.6.5

View File

@ -7,7 +7,8 @@ hacking<0.11,>=0.10.0
coverage>=3.6
discover
python-subunit>=0.0.18
sphinx>=1.3.1
sphinx>=1.4.0
sphinx_rtd_theme>=0.1.9
oslosphinx>=2.5.0 # Apache-2.0
oslotest>=1.10.0 # Apache-2.0
testrepository>=0.0.18