1 from bertrpc import Service
2 from pyperry.adapter.abstract_adapter import AbstractAdapter
5 """
6 Adapter for accesing data over BERTRPC
7
8 Takes these configuration keywords:
9
10 - namespace: the module that the call lives in (required)
11 - procedure: the remote procedure to call (required)
12 - base_options: options that will be included with every request
13
14 """
15
16 - def read(self, **kwargs):
17 options = kwargs['relation'].query()
18 options.update(self.config.base_options)
19 request = self.service.request('call')
20 module = request.__getattr__(self.config.namespace)
21 procedure = module.__getattr__(self.config.procedure)
22 return procedure(options)
23
24 @property
26 if not hasattr(self, '_service'):
27 self._service = Service(self.config.server, self.config.port)
28 return self._service
29