On Wed, Feb 5, 2014 at 6:22 PM, Jose A. Lopes <[email protected]> wrote:
>> + def ToDict(self, _with_private=False):
>> """Convert to a dict holding only standard python types.
>
> Do we need to change Copy() as well?
Hard to say in abstract. I have tested Ganeti without exposing those
vales through Copy. I have not experienced particular problems. `git
grep Copy(` says this method is usually used for disks, NICs and
queries. None of these should have access to private or secret
parameters. I'd follow through with the whitelisting approach I've
used and consider this function "guilty until proven innocent."
>> @@ -1719,12 +1739,18 @@ class Cluster(TaggableObject):
>> """
>> return self.enabled_hypervisors[0]
>>
>> - def ToDict(self):
>> + def ToDict(self, _with_private=False):
>> """Custom function for cluster.
>>
>> """
>> mydict = super(Cluster, self).ToDict()
>>
>
> Super call missing _with_private ?
> Also shouldn't 'mydict' be 'bo' to be consistent with the others?
> Alghout, I don't really know what 'bo' means... :)
No idea! I'd rather have I name that I can understand...
~ ~ ~
diff --git a/lib/objects.py b/lib/objects.py
index 9a81216..2f3c005 100644
--- a/lib/objects.py
+++ b/lib/objects.py
@@ -756,7 +756,8 @@ class Disk(ConfigObject):
self.dynamic_params = dyn_disk_params
# pylint: disable=W0221
- def ToDict(self, include_dynamic_params=False):
+ def ToDict(self, include_dynamic_params=False,
+ _with_private=False):
"""Disk-specific conversion to standard python types.
This replaces the children lists of objects with lists of
@@ -1205,7 +1206,6 @@ class Instance(TaggableObject):
python types.
"""
-
bo = super(Instance, self).ToDict(_with_private=_with_private)
if _with_private:
@@ -1743,7 +1743,7 @@ class Cluster(TaggableObject):
"""Custom function for cluster.
"""
- mydict = super(Cluster, self).ToDict()
+ mydict = super(Cluster, self).ToDict(_with_private=_with_private)
# Explicitly save private parameters.
if _with_private:
diff --git a/lib/luxi.py b/lib/luxi.py
index 28cdd82..654a7bc 100644
--- a/lib/luxi.py
+++ b/lib/luxi.py
@@ -95,7 +95,6 @@ class Client(cl.AbstractClient):
return self.CallMethod(REQ_PICKUP_JOB, (job,))
def SubmitJob(self, ops):
-
ops_state = map(lambda op: op.__getstate__()
if not isinstance(op, objects.ConfigObject)
else op.ToDict(_with_private=True), ops)
--
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