X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fexamples%2Fminiclient.py;h=1c625e0795ccf54b7a235f8c453d906128acd568;hb=4868da2b214a85ec5c666a4c8d36141e2acafd10;hp=dbfa3fada7e3d9232bf0249eff1461b5213b8785;hpb=0fbab41f2e1caad1e2bfdd47440598db5e5591da;p=sfa.git diff --git a/sfa/examples/miniclient.py b/sfa/examples/miniclient.py index dbfa3fad..1c625e07 100755 --- a/sfa/examples/miniclient.py +++ b/sfa/examples/miniclient.py @@ -10,6 +10,9 @@ logger=logging.getLogger('') logger.addHandler(console) logger.setLevel(logging.DEBUG) +import uuid +def unique_call_id(): return uuid.uuid4().urn + # use sys.argv to point to a completely fresh directory import sys args=sys.argv[1:] @@ -31,39 +34,70 @@ aggregate_url="http://sfa1.pl.sophia.inria.fr:12347/" # search for public_key / private_key private_key="miniclient-private-key" # user hrn -hrn="pla.inri.fake-pi1" +user_hrn="pla.inri.fake-pi1" + +slice_hrn="pla.inri.slpl1" +# hrn_to_urn(slice_hrn,'slice') +slice_urn='urn:publicid:IDN+pla:inri+slice+slpl1' from sfa.client.sfaclientlib import SfaClientBootstrap -bootstrap = SfaClientBootstrap (hrn, registry_url, dir=dir, logger=logger) +bootstrap = SfaClientBootstrap (user_hrn, registry_url, dir=dir, logger=logger) # install the private key in the client directory from 'private_key' bootstrap.init_private_key_if_missing(private_key) -bootstrap.bootstrap_gid() + +def truncate(content, length=20, suffix='...'): + if isinstance (content, (int) ): return content + if isinstance (content, list): return truncate ( "%s"%content, length, suffix) + if len(content) <= length: + return content + else: + return content[:length+1]+ ' '+suffix + ### issue a GetVersion call ### this assumes we've already somehow initialized the certificate def get_version (url): - - server_proxy = bootstrap.server_proxy(url) - retcod = server_proxy.GetVersion() - print "GetVersion at %s returned following keys: %s"%(url,retcod.keys()) - + # make sure we have a self-signed cert + bootstrap.self_signed_cert() + server_proxy = bootstrap.server_proxy_simple(url) + server_version = server_proxy.GetVersion() + print "miniclient: GetVersion at %s returned:"%(url) + for (k,v) in server_version.iteritems(): print "miniclient: \tversion[%s]=%s"%(k,truncate(v)) # version_dict = {'type': 'SFA', 'version': '1', } version_dict = {'type':'ProtoGENI', 'version':'2'} + # ditto with list resources def list_resources (): - options = { 'geni_rspec_version' : version_dict} - credential = bootstrap.get_credential_string() + bootstrap.bootstrap_my_gid() + credential = bootstrap.my_credential_string() + credentials = [ credential ] + options = {} + options [ 'geni_rspec_version' ] = version_dict + options [ 'call_id' ] = unique_call_id() + list_resources = bootstrap.server_proxy (aggregate_url).ListResources(credentials,options) + print "miniclient: ListResources at %s returned : %s"%(aggregate_url,truncate(list_resources)) + +def list_slice_resources (): + bootstrap.bootstrap_my_gid() + credential = bootstrap.slice_credential_string (slice_hrn) credentials = [ credential ] - retcod = bootstrap.server_proxy (aggregate_url).ListResources(credentials,options) - print "ListResources at %s returned : %20s..."%(aggregate_url,retcod) + options = { } + options [ 'geni_rspec_version' ] = version_dict + options [ 'geni_slice_urn' ] = slice_urn + options [ 'call_id' ] = unique_call_id() + list_resources = bootstrap.server_proxy (aggregate_url).ListResources(credentials,options) + print "miniclient: ListResources at %s for slice %s returned : %s"%(aggregate_url,slice_urn,truncate(list_resources)) + + def main (): get_version(registry_url) get_version(aggregate_url) list_resources() + list_slice_resources() main()