python/ovs/db/idl.py: Transaction._substitute doesn't handle list/tuple
authorIsaku Yamahata <yamahata@valinux.co.jp>
Thu, 13 Sep 2012 04:41:04 +0000 (13:41 +0900)
committerBen Pfaff <blp@nicira.com>
Thu, 13 Sep 2012 05:22:18 +0000 (22:22 -0700)
commit225b582a8c218eec242921b0eed291cf6ec19b76
tree281b32f0dbb83d5d2513092b120fce6912a88a7d
parent158edc8d32355d736fb843c18e624e3d402a7a16
python/ovs/db/idl.py: Transaction._substitute doesn't handle list/tuple

Since Transaction._substitute doesn't substitute elements of list/tuple,
setting list references results in transaction error. Teach it such case.

Example:
{"op": "update",
 "row":{"bridges":["set",[["uuid",
                           "1f42bc19-307f-42e7-a9c0-c12178bd8b51"],
                          ["uuid",
                           "f97e0c76-7146-489d-9bed-29bc704f65fe"]]]},
 "table": "Open_vSwitch",
 "where":[["_uuid", "==", ["uuid",
                           "20c2a046-ae7e-4453-a576-11034db24985"]]]}

In the above case, uuid in "row" aren't replaced by "named-uuid" because
the function doesn't look into elements of lists.
When list/tuple is found, look into elements recursively.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
python/ovs/db/idl.py
tests/ovsdb-idl.at
tests/test-ovsdb.py