예제 #1
0
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
예제 #2
0
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
예제 #3
0
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