from sfa.rspecs.elements.channel import Channel
from sfa.rspecs.version_manager import VersionManager
-from sfa.nitos.nitosxrn import NitosXrn, hostname_to_urn, hrn_to_nitos_slicename, slicename_to_hrn
+from sfa.nitos.nitosxrn import NitosXrn, hostname_to_urn, hrn_to_nitos_slicename, slicename_to_hrn, channel_to_urn
from sfa.planetlab.vlink import get_tc_rate
from sfa.planetlab.topology import Topology
rspec_channel['channel_num'] = channel_number
rspec_channel['start_time'] = channel['start_time']
rspec_channel['duration'] = (int(channel['end_time']) - int(channel['start_time'])) / int(grain)
+ rspec_channel['component_id'] = channel_to_urn(self.driver.hrn, self.driver.testbedInfo['name'], channel_number)
# retreive slicename
for slc in slices:
rspec_channel['channel_num'] = channel['channel']
rspec_channel['frequency'] = channel['frequency']
rspec_channel['standard'] = channel['modulation']
+ rspec_channel['component_id'] = channel_to_urn(self.driver.hrn, self.driver.testbedInfo['name'], channel['channel'])
rspec_channels.append(rspec_channel)
return rspec_channels
from sfa.rspecs.rspec import RSpec
-from sfa.nitos.nitosxrn import NitosXrn, hrn_to_nitos_slicename, xrn_to_hostname
+from sfa.nitos.nitosxrn import NitosXrn, hrn_to_nitos_slicename, xrn_to_hostname, xrn_to_channel
MAXINT = 2L**31-1
slice_name = hrn_to_nitos_slicename(channel['slice_id'])
if slice_name != slice['slice_name']:
continue
- channel_num = channel['channel_num']
+ channel_num = xrn_to_channel(channel['component_id'])
nitos_channel = self.driver.filter_nitos_results(nitos_channels, {'channel': channel_num})[0]
# fill the requested channel with nitos ids
requested_channel['slice_id'] = slice['slice_id']
return NitosXrn(xrn=hrn,type='any').nitos_authname()
def xrn_to_hostname(hrn):
return Xrn.unescape(NitosXrn(xrn=hrn, type='node').get_leaf())
+def channel_to_hrn (auth, login_base, channel):
+ return NitosXrn(auth=auth+'.'+login_base, channel=channel).get_hrn()
+def channel_to_urn (auth, login_base, channel):
+ return NitosXrn(auth=auth+'.'+login_base, channel=channel).get_urn()
+def xrn_to_channel(hrn):
+ return Xrn.unescape(NitosXrn(xrn=hrn, type='channel').get_leaf())
class NitosXrn (Xrn):
def site_hrn (auth, login_base):
return '.'.join([auth,login_base])
- def __init__ (self, auth=None, hostname=None, slicename=None, email=None, interface=None, **kwargs):
+ def __init__ (self, auth=None, hostname=None, slicename=None, email=None, interface=None, channel=None, **kwargs):
#def hostname_to_hrn(auth_hrn, login_base, hostname):
if hostname is not None:
self.type='node'
self.type = 'interface'
self.hrn = auth + '.' + interface
self.hrn_to_urn()
+ elif channel is not None:
+ self.type='channel'
+ self.hrn=".".join([auth] + [channel])
+ self.hrn_to_urn()
else:
Xrn.__init__ (self,**kwargs)
'slice_id',
'start_time',
'duration',
+ 'component_id',
]
channel_elems = []
for channel in channels:
- channel_fields = ['channel_num', 'frequency', 'standard']
+ channel_fields = ['channel_num', 'frequency', 'standard', 'component_id']
channel_elem = spectrum_elem.add_instance('channel', channel, channel_fields)
channel_elems.append(channel_elem)
channel['channel_num'] = channel_elem.attrib['channel_num']
channel['frequency'] = channel_elem.attrib['frequency']
channel['standard'] = channel_elem.attrib['standard']
+ channel['component_id'] = channel_elem.attrib['component_id']
channels.append(channel)
return channels
for channel in channels:
channel['start_time'] = datetime_to_string(utcparse(channel['start_time']))
if channel['slice_id'] == lease[0]['slice_id'] and channel['start_time'] == lease[0]['start_time'] and channel['duration'] == lease[0]['duration']:
- lease_elem.add_instance('channel', channel, ['channel_num'])
+ lease_elem.add_instance('channel', channel, ['component_id'])
@staticmethod
channel['slice_id'] = lease_elem.attrib['slice_id']
channel['start_time'] = datetime_to_epoch(utcparse(lease_elem.attrib['start_time']))
channel['duration'] = lease_elem.attrib['duration']
- channel['channel_num'] = channel_elem.attrib['channel_num']
+ channel['component_id'] = channel_elem.attrib['component_id']
+
channels.append(channel)
return (leases, channels)