예제 #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 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
예제 #4
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
예제 #5
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
예제 #6
0
파일: iperf.py 프로젝트: tony-zhu/psapi
import time
import datetime
from psapi.client import ServiceClient
from psapi.query import Query
from psapi.query import IPerfQuery
from psapi.protocol import EndPointPair
from psapi.protocol import events


################################
# Create new client
################################

# Service access point
url = 'http://bandwidth.cs.utah.edu:8085/perfSONAR_PS/services/pSB'
c = ServiceClient(url)

################################
# making a single query
################################

# This purely using python objects and needs min knowledge of the
# perfSONAR protocol because all params are part of the constructor

# To query for specific (src, dst) pair
endpointpair = EndPointPair(src='bandwidth.cs.utah.edu', dst='bandwidth.chpc.utah.edu')

# To query for everything
#endpointpair = EndPointPair()

query = IPerfQuery(endpointpair=endpointpair, protocol='TCP',
예제 #7
0
파일: xquery.py 프로젝트: tony-zhu/psapi
from psapi.client import ServiceClient
from psapi.query import XQuery

# Service access point
url = 'http://ps1.es.net:9990/perfSONAR_PS/services/gLS'
c = ServiceClient(url)

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)
r = c.query(xquery)

for metaKey in r.meta:
    for service in r.data[metaKey]:
예제 #8
0
import calendar
from psapi.client import ServiceClient
from psapi.query import Query
from psapi.query import TracerouteQuery
from psapi.protocol import events
from psapi.protocol import EndPointPair
from psapi.protocol import Message


################################
# Create new client
################################

# Service access point
url = 'http://wash-pt1.es.net:8086/perfSONAR_PS/services/tracerouteMA'
c = ServiceClient(url)

start = calendar.timegm(datetime.datetime(2014, 02, 13, 3, 30, 15).utctimetuple())
end = calendar.timegm(datetime.datetime(2014, 02, 14, 3, 30, 15).utctimetuple())

###############################
# Endpoint query
###############################
select = {
    'filter_type': 'select',
    'startTime': start,
    'endTime': end,
}

q = Query(events.TRACEROUTE, data_filter=select)
#print q.to_xml()
예제 #9
0
파일: echo.py 프로젝트: tony-zhu/psapi
from psapi.client import ServiceClient
from psapi.query import EchoRequest


################################
# Create new client
################################

# Service access point
url = 'http://pnwg-pt1.es.net:8085/perfSONAR_PS/services/pSB'
c = ServiceClient(url)


q = EchoRequest()
r = c.query(q)

print r.meta
print r.data
예제 #10
0
파일: lookup.py 프로젝트: tony-zhu/psapi
"""
Sample Run of PsAPI Client for Lookup Service
"""

from psapi.client import ServiceClient
from psapi.query import LookupQuery
from psapi.protocol import Address
from psapi.protocol import events

################################
# Create new client
################################

# Service access point
url = 'http://ps1.es.net:9990/perfSONAR_PS/services/gLS'
c = ServiceClient(url)

src = Address('198.124.252.117')
dst = Address('198.129.254.46')

gls_query = LookupQuery([src, dst], events.IPERF2)

r = c.query(gls_query)

for meta in r.meta:
    for result in r.data[meta]:
        print result.accessPoint