Show More
@@ -83,6 +83,29 b' class RepoMaker(object):' | |||||
83 | self.url, payload, EXCEPTIONS_MAP, self._session_factory()) |
|
83 | self.url, payload, EXCEPTIONS_MAP, self._session_factory()) | |
84 |
|
84 | |||
85 |
|
85 | |||
|
86 | class ServiceConnection(object): | |||
|
87 | def __init__(self, server_and_port, backend_endpoint, session_factory): | |||
|
88 | self.url = urlparse.urljoin( | |||
|
89 | 'http://%s' % server_and_port, backend_endpoint) | |||
|
90 | self._session_factory = session_factory | |||
|
91 | ||||
|
92 | def __getattr__(self, name): | |||
|
93 | def f(*args, **kwargs): | |||
|
94 | return self._call(name, *args, **kwargs) | |||
|
95 | ||||
|
96 | return f | |||
|
97 | ||||
|
98 | @exceptions.map_vcs_exceptions | |||
|
99 | def _call(self, name, *args, **kwargs): | |||
|
100 | payload = { | |||
|
101 | 'id': str(uuid.uuid4()), | |||
|
102 | 'method': name, | |||
|
103 | 'params': {'args': args, 'kwargs': kwargs} | |||
|
104 | } | |||
|
105 | return _remote_call( | |||
|
106 | self.url, payload, EXCEPTIONS_MAP, self._session_factory()) | |||
|
107 | ||||
|
108 | ||||
86 | class RemoteRepo(object): |
|
109 | class RemoteRepo(object): | |
87 |
|
110 | |||
88 | def __init__(self, path, config, url, session, with_wire=None): |
|
111 | def __init__(self, path, config, url, session, with_wire=None): | |
@@ -178,7 +201,12 b' def _remote_call(url, payload, exception' | |||||
178 | except pycurl.error as e: |
|
201 | except pycurl.error as e: | |
179 | raise exceptions.HttpVCSCommunicationError(e) |
|
202 | raise exceptions.HttpVCSCommunicationError(e) | |
180 |
|
203 | |||
|
204 | try: | |||
181 | response = msgpack.unpackb(response.content) |
|
205 | response = msgpack.unpackb(response.content) | |
|
206 | except Exception: | |||
|
207 | log.exception('Failed to decode repsponse %r', response.content) | |||
|
208 | raise | |||
|
209 | ||||
182 | error = response.get('error') |
|
210 | error = response.get('error') | |
183 | if error: |
|
211 | if error: | |
184 | type_ = error.get('type', 'Exception') |
|
212 | type_ = error.get('type', 'Exception') |
General Comments 0
You need to be logged in to leave comments.
Login now