def create_service_client(service, cert=None, key=None): """ Creates a perfSONAR service client from a I{service}. A service can be - Full qualified URL string: U{http://example.com:9999/service} - L{psapi.protocol.psservice.PsService} - L{periscope.topology.models.Service} - L{psapi.client.ServiceClient}: just returns the same object @param service: service to create client from. @returns: L{psapi.client.ServiceClient} """ if isinstance(service, ServiceClient): return service if isinstance(service, str) or isinstance(service, unicode): url = str(service) elif isinstance(service, PsService): url = service.accessPoint elif isinstance(service, Service): properties = psServiceProperties.objects.get(parent=service) url = properties.accessPoint else: raise ValueError("Cannot create service client from service" " of type: %s" % type(service)) if cert and key: client = ServiceClient(url, cert, key) else: client = ServiceClient(url) return client
def look_for_hlses(gls): query_text = """ declare namespace nmwg="http://ggf.org/ns/nmwg/base/2.0/"; declare namespace perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"; declare namespace psservice="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/"; declare namespace summary="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/"; for $metadata in /nmwg:store[@type="LSStore"]/nmwg:metadata let $metadata_id := $metadata/@id let $data := /nmwg:store[@type="LSStore"]/nmwg:data[@metadataIdRef=$metadata_id] return element {"nmwg:metadata"} { attribute id {$metadata_id}, element {"perfsonar:subject"} { $metadata/perfsonar:subject/psservice:service }, $data/nmwg:metadata/nmwg:eventType } """ xquery = XQuery(query_text) client = ServiceClient(gls) logger.info("Send query to gLS: '%s'" % gls) response = client.query(xquery) logger.info("Received result from gLS: '%s'" % gls) return response
def query_hls(hls): query_text = """ declare namespace nmwg="http://ggf.org/ns/nmwg/base/2.0/"; declare namespace perfsonar="http://ggf.org/ns/nmwg/tools/org/perfsonar/1.0/"; declare namespace psservice="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/"; declare namespace summary="http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/"; for $metadata in /nmwg:store[@type="LSStore"]/nmwg:metadata let $metadata_id := $metadata/@id let $data := /nmwg:store[@type="LSStore"]/nmwg:data[@metadataIdRef=$metadata_id] return ($metadata, $data) """ xquery = XQuery(query_text) client = ServiceClient(hls) logger.info("Send query to hLS: '%s'" % hls) response = client.query(xquery) logger.info("Received result from hLS: '%s'" % hls) return response