rspec_file = self.get_rspec_file(args[1])
rspec = open(rspec_file).read()
server = self.geni_am
- return server.CreateSliver(slice_xrn, [slice_cred], rspec)
+ return server.CreateSliver(slice_xrn, [slice_cred], rspec, [])
def DeleteSliver(self, opts, args):
slice_xrn = args[0]
from StringIO import StringIO
from time import mktime
+from lxml import etree
+
def GetVersion():
version = {}
version['geni_api'] = 1
# Build up objects that an SFA registry would return if SFA
# could contact the slice's registry directly
- reg_objects = {}
-
- site = {}
- site['site_id'] = 0
- site['name'] = 'geni.%s' % hrn_auth
- site['enabled'] = True
- site['max_slices'] = 100
-
- # Note:
- # Is it okay if this login base is the same as one already at this myplc site?
- # Do we need uniqueness? Should use hrn_auth instead of just the leaf perhaps?
- site['login_base'] = get_leaf(hrn_auth)
- site['abbreviated_name'] = hrn
- site['max_slivers'] = 1000
- reg_objects['site'] = site
+ reg_objects = None
- slice = {}
- slice['expires'] = int(mktime(Credential(string=creds[0]).get_lifetime().timetuple()))
- slice['hrn'] = hrn
- slice['name'] = site['login_base'] + "_" + get_leaf(hrn)
- slice['url'] = hrn
- slice['description'] = hrn
- slice['pointer'] = 0
- reg_objects['slice_record'] = slice
+ if users:
+ reg_objects = {}
-
- # Note:
- # Left off here, need to properly fill out the slice record and
- # stuff the user information in to get through slices.verify_persons
- # Need to hear back from Tony Mack to find out how accurate the user
- # information needs to be.
- for user in users:
- slice['researcher'].append(user.getdefault('name', 'geni_default_user'))
+ site = {}
+ site['site_id'] = 0
+ site['name'] = 'geni.%s' % hrn_auth
+ site['enabled'] = True
+ site['max_slices'] = 100
+ # Note:
+ # Is it okay if this login base is the same as one already at this myplc site?
+ # Do we need uniqueness? Should use hrn_auth instead of just the leaf perhaps?
+ site['login_base'] = get_leaf(hrn_auth)
+ site['abbreviated_name'] = hrn
+ site['max_slivers'] = 1000
+ reg_objects['site'] = site
- keys = []
- for user in users:
- keys += user['keys']
+ slice = {}
+ slice['expires'] = int(mktime(Credential(string=creds[0]).get_lifetime().timetuple()))
+ slice['hrn'] = hrn
+ slice['name'] = site['login_base'] + "_" + get_leaf(hrn)
+ slice['url'] = hrn
+ slice['description'] = hrn
+ slice['pointer'] = 0
+ reg_objects['slice_record'] = slice
- reg_objects['keys'] = keys
-
+ reg_objects['users'] = {}
+ for user in users:
+ user['key_ids'] = []
+ reg_objects['users'][user['email']] = user
+
+
manager_base = 'sfa.managers'
mgr_type = 'pl'
manager_module = manager_base + ".aggregate_manager_%s" % mgr_type
# get the list of valid slice users from the registry and make
# sure they are added to the slice
slicename = hrn_to_pl_slicename(slice_record['hrn'])
- researchers = slice_record.get('researcher', [])
+ if reg_objects:
+ researchers = reg_objects['users'].keys()
+ else:
+ researchers = slice_record.get('researcher', [])
for researcher in researchers:
- person_record = {}
if reg_objects:
- person_records = reg_objects['users']['researcher']
+ person_dict = reg_objects['users'][researcher]
else:
person_records = registry.resolve(credential, researcher)
- for record in person_records:
- if record['type'] in ['user'] and record['enabled']:
- person_record = record
- if not person_record:
- return 1
- person_dict = person_record
+ for record in person_records:
+ if record['type'] in ['user'] and record['enabled']:
+ person_record = record
+ if not person_record:
+ return 1
+ 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
-
+ 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'])