# create a dict user_id -> [ (nitos)keys ]
keys_by_user_id = dict ( [ ( user['user_id'], user['keys']) for user in users ] )
# Get all nitos nodes
- nodes = shell.getNodes()
+ nodes = shell.getNodes({}, [])
# create hash by node_id
- nodes_by_id = dict ( [ (node['node_id'], node) for node in nodes ] )
+ nodes_by_id = dict ( [ (node['id'], node) for node in nodes ] )
# Get all nitos slices
- slices = shell.getSlices()
+ slices = shell.getSlices({}, [])
# create hash by slice_id
slices_by_id = dict ( [ (slice['slice_id'], slice) for slice in slices ] )
urn = hrn_to_urn(node_hrn, 'node')
node_gid = self.auth_hierarchy.create_gid(urn, create_uuid(), pkey)
node_record = RegNode (hrn=node_hrn, gid=node_gid,
- pointer =node['node_id'],
+ pointer =node['id'],
authority=get_authority(node_hrn))
node_record.just_created()
dbsession.add(node_record)
else:
# xxx update the record ...
pass
+
node_record.stale=False
#!/usr/bin/python
-from sfa.util.xrn import Xrn, hrn_to_urn, urn_to_hrn, urn_to_sliver_id
+from sfa.util.xrn import Xrn, hrn_to_urn, urn_to_hrn
from sfa.util.sfatime import utcparse, datetime_to_string
from sfa.util.sfalogging import logger
slice_urn = hrn_to_urn(slice_xrn, 'slice')
slice_hrn, _ = urn_to_hrn(slice_xrn)
slice_name = hrn_to_nitos_slicename(slice_hrn)
- slices = self.driver.shell.getSlices()
+ slices = self.driver.shell.getSlices({'slice_name': slice_name}, [])
# filter results
- for slc in slices:
- if slc['slice_name'] == slice_name:
- slice = slc
- break
+ #for slc in slices:
+ # if slc['slice_name'] == slice_name:
+ # slice = slc
+ # break
if not slice:
return (slice, slivers)
- reserved_nodes = self.driver.shell.getReservedNodes()
- # filter results
+ reserved_nodes = self.driver.shell.getReservedNodes({'slice_id': slice['slice_id']}, [])
+
for node in reserved_nodes:
- if node['slice_id'] == slice['slice_id']:
- slivers[node[node_id]] = node
+ slivers[node['id']] = node
return (slice, slivers)
else:
nodes = [slivers[sliver] for sliver in slivers]
else:
- nodes = self.driver.shell.getNodes()
+ nodes = self.driver.shell.getNodes({}, [])
# get the granularity in second for the reservation system
grain = self.driver.testbedInfo['grain']
location = Location({'longitude': longitude, 'latitude': latitude, 'country': 'unknown'})
rspec_node['location'] = location
# 3D position
- position_3d = Position3D({'x': node['position']['X'], 'y': node['position']['Y'], 'z': node['position']['Z']})
+ position_3d = Position3D({'x': node['X'], 'y': node['Y'], 'z': node['Z']})
#position_3d = Position3D({'x': 1, 'y': 2, 'z': 3})
rspec_node['position_3d'] = position_3d
# Granularity
rspec_node['granularity'] = granularity
# HardwareType
- rspec_node['hardware_type'] = node['node_type']
+ rspec_node['hardware_type'] = node['type']
#rspec_node['hardware_type'] = "orbit"
def get_leases_and_channels(self, slice=None, options={}):
- slices = self.driver.shell.getSlices()
- nodes = self.driver.shell.getNodes()
- leases = self.driver.shell.getReservedNodes()
- channels = self.driver.shell.getChannels()
+ slices = self.driver.shell.getSlices({}, [])
+ nodes = self.driver.shell.getNodes({}, [])
+ leases = self.driver.shell.getReservedNodes({}, [])
+ channels = self.driver.shell.getChannels({}, [])
reserved_channels = self.driver.shell.getReservedChannels()
grain = self.driver.testbedInfo['grain']
rspec_lease['lease_id'] = lease['reservation_id']
# retreive node name
for node in nodes:
- if node['node_id'] == lease['node_id']:
+ if node['id'] == lease['node_id']:
nodename = node['name']
break
def get_channels(self, options={}):
filter = {}
- channels = self.driver.shell.getChannels()
+ channels = self.driver.shell.getChannels({}, [])
rspec_channels = []
for channel in channels:
rspec_channel = Channel()
from sfa.util.sfalogging import logger
from sfa.util.defaultdict import defaultdict
from sfa.util.sfatime import utcparse, datetime_to_string, datetime_to_epoch
-from sfa.util.xrn import hrn_to_urn, get_leaf, urn_to_sliver_id
+from sfa.util.xrn import hrn_to_urn, get_leaf
from sfa.util.cache import Cache
# one would think the driver should not need to mess with the SFA db, but..
return slices
# get data from db
- slices = self.shell.getSlices()
+ slices = self.shell.getSlices({}, [])
# get site name
#site_name = self.shell.getTestbedInfo()['site_name']
site_name = "nitos"
# find out where this slice is currently running
slicename = hrn_to_nitos_slicename(slice_hrn)
- slices = self.shell.getSlices()
+ slices = self.shell.getSlices({}, [])
# filter slicename
if len(slices) == 0:
raise SliverDoesNotExist("%s (used %s as slicename internally)" % (slice_hrn, slicename))
if node['last_contact'] is not None:
res['pl_last_contact'] = datetime_to_string(utcparse(node['last_contact']))
- sliver_id = urn_to_sliver_id(slice_urn, slice['slice_id'], node['node_id'], authority=self.hrn)
+ sliver_id = Xrn(slice_urn, type='slice', id=node['node_id'], authority=self.hrn).urn
res['geni_urn'] = sliver_id
if node['boot_state'] == 'boot':
res['geni_status'] = 'ready'
direct_calls = ['getNodes','getChannels','getSlices','getUsers','getReservedNodes',
'getReservedChannels','getTestbedInfo'
+ 'reserveNodes','reserveChannels','addSlice','addUser','addUserToSlice',
+ 'addUserKey','addNode', 'addChannel',
+ 'updateReservedNodes','updateReservedChannels','updateSlice','updateUser',
+ 'updateNode', 'updateChannel',
+ 'deleteNode','deleteChannel','deleteSlice','deleteUser', 'deleteUserFromSLice',
+ 'deleteKey', 'releaseNodes', 'releaseChannels'
]