问题与WriteTransaction.merge的行为有关。我们有杨容器。
container tenants {
list tenant {
key tenant-id;
uses tenant-attributes;
list logical-network {
key ln-id;
uses logical-network-attributes;
}
}
}
我们使用
更新此容器InstanceIdentifier<Tenant> path = InstanceIdentifier.builder(Tenants.class)
.child(Tenant.class, new TenantKey(tenant_id)).build();
writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, path, tenant, true);
要更新容器,我们使用“ 合并”。
我们还有DataTreeChangeListener,用于接收有关更新的信息。
public void onDataTreeChanged(
Collection<DataTreeModification<LogicalNetwork>> changed)
请注意,我们不是在监听容器的修改,而是在监听它的子树。
如果Tenant对象和LogicalNetwork是新的,我们应该为LogicalNetwork期望哪个ModificationType?应该是SUBTREE_MODIFIED还是WRITE?
我们使用Nitrogen-SR3,我们可以看到它是“ WRITE”。但是,我们的开发人员向我保证,在ODL的先前版本中为“ SUBTREE_MODIFIED”。所以,问题是它应该是什么。
答案 0 :(得分:0)
如果您已注册的数据树部分植根于LogicalNetwork,则在创建或完全替换LogicalNetwork节点时,ModificationType将为WRITE。如果添加或更新了现有LogicalNetwork节点的任何子节点,则它将为SUBTREE_MODIFIED。