/**
* 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;
import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
* forwardingrules-manager
* org.opendaylight.controller.frm
*
* FlowNodeReconciliation
* It represent Reconciliation functionality for every new device.
* So we have to read all possible pre-configured Flows, Meters and Groups from
* Config/DS and add all to new device.
* New device is represented by new {@link org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode}
* in Operational/DS. So we have to add listener for Wildcarded path in base data change scope.
*
* WildCarded InstanceIdentifier:
* {@code
*
* InstanceIdentifier.create(Nodes.class).child(Node.class).augmentation(FlowCapableNode.class)
*
* }
*
* @author Vaclav Demcak
*
* Created: Aug 26, 2014
*/
public interface FlowNodeReconciliation extends DataChangeListener, AutoCloseable {
/**
* Method contains Node registration to {@link ForwardingRulesManager} functionality
* as a prevention to use a validation check to the Operational/DS for identify
* pre-configure transaction and serious device commit in every transaction.
*
* Second part of functionality is own reconciliation pre-configure
* Flows, Meters and Groups.
*
* @param connectedNode - {@link org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier} to new Node
*/
void flowNodeConnected(InstanceIdentifier connectedNode);
/**
* Method contains functionality for registered Node {@FlowCapableNode} removing
* from {@Link ForwardingRulesManager}
*
* @param disconnectedNode - {@link org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier} to removed Node
*/
void flowNodeDisconnected(InstanceIdentifier disconnectedNode);
}