Что такое тип модификации поддерева, созданного в результате слияния родительского - PullRequest
0 голосов
/ 30 июня 2018

Вопрос касается поведения 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);

Для обновления контейнера мы используем « merge ».

У нас также есть DataTreeChangeListener, где мы получаем информацию об обновлениях.

public void onDataTreeChanged(
    Collection<DataTreeModification<LogicalNetwork>> changed)

Обратите внимание, что мы слушаем не модификации контейнера, а его поддерево.

Какой тип модификации следует ожидать для LogicalNetwork, если объект Tenant и LogicalNetwork являются новыми? Это должно быть SUBTREE_MODIFIED или WRITE?

Мы используем азот-SR3 и видим, что он «ЗАПИШИТЕ». Однако наши разработчики заверили меня, что в предыдущей версии ODL это был «SUBTREE_MODIFIED». Итак, вопрос в том, что это должно быть.

1 Ответ

0 голосов
/ 30 июня 2018

Если часть дерева данных, для которого вы зарегистрировались, имеет корни в LogicalNetwork, то при создании или полной замене узла LogicalNetwork тип Modification будет WRITE. Если какой-либо дочерний узел существующего узла LogicalNetwork добавляется или обновляется, он будет SUBTREE_MODIFIED.

...