X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplc%2Faggregate.py;h=654a84f09537a70109ad698c60173077a1e9f9f3;hb=561044a25626b0c874f644886539ede0053967fc;hp=3512309263f4f95f0913db10c292731c6821d61a;hpb=3dc90bacaf8a63921b50d713e0546a68b047af3d;p=sfa.git diff --git a/sfa/plc/aggregate.py b/sfa/plc/aggregate.py index 35123092..654a84f0 100644 --- a/sfa/plc/aggregate.py +++ b/sfa/plc/aggregate.py @@ -1,10 +1,12 @@ #!/usr/bin/python from sfa.util.xrn import hrn_to_urn, urn_to_hrn from sfa.util.plxrn import PlXrn, hostname_to_urn, hrn_to_pl_slicename + from sfa.rspecs.rspec import RSpec from sfa.rspecs.elements.link import Link from sfa.rspecs.elements.interface import Interface -from sfa.managers.vini.topology import PhysicalLinks + +from sfa.util.topology import Topology from sfa.rspecs.version_manager import VersionManager from sfa.plc.vlink import get_tc_rate @@ -27,13 +29,24 @@ class Aggregate: def prepare_sites(self, filter={}, force=False): if not self.sites or force: - for site in self.api.plshell.GetSites(self.api.plauth, filter): + for site in self.api.driver.GetSites(filter): self.sites[site['site_id']] = site def prepare_nodes(self, filter={}, force=False): if not self.nodes or force: - filter.update({'peer_id': None}) - for node in self.api.plshell.GetNodes(self.api.plauth, filter): + filter.update({'peer_id': None}) + nodes = self.api.driver.GetNodes(filter) + site_ids = [] + interface_ids = [] + tag_ids = [] + for node in nodes: + site_ids.append(node['site_id']) + interface_ids.extend(node['interface_ids']) + tag_ids.extend(node['node_tag_ids']) + self.prepare_sites({'site_id': site_ids}) + self.prepare_interfaces({'interface_id': interface_ids}) + self.prepare_node_tags({'node_tag_id': tag_ids}) + for node in nodes: # add site/interface info to nodes. # assumes that sites, interfaces and tags have already been prepared. site = self.sites[node['site_id']] @@ -50,15 +63,18 @@ class Aggregate: def prepare_interfaces(self, filter={}, force=False): if not self.interfaces or force: - for interface in self.api.plshell.GetInterfaces(self.api.plauth, filter): + for interface in self.api.driver.GetInterfaces(filter): self.interfaces[interface['interface_id']] = interface def prepare_links(self, filter={}, force=False): + # we're aobut to deprecate sfa_aggregate_type, need to get this right + # with the generic framework if not self.links or force: if not self.api.config.SFA_AGGREGATE_TYPE.lower() == 'vini': return - for (site_id1, site_id2) in PhysicalLinks: + topology = Topology() + for (site_id1, site_id2) in topology: link = Link() if not site_id1 in self.sites or site_id2 not in self.sites: continue @@ -93,13 +109,13 @@ class Aggregate: def prepare_node_tags(self, filter={}, force=False): if not self.node_tags or force: - for node_tag in self.api.plshell.GetNodeTags(self.api.plauth, filter): + for node_tag in self.api.driver.GetNodeTags(filter): self.node_tags[node_tag['node_tag_id']] = node_tag def prepare_pl_initscripts(self, filter={}, force=False): if not self.pl_initscripts or force: filter.update({'enabled': True}) - for initscript in self.api.plshell.GetInitScripts(self.api.plauth, filter): + for initscript in self.api.driver.GetInitScripts(filter): self.pl_initscripts[initscript['initscript_id']] = initscript def prepare(self, slice = None, force=False): @@ -117,7 +133,7 @@ class Aggregate: self.prepare_node_tags({'node_id': slice['node_ids']}) self.prepare_nodes({'node_id': slice['node_ids']}) self.prepare_links({'slice_id': slice['slice_id']}) - self.prepare_pl_initscripts({'slice_id': slice['slice_id']}) + self.prepare_pl_initscripts() self.prepared = True def get_rspec(self, slice_xrn=None, version = None): @@ -134,7 +150,7 @@ class Aggregate: if slice_xrn: slice_hrn, _ = urn_to_hrn(slice_xrn) slice_name = hrn_to_pl_slicename(slice_hrn) - slices = self.api.plshell.GetSlices(self.api.plauth, slice_name) + slices = self.api.driver.GetSlices(slice_name) if slices: slice = slices[0] self.prepare(slice=slice) @@ -162,7 +178,7 @@ class Aggregate: # add slivers if slice_xrn and slice: slivers = [] - tags = self.api.plshell.GetSliceTags(self.api.plauth, slice['slice_tag_ids']) + tags = self.api.driver.GetSliceTags(slice['slice_tag_ids']) # add default tags for tag in tags: