Add getresps.
[doldaconnect.git] / lib / python / dolcon / __init__.py
index 11cb6d4..0cb26ba 100644 (file)
@@ -47,14 +47,14 @@ def cnl(host = None, port = -1, useauthless = True, **kw):
     """A convenience function for connect and loginasync.
 
     This function will connect to the given server, or the server in
-    the environment variable $DCSERVER if none is given, and
-    authenticate to the server. If any of the steps fail, an exception
-    is raised.
+    the environment variable $DCSERVER if none is given, or, if that
+    fails, localhost, and authenticate to the server. If any of the
+    steps fail, an exception is raised.
     """
     if host is None:
         host = os.getenv("DCSERVER")
     if host is None:
-        raise ValueError, "No DC host to connect to"
+        host = "localhost"
     fd = mustconnect(host, port)
     err, reason = login(useauthless, **kw)
     if err != "success":
@@ -88,3 +88,25 @@ def ecmda(code, *args):
     if resp.getcode() != code:
         raise ValueError, resp.getcode()
     return resp
+
+def ecmds(*args):
+    """Another convenience function for ecmd.
+
+    Like ecmda, but will fail on all 5xx codes, and succeed on all
+    others.
+    """
+    resp = ecmd(*args)
+    if resp.getcode() >= 500 and resp.getcode() < 600:
+        raise ValueError, tuple(resp.extract()[0])
+    return resp
+
+def getresps():
+    """A generator function which will iterate over all responses from
+    getresp.
+    """
+    while True:
+        resp = getresp()
+        if resp is None:
+            break
+        else:
+            yield resp