X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplc%2Fslices.py;h=cad902e64902b5ee10df81f23d48faa3ac787068;hb=dbd689dc78bb8faab981c66377fc1cbdd068106b;hp=ca4d3162cedb9faebb56f5ee2fbff88826de750d;hpb=14258b479f2fd3172d876ce26a988f690c9a26bc;p=sfa.git diff --git a/sfa/plc/slices.py b/sfa/plc/slices.py index ca4d3162..cad902e6 100644 --- a/sfa/plc/slices.py +++ b/sfa/plc/slices.py @@ -280,9 +280,14 @@ class Slices(SimpleStorage): if not person_record: pass person_dict = person_record + local_person=False if peer: peer_id = self.api.plshell.GetPeers(self.api.plauth, {'shortname': peer}, ['peer_id'])[0]['peer_id'] persons = self.api.plshell.GetPersons(self.api.plauth, {'email': [person_dict['email']], 'peer_id': peer_id}, ['person_id', 'key_ids']) + if not persons: + persons = self.api.plshell.GetPersons(self.api.plauth, [person_dict['email']], ['person_id', 'key_ids']) + if persons: + local_person=True else: persons = self.api.plshell.GetPersons(self.api.plauth, [person_dict['email']], ['person_id', 'key_ids']) @@ -315,13 +320,14 @@ class Slices(SimpleStorage): self.api.plshell.AddPersonToSlice(self.api.plauth, person_dict['email'], slicename) self.api.plshell.AddPersonToSite(self.api.plauth, person_dict['email'], site_id) - if peer: + if peer and not local_person: self.api.plshell.BindObjectToPeer(self.api.plauth, 'person', person_id, peer, person_dict['pointer']) + if peer: self.api.plshell.BindObjectToPeer(self.api.plauth, 'site', site_id, peer, remote_site_id) - self.verify_keys(registry, credential, person_dict, key_ids, person_id, peer) + self.verify_keys(registry, credential, person_dict, key_ids, person_id, peer, local_person) - def verify_keys(self, registry, credential, person_dict, key_ids, person_id, peer): + def verify_keys(self, registry, credential, person_dict, key_ids, person_id, peer, local_person): keylist = self.api.plshell.GetKeys(self.api.plauth, key_ids, ['key']) keys = [key['key'] for key in keylist] @@ -333,8 +339,9 @@ class Slices(SimpleStorage): if peer: self.api.plshell.UnBindObjectFromPeer(self.api.plauth, 'person', person_id, peer) key_id = self.api.plshell.AddPersonKey(self.api.plauth, person_dict['email'], key) - if peer: + if peer and not local_person: self.api.plshell.BindObjectToPeer(self.api.plauth, 'person', person_id, peer, person_dict['pointer']) + if peer: try: self.api.plshell.BindObjectToPeer(self.api.plauth, 'key', key_id, peer, key_ids.pop(0)) except: pass @@ -345,7 +352,7 @@ class Slices(SimpleStorage): peer = self.get_peer(hrn) sfa_peer = self.get_sfa_peer(hrn) - spec = Rspec(rspec) + spec = RSpec(rspec) # Get the slice record from sfa slicename = hrn_to_pl_slicename(hrn) slice = {} @@ -385,12 +392,12 @@ class Slices(SimpleStorage): return 1 def create_slice_smgr(self, hrn, rspec): - spec = Rspec() - tempspec = Rspec() + spec = RSpec() + tempspec = RSpec() spec.parseString(rspec) slicename = hrn_to_pl_slicename(hrn) specDict = spec.toDict() - if specDict.has_key('Rspec'): specDict = specDict['Rspec'] + if specDict.has_key('RSpec'): specDict = specDict['RSpec'] if specDict.has_key('start_time'): start_time = specDict['start_time'] else: start_time = 0 if specDict.has_key('end_time'): end_time = specDict['end_time'] @@ -405,7 +412,7 @@ class Slices(SimpleStorage): for netspec in netspecs: net_hrn = netspec['name'] resources = {'start_time': start_time, 'end_time': end_time, 'networks': netspec} - resourceDict = {'Rspec': resources} + resourceDict = {'RSpec': resources} tempspec.parseDict(resourceDict) rspecs[net_hrn] = tempspec.toxml()