Merge "REST session validity not checked in get_volume_info"

This commit is contained in:
Jenkins 2013-03-31 15:26:46 +00:00 committed by Gerrit Code Review
commit 3aa947d763
2 changed files with 15 additions and 12 deletions

View File

@ -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)

View File

@ -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'],