class _RemoteServer(_Server): """ API through which it is possible to invoke services directly on other remote servers or clusters. """ def __init__(self, cluster_id, cluster_name, name, preferred_address, port, crypto_use_tls, api_password): self.cluster_id = cluster_id self.cluster_name = cluster_name self.name = name self.preferred_address = preferred_address self.port = port self.crypto_use_tls = crypto_use_tls self.api_password = api_password self.address = 'http{}://{}:{}'.format( 's' if self.crypto_use_tls else '', self.preferred_address, self.port) self.invoker = AnyServiceInvoker(self.address, '/zato/internal/invoke', (api_user, self.api_password)) def invoke(self, service, request=None, *args, **kwargs): response = self.invoker.invoke(service, request, *args, **kwargs) if response.ok: return response.data else: raise Exception(response.details) def invoke_async(self, service, request=None, *args, **kwargs): return self.invoker.invoke_async(service, request, *args, **kwargs)
class _RemoteServer(_Server): """ API through which it is possible to invoke services directly on other remote servers or clusters. """ repr_to_avoid = ['api_password'] def __init__(self, cluster_id, cluster_name, name, preferred_address, port, crypto_use_tls, api_password, up_status): self.cluster_id = cluster_id self.cluster_name = cluster_name self.name = name self.preferred_address = preferred_address self.port = port self.crypto_use_tls = crypto_use_tls self.api_password = api_password self.up_status = up_status self.address = 'http{}://{}:{}'.format( 's' if self.crypto_use_tls else '', self.preferred_address, self.port) self.invoker = AnyServiceInvoker(self.address, '/zato/internal/invoke', (api_user, self.api_password)) self.ping_address = '{}/zato/ping'.format(self.address) self.ping_timeout = 2 # ################################################################################################################################ def invoke(self, service, request=None, *args, **kwargs): # Ping the remote server to quickly find out if it is still available requests_get(self.ping_address, timeout=self.ping_timeout) response = self.invoker.invoke(service, request, *args, **kwargs) if response.ok: return response.data else: raise Exception(response.details) # ################################################################################################################################ def invoke_all_pids(self, service, request=None, *args, **kwargs): # Ping the remote server to quickly find out if it is still available requests_get(self.ping_address, timeout=self.ping_timeout) return self.invoker.invoke(service, request, all_pids=True, *args, **kwargs) # ################################################################################################################################ def invoke_async(self, service, request=None, *args, **kwargs): return self.invoker.invoke_async(service, request, *args, **kwargs)