From 50c936038cf4185334d19bf023ce52974a09154f Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Fri, 27 Mar 2009 01:36:21 +0000 Subject: [PATCH] fix more bugs --- geni/aggregate.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/geni/aggregate.py b/geni/aggregate.py index cf538a1a..b94e572f 100644 --- a/geni/aggregate.py +++ b/geni/aggregate.py @@ -373,7 +373,11 @@ class Aggregate(GeniServer): sites = self.shell.GetSites(self.auth, [login_base]) if not sites: authority = get_authority(slice_hrn) - site_record = self.registry.resolve(self.credential, authority) + site_records = self.registry.resolve(self.credential, authority) + site_record = {} + if not site_records: + raise RecordNotFound(authority) + site_record = site_records[0] site_info = site_record.as_dict() site = site_info['pl_info'] @@ -383,7 +387,7 @@ class Aggregate(GeniServer): else: site = sites[0] - self.shell.AddSlice(self.auth, slice_info) + self.shell.AddSlice(self.auth, slice) # get the list of valid slice users from the registry and make # they are added to the slice @@ -403,11 +407,21 @@ class Aggregate(GeniServer): # Create the person record if not persons: self.shell.AddPerson(self.auth, person_dict) + key_ids = [] + else: + key_ids = persons[0]['key_ids'] + self.shell.AddPersonToSlice(self.auth, person_dict['email'], slicename) - # Add this person's public keys + + # Get this users local keys + keylist = self.shell.GetKeys(self.auth, key_ids, ['key']) + keys = [key['key'] for key in keylist] + + # add keys that arent already there for personkey in person_dict['keys']: - key = {'key_type': 'ssh', 'key': personkey} - self.shell.AddPersonKey(self.auth, person_dict['email'], key) + if personkey not in keys: + key = {'key_type': 'ssh', 'key': personkey} + self.shell.AddPersonKey(self.auth, person_dict['email'], key) # find out where this slice is currently running nodelist = self.shell.GetNodes(self.auth, slice['node_ids'], ['hostname']) -- 2.43.0