# pipeline.py - Pipeline Pilot proxy # # Build a Pipeline Pilot Proxy (PPProxy) that initializes # a SOAPpy Proxy to connect to a given server and port. # All calls are wrapped so that the request xml namespace # can be reset before each method call. # # (C) Optibrium Ltd 2011 # stardrop-support@optibrium.com # import SOAPpy class Method: '''Dispatch up to clazz after applying a before function''' def __init__(self, proxy, name, clazz, before): self.proxy = proxy self.name = name self.clazz = clazz self.before = before def __call__(self, *a, **ka): self.before() m = self.clazz.__getattr__(self.proxy, self.name) return m.__call__(self.name, *a, **ka) class PPProxy(SOAPpy.SOAPProxy): '''A SOAP proxy for communicating with a Pipeline Pilot server''' def __init__(self, server, port): if server.startswith("http"): url = server + ":" + str(port) + "/scitegic/soap" else: url = "http://" + server + ":" + str(port) + "/scitegic/soap" self.namespace2 = "http://scitegic.com/soap" SOAPpy.SOAPProxy.__init__(self, url) def resetNS(self): self.namespace = self.namespace2 def __getattr__(self, name): return Method(self, name, SOAPpy.SOAPProxy, self.resetNS) class ParameterStringValue: '''Pipeline Pilot ParameterStringValue type which encodes a "value" list of strings under a "name"''' def __init__(self, name, values): self.name = name self.value = values