diff --git a/python/ovs/db/idl.py b/python/ovs/db/idl.py index 5330cea624e..3a8dec2828c 100644 --- a/python/ovs/db/idl.py +++ b/python/ovs/db/idl.py @@ -758,6 +758,8 @@ def _substitute_uuids(self, json): row = self._txn_rows.get(uuid, None) if row and row._data is None: return ["named-uuid", _uuid_name_from_uuid(uuid)] + else: + return [self._substitute_uuids(elem) for elem in json] return json def __disassemble(self): diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at index 48e74899e80..68fe8689f98 100644 --- a/tests/ovsdb-idl.at +++ b/tests/ovsdb-idl.at @@ -429,3 +429,13 @@ OVSDB_CHECK_IDL([external-linking idl, consistent ops], 002: i=1 k=1 ka=[] l2=0 uuid=<1> 003: done ]]) + +OVSDB_CHECK_IDL_PY([external-linking idl, insert ops], + [], + [['linktest']], + [[000: empty +001: commit, status=success +002: i=1 k=1 ka=[1] l2= uuid=<0> +002: i=2 k=1 ka=[1 2] l2= uuid=<1> +003: done +]]) diff --git a/tests/test-ovsdb.py b/tests/test-ovsdb.py index 1350ccdef4d..170476deadb 100644 --- a/tests/test-ovsdb.py +++ b/tests/test-ovsdb.py @@ -180,7 +180,7 @@ def print_idl(idl, step): for row in l2.itervalues(): s = ["%03d: i=%s l1=" % (step, row.i)] if row.l1: - s.append(str(row.l1.i)) + s.append(str(row.l1[0].i)) s.append(" uuid=%s" % row.uuid) print(''.join(s)) n += 1 @@ -312,6 +312,15 @@ def idl_set(idl, commands, step): sys.stdout.flush() txn.abort() return + elif name == "linktest": + l1_0 = txn.insert(idl.tables["link1"]) + l1_0.i = 1 + l1_0.k = [l1_0] + l1_0.ka = [l1_0] + l1_1 = txn.insert(idl.tables["link1"]) + l1_1.i = 2 + l1_1.k = [l1_0] + l1_1.ka = [l1_0, l1_1] else: sys.stderr.write("unknown command %s\n" % name) sys.exit(1)