def _vendor_passthru(self, mock_request, async_call=True, driver_passthru=False): return_value = { 'return': 'SpongeBob', 'async': async_call, 'attach': False } mock_request.method = 'post' mock_request.context = 'fake-context' passthru_mock = None if driver_passthru: passthru_mock = mock_request.rpcapi.driver_vendor_passthru else: passthru_mock = mock_request.rpcapi.vendor_passthru passthru_mock.return_value = return_value response = utils.vendor_passthru('fake-ident', 'squarepants', 'fake-topic', data='fake-data', driver_passthru=driver_passthru) passthru_mock.assert_called_once_with( 'fake-context', 'fake-ident', 'squarepants', 'POST', 'fake-data', 'fake-topic') self.assertIsInstance(response, wsme.api.Response) self.assertEqual('SpongeBob', response.obj) self.assertEqual(response.return_type, wsme.types.Unset) sc = http_client.ACCEPTED if async_call else http_client.OK self.assertEqual(sc, response.status_code)
def _vendor_passthru(self, mock_request, async_call=True, driver_passthru=False): return_value = { 'return': 'SpongeBob', 'async': async_call, 'attach': False } mock_request.method = 'post' mock_request.context = 'fake-context' passthru_mock = None if driver_passthru: passthru_mock = mock_request.rpcapi.driver_vendor_passthru else: passthru_mock = mock_request.rpcapi.vendor_passthru passthru_mock.return_value = return_value response = utils.vendor_passthru('fake-ident', 'squarepants', 'fake-topic', data='fake-data', driver_passthru=driver_passthru) passthru_mock.assert_called_once_with('fake-context', 'fake-ident', 'squarepants', 'POST', 'fake-data', 'fake-topic') self.assertIsInstance(response, wsme.api.Response) self.assertEqual('SpongeBob', response.obj) self.assertEqual(response.return_type, wsme.types.Unset) sc = http_client.ACCEPTED if async_call else http_client.OK self.assertEqual(sc, response.status_code)
def _default(self, node_ident, method, data=None): """Call a vendor extension. :param node_ident: UUID or logical name of a node. :param method: name of the method in vendor driver. :param data: body of data to supply to the specified method. """ # Raise an exception if node is not found rpc_node = api_utils.get_rpc_node(node_ident) topic = pecan.request.rpcapi.get_topic_for(rpc_node) return api_utils.vendor_passthru(rpc_node.uuid, method, topic, data=data)
def _default(self, driver_name, method, data=None): """Call a driver API extension. :param driver_name: name of the driver to call. :param method: name of the method, to be passed to the vendor implementation. :param data: body of data to supply to the specified method. """ topic = pecan.request.rpcapi.get_topic_for_driver(driver_name) return api_utils.vendor_passthru(driver_name, method, topic, data=data, driver_passthru=True)
def _default(self, driver_name, method, data=None): """Call a driver API extension. :param driver_name: name of the driver to call. :param method: name of the method, to be passed to the vendor implementation. :param data: body of data to supply to the specified method. """ cdict = pecan.request.context.to_policy_values() policy.authorize('baremetal:driver:vendor_passthru', cdict, cdict) topic = pecan.request.rpcapi.get_topic_for_driver(driver_name) return api_utils.vendor_passthru(driver_name, method, topic, data=data, driver_passthru=True)
def _default(self, driver_name, method, data=None): """Call a driver API extension. :param driver_name: name of the driver to call. :param method: name of the method, to be passed to the vendor implementation. :param data: body of data to supply to the specified method. """ api_utils.check_policy('baremetal:driver:vendor_passthru') topic = api.request.rpcapi.get_topic_for_driver(driver_name) resp = api_utils.vendor_passthru(driver_name, method, topic, data=data, driver_passthru=True) api.response.status_code = resp.status_code return resp.obj
def _test_vendor_passthru_attach(self, return_value, expct_return_value, mock_request, mock_response): return_ = {"return": return_value, "async": False, "attach": True} mock_request.method = "get" mock_request.context = "fake-context" mock_request.rpcapi.driver_vendor_passthru.return_value = return_ response = utils.vendor_passthru("fake-ident", "bar", "fake-topic", data="fake-data", driver_passthru=True) mock_request.rpcapi.driver_vendor_passthru.assert_called_once_with( "fake-context", "fake-ident", "bar", "GET", "fake-data", "fake-topic" ) # Assert file was attached to the response object self.assertIsInstance(mock_response.app_iter, FileIter) self.assertEqual(expct_return_value, mock_response.app_iter.file.read()) # Assert response message is none self.assertIsInstance(response, wsme.api.Response) self.assertIsNone(response.obj) self.assertIsNone(response.return_type) self.assertEqual(http_client.OK, response.status_code)
def _test_vendor_passthru_attach(self, return_value, expct_return_value, mock_request, mock_response): return_ = {'return': return_value, 'async': False, 'attach': True} mock_request.method = 'get' mock_request.context = 'fake-context' mock_request.rpcapi.driver_vendor_passthru.return_value = return_ response = utils.vendor_passthru('fake-ident', 'bar', 'fake-topic', data='fake-data', driver_passthru=True) mock_request.rpcapi.driver_vendor_passthru.assert_called_once_with( 'fake-context', 'fake-ident', 'bar', 'GET', 'fake-data', 'fake-topic') # Assert file was attached to the response object self.assertIsInstance(mock_response.app_iter, FileIter) self.assertEqual(expct_return_value, mock_response.app_iter.file.read()) # Assert response message is none self.assertIsInstance(response, wsme.api.Response) self.assertIsNone(response.obj) self.assertIsNone(response.return_type) self.assertEqual(http_client.OK, response.status_code)
spec_set=['method', 'context', 'rpcapi']) def _vendor_passthru(self, mock_request, async=True, driver_passthru=False): return_value = {'return': 'SpongeBob', 'async': async, 'attach': False} mock_request.method = 'post' mock_request.context = 'fake-context' passthru_mock = None if driver_passthru: passthru_mock = mock_request.rpcapi.driver_vendor_passthru else: passthru_mock = mock_request.rpcapi.vendor_passthru passthru_mock.return_value = return_value response = utils.vendor_passthru('fake-ident', 'squarepants', 'fake-topic', data='fake-data', driver_passthru=driver_passthru) passthru_mock.assert_called_once_with( 'fake-context', 'fake-ident', 'squarepants', 'POST', 'fake-data', 'fake-topic') self.assertIsInstance(response, wsme.api.Response) self.assertEqual('SpongeBob', response.obj) self.assertEqual(response.return_type, wsme.types.Unset) sc = http_client.ACCEPTED if async else http_client.OK self.assertEqual(sc, response.status_code) def test_vendor_passthru_async(self): self._vendor_passthru() def test_vendor_passthru_sync(self):
@mock.patch.object(pecan, "request", spec_set=["method", "context", "rpcapi"]) def _vendor_passthru(self, mock_request, async=True, driver_passthru=False): return_value = {"return": "SpongeBob", "async": async, "attach": False} mock_request.method = "post" mock_request.context = "fake-context" passthru_mock = None if driver_passthru: passthru_mock = mock_request.rpcapi.driver_vendor_passthru else: passthru_mock = mock_request.rpcapi.vendor_passthru passthru_mock.return_value = return_value response = utils.vendor_passthru( "fake-ident", "squarepants", "fake-topic", data="fake-data", driver_passthru=driver_passthru ) passthru_mock.assert_called_once_with( "fake-context", "fake-ident", "squarepants", "POST", "fake-data", "fake-topic" ) self.assertIsInstance(response, wsme.api.Response) self.assertEqual("SpongeBob", response.obj) self.assertEqual(response.return_type, wsme.types.Unset) sc = http_client.ACCEPTED if async else http_client.OK self.assertEqual(sc, response.status_code) def test_vendor_passthru_async(self): self._vendor_passthru() def test_vendor_passthru_sync(self):