X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=sfa%2Fnitos%2Fnitosdriver.py;h=aa87bcc70cf5034c1ecfddce3e77c7741484adc7;hb=7747b6a274eb64708b19538058eb3c7992fd0457;hp=3b1f30e1f96889928fa7d3fe9283beb473b3762d;hpb=65140a14a72e7009d8fd2f1d1f35e42ec98edc21;p=sfa.git diff --git a/sfa/nitos/nitosdriver.py b/sfa/nitos/nitosdriver.py index 3b1f30e1..aa87bcc7 100644 --- a/sfa/nitos/nitosdriver.py +++ b/sfa/nitos/nitosdriver.py @@ -477,7 +477,9 @@ class NitosDriver (Driver): cached_requested = options.get('cached', True) version_manager = VersionManager() # get the rspec's return format from options - rspec_version = version_manager.get_version(options.get('geni_rspec_version')) + #rspec_version = version_manager.get_version(options.get('geni_rspec_version')) + # rspec's return format for nitos aggregate is version NITOS 1 + rspec_version = version_manager.get_version('NITOS 1') version_string = "rspec_%s" % (rspec_version) #panos adding the info option to the caching key (can be improved) @@ -550,11 +552,11 @@ class NitosDriver (Driver): # get login info user = {} keys = [] - if slice['user_id']: + if slice['user_ids']: users = self.shell.getUsers() # filter users on slice['user_ids'] for usr in users: - if usr['user_id'] in slice['user_id']: + if usr['user_id'] in slice['user_ids']: keys.extend(usr['keys']) @@ -606,27 +608,11 @@ class NitosDriver (Driver): # ensure slice record exists slice = slices.verify_slice(slice_hrn, slice_record, sfa_peer, options=options) # ensure user records exists - #users = slices.verify_users(slice_hrn, slice, users, sfa_peer, options=options) + users = slices.verify_users(slice_hrn, slice, users, sfa_peer, options=options) - # add/remove slice from nodes - #requested_slivers = [] - #for node in rspec.version.get_nodes_with_slivers(): - # hostname = None - # if node.get('component_name'): - # hostname = node.get('component_name').strip() - # elif node.get('component_id'): - # hostname = xrn_to_hostname(node.get('component_id').strip()) - # if hostname: - # requested_slivers.append(hostname) - #nodes = slices.verify_slice_nodes(slice, requested_slivers, peer) - - # add/remove channels - - - # add/remove leases + # add/remove leases (nodes and channels) # a lease in Nitos RSpec case is a reservation of nodes and channels grouped by (slice,timeslot) rspec_requested_nodes, rspec_requested_channels = rspec.version.get_leases() - print rspec_requested_nodes, rspec_requested_channels nodes = slices.verify_slice_leases_nodes(slice, rspec_requested_nodes) channels = slices.verify_slice_leases_channels(slice, rspec_requested_channels) @@ -635,19 +621,25 @@ class NitosDriver (Driver): def delete_sliver (self, slice_urn, slice_hrn, creds, options): slicename = hrn_to_nitos_slicename(slice_hrn) - slices = self.shell.getSlices({'slice_name': slicename}) + slices = self.filter_nitos_results(self.shell.getSlices({}, []), {'slice_name': slicename}) if not slices: return 1 slice = slices[0] - + + slice_reserved_nodes = self.filter_nitos_results(self.shell.getReservedNodes({}, []), {'slice_id': slice['slice_id'] }) + slice_reserved_channels = self.filter_nitos_results(self.shell.getReservedChannels(), {'slice_id': slice['slice_id'] }) + + slice_reserved_nodes_ids = [node['reservation_id'] for node in slice_reserved_nodes] + slice_reserved_channels_ids = [channel['reservation_id'] for channel in slice_reserved_channels] + + # release all reserved nodes and channels for that slice try: + released_nodes = self.shell.releaseNodes({'reservation_ids': slice_reserved_nodes_ids}) + released_channels = self.shell.releaseChannels({'reservation_ids': slice_reserved_channels_ids}) + except: pass - #self.shell.DeleteSliceFromNodes({'slice_name': slicename, slice['node_ids']}) - finally: - if peer: - self.shell.BindObjectToPeer('slice', slice['slice_id'], peer, slice['peer_slice_id']) return 1 - + def renew_sliver (self, slice_urn, slice_hrn, creds, expiration_time, options): slicename = hrn_to_nitos_slicename(slice_hrn) slices = self.shell.GetSlices({'slicename': slicename}, ['slice_id'])