# add a manager wrapper
manager_wrap = ManagerWrapper(manager_class_or_module,api.interface,api.config)
api.manager=manager_wrap
- # insert driver in manager
- logger.debug("Setting manager.driver, manager=%s"%manager_class_or_module)
- # xxx this should go into the object and not the class !?!
- manager_class_or_module.driver=driver
+# # insert driver in manager
+# logger.debug("Setting manager.driver, manager=%s"%manager_class_or_module)
+# # xxx this should go into the object and not the class !?!
+# manager_class_or_module.driver=driver
# add it in api as well for convenience
api.driver=driver
return api
following layout:
api.manager
-manager.driver
-api.driver (for convenience)
+api.driver
driver.api
------
class RegistryManager:
- def __init__ (self, config): pass
+ def __init__ (self, config):
+ logger.info("Creating RegistryManager[%s]"%id(self))
# The GENI GetVersion call
def GetVersion(self, api, options):
# Slivers don't have credentials but users should be able to
# specify a sliver xrn and receive the slice's credential
if type == 'sliver' or '-' in Xrn(hrn).leaf:
- slice_xrn = self.driver.sliver_to_slice_xrn(hrn)
+ slice_xrn = api.driver.sliver_to_slice_xrn(hrn)
hrn = slice_xrn.hrn
# Is this a root or sub authority
if details:
# in details mode we get as much info as we can, which involves contacting the
# testbed for getting implementation details about the record
- self.driver.augment_records_with_testbed_info(local_dicts)
+ api.driver.augment_records_with_testbed_info(local_dicts)
# also we fill the 'url' field for known authorities
# used to be in the driver code, sounds like a poorman thing though
def solve_neighbour_url (record):
record.reg_keys = [ RegKey (key) for key in record.keys ]
# update testbed-specific data if needed
- pointer = self.driver.register (record.__dict__, hrn, pub_key)
+ pointer = api.driver.register (record.__dict__, hrn, pub_key)
record.pointer=pointer
dbsession.add(record)
print "DO NOT REMOVE ME before driver.update, record=%s"%record
new_key_pointer = -1
try:
- (pointer, new_key_pointer) = self.driver.update (record.__dict__, new_record.__dict__, hrn, new_key)
+ (pointer, new_key_pointer) = api.driver.update (record.__dict__, new_record.__dict__, hrn, new_key)
except:
pass
if new_key and new_key_pointer:
# call testbed callback first
# IIUC this is done on the local testbed TOO because of the refreshpeer link
- if not self.driver.remove(record.__dict__):
+ if not api.driver.remove(record.__dict__):
logger.warning("driver.remove failed")
# delete from sfa db
# verify that the callers's ip address exist in the db and is an interface
# for a node in the db
(ip, port) = api.remote_addr
- interfaces = self.driver.shell.GetInterfaces({'ip': ip}, ['node_id'])
+ interfaces = api.driver.shell.GetInterfaces({'ip': ip}, ['node_id'])
if not interfaces:
raise NonExistingRecord("no such ip %(ip)s" % locals())
- nodes = self.driver.shell.GetNodes([interfaces[0]['node_id']], ['node_id', 'hostname'])
+ nodes = api.driver.shell.GetNodes([interfaces[0]['node_id']], ['node_id', 'hostname'])
if not nodes:
raise NonExistingRecord("no such node using ip %(ip)s" % locals())
node = nodes[0]
def call(self, xrns, creds, options):
valid_creds = self.api.auth.checkCredentials(creds, 'deletesliver', xrns,
- check_sliver_callback = self.api.manager.driver.check_sliver_credentials)
+ check_sliver_callback = self.api.driver.check_sliver_credentials)
#log the call
origin_hrn = Credential(cred=valid_creds[0]).get_gid_caller().get_hrn()
raise SfaInvalidArgument('Must specify an rspec version option. geni_rspec_version cannot be null')
valid_creds = self.api.auth.checkCredentials(creds, 'listnodes', urns, \
- check_sliver_callback = self.api.manager.driver.check_sliver_credentials)
+ check_sliver_callback = self.api.driver.check_sliver_credentials)
# get hrn of the original caller
origin_hrn = options.get('origin_hrn', None)
# Find the valid credentials
valid_creds = self.api.auth.checkCredentials(creds, 'createsliver', xrns,
- check_sliver_callback = self.api.manager.driver.check_sliver_credentials)
+ check_sliver_callback = self.api.driver.check_sliver_credentials)
origin_hrn = Credential(cred=valid_creds[0]).get_gid_caller().get_hrn()
self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, xrns, self.name))
result = self.api.manager.Provision(self.api, xrns, creds, options)
# Find the valid credentials
valid_creds = self.api.auth.checkCredentials(creds, 'renewsliver', urns,
- check_sliver_callback = self.api.manager.driver.check_sliver_credentials)
+ check_sliver_callback = self.api.driver.check_sliver_credentials)
# Validate that the time does not go beyond the credential's expiration time
requested_time = utcparse(expiration_time)
def call(self, xrn, creds):
valid_creds = self.api.auth.checkCredentials(creds, 'stopslice', xrn,
- check_sliver_callback = self.api.manager.driver.check_sliver_credentials)
+ check_sliver_callback = self.api.driver.check_sliver_credentials)
#log the call
origin_hrn = Credential(cred=valid_creds[0]).get_gid_caller().get_hrn()
self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, xrn, self.name))
def call(self, xrns, creds, options):
valid_creds = self.api.auth.checkCredentials(creds, 'sliverstatus', xrns,
- check_sliver_callback = self.api.manager.driver.check_sliver_credentials)
+ check_sliver_callback = self.api.driver.check_sliver_credentials)
self.api.logger.info("interface: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, xrns, self.name))
return self.api.manager.Status(self.api, xrns, creds, options)
####################
class SfaApi (XmlrpcApi):
-
"""
An SfaApi instance is a basic xmlrcp service
augmented with the local cryptographic material and hrn
It gets augmented by the generic layer with
(*) an instance of manager (actually a manager module for now)
- (*) which in turn holds an instance of a testbed driver
- For convenience api.manager.driver == api.driver
+ beware that this is shared among all instances of api
+ (*) an instance of a testbed driver
"""
def __init__ (self, encoding="utf-8", methods='sfa.methods',