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
     """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:
     """
     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":
     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
     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