On Thu, Feb 6, 2014 at 10:20 AM, Jose A. Lopes <[email protected]> wrote:
>> These functions get passed to the JSON library and they are used
>> whenever they don't know what to do with an object; in this case, they
>> instruct the library to use None for Private values. For things that
>> are not Private, we still don't know how to deal with them. That's why
>> the generic exception is raised.
>
> Doesn't the exception message get shown to the user?

The message is precisely the same exception that is shown to users
today. See the documentation
(http://simplejson.readthedocs.org/en/latest/#simplejson.dump) and the
actual implementation:

>>> import simplejson
>>> simplejson.dumps(simplejson)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line
321, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/dist-packages/simplejson/encoder.py", line
237, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/dist-packages/simplejson/encoder.py", line
311, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python2.7/dist-packages/simplejson/encoder.py", line
213, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <module 'simplejson' from
'/usr/lib/python2.7/dist-packages/simplejson/__init__.pyc'> is not
JSON serializable

~~~

diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs
index f300981..6af388d 100644

--- a/src/Ganeti/Constants.hs
+++ b/src/Ganeti/Constants.hs
@@ -4751,6 +4751,14 @@ glusterPortDefault :: Int
 glusterPortDefault = 24007

 -- | Parameters that should be protected
+--
+-- Python does not have a type system and can't automatically infer what should
+-- be the resulting type of a JSON request. As a result, it must rely on this
+-- list of parameter names to protect values correctly.
+--
+-- Names ending in _cluster will be treated as dicts of dicts of
private values.
+-- Otherwise they are considered dicts of private values.
+
 privateParametersBlacklist :: [String]
 privateParametersBlacklist = [ "osparams_private"
                              , "osparams_secret"
diff --git a/lib/serializer.py b/lib/serializer.py
index 38bed4f..3371239 100644
--- a/lib/serializer.py
+++ b/lib/serializer.py
@@ -87,6 +87,7 @@ def WrapPrivateValues(json):
   """Crawl a JSON decoded structure for private values and wrap them.

   @param json: the json-decoded value to protect.
+
   """

   # This function used to be recursive. I use this list to avoid actual


-- 
Raffa Santi
Google Germany GmbH
Dienerstr. 12
80331 München


Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores

Reply via email to