def test_call(self, post, get, close): nef_get = jsonrpc.NexentaJSONProxy( 'http', '1.1.1.1', '8080', 'user', 'pass', method='get') nef_post = jsonrpc.NexentaJSONProxy( 'http', '1.1.1.1', '8080', 'user', 'pass', method='post') data = {'key': 'value'} get.return_value = requests.Response() post.return_value = requests.Response() get.return_value.__setstate__({ 'status_code': 200, '_content': jsonutils.dumps(data)}) self.assertEqual({'key': 'value'}, nef_get('url')) get.return_value.__setstate__({ 'status_code': 201, '_content': ''}) self.assertEqual('Success', nef_get('url')) data2 = {'links': [{'href': 'redirect_url'}]} post.return_value.__setstate__({ 'status_code': 202, '_content': jsonutils.dumps(data2)}) get.return_value.__setstate__({ 'status_code': 200, '_content': jsonutils.dumps(data)}) self.assertEqual({'key': 'value'}, nef_post('url')) get.return_value.__setstate__({ 'status_code': 200, '_content': ''}) self.assertEqual('Success', nef_post('url', data)) get.return_value.__setstate__({ 'status_code': 400, '_content': jsonutils.dumps({'code': 'ENOENT'})}) self.assertRaises(exception.NexentaException, lambda: nef_get('url'))
def do_setup(self, context): if self.nef_protocol == 'auto': protocol, auto = 'http', True else: protocol, auto = self.nef_protocol, False self.nef = jsonrpc.NexentaJSONProxy(protocol, self.nef_host, self.nef_port, self.nef_user, self.nef_password, auto=auto) url = 'storage/pools/%s/volumeGroups' % self.storage_pool data = { 'name': self.volume_group, 'volumeBlockSize': (self.configuration.nexenta_ns5_blocksize * units.Ki) } try: self.nef.post(url, data) except exception.NexentaException as e: if 'EEXIST' in e.args[0]: LOG.debug('volumeGroup already exists, skipping') else: raise
def do_setup(self, context): if self.nef_protocol == 'auto': protocol, auto = 'http', True else: protocol, auto = self.nef_protocol, False self.nef = jsonrpc.NexentaJSONProxy( protocol, self.nef_host, self.nef_port, self.nef_user, self.nef_password, auto=auto)
def test_https_auth(self, post): use_https = True port = 8443 auth_uri = 'auth/login' rnd_url = 'some/random/url' class PostSideEffect(object): def __call__(self, *args, **kwargs): r = gen_response() if args[0] == '{}://{}:{}/{}'.format('https', HOST, port, auth_uri): token = uuid.uuid4().hex content = {'token': token} r._content = jsonutils.dumps(content) return r post_side_effect = PostSideEffect() post.side_effect = post_side_effect class TestAdapter(adapters.HTTPAdapter): def __init__(self): super(TestAdapter, self).__init__() self.counter = 0 def send(self, request, *args, **kwargs): # an url is being requested for the second time if self.counter == 1: # make the fake backend respond 401 r = gen_response(401) r._content = '' r.connection = mock.Mock() r_ = gen_response(json={'data': []}) r.connection.send = lambda prep, **kwargs_: r_ else: r = gen_response(json={'data': []}) r.request = request self.counter += 1 return r nef = jsonrpc.NexentaJSONProxy(HOST, port, USERNAME, PASSWORD, use_https, 'pool', False) adapter = TestAdapter() nef.session.mount('{}://{}:{}/{}'.format('https', HOST, port, rnd_url), adapter) # successful authorization self.assertEqual(nef.get(rnd_url), {'data': []}) # session timeout simulation. Client must authenticate newly self.assertEqual(nef.get(rnd_url), {'data': []}) # auth URL mast be requested two times at this moment self.assertEqual(2, post.call_count) # continue with the last (second) token self.assertEqual(nef.get(rnd_url), {'data': []}) # auth URL must be requested two times self.assertEqual(2, post.call_count)
def do_setup(self, context): host = self.nef_host or self.iscsi_host self.nef = jsonrpc.NexentaJSONProxy( host, self.nef_port, self.nef_user, self.nef_password, self.use_https, self.storage_pool, self.verify_ssl) url = 'storage/volumeGroups' data = { 'path': '/'.join([self.storage_pool, self.volume_group]), 'volumeBlockSize': ( self.configuration.nexenta_ns5_blocksize * units.Ki) } try: self.nef.post(url, data) except exception.NexentaException as e: if 'EEXIST' in e.args[0]: LOG.debug('volumeGroup already exists, skipping') else: raise
def do_setup(self, context): host = self.nef_host or self.iscsi_host self.nef = jsonrpc.NexentaJSONProxy(host, self.nef_port, self.nef_user, self.nef_password, self.use_https, self.storage_pool, self.verify_ssl) url = 'storage/volumeGroups' data = { 'path': '/'.join([self.storage_pool, self.volume_group]), 'volumeBlockSize': (self.configuration.nexenta_ns5_blocksize * units.Ki) } try: self.nef.post(url, data) except exception.NexentaException as ex: err = utils.ex2err(ex) if err['code'] == 'EEXIST': LOG.debug('Volume group %(group)s already exists', {'group': self.volume_group}) else: raise ex
def setUp(self): super(TestNexentaJSONProxy, self).setUp() self.nef = jsonrpc.NexentaJSONProxy(HOST, 0, USERNAME, PASSWORD, False)
def do_setup(self, context): host = self.nef_host or self.nas_host pool_name, fs = self._get_share_datasets(self.share) self.nef = jsonrpc.NexentaJSONProxy( host, self.nef_port, self.nef_user, self.nef_password, self.use_https, pool_name, self.verify_ssl)
def __init__(self): super(GC, self).__init__() self.nef = jsonrpc.NexentaJSONProxy('1.1.1.1', 0, 'u', 'p', False)
def do_setup(self, context): self.nef = jsonrpc.NexentaJSONProxy(self.nef_host, self.nef_port, self.nef_user, self.nef_password, self.use_https)