Merge branch 'upstreammaster'
[sfa.git] / sfa / plc / network.py
index 5834f4f..5b2983b 100644 (file)
@@ -6,8 +6,7 @@ from StringIO import StringIO
 from lxml import etree
 from xmlbuilder import XMLBuilder
 
-from sfa.util.faults import *
-#from sfa.util.sfalogging import sfa_logger
+from sfa.util.faults import InvalidRSpec
 from sfa.util.xrn import get_authority
 from sfa.util.plxrn import hrn_to_pl_slicename, hostname_to_urn
 
@@ -349,6 +348,7 @@ class Network:
         try:
             val = self.sites[id]
         except:
+            self.api.logger.error("Invalid RSpec: site ID %s not found" % id )
             raise InvalidRSpec("site ID %s not found" % id)
         return val
     
@@ -473,6 +473,10 @@ class Network:
             if not relaxng(tree):
                 error = relaxng.error_log.last_error
                 message = "%s (line %s)" % (error.message, error.line)
+                self.api.logger.error("failed to validate rspec %r"%message)
+                self.api.logger.debug("---------- XML input BEG")
+                self.api.logger.debug(xml)
+                self.api.logger.debug("---------- XML input END")
                 raise InvalidRSpec(message)
 
         self.rspec = rspec
@@ -568,8 +572,12 @@ class Network:
         """
         tmp = []
         for node in api.plshell.GetNodes(api.plauth, {'peer_id': None}):
-            t = node['node_id'], Node(self, node)
-            tmp.append(t)
+            try:
+                t = node['node_id'], Node(self, node)
+                tmp.append(t)
+            except:
+                self.api.logger.error("Failed to add node %s (%s) to RSpec" % (node['hostname'], node['node_id']))
+                 
         return dict(tmp)
 
     def get_ifaces(self, api):