X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplanetlab%2Fpldriver.py;h=6c88a14fff9d5ff0ae14b6b4161af273c6e3b4ab;hb=f357d5c677573e29f260f82318c9450119474dce;hp=9274f39ef2afefa8b92396954af280aa6b7e3ef2;hpb=d3d1e577918bd1fa0a89a56bd65a049e107fc508;p=sfa.git diff --git a/sfa/planetlab/pldriver.py b/sfa/planetlab/pldriver.py index 9274f39e..6c88a14f 100644 --- a/sfa/planetlab/pldriver.py +++ b/sfa/planetlab/pldriver.py @@ -94,7 +94,10 @@ class PlDriver (Driver): if not persons: for key in ['first_name','last_name']: if key not in sfa_record: sfa_record[key]='*from*sfa*' - pointer = self.shell.AddPerson(dict(sfa_record)) + # AddPerson does not allow everything to be set + can_add = ['first_name', 'last_name', 'title','email', 'password', 'phone', 'url', 'bio'] + add_person_dict=dict ( [ (k,sfa_record[k]) for k in sfa_record if k in can_add ] ) + pointer = self.shell.AddPerson(add_person_dict) else: pointer = persons[0]['person_id'] @@ -121,7 +124,7 @@ class PlDriver (Driver): self.shell.AddPersonKey(pointer, {'key_type' : 'ssh', 'key' : pub_key}) elif type == 'node': - login_base = PlXrn(xrn=sfa_record['authority'],type='node').pl_login_base() + login_base = PlXrn(xrn=sfa_record['authority'],type='authority').pl_login_base() nodes = self.shell.GetNodes([pl_record['hostname']]) if not nodes: pointer = self.shell.AddNode(login_base, pl_record) @@ -742,8 +745,11 @@ class PlDriver (Driver): slices.verify_slice_links(slice, rspec.version.get_link_requests(), nodes) # add/remove leases - rspec_requested_leases = rspec.version.get_leases() - leases = slices.verify_slice_leases(slice, rspec_requested_leases, peer) + try: + rspec_requested_leases = rspec.version.get_leases() + leases = slices.verify_slice_leases(slice, rspec_requested_leases, peer) + except: + pass #requested_leases = [] #kept_leases = [] #for lease in rspec.version.get_leases(): @@ -772,7 +778,10 @@ class PlDriver (Driver): if not slices: return True slice = slices[0] - + + # leases + leases = self.shell.GetLeases({'name': slicename}) + leases_ids = [lease['lease_id'] for lease in leases ] # determine if this is a peer slice # xxx I wonder if this would not need to use PlSlices.get_peer instead # in which case plc.peers could be deprecated as this here @@ -782,6 +791,8 @@ class PlDriver (Driver): if peer: self.shell.UnBindObjectFromPeer('slice', slice['slice_id'], peer) self.shell.DeleteSliceFromNodes(slicename, slice['node_ids']) + if len(leases_ids) > 0: + self.shell.DeleteLeases(leases_ids) finally: if peer: self.shell.BindObjectToPeer('slice', slice['slice_id'], peer, slice['peer_slice_id'])