REST session validity not checked in get_volume_info
The fix for bug 1157242 introduced a new bug in Coraid cinder driver _get_volume_info that the login session is not checked for validity/timeout. This change addressesthat issue for all methods in the CoraidRESTClient class. Fixes bug 1160459 Change-Id: Ib2d7ebbf3ef8ec35071f51c6168eb9b3af9405e6
This commit is contained in:
parent
b7986d03c5
commit
b78fb081ac
@ -183,14 +183,14 @@ class TestCoraidRESTClient(test.TestCase):
|
||||
def test__set_group(self):
|
||||
setattr(self.rest_mock, '_set_group',
|
||||
lambda *_: fake_group_id)
|
||||
self.stubs.Set(CoraidRESTClient, '_esm',
|
||||
self.stubs.Set(CoraidRESTClient, '_admin_esm_cmd',
|
||||
lambda *_: fake_login_reply)
|
||||
self.drv._set_group(fake_login_reply)
|
||||
|
||||
def test__set_group_fails_no_group(self):
|
||||
setattr(self.rest_mock, '_set_group',
|
||||
lambda *_: False)
|
||||
self.stubs.Set(CoraidRESTClient, '_esm',
|
||||
self.stubs.Set(CoraidRESTClient, '_admin_esm_cmd',
|
||||
lambda *_: fake_login_reply_group_fail)
|
||||
self.assertRaises(CoraidESMException,
|
||||
self.drv._set_group,
|
||||
@ -199,14 +199,14 @@ class TestCoraidRESTClient(test.TestCase):
|
||||
def test__configure(self):
|
||||
setattr(self.rest_mock, '_configure',
|
||||
lambda *_: True)
|
||||
self.stubs.Set(CoraidRESTClient, '_esm',
|
||||
self.stubs.Set(CoraidRESTClient, '_esm_cmd',
|
||||
lambda *_: fake_esm_success)
|
||||
self.drv._configure(fake_configure_data)
|
||||
|
||||
def test__get_volume_info(self):
|
||||
setattr(self.rest_mock, '_get_volume_info',
|
||||
lambda *_: fake_volume_info)
|
||||
self.stubs.Set(CoraidRESTClient, '_esm',
|
||||
self.stubs.Set(CoraidRESTClient, '_esm_cmd',
|
||||
lambda *_: fake_esm_fetch)
|
||||
self.drv._get_volume_info(fake_volume_name)
|
||||
|
||||
|
@ -95,7 +95,7 @@ class CoraidRESTClient(object):
|
||||
url = ('admin?op=login&username=%s&password=%s' %
|
||||
(self.user, self.password))
|
||||
data = 'Login'
|
||||
reply = self._esm(url, data)
|
||||
reply = self._admin_esm_cmd(url, data)
|
||||
if reply.get('state') == 'adminSucceed':
|
||||
self.session = time.time() + 1100
|
||||
msg = _('Update session cookie %(session)s')
|
||||
@ -116,7 +116,7 @@ class CoraidRESTClient(object):
|
||||
if groupId:
|
||||
url = ('admin?op=setRbacGroup&groupId=%s' % (groupId))
|
||||
data = 'Group'
|
||||
reply = self._esm(url, data)
|
||||
reply = self._admin_esm_cmd(url, data)
|
||||
if reply.get('state') == 'adminSucceed':
|
||||
return True
|
||||
else:
|
||||
@ -139,10 +139,14 @@ class CoraidRESTClient(object):
|
||||
return kid['groupId']
|
||||
return False
|
||||
|
||||
def _esm(self, url=False, data=None):
|
||||
def _esm_cmd(self, url=False, data=None):
|
||||
self._login()
|
||||
return self._admin_esm_cmd(url, data)
|
||||
|
||||
def _admin_esm_cmd(self, url=False, data=None):
|
||||
"""
|
||||
_esm represent the entry point to send requests to ESM Appliance.
|
||||
Send the HTTPS call, get response in JSON
|
||||
_admin_esm_cmd represent the entry point to send requests to ESM
|
||||
Appliance. Send the HTTPS call, get response in JSON
|
||||
convert response into Python Object and return it.
|
||||
"""
|
||||
if url:
|
||||
@ -166,10 +170,9 @@ class CoraidRESTClient(object):
|
||||
|
||||
def _configure(self, data):
|
||||
"""In charge of all commands into 'configure'."""
|
||||
self._login()
|
||||
url = 'configure'
|
||||
LOG.debug(_('Configure data : %s'), data)
|
||||
response = self._esm(url, data)
|
||||
response = self._esm_cmd(url, data)
|
||||
LOG.debug(_("Configure response : %s"), response)
|
||||
if response:
|
||||
if response.get('configState') == 'completedSuccessfully':
|
||||
@ -184,7 +187,7 @@ class CoraidRESTClient(object):
|
||||
"""Retrive volume informations for a given volume name."""
|
||||
url = 'fetch?shelf=cms&orchStrRepo&lv=%s' % (volume_name)
|
||||
try:
|
||||
response = self._esm(url)
|
||||
response = self._esm_cmd(url)
|
||||
info = response[0][1]['reply'][0]
|
||||
return {"pool": info['lv']['containingPool'],
|
||||
"repo": info['repoName'],
|
||||
|
Loading…
x
Reference in New Issue
Block a user