X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fforwardingrules-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Ffrm%2Freconil%2FFlowNodeReconcilListener.java;h=6308f2a9b003e32780aa8bb01cfa029a40fed42b;hp=eb5ae4a9d3889c5a679c30b6c4b1e6c6fcc2f409;hb=974f10884d12baad8cc4fe2807ffbaed4c109586;hpb=3dd9d7c6da1baaf72f05e1118c0ca47dc16e3c7b diff --git a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/reconil/FlowNodeReconcilListener.java b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/reconil/FlowNodeReconcilListener.java index eb5ae4a9d3..6308f2a9b0 100644 --- a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/reconil/FlowNodeReconcilListener.java +++ b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/reconil/FlowNodeReconcilListener.java @@ -8,11 +8,14 @@ package org.opendaylight.controller.frm.reconil; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.ListenableFuture; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ExecutionException; - import org.opendaylight.controller.frm.AbstractChangeListener; import org.opendaylight.controller.frm.FlowCookieProducer; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; @@ -38,10 +41,6 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.ListenableFuture; - /** * forwardingrules-manager * org.opendaylight.controller.frm @@ -65,7 +64,7 @@ public class FlowNodeReconcilListener extends AbstractChangeListener { } @Override - public void onDataChanged(AsyncDataChangeEvent, DataObject> changeEvent) { + public void onDataChanged(final AsyncDataChangeEvent, DataObject> changeEvent) { /* FlowCapableNode DataObjects for reconciliation */ final Set, DataObject>> createdEntries = changeEvent.getCreatedData().entrySet(); @@ -118,34 +117,46 @@ public class FlowNodeReconcilListener extends AbstractChangeListener { final InstanceIdentifier nodeIdent = identifier.firstIdentifierOf(Node.class); final NodeRef nodeRef = new NodeRef(nodeIdent); /* Groups - have to be first */ - for (Group group : flowCapNode.get().getGroup()) { - final GroupRef groupRef = new GroupRef(flowNodeIdent.child(Group.class, group.getKey())); - final AddGroupInputBuilder groupBuilder = new AddGroupInputBuilder(group); - groupBuilder.setGroupRef(groupRef); - groupBuilder.setNode(nodeRef); - this.provider.getSalGroupService().addGroup(groupBuilder.build()); + List groups = flowCapNode.get().getGroup(); + if(groups != null) { + for (Group group : groups) { + final GroupRef groupRef = new GroupRef(flowNodeIdent.child(Group.class, group.getKey())); + final AddGroupInputBuilder groupBuilder = new AddGroupInputBuilder(group); + groupBuilder.setGroupRef(groupRef); + groupBuilder.setNode(nodeRef); + this.provider.getSalGroupService().addGroup(groupBuilder.build()); + } } /* Meters */ - for (Meter meter : flowCapNode.get().getMeter()) { - final MeterRef meterRef = new MeterRef(flowNodeIdent.child(Meter.class, meter.getKey())); - final AddMeterInputBuilder meterBuilder = new AddMeterInputBuilder(meter); - meterBuilder.setMeterRef(meterRef); - meterBuilder.setNode(nodeRef); - this.provider.getSalMeterService().addMeter(meterBuilder.build()); + List meters = flowCapNode.get().getMeter(); + if(meters != null) { + for (Meter meter : meters) { + final MeterRef meterRef = new MeterRef(flowNodeIdent.child(Meter.class, meter.getKey())); + final AddMeterInputBuilder meterBuilder = new AddMeterInputBuilder(meter); + meterBuilder.setMeterRef(meterRef); + meterBuilder.setNode(nodeRef); + this.provider.getSalMeterService().addMeter(meterBuilder.build()); + } } /* Flows */ - for (Table flowTable : flowCapNode.get().getTable()) { - final InstanceIdentifier tableIdent = flowNodeIdent.child(Table.class, flowTable.getKey()); - for (Flow flow : flowTable.getFlow()) { - final FlowCookie flowCookie = new FlowCookie(FlowCookieProducer.INSTANCE.getNewCookie(tableIdent)); - final FlowRef flowRef = new FlowRef(tableIdent.child(Flow.class, flow.getKey())); - final FlowTableRef flowTableRef = new FlowTableRef(tableIdent); - final AddFlowInputBuilder flowBuilder = new AddFlowInputBuilder(flow); - flowBuilder.setCookie(flowCookie); - flowBuilder.setNode(nodeRef); - flowBuilder.setFlowTable(flowTableRef); - flowBuilder.setFlowRef(flowRef); - this.provider.getSalFlowService().addFlow(flowBuilder.build()); + List
tables = flowCapNode.get().getTable(); + if(tables != null) { + for (Table flowTable : tables) { + final InstanceIdentifier
tableIdent = flowNodeIdent.child(Table.class, flowTable.getKey()); + List flows = flowTable.getFlow(); + if(flows != null) { + for (Flow flow : flows) { + final FlowCookie flowCookie = new FlowCookie(FlowCookieProducer.INSTANCE.getNewCookie(tableIdent)); + final FlowRef flowRef = new FlowRef(tableIdent.child(Flow.class, flow.getKey())); + final FlowTableRef flowTableRef = new FlowTableRef(tableIdent); + final AddFlowInputBuilder flowBuilder = new AddFlowInputBuilder(flow); + flowBuilder.setCookie(flowCookie); + flowBuilder.setNode(nodeRef); + flowBuilder.setFlowTable(flowTableRef); + flowBuilder.setFlowRef(flowRef); + this.provider.getSalFlowService().addFlow(flowBuilder.build()); + } + } } } } @@ -153,7 +164,7 @@ public class FlowNodeReconcilListener extends AbstractChangeListener { @Override protected void update(final InstanceIdentifier identifier, - final DataObject original, DataObject update) { + final DataObject original, final DataObject update) { // NOOP - Listener is registered for DataChangeScope.BASE only }