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
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',
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]:
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()
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
""" 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