if the remote agg. does not have person with peer_id, try to use the local account...
[sfa.git] / sfa / plc / slices.py
index ca4d316..cad902e 100644 (file)
@@ -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()