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%2Fflow%2FFlowProvider.java;fp=opendaylight%2Fmd-sal%2Fforwardingrules-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Ffrm%2Fflow%2FFlowProvider.java;h=afdd628bbb7d39ff8d61d1a6ef079e3677921fa9;hp=0000000000000000000000000000000000000000;hb=e4ead0f229dd4f21a054b7139ddb8c69c686ace1;hpb=386d8f0ac5fa09ee5514d48284f1a4012f408b52 diff --git a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/flow/FlowProvider.java b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/flow/FlowProvider.java new file mode 100644 index 0000000000..afdd628bbb --- /dev/null +++ b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/flow/FlowProvider.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.frm.flow; + +import org.opendaylight.controller.sal.binding.api.data.DataChangeListener; +import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; +import org.opendaylight.controller.sal.binding.api.data.DataProviderService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FlowProvider implements AutoCloseable { + + private final static Logger LOG = LoggerFactory.getLogger(FlowProvider.class); + + private SalFlowService salFlowService; + private DataProviderService dataService; + + /* DataChangeListener */ + private FlowChangeListener flowDataChangeListener; + ListenerRegistration flowDataChangeListenerRegistration; + + public void start() { + /* Build Path */ + InstanceIdentifierBuilder nodesBuilder = InstanceIdentifier. builder(Nodes.class); + InstanceIdentifierBuilder nodeChild = nodesBuilder. child(Node.class); + InstanceIdentifierBuilder augmentFlowCapNode = nodeChild. augmentation(FlowCapableNode.class); + InstanceIdentifierBuilder tableChild = augmentFlowCapNode.
child(Table.class); + InstanceIdentifierBuilder flowChild = tableChild. child(Flow.class); + final InstanceIdentifier flowDataObjectPath = flowChild.toInstance(); + + /* DataChangeListener registration */ + this.flowDataChangeListener = new FlowChangeListener(this.salFlowService); + this.flowDataChangeListenerRegistration = this.dataService.registerDataChangeListener(flowDataObjectPath, flowDataChangeListener); + LOG.info("Flow Config Provider started."); + } + + protected DataModificationTransaction startChange() { + return this.dataService.beginTransaction(); + } + + @Override + public void close() throws Exception { + if(flowDataChangeListenerRegistration != null){ + flowDataChangeListenerRegistration.close(); + } + } + + public void setDataService(final DataProviderService dataService) { + this.dataService = dataService; + } + + public void setSalFlowService(final SalFlowService salFlowService) { + this.salFlowService = salFlowService; + } +}