Initial opendaylight infrastructure commit!!
[controller.git] / opendaylight / sal / api / src / main / java / org / opendaylight / controller / sal / core / IContainerListener.java
1
2 /*
3  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  * and is available at http://www.eclipse.org/legal/epl-v10.html
8  */
9
10 /**
11  * @file   IContainerListener.java
12  *
13  * @brief  Set of methods needed to listen to changes in the Container
14  * configuration
15  *
16  * Set of methods needed to listen to changes in the Container
17  * configuration
18  *
19  *
20  */
21 package org.opendaylight.controller.sal.core;
22
23 /**
24  *
25  * Interface used to retrieve the status of a given Container
26  */
27 public interface IContainerListener {
28     /**
29      * Called to notify a change in the tag assigned to a switch
30      *
31      * @param containerName container for which the update has been raised
32      * @param n Node of the tag under notification
33      * @param oldTag previous version of the tag, this differ from the
34      * newTag only if the UpdateType is a modify
35      * @param newTag new value for the tag, different from oldTag only
36      * in case of modify operation
37      * @param t type of update
38      */
39     public void tagUpdated(String containerName, Node n, short oldTag,
40             short newTag, UpdateType t);
41
42     /**
43      * Notification raised when the container flow layout changes
44      *
45      * @param containerName container for which the update has been raised
46      * @param previousFlow previous value of the container flow under
47      * update, differs from the currentFlow only and only if it's an
48      * update operation
49      * @param currentFlow current version of the container flow differs from
50      * the previousFlow only in case of update
51      * @param t type of update
52      */
53     public void containerFlowUpdated(String containerName,
54             ContainerFlow previousFlow, ContainerFlow currentFlow, UpdateType t);
55
56     /**
57      * Notification raised when a NodeConnector is added or removed in
58      * the container.
59      *
60      * @param containerName container for which the update has been raised
61      * @param p NodeConnector being updated
62      * @param t type of modification, but among the types the modify
63      * operation is not expected to be raised because the
64      * nodeConnectors are anyway immutable so this is only used to
65      * add/delete
66      */
67     public void nodeConnectorUpdated(String containerName, NodeConnector p,
68             UpdateType t);
69
70     /**
71      * Notification raised when the container mode has changed
72      * This notification is needed for some bundle in the default container
73      * to cleanup some HW state when switching from non-slicing to
74      * slicing case and vice-versa
75      *
76      * @param t  ADDED when first container is created, REMOVED when last container is removed
77      */
78     public void containerModeUpdated(UpdateType t);
79 }