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:]
###
-# this uses a test vplc from the onelab test infrastructure
-registry_url="http://vplc08.pl.sophia.inria.fr:12345/"
-aggregate_url="http://vplc08.pl.sophia.inria.fr:12347/"
+# this uses a test sfa deployment at openlab
+registry_url="http://sfa1.pl.sophia.inria.fr:12345/"
+aggregate_url="http://sfa1.pl.sophia.inria.fr:12347/"
# this is where the private key sits - would be ~/.ssh/id_rsa in most cases
-# but in this context
-private_key="test_private_key"
+# but in this context, create this local file
+# the tests key pair can be found in
+# http://git.onelab.eu/?p=tests.git;a=blob;f=system/config_default.py
+# 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()