from sfa.util.xrn import get_leaf, get_authority, urn_to_hrn
from sfa.util.plxrn import hrn_to_pl_slicename
from sfa.util.policy import Policy
-
+from sfa.rspecs.rspec import RSpec
from sfa.plc.vlink import VLink
+from sfa.util.xrn import Xrn
MAXINT = 2L**31-1
except:
self.api.logger.log_exc('Failed to add/remove slice from nodes')
- def verify_slice_links(self, slice, links, peer=None):
+ def verify_slice_links(self, slice, links, aggregate):
# nodes is undefined here
- if not links or not nodes:
+ if not links:
return
+
for link in links:
- topo_rspec = VLink.get_topo_rspec(link)
+ # get the ip address of the first node in the link
+ ifname1 = Xrn(link['interface1']['component_id']).get_leaf()
+ (node, device) = ifname1.split(':')
+ node_id = int(node.replace('node', ''))
+ node = aggregate.nodes[node_id]
+ if1 = aggregate.interfaces[node['interface_ids'][0]]
+ ipaddr = if1['ip']
+ topo_rspec = VLink.get_topo_rspec(link, ipaddr)
+ self.api.plshell.AddSliceTag(self.api.plauth, slice['name'], 'topo_rspec', str([topo_rspec]), node_id)
+
def handle_peer(self, site, slice, persons, peer):
# add requested_attributes
for attribute in added_slice_attributes:
try:
- name, value, node_id = attribute['name'], attribute['value'], attribute.get('node_id', None)
- self.api.plshell.AddSliceTag(self.api.plauth, slice['name'], name, value, node_id)
+ self.api.plshell.AddSliceTag(self.api.plauth, slice['name'], attribute['name'], attribute['value'], attribute.get('node_id', None))
except Exception, e:
self.api.logger.warn('Failed to add sliver attribute. name: %s, value: %s, node_id: %s\nCause:%s'\
% (name, value, node_id, str(e)))