- def handle_peer(self, site, slice, persons, peer):
- if peer:
- # bind site
- try:
- if site:
- self.driver.shell.BindObjectToPeer('site', site['site_id'], peer['shortname'], slice['site_id'])
- except Exception,e:
- self.driver.shell.DeleteSite(site['site_id'])
- raise e
-
- # bind slice
- try:
- if slice:
- self.driver.shell.BindObjectToPeer('slice', slice['slice_id'], peer['shortname'], slice['slice_id'])
- except Exception,e:
- self.driver.shell.DeleteSlice(slice['slice_id'])
- raise e
-
- # bind persons
- for person in persons:
- try:
- self.driver.shell.BindObjectToPeer('person',
- person['person_id'], peer['shortname'], person['peer_person_id'])
-
- for (key, remote_key_id) in zip(person['keys'], person['key_ids']):
- try:
- self.driver.shell.BindObjectToPeer( 'key', key['key_id'], peer['shortname'], remote_key_id)
- except:
- self.driver.shell.DeleteKey(key['key_id'])
- logger("failed to bind key: %s to peer: %s " % (key['key_id'], peer['shortname']))
- except Exception,e:
- self.driver.shell.DeletePerson(person['person_id'])
- raise e
-
- return slice
-
- def verify_site(self, slice_xrn, slice_record={}, peer=None, sfa_peer=None, options={}):