# rspec
rspec_file = self.get_rspec_file(args[1])
rspec = open(rspec_file).read()
- # users
- # need to pass along user keys to the aggregate.
- # users = [
- # { urn: urn:publicid:IDN+emulab.net+user+alice
- # keys: [<ssh key A>, <ssh key B>]
- # }]
- users = []
- slice_records = self.registry().Resolve(slice_urn, [self.my_credential_string])
- if slice_records and 'researcher' in slice_records[0] and slice_records[0]['researcher']!=[]:
- slice_record = slice_records[0]
- user_hrns = slice_record['researcher']
- user_urns = [hrn_to_urn(hrn, 'user') for hrn in user_hrns]
- user_records = self.registry().Resolve(user_urns, [self.my_credential_string])
-
api_options = {}
api_options ['call_id'] = unique_call_id()
- api_options['geni_users'] = users
result = server.Allocate(slice_urn, creds, rspec, api_options)
value = ReturnValue.get_value(result)
if self.options.raw:
# set the requtested rspec version
version_manager = VersionManager()
rspec_version = version_manager._get_version('geni', '3.0').to_dict()
- api_options['geni_rspec_version'] = rspec_version
+ api_options['geni_rspec_version'] = rspec_version
+
+ # users
+ # need to pass along user keys to the aggregate.
+ # users = [
+ # { urn: urn:publicid:IDN+emulab.net+user+alice
+ # keys: [<ssh key A>, <ssh key B>]
+ # }]
+ users = []
+ slice_records = self.registry().Resolve(slice_urn, [self.my_credential_string])
+ if slice_records and 'researcher' in slice_records[0] and slice_records[0]['researcher']!=[]:
+ slice_record = slice_records[0]
+ user_hrns = slice_record['researcher']
+ user_urns = [hrn_to_urn(hrn, 'user') for hrn in user_hrns]
+ user_records = self.registry().Resolve(user_urns, [self.my_credential_string])
+ users = pg_users_arg(user_records)
+
+ api_options['geni_users'] = users
result = server.Provision([slice_urn], creds, api_options)
value = ReturnValue.get_value(result)
if self.options.raw:
slices = self.driver.shell.GetSlices(filter)
if not slices:
return []
- slice = slices[0]
+ slice = slices[0]
+ slice['hrn'] = PlXrn(auth=self.driver.hrn, slicename=slice['name']).hrn
# get sliver users
persons = []
nodes_dict = self.get_slice_nodes(slice, options)
slivers = []
for node in nodes_dict.values():
- node.update(slices[0])
+ node.update(slice)
node['tags'] = tags_dict[node['node_id']]
sliver_hrn = '%s.%s-%s' % (self.driver.hrn, slice['slice_id'], node['node_id'])
node['sliver_id'] = Xrn(sliver_hrn, type='sliver').urn
# ensure slice record exists
slice = slices.verify_slice(xrn.hrn, slice_record, peer, sfa_peer, expiration=expiration, options=options)
# ensure person records exists
- persons = slices.verify_persons(xrn.hrn, slice, users, peer, sfa_peer, options=options)
+ #persons = slices.verify_persons(xrn.hrn, slice, users, peer, sfa_peer, options=options)
# ensure slice attributes exists
slices.verify_slice_attributes(slice, requested_attributes, options=options)
leases = slices.verify_slice_leases(slice, requested_leases, kept_leases, peer)
# handle MyPLC peer association.
# only used by plc and ple.
- slices.handle_peer(site, slice, persons, peer)
+ slices.handle_peer(site, slice, None, peer)
return aggregate.describe([xrn.get_urn()], version=rspec.version)
def provision(self, urns, options={}):
- # update sliver allocation states and set them to geni_provisioned
+ # update users
+ slices = PlSlices(self)
aggregate = PlAggregate(self)
slivers = aggregate.get_slivers(urns)
+ slice = slivers[0]
+ peer = slices.get_peer(slice['hrn'])
+ sfa_peer = slices.get_sfa_peer(slice['hrn'])
+ users = options.get('geni_users', [])
+ persons = slices.verify_persons(None, slice, users, peer, sfa_peer, options=options)
+ slices.handle_peer(None, None, persons, peer)
+ # update sliver allocation states and set them to geni_provisioned
sliver_ids = [sliver['sliver_id'] for sliver in slivers]
SliverAllocation.set_allocations(sliver_ids, 'geni_provisioned')
version_manager = VersionManager()