message = "%s (line %s)" % (error.message, error.line)
raise InvalidRSpec(message)
- # XX
- # XX TODO: Should try to use delegated credential first
- # XX
- cred = api.getCredential()
+ # get the callers hrn
+ valid_cred = self.api.auth.checkCredentials(creds, 'createsliver', hrn)[0]
+ caller_hrn = valid_cred.get_gid_caller().get_hrn()
+
+ # attempt to use delegated credential first
+ credential = api.getDelegatedCredential(creds)
+ if not credential:
+ credential = api.getCredential()
threads = ThreadManager()
for aggregate in api.aggregates:
- if aggregate not in [api.auth.client_cred.get_gid_caller().get_hrn()]:
- server = api.aggregates[aggregate]
- # Just send entire RSpec to each aggregate
- threads.run(server.CreateSliver, xrn, cred, rspec, users)
+ # prevent infinite loop. Dont send request back to caller
+ # unless the caller is the aggregate's SM
+ if caller_hrn == aggrgate and aggregate =! api.hrn:
+ continue
+
+ # Just send entire RSpec to each aggregate
+ server = api.aggregates[aggregate]
+ threads.run(server.CreateSliver, xrn, credential, rspec, users)
results = threads.get_results()
merged_rspec = merge_rspecs(results)
return merged_rspec
def renew_slice(api, xrn, creds, expiration_time):
- # XX
- # XX TODO: Should try to use delegated credential first
- # XX
- credential = api.getCredential()
+ # get the callers hrn
+ valid_cred = self.api.auth.checkCredentials(creds, 'renewesliver', hrn)[0]
+ caller_hrn = valid_cred.get_gid_caller().get_hrn()
+
+ # attempt to use delegated credential first
+ credential = api.getDelegatedCredential(creds)
+ if not credential:
+ credential = api.getCredential()
threads = ThreadManager()
for aggregate in api.aggregates:
+ # prevent infinite loop. Dont send request back to caller
+ # unless the caller is the aggregate's SM
+ if caller_hrn == aggrgate and aggregate =! api.hrn:
+ continue
+
server = api.aggregates[aggregate]
threads.run(server.RenewSliver, xrn, credential, expiration_time)
threads.get_results()
aggregate_hrn = element.values()[0]
aggregate_rspecs[aggregate_hrn] = rspec
- # get a ticket from each aggregate
- credential = api.getCredential()
+ # get the callers hrn
+ valid_cred = self.api.auth.checkCredentials(creds, 'getticket', hrn)[0]
+ caller_hrn = valid_cred.get_gid_caller().get_hrn()
+
+ # attempt to use delegated credential first
+ credential = api.getDelegatedCredential(creds)
+ if not credential:
+ credential = api.getCredential()
threads = ThreadManager()
for aggregate, aggregate_rspec in aggregate_rspecs.items():
+ # prevent infinite loop. Dont send request back to caller
+ # unless the caller is the aggregate's SM
+ if caller_hrn == aggrgate and aggregate =! api.hrn:
+ continue
server = None
if aggregate in api.aggregates:
server = api.aggregates[aggregate]
return ticket.save_to_string(save_parents=True)
-def delete_slice(api, xrn, origin_hrn=None):
- # XX
- # XX TODO: Should try to use delegated credential first
- # XX
- credential = api.getCredential()
+def delete_slice(api, xrn, creds):
+ # get the callers hrn
+ valid_cred = self.api.auth.checkCredentials(creds, 'deletesliver', hrn)[0]
+ caller_hrn = valid_cred.get_gid_caller().get_hrn()
+
+ # attempt to use delegated credential first
+ credential = api.getDelegatedCredential(creds)
+ if not credential:
+ credential = api.getCredential()
threads = ThreadManager()
for aggregate in api.aggregates:
+ # prevent infinite loop. Dont send request back to caller
+ # unless the caller is the aggregate's SM
+ if caller_hrn == aggrgate and aggregate =! api.hrn:
+ continue
server = api.aggregates[aggregate]
threads.run(server.DeleteSliver, xrn, credential)
threads.get_results()
return 1
def start_slice(api, xrn, creds):
- # XX
- # XX TODO: Should try to use delegated credential first
- # XX
- credential = api.getCredential()
+ # get the callers hrn
+ valid_cred = self.api.auth.checkCredentials(creds, 'startslice', hrn)[0]
+ caller_hrn = valid_cred.get_gid_caller().get_hrn()
+
+ # attempt to use delegated credential first
+ credential = api.getDelegatedCredential(creds)
+ if not credential:
+ credential = api.getCredential()
threads = ThreadManager()
for aggregate in api.aggregates:
+ # prevent infinite loop. Dont send request back to caller
+ # unless the caller is the aggregate's SM
+ if caller_hrn == aggrgate and aggregate =! api.hrn:
+ continue
server = api.aggregates[aggregate]
threads.run(server.Start, xrn, credential)
threads.get_results()
return 1
def stop_slice(api, xrn, creds):
- # XX
- # XX TODO: Should try to use delegated credential first
- # XX
- credential = api.getCredential()
+ # get the callers hrn
+ valid_cred = self.api.auth.checkCredentials(creds, 'stopslice', hrn)[0]
+ caller_hrn = valid_cred.get_gid_caller().get_hrn()
+
+ # attempt to use delegated credential first
+ credential = api.getDelegatedCredential(creds)
+ if not credential:
+ credential = api.getCredential()
threads = ThreadManager()
for aggregate in api.aggregates:
+ # prevent infinite loop. Dont send request back to caller
+ # unless the caller is the aggregate's SM
+ if caller_hrn == aggrgate and aggregate =! api.hrn:
+ continue
server = api.aggregates[aggregate]
threads.run(server.Stop, xrn, credential)
threads.get_results()
return 1
def get_slices(api, creds):
+
# look in cache first
if api.cache:
slices = api.cache.get('slices')
if slices:
return slices
- # fetch from aggregates
- slices = []
- credential = api.getCredential()
+ # get the callers hrn
+ valid_cred = self.api.auth.checkCredentials(creds, 'listslices', hrn)[0]
+ caller_hrn = valid_cred.get_gid_caller().get_hrn()
+
+ # attempt to use delegated credential first
+ credential = api.getDelegatedCredential(creds)
+ if not credential:
+ credential = api.getCredential()
threads = ThreadManager()
+ # fetch from aggregates
for aggregate in api.aggregates:
+ # prevent infinite loop. Dont send request back to caller
+ # unless the caller is the aggregate's SM
+ if caller_hrn == aggrgate and aggregate =! api.hrn:
+ continue
server = api.aggregates[aggregate]
threads.run(server.ListSlices, credential)
return slices
def get_rspec(api, creds, options):
+
# get slice's hrn from options
xrn = options.get('geni_slice_urn', None)
hrn, type = urn_to_hrn(xrn)
hrn, type = urn_to_hrn(xrn)
rspec = None
- # XX
- # XX TODO: Should try to use delegated credential first
- # XX
- cred = api.getCredential()
+
+ # get the callers hrn
+ valid_cred = self.api.auth.checkCredentials(creds, 'listnodes', hrn)[0]
+ caller_hrn = valid_cred.get_gid_caller().get_hrn()
+
+ # attempt to use delegated credential first
+ credential = api.getDelegatedCredential(creds)
+ if not credential:
+ credential = api.getCredential()
threads = ThreadManager()
-
for aggregate in api.aggregates:
- if aggregate not in [api.auth.client_cred.get_gid_caller().get_hrn()]:
- # get the rspec from the aggregate
- server = api.aggregates[aggregate]
- my_opts = copy(options)
- my_opts['geni_compressed'] = False
- threads.run(server.ListResources, cred, my_opts)
- #threads.run(server.get_resources, cred, xrn, origin_hrn)
+ # prevent infinite loop. Dont send request back to caller
+ # unless the caller is the aggregate's SM
+ if caller_hrn == aggrgate and aggregate =! api.hrn:
+ continue
+ # get the rspec from the aggregate
+ server = api.aggregates[aggregate]
+ my_opts = copy(options)
+ my_opts['geni_compressed'] = False
+ threads.run(server.ListResources, credential, my_opts)
+ #threads.run(server.get_resources, cred, xrn, origin_hrn)
-
results = threads.get_results()
# combine the rspecs into a single rspec
for agg_rspec in results: