Custom Search

2 commits - AUTHORS func/minion func/overlord func/utils.py

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


 AUTHORS                 |    1 +
 func/minion/server.py   |    2 +-
 func/overlord/client.py |    2 +-
 func/utils.py           |   13 ++++++++++---
 4 files changed, 13 insertions(+), 5 deletions(-)

New commits:
commit e5dcb8d9aa5ed9b8e24fc570c82c65fea43d7746
Author: John Eckersberg <jeckersb@xxxxxxxxxx>
Date:   Tue Apr 13 15:40:56 2010 -0400

    Backwards compatibility for xmlrpc Binary encoding
    
    This will allow older minions to continue working with a newer
    overlord but the inverse is not possible without some relatively
    intrusive changes
    
    (Thanks to Adam DeBuysscher)

diff --git a/AUTHORS b/AUTHORS
index 8cfa477..87fb8b8 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -17,6 +17,7 @@ Additional patches and contributions by ...
    Jasper Capel <capel@xxxxxxxxxxxx>
    Louis Coilliot <louis.coilliot@xxxxxxxxx>
    Eli Criffield <elicriffield@xxxxxxxxx>
+   Adam DeBuysscher <adebuyss@xxxxxxxxx>
    John Eckersberg <jeckersb@xxxxxxxxxx>
    Luca Foppiano <lfoppiano@xxxxxxxxxxxxx>
    Matt Hicks <mhicks@xxxxxxxxxx>
diff --git a/func/overlord/client.py b/func/overlord/client.py
index b9f8d76..4e924c6 100644
--- a/func/overlord/client.py
+++ b/func/overlord/client.py
@@ -786,7 +786,7 @@ class Overlord(object):
                 if self.interactive:
                     print retval
 
-                retval = func_utils.deep_base64(retval)
+                retval = func_utils.deep_base64(retval,1)
 
             except Exception, e:
                 (t, v, tb) = sys.exc_info()
diff --git a/func/utils.py b/func/utils.py
index d4ca37b..f184013 100644
--- a/func/utils.py
+++ b/func/utils.py
@@ -171,22 +171,29 @@ def should_log(args):
         return True
     return False
 
-def deep_base64(ds):
+def deep_base64(ds, mode = 0):
     """
     Run through an arbitrary datastructure of dicts / lists / tuples
     to find all strings and base 64 encode/decode them with
     xmlrpclib.Binary objects.
+
+    mode 0 - flip, 1 - force decode, 2 - force encode
+
     """
     from xmlrpclib import Binary
 
     if isinstance(ds, Binary):
+        if mode == 2:
+             return ds
         return ds.data
 
     if isinstance(ds, basestring):
+        if mode == 1:
+             return ds
         return Binary(ds)
 
     if isinstance(ds, list) or isinstance(ds, tuple):
-        cleaned = map(lambda x: deep_base64(x), ds)
+        cleaned = map(lambda x: deep_base64(x,mode), ds)
         if isinstance(ds, tuple):
             cleaned = tuple(cleaned)
         return cleaned
@@ -194,7 +201,7 @@ def deep_base64(ds):
     if isinstance(ds, dict):
         cleaned = {}
         for k,v in ds.iteritems():
-            cleaned[deep_base64(k)] = deep_base64(v)
+            cleaned[deep_base64(k)] = deep_base64(v,mode)
         return cleaned
 
     return ds


commit a171dd6d0dc2ee098a8bfab30b6e413fc70f8217
Author: John Eckersberg <jeckersb@xxxxxxxxxx>
Date:   Tue Apr 13 15:38:36 2010 -0400

    encode tracebacks

diff --git a/func/minion/server.py b/func/minion/server.py
index 3c9d357..101868d 100644
--- a/func/minion/server.py
+++ b/func/minion/server.py
@@ -331,7 +331,7 @@ class FuncSSLXMLRPCServer(AuthedXMLRPCServer.AuthedSSLXMLRPCServer,
         except:
             (t, v, tb) = sys.exc_info()
             rc = utils.nice_exception(t, v, tb)
-            return rc
+            return futils.deep_base64(rc)
 
     def auth_cb(self, request, client_address):
         peer_cert = request.get_peer_certificate()


_______________________________________________
Func-list mailing list
Func-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/func-list

[Home]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Red Hat 9 Bible]     [Fedora Bible]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

Powered by Linux

Google
  Web www.spinics.net