return slices['hrn']
-def get_rspec(api, hrn=None, caller_cred=None):
+def get_rspec(api, hrn=None, origin_hrn=None):
from sfa.plc.nodes import Nodes
- nodes = Nodes(api, caller_cred=caller_cred)
+ nodes = Nodes(api, origin_hrn=origin_hrn)
if hrn:
rspec = nodes.get_rspec(hrn)
else:
from sfa.server.aggregate import Aggregates
import sfa.plc.peers as peers
-def delete_slice(api, hrn, caller_cred=None):
+def delete_slice(api, hrn, origin_hrn=None):
credential = api.getCredential()
aggregates = Aggregates(api)
for aggregate in aggregates:
# request hash is optional so lets try the call without it
try:
request_hash=None
- aggregates[aggregate].delete_slice(credential, hrn, request_hash, caller_cred)
+ aggregates[aggregate].delete_slice(credential, hrn, request_hash, origin_hrn)
success = True
except:
print >> log, "%s" % (traceback.format_exc())
try:
arg_list = [credential, hrn]
request_hash = api.key.compute_hash(arg_list)
- aggregates[aggregate].delete_slice(credential, hrn, request_hash, caller_cred)
+ aggregates[aggregate].delete_slice(credential, hrn, request_hash, origin_hrn)
success = True
except:
print >> log, "%s" % (traceback.format_exc())
print >> log, "Error calling list nodes at aggregate %s" % aggregate
return 1
-def create_slice(api, hrn, rspec, caller_cred=None):
+def create_slice(api, hrn, rspec, origin_hrn=None):
spec = RSpec()
tempspec = RSpec()
spec.parseString(rspec)
try:
request_hash = None
aggregates[net_hrn].create_slice(credential, hrn, \
- rspec, request_hash, caller_cred)
+ rspec, request_hash, origin_hrn)
except:
arg_list = [credential,hrn,rspec]
request_hash = api.key.compute_hash(arg_list)
aggregates[net_hrn].create_slice(credential, hrn, \
- rspec, request_hash, caller_cred)
+ rspec, request_hash, origin_hrn)
else:
try:
request_hash = None
aggregates[net_hrn].create_slice(credential, hrn, \
- rspecs[net_hrn], request_hash, caller_cred)
+ rspecs[net_hrn], request_hash, origin_hrn)
except:
arg_list = [credential,hrn,rspecs[net_hrn]]
request_hash = api.key.compute_hash(arg_list)
aggregates[net_hrn].create_slice(credential, hrn, \
- rspecs[net_hrn], request_hash, caller_cred)
+ rspecs[net_hrn], request_hash, origin_hrn)
else:
# lets forward this rspec to a sm that knows about the network
arg_list = [credential, net_hrn]
try:
request_hash = None
aggregates[aggregate].create_slice(credential, hrn, \
- rspecs[net_hrn], request_hash, caller_cred)
+ rspecs[net_hrn], request_hash, origin_hrn)
except:
arg_list = [credential, hrn, rspecs[net_hrn]]
request_hash = api.key.compute_hash(arg_list)
aggregates[aggregate].create_slice(credential, hrn, \
- rspecs[net_hrn], request_hash, caller_cred)
+ rspecs[net_hrn], request_hash, origin_hrn)
except:
print >> log, "Error creating slice %(hrn)s at aggregate %(net_hrn)s" % \
traceback.print_exc()
return 1
-def start_slice(api, hrn, caller_cred=None):
+def start_slice(api, hrn, origin_hrn=None):
slicename = hrn_to_pl_slicename(hrn)
slices = api.plshell.GetSlices(api.plauth, {'name': slicename}, ['slice_id'])
if not slices:
return 1
-def stop_slice(api, hrn, caller_cred):
+def stop_slice(api, hrn, origin_hrn):
slicename = hrn_to_pl_slicename(hrn)
slices = api.plshell.GetSlices(api.plauth, {'name': slicename}, ['slice_id'])
if not slices:
api.plshell.UpdateSliceTag(api.plauth, attribute_id, "0")
return 1
-def reset_slice(api, hrn, caller_cred):
+def reset_slice(api, hrn, origin_hrn):
# XX not implemented at this interface
return 1
slices.refresh()
return slices['hrn']
-def get_rspec(api, hrn=None, caller_cred=None):
+def get_rspec(api, hrn=None, origin_hrn=None):
from sfa.plc.nodes import Nodes
- nodes = Nodes(api, caller_cred=caller_cred)
+ nodes = Nodes(api, origin_hrn=origin_hrn)
if hrn:
rspec = nodes.get_rspec(hrn)
else:
returns = Parameter(int, "1 if successful")
- def call(self, cred, hrn, requested_rspec, request_hash=None, caller_cred=None):
- if caller_cred==None:
- caller_cred=cred
+ def call(self, cred, hrn, requested_rspec, request_hash=None, origin_hrn=None):
+ if origin_hrn==None:
+ origin_hrn=Credential(string=cred).get_gid_caller().get_hrn()
# This cred will be an slice cred, not a user, so we cant use it to
# authenticate the caller's request_hash. Let just get the caller's gid
self.api.auth.check(cred, 'createslice')
#log the call
- self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, Credential(string=caller_cred).get_gid_caller().get_hrn(), hrn, self.name))
+ self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name))
sfa_aggregate_type = Config().get_aggregate_rspec_type()
rspec_manager = __import__("sfa.rspecs.aggregates.rspec_manager_"+sfa_aggregate_type, fromlist = ["sfa.rspecs.aggregates"])
#incoming_rules.set_slice(hrn) # This is a temporary kludge. Eventually, we'd like to fetch the context requested by the match/target
contexts = incoming_rules.contexts
- request_context = rspec_manager.fetch_context(hrn, Credential(string=caller_cred).get_gid_caller().get_hrn(), contexts)
+ request_context = rspec_manager.fetch_context(hrn, origin_hrn, contexts)
incoming_rules.set_context(request_context)
rspec = incoming_rules.apply(requested_rspec)
else:
mgr_type = self.api.config.SFA_SM_TYPE
manager_module = manager_base + ".slice_manager_%s" % mgr_type
manager = __import__(manager_module, fromlist=[manager_base])
- manager.create_slice(self.api, hrn, rspec, caller_cred)
+ manager.create_slice(self.api, hrn, rspec, origin_hrn)
return 1
returns = Parameter(str, "String representatin of an rspec")
- def call(self, cred, hrn=None, request_hash = None, caller_cred=None):
+ def call(self, cred, hrn=None, request_hash = None, origin_hrn=None):
sfa_aggregate_type = Config().get_aggregate_rspec_type()
# This cred will be an authority cred, not a user, so we cant use it to
client_gid_str = client_gid.save_to_string(save_parents=True)
self.api.auth.authenticateGid(client_gid_str, [cred,hrn], request_hash)
self.api.auth.check(cred, 'listnodes')
- if caller_cred==None:
- caller_cred=cred
+ if origin_hrn==None:
+ origin_hrn=Credential(string=cred).get_gid_caller().get_hrn()
#log the call
- self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, Credential(string=caller_cred).get_gid_caller().get_hrn(), hrn, self.name))
+ self.api.logger.info("interface: %s\tcaller-hrn: %s\ttarget-hrn: %s\tmethod-name: %s"%(self.api.interface, origin_hrn, hrn, self.name))
mgr_type = self.api.config.SFA_AGGREGATE_TYPE
manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
manager = __import__(manager_module, fromlist=[manager_base])
- rspec = manager.get_rspec(self.api, hrn, caller_cred)
+ rspec = manager.get_rspec(self.api, hrn, origin_hrn)
outgoing_rules = SFATablesRules('OUTGOING')
elif self.api.interface in ['slicemgr']:
mgr_type = self.api.config.SFA_SM_TYPE
manager_module = manager_base + ".slice_manager_%s" % mgr_type
manager = __import__(manager_module, fromlist=[manager_base])
- rspec = manager.get_rspec(self.api, hrn, caller_cred)
+ rspec = manager.get_rspec(self.api, hrn, origin_hrn)
outgoing_rules = SFATablesRules('FORWARD-OUTGOING')
filtered_rspec = rspec
if outgoing_rules.sorted_rule_list:
- request_context = manager.fetch_context(
- hrn,
- Credential(string=caller_cred).get_gid_caller().get_hrn(),
- outgoing_rules.contexts)
+ request_context = manager.fetch_context(hrn, origin_hrn, outgoing_rules.contexts)
outgoing_rules.set_context(request_context)
filtered_rspec = outgoing_rules.apply(rspec)
class Nodes(SimpleStorage):
- def __init__(self, api, ttl = 1, caller_cred=None):
+ def __init__(self, api, ttl = 1, origin_hrn=None):
self.api = api
self.ttl = ttl
self.threshold = None
SimpleStorage.__init__(self, self.nodes_file)
self.policy = Policy(api)
self.load()
- self.caller_cred=caller_cred
+ self.origin_hrn=origin_hrn
def refresh(self):
for aggregate in aggregates:
if aggregate not in [self.api.auth.client_cred.get_gid_caller().get_hrn()]:
try:
- caller_cred = self.caller_cred
+ origin_hrn = self.origin_hrn
# get the rspec from the aggregate
try:
request_hash=None
- agg_rspec = aggregates[aggregate].get_resources(credential, hrn, request_hash, caller_cred)
+ agg_rspec = aggregates[aggregate].get_resources(credential, hrn, request_hash, origin_hrn)
except:
arg_list = [credential, hrn]
request_hash = self.api.key.compute_hash(arg_list)
- agg_rspec = aggregates[aggregate].get_resources(credential, hrn, request_hash, caller_cred)
+ agg_rspec = aggregates[aggregate].get_resources(credential, hrn, request_hash, origin_hrn)
# extract the netspec from each aggregates rspec
rspec.parseString(agg_rspec)
networks.extend([{'NetSpec': rspec.getDictsByTagName('NetSpec')}])
rspec_to_slice_tag = {'max_rate':'net_max_rate'}
- def __init__(self, api, ttl = .5, caller_cred=None):
+ def __init__(self, api, ttl = .5, origin_hrn=None):
self.api = api
self.ttl = ttl
self.threshold = None
SimpleStorage.__init__(self, self.slices_file)
self.policy = Policy(self.api)
self.load()
- self.caller_cred=caller_cred
+ self.origin_hrn=origin_hrn
def get_slivers(self, hrn, node=None):
def delete_slice_smgr(self, hrn):
credential = self.api.getCredential()
- caller_cred = self.caller_cred
+ origin_hrn = self.origin_hrn
aggregates = Aggregates(self.api)
for aggregate in aggregates:
success = False
# request hash is optional so lets try the call without it
try:
request_hash=None
- aggregates[aggregate].delete_slice(credential, hrn, request_hash, caller_cred)
+ aggregates[aggregate].delete_slice(credential, hrn, request_hash, origin_hrn)
success = True
except:
print >> log, "%s" % (traceback.format_exc())
try:
arg_list = [credential, hrn]
request_hash = self.api.key.compute_hash(arg_list)
- aggregates[aggregate].delete_slice(credential, hrn, request_hash, caller_cred)
+ aggregates[aggregate].delete_slice(credential, hrn, request_hash, origin_hrn)
success = True
except:
print >> log, "%s" % (traceback.format_exc())
rspecs[net_hrn] = tempspec.toxml()
# send each rspec to the appropriate aggregate/sm
- caller_cred = self.caller_cred
+ origin_hrn = self.origin_hrn
for net_hrn in rspecs:
try:
# if we are directly connected to the aggregate then we can just send them the rspec
if net_hrn in [self.api.hrn]:
try:
request_hash = None
- aggregates[net_hrn].create_slice(credential, hrn, rspec, request_hash, caller_cred)
+ aggregates[net_hrn].create_slice(credential, hrn, rspec, request_hash, origin_hrn)
except:
arg_list = [credential,hrn,rspec]
request_hash = self.api.key.compute_hash(arg_list)
- aggregates[net_hrn].create_slice(credential, hrn, rspec, request_hash, caller_cred)
+ aggregates[net_hrn].create_slice(credential, hrn, rspec, request_hash, origin_hrn)
else:
try:
request_hash = None
- aggregates[net_hrn].create_slice(credential, hrn, rspecs[net_hrn], request_hash, caller_cred)
+ aggregates[net_hrn].create_slice(credential, hrn, rspecs[net_hrn], request_hash, origin_hrn)
except:
arg_list = [credential,hrn,rspecs[net_hrn]]
request_hash = self.api.key.compute_hash(arg_list)
- aggregates[net_hrn].create_slice(credential, hrn, rspecs[net_hrn], request_hash, caller_cred)
+ aggregates[net_hrn].create_slice(credential, hrn, rspecs[net_hrn], request_hash, origin_hrn)
else:
# lets forward this rspec to a sm that knows about the network
arg_list = [credential, net_hrn]
if network_networks:
try:
request_hash = None
- aggregates[aggregate].create_slice(credential, hrn, rspecs[net_hrn], request_hash, caller_cred)
+ aggregates[aggregate].create_slice(credential, hrn, rspecs[net_hrn], request_hash, origin_hrn)
except:
arg_list = [credential, hrn, rspecs[net_hrn]]
request_hash = self.api.key.compute_hash(arg_list)
- aggregates[aggregate].create_slice(credential, hrn, rspecs[net_hrn], request_hash, caller_cred)
+ aggregates[aggregate].create_slice(credential, hrn, rspecs[net_hrn], request_hash, origin_hrn)
except:
print >> log, "Error creating slice %(hrn)s at aggregate %(net_hrn)s" % locals()