fix KeyError
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Mon, 2 May 2011 17:57:09 +0000 (13:57 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Mon, 2 May 2011 17:57:09 +0000 (13:57 -0400)
sfa/plc/aggregate.py

index 1d123d8..089ec04 100644 (file)
@@ -11,7 +11,7 @@ class Aggregate:
     nodes = {}
     interfaces = {}
     links = {}
-    tag_types = {}
+    node_tags = {}
     prepared=False
 
     def __init__(self, api):
@@ -36,10 +36,10 @@ class Aggregate:
         if not self.links or force:
             pass
 
-    def prepare_tagtypes(self, force=False):
-        if not self.tag_types or force:
-            for tag_type in self.api.plshell.GetTagTypes(self.api.plauth):
-                self.tag_types[tag_type['tag_type_id']] = tag_type
+    def prepare_node_tags(self, force=False):
+        if not self.node_tags or force:
+            for node_tag in self.api.plshell.GetNodeTags(self.api.plauth):
+                self.node_tags[node_tag['node_tag_id']] = node_tag
 
     def prepare(self, force=False):
         if not self.prepared or force:
@@ -47,17 +47,19 @@ class Aggregate:
             self.prepare_nodes(force)
             self.prepare_interfaces(force)
             self.prepare_links(force)
-            self.prepare_tagtypes(force)
+            self.prepare_node_tags(force)
             # add site/interface info to nodes
             for node_id in self.nodes:
                 node = self.nodes[node_id]
                 site = self.sites[node['site_id']]
                 interfaces = [self.interfaces[interface_id] for interface_id in node['interface_ids']]
+                tags = [self.node_tags[tag_id] for tag_id in node['node_tag_ids']]
                 node['network'] = self.api.hrn
                 node['urn'] = hostname_to_urn(self.api.hrn, site['login_base'], node['hostname'])
                 node['site_urn'] = hrn_to_urn(PlXrn.site_hrn(self.api.hrn, site['login_base']), 'authority') 
                 node['site'] = site
                 node['interfaces'] = interfaces
+                node['tags'] = tags
 
         self.prepared = True