From 7ad93f6fc32c1ed2d1c98d87a1482eb321f70111 Mon Sep 17 00:00:00 2001
From: Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Date: Tue, 8 Nov 2011 12:07:12 +0100
Subject: [PATCH] partial fixes

---
 sfa/plc/aggregate.py | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/sfa/plc/aggregate.py b/sfa/plc/aggregate.py
index 3ffa2ca4..bda3bbcc 100644
--- a/sfa/plc/aggregate.py
+++ b/sfa/plc/aggregate.py
@@ -4,8 +4,10 @@ from sfa.util.plxrn import PlXrn, hostname_to_urn, hrn_to_pl_slicename
 
 from sfa.rspecs.rspec import RSpec
 from sfa.rspecs.elements.hardware_type import HardwareType
+from sfa.rspecs.elements.node import Node
 from sfa.rspecs.elements.link import Link
 from sfa.rspecs.elements.login import Login
+from sfa.rspecs.elements.location import Location
 from sfa.rspecs.elements.interface import Interface
 from sfa.rspecs.elements.services import Services
 from sfa.rspecs.elements.pltag import PLTag
@@ -43,7 +45,7 @@ class Aggregate:
     def get_links(self, filter={}):
         
         if not self.api.config.SFA_AGGREGATE_TYPE.lower() == 'vini':
-            return
+            return []
 
         topology = Topology() 
         links = {}
@@ -131,10 +133,12 @@ class Aggregate:
         
         return (slice, slivers)
 
-    def get_nodes(self, slice=None):
+    def get_nodes (self, slice=None,slivers=[]):
         filter = {}
+        tags_filter = {}
         if slice and 'node_ids' in slice and slice['node_ids']:
             filter['node_id'] = slice['node_ids']
+            tags_filter=filter.copy()
         
         filter.update({'peer_id': None})
         nodes = self.api.driver.GetNodes(filter)
@@ -152,9 +156,14 @@ class Aggregate:
         # get interfaces
         interfaces = self.get_interfaces({'interface_id':interface_ids}) 
         # get slivers
-        slivers = self.get_slivers(slice)
+        # 
+        # thierry: no get_slivers, we have slivers as a result of
+        # get_slice_and_slivers passed as an argument
+        # 
+#        slivers = self.get_slivers(slice)
+
         # get tags
-        node_tags = self.get_node_tags({'node_id': node_ids})
+        node_tags = self.get_node_tags(tags_filter)
         # get initscripts
         pl_initscripts = self.get_pl_initscripts()
 
@@ -165,6 +174,9 @@ class Aggregate:
                 if not slice or slice['slice_id'] not in node['slice_ids_whitelist']:
                     continue
             rspec_node = Node()
+            # xxx how to retrieve site['login_base']
+            site_id=node['site_id']
+            site=sites_dict[site_id]
             rspec_node['component_id'] = hostname_to_urn(self.api.hrn, site['login_base'], node['hostname'])
             rspec_node['component_name'] = node['hostname']
             rspec_node['component_manager_id'] = self.api.hrn
@@ -183,7 +195,7 @@ class Aggregate:
             rspec_node['interfaces'] = []
             for if_id in node['interface_ids']:
                 interface = Interface(interfaces[if_id]) 
-                interface['ipv4'] = interface['ip']
+                interface['ipv4'] = interface['ipv4']
                 rspec_node['interfaces'].append(interface)
             tags = [PLTag(node_tags[tag_id]) for tag_id in node['node_tag_ids']]
             rspec_node['tags'] = tags
@@ -213,7 +225,7 @@ class Aggregate:
 
         slice, slivers = self.get_slice_and_slivers(slice_xrn)
         rspec = RSpec(version=rspec_version, user_options=self.user_options)
-        rspec.version.add_nodes(self.get_nodes(slice, slivers))
+        rspec.version.add_nodes(self.get_nodes(slice), slivers)
         rspec.version.add_links(self.get_links(slice))
         
         # add sliver defaults
-- 
2.47.0