Hi Tom,

I built it from a branch forked from pre-boron release I believe.   I will 
migrate them into DTCL.

thank you very much!
Xingjun
________________________________
From: Tom Pantelis [tompante...@gmail.com]
Sent: Wednesday, July 26, 2017 3:36 PM
To: Xingjun Chu
Cc: controller-dev@lists.opendaylight.org; faas-...@lists.opendaylight.org
Subject: Re: [controller-dev] Missing Data Change Notification

Xingjun,

What version are you running? Also DCL is deprecated - it is recommended to use 
DTCL. Not sure if anyone will support DCL at this point.

Tom

On Wed, Jul 26, 2017 at 2:25 PM, Xingjun Chu 
<xingjun....@huawei.com<mailto:xingjun....@huawei.com>> wrote:
Hi,

I have an issue regarding DCN, hope you guys can give me  a hint. Much 
appreciated.

I have a YANG file which has defined the following

container fabric-rendered-mapping {
                        list fabric {
                            key "id";
                            leaf id {
                                type fabric:fabric-id;
                            }

                            list rib {
                                key "vrf";

                                leaf vrf {
                                    type uint32;
                                }
        …………….
}

YANGTools generates FabricRenderedMapping.java class,

A listener is registered as below and its onDataChanged Method is implemented.

InstanceIdentifier<Route> routeIID = 
InstanceIdentifier.create(FabricRenderedMapping.class)
                                .child(Fabric.class, new 
FabricKey(fabricId)).child(Rib.class).child(Route.class);

ribRouteListener = 
databroker.registerDataChangeListener(LogicalDatastoreType.OPERATIONAL, 
routeIID, this,
                                DataChangeScope.BASE);

  @Override
    public void onDataChanged(AsyncDataChangeEvent<InstanceIdentifier<?>, 
DataObject> change) {

        Map<InstanceIdentifier<?>, DataObject> createdData = 
change.getCreatedData();
        for (Entry<InstanceIdentifier<?>, DataObject> entry : 
createdData.entrySet()) {
            onDataCreated(entry);
        }

        Map<InstanceIdentifier<?>, DataObject> updatedData = 
change.getUpdatedData();
        for (Entry<InstanceIdentifier<?>, DataObject> entry : 
updatedData.entrySet()) {
            onDataUpdated(entry);
        }

        for (InstanceIdentifier<?> iid : change.getRemovedPaths()) {
            DataObject oldData = change.getOriginalData().get(iid);
            onDataRemoved(iid, oldData);
        }

    }

private void onDataCreated(Entry<InstanceIdentifier<?>, DataObject> entry) {
…………………
}

When a rib object is created and transaction is submitted into the data store 
as using code below,

InstanceIdentifier<Route> routeIID = 
InstanceIdentifier.create(FabricRenderedMapping.class)
                                .child(Fabric.class, new 
FabricKey(fabricId)).child(Rib.class).child(Route.class);
                        ribRouteListener = 
databroker.registerDataChangeListener(LogicalDatastoreType.OPERATIONAL, 
routeIID, this,
                                DataChangeScope.BASE);

I checked the “fabricKey” value which matches each other.   But in 
onDataCreated did NOT get invoked or get any notification.

Any pointers what I am missing?  BTW, it is single node deployment, not 
clustering.

Thanks
Xingjun

_______________________________________________
controller-dev mailing list
controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>
https://lists.opendaylight.org/mailman/listinfo/controller-dev


_______________________________________________
controller-dev mailing list
controller-dev@lists.opendaylight.org
https://lists.opendaylight.org/mailman/listinfo/controller-dev

Reply via email to