git://git.onelab.eu
/
sfa.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
4f61ba7
)
prevent infinite loop
author
Tony Mack
<tmack@cs.princeton.edu>
Wed, 8 Sep 2010 19:09:57 +0000
(19:09 +0000)
committer
Tony Mack
<tmack@cs.princeton.edu>
Wed, 8 Sep 2010 19:09:57 +0000
(19:09 +0000)
sfa/managers/slice_manager_pl.py
patch
|
blob
|
history
diff --git
a/sfa/managers/slice_manager_pl.py
b/sfa/managers/slice_manager_pl.py
index
4230978
..
6eaf82a
100644
(file)
--- a/
sfa/managers/slice_manager_pl.py
+++ b/
sfa/managers/slice_manager_pl.py
@@
-60,12
+60,21
@@
def create_slice(api, xrn, creds, rspec, users):
message = "%s (line %s)" % (error.message, error.line)
raise InvalidRSpec(message)
message = "%s (line %s)" % (error.message, error.line)
raise InvalidRSpec(message)
+ # 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:
# 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
+
# Just send entire RSpec to each aggregate
server = api.aggregates[aggregate]
threads.run(server.CreateSliver, xrn, credential, rspec, users)
# Just send entire RSpec to each aggregate
server = api.aggregates[aggregate]
threads.run(server.CreateSliver, xrn, credential, rspec, users)
@@
-75,12
+84,21
@@
def create_slice(api, xrn, creds, rspec, users):
return merged_rspec
def renew_slice(api, xrn, creds, expiration_time):
return merged_rspec
def renew_slice(api, xrn, creds, expiration_time):
+ # 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:
# 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()
server = api.aggregates[aggregate]
threads.run(server.RenewSliver, xrn, credential, expiration_time)
threads.get_results()
@@
-96,12
+114,20
@@
def get_ticket(api, xrn, creds, rspec, users):
aggregate_hrn = element.values()[0]
aggregate_rspecs[aggregate_hrn] = rspec
aggregate_hrn = element.values()[0]
aggregate_rspecs[aggregate_hrn] = rspec
+ # 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():
# 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]
server = None
if aggregate in api.aggregates:
server = api.aggregates[aggregate]
@@
-157,36
+183,60
@@
def get_ticket(api, xrn, creds, rspec, users):
def delete_slice(api, xrn, creds):
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:
# 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):
server = api.aggregates[aggregate]
threads.run(server.DeleteSliver, xrn, credential)
threads.get_results()
return 1
def start_slice(api, xrn, creds):
+ # 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:
# 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):
server = api.aggregates[aggregate]
threads.run(server.Start, xrn, credential)
threads.get_results()
return 1
def stop_slice(api, xrn, creds):
+ # 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:
# 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()
server = api.aggregates[aggregate]
threads.run(server.Stop, xrn, credential)
threads.get_results()
@@
-211,12
+261,17
@@
def status(api, xrn, creds):
return 1
def get_slices(api, creds):
return 1
def get_slices(api, creds):
+
# look in cache first
if api.cache:
slices = api.cache.get('slices')
if slices:
return slices
# look in cache first
if api.cache:
slices = api.cache.get('slices')
if slices:
return slices
+ # 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:
# attempt to use delegated credential first
credential = api.getDelegatedCredential(creds)
if not credential:
@@
-224,6
+279,10
@@
def get_slices(api, creds):
threads = ThreadManager()
# fetch from aggregates
for aggregate in api.aggregates:
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)
server = api.aggregates[aggregate]
threads.run(server.ListSlices, credential)
@@
-240,6
+299,7
@@
def get_slices(api, creds):
return slices
def get_rspec(api, creds, options):
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)
# get slice's hrn from options
xrn = options.get('geni_slice_urn', None)
hrn, type = urn_to_hrn(xrn)
@@
-257,13
+317,21
@@
def get_rspec(api, creds, options):
hrn, type = urn_to_hrn(xrn)
rspec = None
hrn, type = urn_to_hrn(xrn)
rspec = None
-
+
+ # 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:
# 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
# get the rspec from the aggregate
server = api.aggregates[aggregate]
my_opts = copy(options)
# get the rspec from the aggregate
server = api.aggregates[aggregate]
my_opts = copy(options)