#!/usr/bin/python
from sfa.util.xrn import Xrn, hrn_to_urn, urn_to_hrn, urn_to_sliver_id
from sfa.util.sfatime import epochparse
+from sfa.util.sfalogging import logger
from sfa.rspecs.rspec import RSpec
from sfa.rspecs.elements.hardware_type import HardwareType
class PlAggregate:
- api = None
- #panos new user options variable
- user_options = {}
-
def __init__(self, driver):
self.driver = driver
-
+
def get_sites(self, filter={}):
sites = {}
- for site in self.driver.GetSites(filter):
+ for site in self.driver.shell.GetSites(filter):
sites[site['site_id']] = site
return sites
def get_interfaces(self, filter={}):
interfaces = {}
- for interface in self.driver.GetInterfaces(filter):
+ for interface in self.driver.shell.GetInterfaces(filter):
iface = Interface()
if interface['bwlimit']:
interface['bwlimit'] = str(int(interface['bwlimit'])/1000)
def get_node_tags(self, filter={}):
node_tags = {}
- for node_tag in self.driver.GetNodeTags(filter):
+ for node_tag in self.driver.shell.GetNodeTags(filter):
node_tags[node_tag['node_tag_id']] = node_tag
return node_tags
def get_pl_initscripts(self, filter={}):
pl_initscripts = {}
filter.update({'enabled': True})
- for initscript in self.driver.GetInitScripts(filter):
+ for initscript in self.driver.shell.GetInitScripts(filter):
pl_initscripts[initscript['initscript_id']] = initscript
return pl_initscripts
slice_urn = hrn_to_urn(slice_xrn, 'slice')
slice_hrn, _ = urn_to_hrn(slice_xrn)
slice_name = hrn_to_pl_slicename(slice_hrn)
- slices = self.driver.GetSlices(slice_name)
+ slices = self.driver.shell.GetSlices(slice_name)
if not slices:
return (slice, slivers)
slice = slices[0]
slivers[node_id]= sliver
# sort sliver attributes by node id
- tags = self.driver.GetSliceTags({'slice_tag_id': slice['slice_tag_ids']})
+ tags = self.driver.shell.GetSliceTags({'slice_tag_id': slice['slice_tag_ids']})
for tag in tags:
# most likely a default/global sliver attribute (node_id == None)
if tag['node_id'] not in slivers:
filter['boot_state'] = 'boot'
filter.update({'peer_id': None})
- nodes = self.driver.GetNodes(filter)
+ nodes = self.driver.shell.GetNodes(filter)
site_ids = []
interface_ids = []
rspec_node['component_manager_id'] = Xrn(self.driver.hrn, 'authority+cm').get_urn()
rspec_node['authority_id'] = hrn_to_urn(PlXrn.site_hrn(self.driver.hrn, site['login_base']), 'authority+sa')
rspec_node['boot_state'] = node['boot_state']
- rspec_node['exclusive'] = 'False'
+ rspec_node['exclusive'] = 'false'
rspec_node['hardware_types']= [HardwareType({'name': 'plab-pc'}),
HardwareType({'name': 'pc'})]
# only doing this because protogeni rspec needs
interface['ipv4'] = interface['ip']
interface['component_id'] = PlXrn(auth=self.driver.hrn,
interface='node%s:eth%s' % (node['node_id'], if_count)).get_urn()
+ # interfaces in the manifest need a client id
+ if slice:
+ interface['client_id'] = "%s:%s" % (node['node_id'], if_id)
rspec_node['interfaces'].append(interface)
if_count+=1
rspec.version.add_links(links)
# add sliver defaults
- default_sliver_attribs = slivers.get(None, [])
- for sliver_attrib in default_sliver_attribs:
- rspec.version.add_default_sliver_attribute(sliver_attrib['name'], sliver_attrib['value'])
-
+ default_sliver = slivers.get(None, [])
+ if default_sliver:
+ default_sliver_attribs = default_sliver.get('tags', [])
+ for attrib in default_sliver_attribs:
+ logger.info(attrib)
+ rspec.version.add_default_sliver_attribute(attrib['tagname'], attrib['value'])
return rspec.toxml()