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 (parent:
5307e4e
)
renew_slice now renamed as RenewSliver & supports call_id
author
Thierry Parmentelat
<thierry.parmentelat@sophia.inria.fr>
Thu, 14 Apr 2011 10:06:48 +0000
(12:06 +0200)
committer
Thierry Parmentelat
<thierry.parmentelat@sophia.inria.fr>
Thu, 14 Apr 2011 10:06:48 +0000
(12:06 +0200)
sfa/client/sfi.py
patch
|
blob
|
history
sfa/managers/aggregate_manager_pl.py
patch
|
blob
|
history
sfa/managers/aggregate_manager_vini.py
patch
|
blob
|
history
sfa/managers/slice_manager_pl.py
patch
|
blob
|
history
sfa/methods/RenewSliver.py
patch
|
blob
|
history
diff --git
a/sfa/client/sfi.py
b/sfa/client/sfi.py
index
5974a03
..
a6f80f6
100755
(executable)
--- a/
sfa/client/sfi.py
+++ b/
sfa/client/sfi.py
@@
-958,7
+958,7
@@
class Sfi:
delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority))
creds.append(delegated_cred)
time = args[1]
delegated_cred = self.delegate_cred(slice_cred, get_authority(self.authority))
creds.append(delegated_cred)
time = args[1]
- return server.RenewSliver(slice_urn, creds, time)
+ return server.RenewSliver(slice_urn, creds, time
, unique_call_id()
)
def status(self, opts, args):
def status(self, opts, args):
diff --git
a/sfa/managers/aggregate_manager_pl.py
b/sfa/managers/aggregate_manager_pl.py
index
4b8f34d
..
8a39c0b
100644
(file)
--- a/
sfa/managers/aggregate_manager_pl.py
+++ b/
sfa/managers/aggregate_manager_pl.py
@@
-209,8
+209,9
@@
def CreateSliver(api, slice_xrn, creds, rspec, users, call_id):
return network.toxml()
return network.toxml()
-def renew_slice(api, xrn, creds, expiration_time):
- hrn, type = urn_to_hrn(xrn)
+def RenewSliver(api, xrn, creds, expiration_time, call_id):
+ if Callids().already_handled(call_id): return True
+ (hrn, type) = urn_to_hrn(xrn)
slicename = hrn_to_pl_slicename(hrn)
slices = api.plshell.GetSlices(api.plauth, {'name': slicename}, ['slice_id'])
if not slices:
slicename = hrn_to_pl_slicename(hrn)
slices = api.plshell.GetSlices(api.plauth, {'name': slicename}, ['slice_id'])
if not slices:
@@
-218,8
+219,11
@@
def renew_slice(api, xrn, creds, expiration_time):
slice = slices[0]
requested_time = utcparse(expiration_time)
record = {'expires': int(time.mktime(requested_time.timetuple()))}
slice = slices[0]
requested_time = utcparse(expiration_time)
record = {'expires': int(time.mktime(requested_time.timetuple()))}
- api.plshell.UpdateSlice(api.plauth, slice['slice_id'], record)
- return 1
+ try:
+ api.plshell.UpdateSlice(api.plauth, slice['slice_id'], record)
+ return True
+ except:
+ return False
def start_slice(api, xrn, creds):
hrn, type = urn_to_hrn(xrn)
def start_slice(api, xrn, creds):
hrn, type = urn_to_hrn(xrn)
diff --git
a/sfa/managers/aggregate_manager_vini.py
b/sfa/managers/aggregate_manager_vini.py
index
d961443
..
f4e919b
100644
(file)
--- a/
sfa/managers/aggregate_manager_vini.py
+++ b/
sfa/managers/aggregate_manager_vini.py
@@
-26,7
+26,7
@@
from sfa.util.callids import Callids
# VINI aggregate is almost identical to PLC aggregate for many operations,
# so lets just import the methods form the PLC manager
from sfa.managers.aggregate_manager_pl import (
# VINI aggregate is almost identical to PLC aggregate for many operations,
# so lets just import the methods form the PLC manager
from sfa.managers.aggregate_manager_pl import (
-start_slice, stop_slice,
renew_slice
, reset_slice, get_slices, get_ticket, slice_status)
+start_slice, stop_slice,
RenewSliver
, reset_slice, get_slices, get_ticket, slice_status)
def GetVersion(api):
def GetVersion(api):
diff --git
a/sfa/managers/slice_manager_pl.py
b/sfa/managers/slice_manager_pl.py
index
5bb923b
..
9676fe9
100644
(file)
--- a/
sfa/managers/slice_manager_pl.py
+++ b/
sfa/managers/slice_manager_pl.py
@@
-102,9
+102,10
@@
def CreateSliver(api, xrn, creds, rspec, users, call_id):
merged_rspec = merge_rspecs(results)
return merged_rspec
merged_rspec = merge_rspecs(results)
return merged_rspec
-def
renew_slice(api, xrn, creds, expiration_time
):
- hrn, type = urn_to_hrn(xrn)
+def
RenewSliver(api, xrn, creds, expiration_time, call_id
):
+ if Callids().already_handled(call_id): return True
+ (hrn, type) = urn_to_hrn(xrn)
# get the callers hrn
valid_cred = api.auth.checkCredentials(creds, 'renewsliver', hrn)[0]
caller_hrn = Credential(string=valid_cred).get_gid_caller().get_hrn()
# get the callers hrn
valid_cred = api.auth.checkCredentials(creds, 'renewsliver', hrn)[0]
caller_hrn = Credential(string=valid_cred).get_gid_caller().get_hrn()
@@
-121,9
+122,9
@@
def renew_slice(api, xrn, creds, expiration_time):
continue
server = api.aggregates[aggregate]
continue
server = api.aggregates[aggregate]
- threads.run(server.RenewSliver, xrn, [credential], expiration_time)
- threads.get_results()
- return
1
+ threads.run(server.RenewSliver, xrn, [credential], expiration_time
, call_id
)
+ # 'and' the results
+ return
reduce (lambda x,y: x and y, threads.get_results() , True)
def get_ticket(api, xrn, creds, rspec, users):
slice_hrn, type = urn_to_hrn(xrn)
def get_ticket(api, xrn, creds, rspec, users):
slice_hrn, type = urn_to_hrn(xrn)
diff --git
a/sfa/methods/RenewSliver.py
b/sfa/methods/RenewSliver.py
index
b574a57
..
5e3e266
100644
(file)
--- a/
sfa/methods/RenewSliver.py
+++ b/
sfa/methods/RenewSliver.py
@@
-18,15
+18,17
@@
class RenewSliver(Method):
accepts = [
Parameter(str, "Slice URN"),
Parameter(type([str]), "List of credentials"),
accepts = [
Parameter(str, "Slice URN"),
Parameter(type([str]), "List of credentials"),
- Parameter(str, "Expiration time in RFC 3339 format")
+ Parameter(str, "Expiration time in RFC 3339 format"),
+ Parameter(str, "call_id"),
]
returns = Parameter(bool, "Success or Failure")
]
returns = Parameter(bool, "Success or Failure")
- def call(self, slice_xrn, creds, expiration_time):
- hrn, type = urn_to_hrn(slice_xrn)
+ def call(self, slice_xrn, creds, expiration_time, call_id=""):
self.api.logger.info("interface: %s\ttarget-hrn: %s\tcaller-creds: %s\tmethod-name: %s"%(self.api.interface, hrn, creds, self.name))
self.api.logger.info("interface: %s\ttarget-hrn: %s\tcaller-creds: %s\tmethod-name: %s"%(self.api.interface, hrn, creds, self.name))
+ (hrn, type) = urn_to_hrn(slice_xrn)
+
# Find the valid credentials
valid_creds = self.api.auth.checkCredentials(creds, 'renewsliver', hrn)
# Find the valid credentials
valid_creds = self.api.auth.checkCredentials(creds, 'renewsliver', hrn)
@@
-37,7
+39,5
@@
class RenewSliver(Method):
if requested_time > datetime.datetime.utcnow() + datetime.timedelta(days=60):
raise Exception('Cannot renew > 60 days from now')
manager = self.api.get_interface_manager()
if requested_time > datetime.datetime.utcnow() + datetime.timedelta(days=60):
raise Exception('Cannot renew > 60 days from now')
manager = self.api.get_interface_manager()
- manager.renew_slice(self.api, slice_xrn, valid_creds, expiration_time)
-
- return 1
+ return manager.RenewSliver(self.api, slice_xrn, valid_creds, expiration_time, call_id)