add try/except aound BindObjectToPeer when object type is key
[sfa.git] / sfa / plc / slices.py
index 21cf41f..af40562 100644 (file)
@@ -184,13 +184,13 @@ class Slices(SimpleStorage):
 
         # Get the slice's site record
         authority = get_authority(hrn)
-        site_records = registry.resolve(credential, get_authority(hrn))
+        site_records = registry.resolve(credential, authority)
         site = {}
         for site_record in site_records:
             if site_record.get_type() in ['authority']:
                 site = site_record.as_dict()
         if not site:
-            raise RecordNotFound(hrn)
+            raise RecordNotFound(authority)
         remote_site_id = site.pop('site_id')
             
         # Make sure slice exists at plc, if it doesnt add it
@@ -289,8 +289,11 @@ class Slices(SimpleStorage):
                         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:
-                        self.api.plshell.BindObjectToPeer(self.api.plauth, 'person', person_id, peer, person_dict['pointer'])
-                        self.api.plshell.BindObjectToPeer(self.api.plauth, 'key', key_id, peer, key_ids.pop(0))
+                        self.api.plshell.BindObjectToPeer(self.api.plauth, 'person', person_id, peer, person_dict['pointer'])
+                        # BindObjectToPeer may faill if type is key and it's already bound to the peer
+                        # so lets just put a try/except here
+                        try: self.api.plshell.BindObjectToPeer(self.api.plauth, 'key', key_id, peer, key_ids.pop(0))
+                        except: pass
 
         # find out where this slice is currently running
         nodelist = self.api.plshell.GetNodes(self.api.plauth, slice['node_ids'], ['hostname'])