import sfa.util.config.Config as SSfaConfig to avoid interference with nodemanagers...
[nodemanager.git] / curlwrapper.py
index 3bfe491..21b499c 100644 (file)
@@ -1,12 +1,16 @@
-# $Id$
-# $URL$
+# Note
+# in spring 2010, an attempt was made to use pycurl instead of forking curl
+# it turned out, however, that after around 10 cycles of the nodemanager,
+# attempts to call GetSlivers were failing with a curl error 60
+# we are thus reverting to the version from tag curlwrapper.py-NodeManager-2.0-8
+# the (broekn) pycurl version can be found in tags 2.0-9 and 2.0-10
 
 from subprocess import PIPE, Popen
 from select import select
-# raise xmplrpclib.ProtocolError
 import xmlrpclib
 import signal
 import os
+
 import logger
 
 class Sopen(Popen):
@@ -14,7 +18,8 @@ class Sopen(Popen):
         os.kill(self.pid, signal)
 
 def retrieve(url, cacert=None, postdata=None, timeout=90):
-    options = ('/usr/bin/curl', '--fail', '--silent')
+#    options = ('/usr/bin/curl', '--fail', '--silent')
+    options = ('/usr/bin/curl', '--fail', )
     if cacert: options += ('--cacert', cacert)
     if postdata: options += ('--data', '@-')
     if timeout: 
@@ -32,6 +37,7 @@ def retrieve(url, cacert=None, postdata=None, timeout=90):
     rc = p.wait()
     if rc != 0: 
         # when this triggers, the error sometimes doesn't get printed
+        logger.log ("curlwrapper: retrieve, got stderr <%s>"%err)
         raise xmlrpclib.ProtocolError(url, rc, err, postdata)
     else: 
         return data