import java.util.List;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.OpendaylightFlowStatisticsListener;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.OpendaylightFlowTableStatisticsListener;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.Queue;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.OpendaylightGroupStatisticsListener;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatNotifyCommiter;
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatRpcMsgManager.TransactionCacheContainer;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatRpcMsgManager.TransactionCacheContainer;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation.StatsManagerOperationType;
import org.opendaylight.openflowplugin.applications.statistics.manager.impl.helper.FlowComparator;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapList;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapListBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.statistics.FlowStatisticsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
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.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatPermCollector.StatCapabTypes;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatRpcMsgManager.TransactionCacheContainer;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation.StatsManagerOperationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescStatsUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupFeaturesUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdated;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatPermCollector.StatCapabTypes;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatRpcMsgManager.TransactionCacheContainer;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation.StatsManagerOperationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
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.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatRpcMsgManager.TransactionCacheContainer;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation.StatsManagerOperationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.Queue;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.QueueBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.QueueKey;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatRpcMsgManager.TransactionCacheContainer;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation.StatsManagerOperationType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatRpcMsgManager.TransactionCacheContainer;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation.StatsManagerOperationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.statistics.FlowTableStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.statistics.FlowTableStatisticsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
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.openflowplugin.applications.statistics.manager.StatPermCollector;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.OpendaylightFlowStatisticsService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.OpendaylightFlowTableStatisticsService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupDescriptionInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetGroupFeaturesInputBuilder;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatNodeRegistration;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatNotifyCommiter;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatPermCollector;
+import org.opendaylight.openflowplugin.applications.statistics.manager.StatPermCollector.StatCapabTypes;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatRpcMsgManager;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
-import org.opendaylight.openflowplugin.applications.statistics.manager.StatPermCollector.StatCapabTypes;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager.StatDataStoreOperation.StatsManagerOperationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.OpendaylightFlowStatisticsListener;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.OpendaylightFlowTableStatisticsListener;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.Queue;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.OpendaylightGroupStatisticsListener;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
package test.mock.util;
-import com.google.common.util.concurrent.Futures;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
+
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.AggregateFlowStatisticsUpdateBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdateBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.OpendaylightFlowStatisticsService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapList;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.flow.and.statistics.map.list.FlowAndStatisticsMapListBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import com.google.common.util.concurrent.Futures;
+
public class OpendaylightFlowStatisticsServiceMock implements OpendaylightFlowStatisticsService {
NotificationProviderServiceHelper notifService;
package test.mock.util;
-import com.google.common.util.concurrent.Futures;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
+
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsUpdateBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMapBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMapKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import com.google.common.util.concurrent.Futures;
+
public class OpendaylightFlowTableStatisticsServiceMock implements OpendaylightFlowTableStatisticsService {
NotificationProviderServiceHelper notifService;
package test.mock.util;
-import com.google.common.util.concurrent.Futures;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutputBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import com.google.common.util.concurrent.Futures;
+
public class OpendaylightGroupStatisticsServiceMock implements OpendaylightGroupStatisticsService {
NotificationProviderServiceHelper notifService;
package test.mock.util;
-import com.google.common.util.concurrent.Futures;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInput;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import com.google.common.util.concurrent.Futures;
+
public class OpendaylightMeterStatisticsServiceMock implements OpendaylightMeterStatisticsService {
NotificationProviderServiceHelper notifService;
package test.mock.util;
-import com.google.common.util.concurrent.Futures;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsInput;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import com.google.common.util.concurrent.Futures;
+
public class OpendaylightPortStatisticsServiceMock implements OpendaylightPortStatisticsService {
NotificationProviderServiceHelper notifService;
package test.mock.util;
-import com.google.common.util.concurrent.Futures;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Future;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.GetAllQueuesStatisticsFromAllPortsInput;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Future;
-import java.util.concurrent.atomic.AtomicLong;
+import com.google.common.util.concurrent.Futures;
public class OpendaylightQueueStatisticsServiceMock implements OpendaylightQueueStatisticsService {
NotificationProviderServiceHelper notifService;
*/
package org.opendaylight.openflowplugin.legacy.sal.compatibility;
-import com.google.common.base.Optional;
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.collect.Iterables;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
import org.opendaylight.controller.md.sal.binding.util.TypeSafeDataReader;
import org.opendaylight.controller.sal.binding.api.data.DataBrokerService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.statistics.FlowTableStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.topology.discovery.rev130819.FlowTopologyDiscoveryService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.topology.discovery.rev130819.Link;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRemoved;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
+import com.google.common.base.Optional;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.collect.Iterables;
public class InventoryAndReadAdapter implements IPluginInReadService, IPluginInInventoryService, OpendaylightFlowStatisticsListener, OpendaylightFlowTableStatisticsListener, OpendaylightPortStatisticsListener {
private static final Logger LOG = LoggerFactory.getLogger(InventoryAndReadAdapter.class);
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsUpdateBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMapBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.duration.DurationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.node.connector.statistics.Bytes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.node.connector.statistics.BytesBuilder;
}
typedef port-number-uni {
+ description "Union port number: 4B number / string (reserved port name)";
type union {
type uint32;
type string;
prefix queue-types;
import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
-
+
revision "2013-09-25" {
description "Initial revision of Queue Inventory model";
}
-
+
typedef queue-id {
type yang:counter32;
- description "id for the specific queue.";
+ description "id for the specific queue.";
}
-
+
typedef queue-properties {
+ description "Content of OFPQT_*.";
type enumeration {
- enum min_rate;
- enum max_rate;
+ enum min_rate {
+ description "OFPQT_MIN_RATE";
+ }
+ enum max_rate {
+ description "OFPQT_MAX_RATE";
+ }
+ enum experimenter {
+ description "OFPQT_EXPERIMENTER";
+ }
}
}
-
-
- grouping common-queue {
+
+ grouping common-queue {
leaf property {
type uint16;
- description "One of OFPQT_.";
+ description "One of OFPQT_. TODO:: use queue-properties type.";
}
-
}
-
-
- grouping queue-prop-min-rate {
-
- uses common-queue;
-
+
+
+ grouping queue-prop-min-rate {
+ status deprecated;
+
+ uses common-queue;
+
leaf rate {
type uint16;
- description "OFPQT_MIN, len: 16";
+ description "OFPQT_MIN, len: 16";
}
-
}
-
- grouping queue-prop-max-rate {
-
- uses common-queue;
-
+
+ grouping queue-prop-max-rate {
+ status deprecated;
+
+ uses common-queue;
+
leaf rate {
type uint16;
- description "OFPQT_MAX, len: 16";
+ description "OFPQT_MAX, len: 16";
}
-
}
- grouping queue-packet {
-
-
+
+ grouping queue-packet {
+ description "Openflow queue description structure.";
+
leaf queue-id {
type queue-id;
- description "id for the specific queue.";
+ description "id for the specific queue.";
}
leaf port {
type uint32;
- description "Port this queue is attached to.";
+ description "Port this queue is attached to.";
}
uses common-queue;
}
-
- grouping queue-config-request
- {
- leaf port {
+
+ grouping queue-config-request {
+ status deprecated;
+
+ leaf port {
type uint32;
- description "Port to be queried.";
+ description "Port to be queried.";
}
-
}
}
import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
import yang-ext {prefix ext; revision-date "2013-07-09";}
- revision "2013-11-03" {
- description "Initial revision";
+ revision "2015-03-04" {
+ description "Transaction support for openflow, contains:
+ - barrier rpc
+ - tentative transaction support structures";
}
typedef transaction-id {
type uint64;
}
- // This refers to MD-SAL transaction reference.
grouping transaction-metadata {
+ description "Refers to MD-SAL transaction reference.";
leaf transaction-uri {
type inet:uri;
}
}
grouping transaction-aware {
+ status deprecated;
+
leaf transaction-id {
type transaction-id;
}
}
grouping multipart-transaction-aware {
+ status deprecated;
+
uses transaction-aware;
leaf moreReplies {
}
}
- rpc get-next-transaction-id {
- input {
- leaf node {
- ext:context-reference "inv:node-context";
- type inv:node-ref;
- }
- }
- output {
- uses transaction-aware;
- }
- }
-
- // Barier request?
- rpc finish-transaction {
+ rpc send-barrier {
+ description "barrier request";
input {
leaf node {
ext:context-reference "inv:node-context";
type inv:node-ref;
}
- leaf transaction-id {
- type transaction-id;
- }
}
}
}
module flow-errors {
namespace "urn:opendaylight:flow:errors";
prefix error;
+
+ description "Openflow error messages.";
revision "2013-11-16" {
description "Initial revision of error";
}
typedef error-type {
+ description "Openflow error types.";
type enumeration {
enum hello-failed;
enum bad-request;
}
grouping error-message {
+ description "Error message structure.";
leaf type {
type error-type;
}
}
grouping experimenter-error-message {
+ description "Experimenter error message structure.";
leaf type {
type error-type;
}
import opendaylight-group-types {prefix group;revision-date "2013-10-18";}
import opendaylight-meter-types {prefix meter;revision-date "2013-09-18";}
+ description "Flow Capable Node extensions to the Inventory model";
+
revision "2013-08-19" {
- description "Flow Capable Node extensions to the Inventory model";
+ description "added descriptions";
}
identity feature-capability {
}
grouping feature {
+ description "Features supported by openflow device.";
leaf support-state {
type inv:support-type;
}
}
grouping queue {
- leaf queue-id {
+ leaf queue-id {
type uint32;
description "id for the specific queue";
mandatory true;
}
typedef flow-id {
+ description "MD-SAL identifier of openflow flow. ";
type inet:uri;
}
grouping tables {
+ description "Openflow table structure. Here flows are contained.";
list table {
key "id";
}
grouping meters {
+ description "Openflow meter list.";
list meter {
key "meter-id";
uses meter:meter;
}
grouping ip-address-grouping {
+ description "Additional ip address info referring to device interface which connects to controller";
leaf ip-address {
description "IP address of a flow capable node.";
type inet:ip-address;
}
grouping flow-node {
+ description "Openflow node structure = device";
leaf manufacturer {
type string;
}
}
grouping flow-node-connector {
-
+ description "Wrapper of openflow port. TODO::simplify/rename";
uses port:flow-capable-port;
}
augment "/inv:nodes/inv:node" {
ext:augment-identifier "flow-capable-node";
+ description "Top attach point of openflow node into node inventory tree.";
uses flow-node;
}
augment "/inv:nodes/inv:node/inv:node-connector" {
ext:augment-identifier "flow-capable-node-connector";
+ description "Openflow port into inventory tree.";
uses flow-node-connector;
}
augment "/inv:node-updated" {
ext:augment-identifier "flow-capable-node-updated";
+ description "Openflow node into node notification.";
uses flow-node;
}
augment "/inv:node-updated/inv:node-connector" {
//ext:identical-augment "flow-capable-node-connector";
ext:augment-identifier "flow-capable-node-connector-update-fields";
+ description "Openflow port into node notification.";
uses flow-node-connector;
}
augment "/inv:node-connector-updated" {
ext:augment-identifier "flow-capable-node-connector-updated";
+ description "Openflow port into node-connector notification.";
uses flow-node-connector;
}
prefix flow-node-topo;
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
+
+ description "Legacy topology API.";
revision "2013-08-19" {
description "Flow Capable Node extensions to the Inventory model";
}
}
-
notification link-discovered {
+ status deprecated;
uses link;
}
notification link-overutilized {
+ status deprecated;
uses link;
}
notification link-removed {
+ status deprecated;
uses link;
}
notification link-utilization-normal {
+ status deprecated;
uses link;
}
rpc solicit-refresh {
-
+ status deprecated;
}
}
namespace "urn:opendaylight:module:config";
prefix node-config;
- import flow-capable-transaction {prefix tr;}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
- revision "2014-10-15" {
- description "Initial revision of node configuration service";
- }
+ description "Openflow initial device config.";
- grouping node-ref {
- uses "inv:node-context-ref";
+ revision "2014-10-15" {
+ description "Initial revision
+ + simplified node-context-ref in rpc input";
}
-
-
- /** Base configuration structure **/
grouping node-config {
+ description "Openflow device initial configuration structure.";
+
leaf flag {
type string;
description "Switch config flag. Expected values FRAGNORMAL, OFPCFRAGDROP, OFPCFRAGREASM, OFPCFRAGMASK";
}
rpc set-config {
+ description "Sending initial configuration to device.";
input {
uses node-config;
uses tr:transaction-aware;
- uses node-ref;
+ uses inv:node-context-ref;
}
output {
uses tr:transaction-aware;
prefix node-error;
import sal-flow {prefix flow; revision-date "2013-08-19";}
- import flow-errors {prefix error;}
- import flow-capable-transaction {prefix tr;}
+ import flow-errors {prefix error; revision-date "2013-11-16";}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
import yang-ext {prefix ext; revision-date "2013-07-09";}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import opendaylight-flow-types {prefix types;revision-date "2013-10-26";}
- import opendaylight-group-types {prefix group-type;revision-date 2013-10-18;}
+ import opendaylight-group-types {prefix group-type;revision-date "2013-10-18";}
import opendaylight-meter-types {prefix meter-type;revision-date "2013-09-18";}
+ description "Openflow error messages notifications - depricated in lithium.
+ Error messages wont be published as standalone entities but rather packed into
+ special exception which will be delivered inside of RpcResult in case of failure.";
+
revision "2014-04-10" {
description "Initial revision of errors received from a node";
}
notification hello-failed-error-notification {
description "Model for ofp_error-Type=0, Hello protocol failed";
+ status deprecated;
uses error:error-message;
uses tr:transaction-aware;
notification bad-request-error-notification {
description "Model for ofp_error-Type=1, Request was not understood.";
+ status deprecated;
uses error:error-message;
uses tr:transaction-aware;
notification bad-action-error-notification {
description "Model for ofp_error-Type=2, Error in action description.";
+ status deprecated;
uses error:error-message;
uses tr:transaction-aware;
uses flow:base-node-error-notification;
uses flow:node-error-reference;
}
-
+
notification bad-instruction-error-notification {
- description "Model for ofp_error-Type=3, Error in instruction list.";
-
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ description "Model for ofp_error-Type=3, Error in instruction list.";
+ status deprecated;
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
+
notification bad-match-error-notification {
- description "Model for ofp_error-Type=4, Error in match.";
+ description "Model for ofp_error-Type=4, Error in match.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification flow-mod-error-notification {
- description "Model for ofp_error-Type=5 - Problem modifying flow entry.";
+ description "Model for ofp_error-Type=5 - Problem modifying flow entry.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification group-mod-error-notification {
- description "Model for ofp_error-Type=6 - Problem modifying group entry.";
+ description "Model for ofp_error-Type=6 - Problem modifying group entry.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification port-mod-error-notification {
- description "Model for ofp_error-Type=7 - Port mod request failed.";
+ description "Model for ofp_error-Type=7 - Port mod request failed.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification table-mod-error-notification {
- description "Model for ofp_error-Type=8 - Table mod request failed.";
+ description "Model for ofp_error-Type=8 - Table mod request failed.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification queue-op-error-notification {
- description "Model for ofp_error-Type=9 - Queue operation failed.";
+ description "Model for ofp_error-Type=9 - Queue operation failed.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification switch-config-error-notification {
- description "Model for ofp_error-Type=10 - Switch Config request failed.";
+ description "Model for ofp_error-Type=10 - Switch Config request failed.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification role-request-error-notification {
- description "Model for ofp_error-Type=11 - Controller Role request failed.";
+ description "Model for ofp_error-Type=11 - Controller Role request failed.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification meter-mod-error-notification {
- description "Model for ofp_error-Type=12 - Error in meter.";
+ description "Model for ofp_error-Type=12 - Error in meter.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification table-features-error-notification {
- description "Model for ofp_error-Type=13 - Setting table features failed.";
+ description "Model for ofp_error-Type=13 - Setting table features failed.";
+ status deprecated;
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
notification experimenter-error-notification {
- description "Model for ofp_error-Type=65535 - Experimenter Error Messages";
- uses error:error-message;
- uses tr:transaction-aware;
- uses tr:transaction-metadata;
- uses flow:base-node-error-notification;
- uses flow:node-error-reference;
- }
+ description "Model for ofp_error-Type=65535 - Experimenter Error Messages";
+ status deprecated;
+
+ uses error:error-message;
+ uses tr:transaction-aware;
+ uses tr:transaction-metadata;
+ uses flow:base-node-error-notification;
+ uses flow:node-error-reference;
+ }
}
import opendaylight-action-types {prefix action-type;revision-date "2013-11-12";}
import opendaylight-flow-types {prefix flow-type;revision-date "2013-10-26";}
+ description "Packet processing - sending and receiving.";
revision "2013-07-09" {
- description "";
+ description "Initial.";
}
typedef connection-cookie {
+ description "Openflow connection identifier. Outgoing packets should use the same connection they came in.";
type uint32;
}
grouping raw-packet {
+ description "Basic packet structure.";
leaf ingress {
type inv:node-connector-ref;
}
}
grouping ethernet-packet {
+ description "Ethernet packet headers structure.";
leaf source {
type yang:mac-address;
}
}
identity packet-in-reason {
- description "Base identity for all the available packet in reason";
+ description "Base identity for all the available packet in reasons.";
}
identity no-match {
}
notification packet-received {
+ description "Delivery of incoming packet wrapped in openflow structure.";
leaf connection-cookie {
- type connection-cookie;
+ type connection-cookie;
}
leaf flow-cookie {
}
rpc transmit-packet {
+ description "Sending packet out through openflow device.";
input {
uses inv:node-context-ref;
--- /dev/null
+module sal-echo {
+ namespace "urn:opendaylight:echo:service";
+ prefix echo;
+
+ import opendaylight-inventory {prefix inv; revision-date "2013-08-19";}
+
+ description "Openflow echo service.";
+
+ revision "2015-03-05" {
+ description "Initial proposal, tentative API.";
+ }
+
+ rpc send-echo {
+ description "Sending echo message to openflow device.";
+
+ input {
+ uses "inv:node-context-ref";
+ leaf data {
+ description "Openflow echo request payload (arbirary-length data field). The
+ data field might be a message timestamp to check latency, various lengths
+ to measure bandwidth, or zero-size to verify liveness between the switch
+ and controller.";
+
+ type binary;
+ }
+ }
+ output {
+ leaf data {
+ description "Unmodified data field.";
+
+ type binary;
+ }
+ }
+ }
+}
import yang-ext {prefix ext; revision-date "2013-07-09";}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import opendaylight-flow-types {prefix types;revision-date "2013-10-26";}
- import opendaylight-group-types {prefix group-type;revision-date 2013-10-18;}
+ import opendaylight-group-types {prefix group-type;revision-date "2013-10-18";}
import opendaylight-meter-types {prefix meter-type;revision-date "2013-09-18";}
- import flow-capable-transaction {prefix tr;}
- import flow-errors {prefix error;}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
+ import flow-errors {prefix error; revision-date "2013-11-16";}
+
+ description "Openflow flow management.";
revision "2013-08-19" {
description "Initial revision of flow service";
}
typedef flow-table-ref {
+ description "Openflow table identifier";
type instance-identifier;
}
grouping node-flow-removed {
+ description "Flow removed message structure.";
leaf node {
+ // TODO:: replace with inv:node-context-ref
ext:context-reference "inv:node-context";
type inv:node-ref;
}
}
grouping node-flow {
+ description "Top openflow flow structure suitable for rpc input (contains node-context).";
uses "inv:node-context-ref";
leaf flow-table {
}
grouping base-node-error-notification {
+ description "Openflow error message general structure.";
+ status deprecated;
leaf node {
ext:context-reference "inv:node-context";
type inv:node-ref;
}
grouping node-error-reference {
+ description "Error message binding - to which source type the error belongs.";
choice object-reference {
case flow-ref{
leaf flow-ref {
}
}
- /** Base configuration structure **/
grouping flow-update {
+ description "DataStore aware flow update structure suitable for rpc input (contains node-context).";
uses "inv:node-context-ref";
container original-flow {
}
rpc add-flow {
+ description "Adding flow to openflow device.";
input {
uses tr:transaction-metadata;
leaf flow-ref {
}
rpc remove-flow {
+ description "Removing flow from openflow device.";
input {
uses tr:transaction-metadata;
leaf flow-ref {
}
rpc update-flow {
+ description "Updating flow on openflow device.";
input {
uses tr:transaction-metadata;
leaf flow-ref {
}
notification flow-added {
+ status deprecated;
+
uses tr:transaction-metadata;
leaf flow-ref {
type types:flow-ref;
}
notification flow-updated {
+ status deprecated;
+
uses tr:transaction-metadata;
leaf flow-ref {
type types:flow-ref;
}
notification flow-removed {
+ status deprecated;
+
uses tr:transaction-metadata;
leaf flow-ref {
type types:flow-ref;
}
notification switch-flow-removed {
+ status deprecated;
+
uses node-flow-removed;
}
notification node-error-notification {
+ status deprecated;
+
uses error:error-message;
uses tr:transaction-aware;
uses tr:transaction-metadata;
}
notification node-experimenter-error-notification {
+ status deprecated;
+
uses error:experimenter-error-message;
uses tr:transaction-aware;
}
prefix group;
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
- import opendaylight-group-types {prefix group-type;revision-date 2013-10-18;}
- import flow-capable-transaction {prefix tr;}
+ import opendaylight-group-types {prefix group-type;revision-date "2013-10-18";}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
+
+ description "Openflow group management.";
revision "2013-09-18" {
description "Initial revision of group service";
}
grouping node-group {
+ description "Basic group structure suitable for rpc input (contains node-context).";
uses "inv:node-context-ref";
uses group-type:group;
}
- /** Base configuration structure **/
grouping group-update {
+ description "DataStore aware update group structure suitable for rpc input (contains node-context).";
uses "inv:node-context-ref";
container original-group {
}
rpc add-group {
+ description "Adding group to openflow device";
input {
uses tr:transaction-metadata;
leaf group-ref {
}
rpc remove-group {
+ description "Removing group from openflow device";
input {
uses tr:transaction-metadata;
leaf group-ref {
}
rpc update-group {
+ description "Updating group on openflow device";
input {
uses tr:transaction-metadata;
leaf group-ref {
}
notification group-added {
+ status deprecated;
+
uses tr:transaction-metadata;
leaf group-ref {
type group-type:group-ref;
}
notification group-updated {
+ status deprecated;
+
uses tr:transaction-metadata;
leaf group-ref {
type group-type:group-ref;
}
notification group-removed {
+ status deprecated;
+
uses tr:transaction-metadata;
leaf group-ref {
type group-type:group-ref;
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import opendaylight-meter-types {prefix meter-type;revision-date "2013-09-18";}
- import flow-capable-transaction {prefix tr;}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
+
+ description "Openflow meter management.";
revision "2013-09-18" {
description "Initial revision of meter service";
}
grouping node-meter {
- uses "inv:node-context-ref";
+ description "Basic openflow meter structure suitable for rpc input (contains node-context-ref)";
+ uses "inv:node-context-ref";
uses meter-type:meter;
}
/** Base configuration structure **/
grouping meter-update {
+ description "DataStore aware update openflow meter structure suitable for rpc input (contains node-context-ref)";
uses "inv:node-context-ref";
container original-meter {
}
rpc add-meter {
+ description "Adding meter to openflow device.";
input {
uses tr:transaction-metadata;
leaf meter-ref {
}
rpc remove-meter {
+ description "Removing metere from openflow device.";
input {
uses tr:transaction-metadata;
leaf meter-ref {
}
rpc update-meter {
+ description "Updating meter on openflow device.";
input {
uses tr:transaction-metadata;
leaf meter-ref {
}
notification meter-added {
+ status deprecated;
+
uses tr:transaction-metadata;
leaf meter-ref {
type meter-type:meter-ref;
}
notification meter-updated {
+ status deprecated;
+
uses tr:transaction-metadata;
leaf meter-ref {
type meter-type:meter-ref;
}
notification meter-removed {
+ status deprecated;
+
uses tr:transaction-metadata;
leaf meter-ref {
type meter-type:meter-ref;
import yang-ext {prefix ext; revision-date "2013-07-09";}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import opendaylight-port-types {prefix port-type;revision-date "2013-09-25";}
- import flow-capable-transaction {prefix tr;}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
+
+ description "Openflow port management.";
revision "2013-11-07" {
description "Initial revision of port service";
}
grouping node-port {
+ description "Openflow port configuration structure suitable for rpc (contains node-context-ref).";
+
uses "inv:node-context-ref";
-
uses port-type:flow-port-status;
}
/** Base configuration structure **/
grouping port-update {
+ description "DataStore aware openflow port configuration update structure suitable for rpc (contains node-context-ref).";
+
uses "inv:node-context-ref";
container original-port {
}
rpc update-port {
+ description "Updating port on openflow device.";
input {
uses port-update;
uses tr:transaction-aware;
}
notification port-updated {
+ status deprecated;
+
uses port-update;
uses tr:transaction-aware;
}
notification port-removed {
+ status deprecated;
+
uses node-port;
}
}
import opendaylight-inventory {prefix inv; revision-date "2013-08-19";}
import opendaylight-queue-types {prefix queue-type; revision-date "2013-09-25";}
+ import opendaylight-port-types {prefix port-type; revision-date "2013-09-25";}
- revision "2013-11-07" {
- description "Initial revision of queue service";
+ description "Openflow queue exploration.";
+
+ revision "2015-03-05" {
+ description "Removed notification, added input into routed queue exploration rpc.";
}
grouping node-queue {
+ description "Openflow queue identification struc";
+
uses "inv:node-context-ref";
-
uses queue-type:queue-packet;
}
rpc get-queue {
+ description "Exploring openflow device queues.";
+
+ input {
+ uses "inv:node-context-ref";
+ leaf port-number {
+ description "Port to be queried.
+ Should refer to a valid physical port (i.e. < OFPP_MAX),
+ or OFPP_ANY to request all configured queues.";
+ type port-type:port-number-uni;
+ }
+ }
output {
- uses queue-type:queue-packet;
+ list packet-queues {
+ uses queue-type:queue-packet;
+ }
}
}
-
- notification queue-get-config-reply {
- uses node-queue;
- }
}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import opendaylight-table-types {prefix table-type;revision-date "2013-10-26";}
- import flow-capable-transaction {prefix tr;}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
+
+ description "Openflow table management.";
revision "2013-10-26" {
description "Initial revision of table service";
}
- /** Base configuration structure **/
grouping table-update {
+ description "Openflow table configuration structure suitable for rpc (contains node-context-ref)";
+
uses "inv:node-context-ref";
container original-table {
uses table-type:table-features;
}
rpc update-table {
+ description "Configuring openflow table.";
+
input {
uses table-update;
uses tr:transaction-aware;
}
notification table-updated {
+ status deprecated;
+
uses "inv:node-context-ref";
uses tr:multipart-transaction-aware;
uses table-type:table-features;
import flow-capable-transaction {prefix tr;}
import ietf-inet-types {prefix inet; revision-date "2010-09-24";}
+ description "Openflow statistics polling.";
revision "2013-08-19" {
description "Initial revision of flow statistics service";
}
- //Augment flow statistics data to the flow-capable-node->table->flow
augment "/inv:nodes/inv:node/flow-node:table/flow-node:flow" {
ext:augment-identifier "flow-statistics-data";
+ description "Openflow flow statistics data into the flow-capable-node->table->flow";
+
uses flow-statistics;
}
grouping flow-statistics {
container flow-statistics {
- //config "false";
uses stat-types:generic-statistics;
}
}
typedef flow-id {
- description "flow id";
+ description "flow id, TODO:: replace with inv:flow-id.";
type inet:uri;
}
// RPC calls to fetch flow statistics
rpc get-all-flows-statistics-from-all-flow-tables {
+ status deprecated;
description "Fetch statistics of all the flow present in all the flow tables of the switch";
input {
uses inv:node-context-ref;
}
rpc get-all-flow-statistics-from-flow-table {
+ status deprecated;
description "Fetch statistics of all the flow present in the specific flow table of the switch";
input {
uses inv:node-context-ref;
}
rpc get-flow-statistics-from-flow-table {
+ status deprecated;
description "Fetch statistics of the specific flow present in the specific flow table of the switch";
input {
uses inv:node-context-ref;
}
notification flows-statistics-update {
+ status deprecated;
description "Flows statistics sent by switch";
leaf moreReplies {
type boolean;
//Models for aggregate flow statistics collection
augment "/inv:nodes/inv:node/flow-node:table" {
+ status deprecated;
ext:augment-identifier "aggregate-flow-statistics-data";
uses aggregate-flow-statistics;
}
grouping aggregate-flow-statistics {
container aggregate-flow-statistics {
- //config "false";
uses stat-types:aggregate-flow-statistics;
}
}
// RPC calls to fetch aggregate flow statistics
rpc get-aggregate-flow-statistics-from-flow-table-for-all-flows {
+ status deprecated;
description "Fetch aggregate statistics for all the flows present in the specific flow table of the switch";
+
input {
uses inv:node-context-ref;
leaf table-id {
uses tr:transaction-aware;
}
}
+
rpc get-aggregate-flow-statistics-from-flow-table-for-given-match {
- description "Fetch aggregate statistics for all the flow matches to the given match from the given table of the switch";
+ description "Fetch aggregate statistics for flows filtered by
+ - table (eventually all tables)
+ - match
+ - port
+ - group
+ - cookie
+ This values are contained in flow (among others).
+ TODO:: filter values should be modeled more exact - omitting unusable fields.";
+
input {
uses inv:node-context-ref;
uses flow-types:flow;
}
output {
- uses stat-types:aggregate-flow-statistics;
+ list aggregated-flow-statistics {
+ uses stat-types:aggregate-flow-statistics;
+ }
uses tr:transaction-aware;
}
}
notification aggregate-flow-statistics-update {
+ status deprecated;
+
description "Aggregate flow statistics for a table, sent by switch";
uses inv:node;
uses stat-types:aggregate-flow-statistics;
namespace "urn:opendaylight:flow:table:statistics";
prefix flowtablestat;
- import flow-capable-transaction {prefix tr;}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
import yang-ext {prefix ext; revision-date "2013-07-09";}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import flow-node-inventory {prefix flow-node;revision-date "2013-08-19";}
import opendaylight-table-types {prefix table-types;revision-date "2013-10-26";}
import opendaylight-statistics-types {prefix stat-types;revision-date "2013-09-25";}
-
+
+ description "Openflow flow table statistics structures.";
contact
"Anilkumar Vishnoi
description "Initial revision of flow table statistics model";
}
- //Augment flow table statistics data to the table
augment "/inv:nodes/inv:node/flow-node:table" {
+ description "Openflow flow table statistics data into the table node.";
ext:augment-identifier "flow-table-statistics-data";
uses flow-table-statistics;
}
grouping flow-table-statistics {
+ description "TODO:: simplify.";
container flow-table-statistics {
- //config "false";
uses stat-types:generic-table-statistics;
}
}
- //RPC calls to fetch flow table statistics
grouping flow-table-and-statistics-map {
+ status deprecated;
+ description "RPC calls to fetch flow table statistics.";
+
list flow-table-and-statistics-map {
key "table-id";
leaf table-id {
}
rpc get-flow-tables-statistics {
+ status deprecated;
description "Fetch statistics of all the flow tables present on the tarnet node";
+
input {
uses inv:node-context-ref;
}
//Notification to receive table statistics update
notification flow-table-statistics-update {
+ status deprecated;
description "Receive flow table statistics update";
uses inv:node;
import yang-ext {prefix ext; revision-date "2013-07-09";}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import opendaylight-group-types {prefix group-types;revision-date "2013-10-18";}
- import flow-capable-transaction {prefix tr;}
- import flow-node-inventory {prefix fni;}
-
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
+ import flow-node-inventory {prefix fni; revision-date "2013-08-19";}
+
+ description "Openflow group statistics structures.";
+
contact
"Anilkumar Vishnoi
Email: avishnoi@in.ibm.com";
-
+
revision "2013-11-11" {
description "Initial revision of group statistics service";
}
-
+
grouping group-statistics {
+ description "TODO:: simplify";
container group-statistics {
- //config "false";
uses group-types:group-statistics;
}
- }
-
+ }
+
augment "/inv:nodes/inv:node/fni:group" {
+ description "Openflow group statistics into group node.";
ext:augment-identifier "node-group-statistics";
uses group-statistics;
}
grouping group-desc {
+ description "TODO:: simplify";
container group-desc {
- //config "false";
uses group-types:group;
}
}
-
+
augment "/inv:nodes/inv:node/fni:group" {
+ description "Openflow group description into group node.";
ext:augment-identifier "node-group-desc-stats";
uses group-desc;
}
grouping group-features {
- container group-features {
- //config "false";
+ description "TODO:: simplify";
+ container group-features {
uses group-types:group-features-reply;
}
}
-
+
augment "/inv:nodes/inv:node" {
+ description "Openflow group features into group node.";
ext:augment-identifier "node-group-features";
uses group-features;
}
// RPC calls
rpc get-all-group-statistics {
+ status deprecated;
input {
uses inv:node-context-ref;
}
uses group-types:group-statistics-reply;
uses tr:transaction-aware;
}
-
}
-
+
rpc get-group-statistics {
+ status deprecated;
input {
uses inv:node-context-ref;
leaf group-id{
type group-types:group-id;
}
-
}
output {
uses group-types:group-statistics-reply;
uses tr:transaction-aware;
}
-
}
-
+
rpc get-group-description {
+ status deprecated;
input {
uses inv:node-context-ref;
}
uses tr:transaction-aware;
}
}
-
+
rpc get-group-features {
+ status deprecated;
input {
uses inv:node-context-ref;
}
uses tr:transaction-aware;
}
}
-
+
//Notification calls
-
+
notification group-statistics-updated {
+ status deprecated;
+
uses inv:node;
uses group-types:group-statistics-reply;
uses tr:multipart-transaction-aware;
}
-
+
notification group-desc-stats-updated {
+ status deprecated;
+
uses inv:node;
uses group-types:group-desc-stats-reply;
uses tr:multipart-transaction-aware;
}
notification group-features-updated {
+ status deprecated;
+
uses inv:node;
uses group-types:group-features-reply;
uses tr:multipart-transaction-aware;
import yang-ext {prefix ext; revision-date "2013-07-09";}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import flow-node-inventory {prefix flow-node;revision-date "2013-08-19";}
- import opendaylight-meter-types {prefix meter-types;revision-date "2013-09-18";}
- import flow-capable-transaction {prefix tr;}
-
+ import opendaylight-meter-types {prefix meter-types; revision-date "2013-09-18";}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
+
+ description "Openflowplugin meter statistics structures.";
+
contact
"Anilkumar Vishnoi
Email: avishnoi@in.ibm.com";
}
augment "/inv:nodes/inv:node/flow-node:meter" {
+ description "Openflow meter statistics data into the meter node.";
ext:augment-identifier "node-meter-statistics";
container meter-statistics {
- //config "false";
uses meter-types:meter-statistics;
}
}
augment "/inv:nodes/inv:node/flow-node:meter" {
+ description "Openflow meter config statistics data into the meter node.";
ext:augment-identifier "node-meter-config-stats";
container meter-config-stats {
- //config "false";
uses meter-types:meter;
}
}
-
+
augment "/inv:nodes/inv:node" {
+ description "Openflow meter features data into the inventory node node.";
ext:augment-identifier "node-meter-features";
container meter-features {
- //config "false";
uses meter-types:meter-features-reply;
}
}
// RPC calls
rpc get-all-meter-statistics {
+ status deprecated;
+
input {
uses inv:node-context-ref;
}
uses meter-types:meter-statistics-reply;
uses tr:transaction-aware;
}
-
+
}
-
+
rpc get-meter-statistics {
+ status deprecated;
+
input {
uses inv:node-context-ref;
leaf meter-id{
uses meter-types:meter-statistics-reply;
uses tr:transaction-aware;
}
-
+
}
-
+
rpc get-all-meter-config-statistics {
+ status deprecated;
+
input {
uses inv:node-context-ref;
}
uses tr:transaction-aware;
}
}
-
+
rpc get-meter-features {
+ status deprecated;
+
input {
uses inv:node-context-ref;
}
uses tr:transaction-aware;
}
}
-
+
//Notification calls
-
+
notification meter-statistics-updated {
+ status deprecated;
+
uses inv:node;
uses meter-types:meter-statistics-reply;
uses tr:multipart-transaction-aware;
}
-
+
notification meter-config-stats-updated {
+ status deprecated;
+
uses inv:node;
uses meter-types:meter-config-stats-reply;
uses tr:multipart-transaction-aware;
}
notification meter-features-updated {
+ status deprecated;
+
uses inv:node;
uses meter-types:meter-features-reply;
uses tr:multipart-transaction-aware;
namespace "urn:opendaylight:port:statistics";
prefix portstat;
- import flow-capable-transaction {prefix tr;}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
import yang-ext {prefix ext; revision-date "2013-07-09";}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import opendaylight-statistics-types {prefix stat-types;revision-date "2013-09-25";}
+ description "Openflow port statistics structures.";
+
contact
"Anilkumar Vishnoi
Email: avishnoi@in.ibm.com";
//Augment port statistics data to the flow-capable-node-connector
augment "/inv:nodes/inv:node/inv:node-connector" {
+ description "Openflow port statistics data into the node connector node.";
ext:augment-identifier "flow-capable-node-connector-statistics-data";
uses flow-capable-node-connector-statistics;
}
grouping flow-capable-node-connector-statistics {
+ description "TODO:: simplify";
container flow-capable-node-connector-statistics {
- //config "false";
uses stat-types:node-connector-statistics;
}
}
// RPC calls
rpc get-all-node-connectors-statistics {
+ status deprecated;
+
description "Get statistics for all node connectors from the node";
input {
uses inv:node-context-ref;
}
rpc get-node-connector-statistics {
+ status deprecated;
+
description "Get statistics for given node connector from the node";
input {
uses inv:node-context-ref;
//Notification for node connector statistics update
grouping node-connector-statistics-and-port-number-map {
+ status deprecated;
+
description "List of map - node connectors and their statistics";
list node-connector-statistics-and-port-number-map {
key "node-connector-id";
}
notification node-connector-statistics-update {
+ status deprecated;
+
uses inv:node;
uses node-connector-statistics-and-port-number-map;
uses tr:multipart-transaction-aware;
namespace "urn:opendaylight:queue:statistics";
prefix queuestat;
- import flow-capable-transaction {prefix tr;}
+ import flow-capable-transaction {prefix tr; revision-date "2015-03-04";}
import yang-ext {prefix ext; revision-date "2013-07-09";}
import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
import flow-node-inventory {prefix flow-node;revision-date "2013-08-19";}
import opendaylight-queue-types {prefix queue-types;revision-date "2013-09-25";}
import opendaylight-statistics-types {prefix stat-types;revision-date "2013-09-25";}
+ description "Openflowplugin queue statistics structures.";
+
contact
"Anilkumar Vishnoi
Email: avishnoi@in.ibm.com";
revision "2013-12-16" {
description "Initial revision of queue statistics model";
}
-
+
//Augment queue statistics data to the flow-capable-node-connector
augment "/inv:nodes/inv:node/inv:node-connector/flow-node:queue" {
+ description "Openflow queue statistics data into the queue node.";
ext:augment-identifier "flow-capable-node-connector-queue-statistics-data";
uses flow-capable-node-connector-queue-statistics;
}
-
+
grouping flow-capable-node-connector-queue-statistics {
+ description "TODO::simplify;";
container flow-capable-node-connector-queue-statistics {
- //config "false";
uses stat-types:generic-queue-statistics;
}
- }
-
+ }
+
//RPC calls to fetch queue statistics
grouping queue-id-and-statistics-map {
+ status deprecated;
+
list queue-id-and-statistics-map {
key "queue-id node-connector-id";
leaf queue-id {
leaf node-connector-id {
type inv:node-connector-id;
}
-
+
uses stat-types:generic-queue-statistics;
}
}
-
+
rpc get-all-queues-statistics-from-all-ports {
+ status deprecated;
description "Get statistics for all the queues attached to all the ports from the node";
+
input {
uses inv:node-context-ref;
}
uses tr:transaction-aware;
}
}
-
+
rpc get-all-queues-statistics-from-given-port {
+ status deprecated;
description "Get statistics for all queues for given port of the node";
+
input {
uses inv:node-context-ref;
leaf node-connector-id {
uses tr:transaction-aware;
}
}
-
+
rpc get-queue-statistics-from-given-port {
+ status deprecated;
description "Get statistics for given queues from given port of the node";
+
input {
uses inv:node-context-ref;
leaf node-connector-id {
//Notification for port statistics update
notification queue-statistics-update {
+ status deprecated;
+
uses inv:node;
uses queue-id-and-statistics-map;
uses tr:multipart-transaction-aware;
prefix stat-types;
import ietf-yang-types {prefix yang; revision-date "2010-09-24";}
-
+
+ description "Openflowplugin statistics common types.";
+
revision "2013-09-25" {
description "Initial revision of flow service";
}
-
+
grouping duration {
+ description "Duration, contains seconds and nanoseconds.";
+
container duration {
leaf second {
type yang:counter32;
}
grouping node-connector-statistics {
- container packets {
+ description "Openflow node connector (port) statistics structure.";
+
+ container packets {
leaf received {
type uint64;
}
}
uses duration;
}
-
+
grouping generic-statistics {
- description "Generic grouping for statistics";
+ description "Generic grouping for statistics";
+
leaf packet-count {
type yang:counter64;
}
leaf byte-count {
type yang:counter64;
}
- uses duration;
- }
-
+ uses duration;
+ }
+
grouping generic-table-statistics {
- description "Generic grouping holding generic statistics related to switch table";
- leaf active-flows {
+ description "Generic grouping holding generic statistics related to switch table";
+
+ leaf active-flows {
type yang:counter32;
- }
- leaf packets-looked-up {
- type yang:counter64;
- }
- leaf packets-matched {
- type yang:counter64;
- }
+ }
+ leaf packets-looked-up {
+ type yang:counter64;
+ }
+ leaf packets-matched {
+ type yang:counter64;
+ }
}
-
+
grouping aggregate-flow-statistics {
- description "Aggregate flow statistics";
+ description "Aggregate flow statistics";
+
leaf packet-count {
type yang:counter64;
}
type yang:counter32;
}
}
-
+
grouping generic-queue-statistics {
- description "Generic statistics of switch port attached queues.";
- leaf transmitted-bytes {
- type yang:counter64;
- }
-
- leaf transmitted-packets {
- type yang:counter64;
- }
-
- leaf transmission-errors {
- type yang:counter64;
- }
- uses duration;
+ description "Generic statistics of switch port attached queues.";
+
+ leaf transmitted-bytes {
+ type yang:counter64;
+ }
+
+ leaf transmitted-packets {
+ type yang:counter64;
+ }
+
+ leaf transmission-errors {
+ type yang:counter64;
+ }
+ uses duration;
}
-
}
*/
package org.opendaylight.openflowplugin.api.openflow.md.core.sal;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yangtools.yang.binding.Notification;
/**
*/
package org.opendaylight.openflowplugin.openflow.md.core.sal;
-import com.google.common.util.concurrent.AsyncFunction;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
+
import org.opendaylight.openflowjava.protocol.api.util.BinContent;
import org.opendaylight.openflowplugin.api.OFConstants;
import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.util.concurrent.AsyncFunction;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.JdkFutureAdapters;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+
/**
*
*/
import org.opendaylight.openflowplugin.api.statistics.MessageSpy;
import org.opendaylight.openflowplugin.openflow.md.util.RpcInputOutputTuple;
import org.opendaylight.openflowplugin.openflow.md.util.TaskUtil;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionAware;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierOutput;
import org.opendaylight.yangtools.yang.binding.DataContainer;
*/
package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+
import com.google.common.collect.Ordering;
import org.opendaylight.openflowjava.util.ByteBufUtils;
import org.opendaylight.openflowplugin.api.OFConstants;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.Extension;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
+
+import com.google.common.collect.Ordering;
/**
* @author usha@ericsson Action List:This class takes data from SAL layer and
return new PushPbbActionCaseBuilder().setPushPbbAction(pushPbbAction.build()).build();
}
- //TODO make a model in YANG for protocols
+ //TODO make a model in YANG for protocols
/*private enum IPProtocols {
- ICMP(1),
- TCP(6),
- UDP(17),
+ ICMP(1),
+ TCP(6),
+ UDP(17),
ICMPV6(58);
private int protocol;
-
+
private static Map<Integer, IPProtocols> valueMap;
static {
valueMap = new HashMap<>();
valueMap.put(protocols.protocol, protocols);
}
}
-
+
private IPProtocols(int value) {
this.protocol = value;
}
private byte getValue() {
return (byte) this.protocol;
}
-
+
private Short getShortValue() {
return new Short((short) protocol);
}
-
+
private IPProtocols fromProtocolNum(Short protocolNum) {
return valueMap.get(protocolNum);
}
import org.opendaylight.openflowplugin.openflow.md.util.RpcResultUtil;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.UpdateFlowOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterOutput;
import java.math.BigInteger;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.node.error.service.rev140410.BadActionErrorNotificationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.node.error.service.rev140410.BadInstructionErrorNotificationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.node.error.service.rev140410.BadMatchErrorNotificationBuilder;
import java.math.BigInteger;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeErrorNotificationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;
/**
import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator;
import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.TableFeaturesReplyConvertor;
import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.TableFeaturesReplyConvertor;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReply;
*/
package org.opendaylight.openflowplugin.openflow.md.core.translator;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator;
import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
+import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
+import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.FlowStatsResponseConvertor;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.GroupStatsResponseConvertor;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterStatsResponseConvertor;
-import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
-import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.Counter32;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.Counter64;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.AggregateFlowStatisticsUpdateBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsUpdateBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.and.statistics.map.FlowTableAndStatisticsMapBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.queue.rev130925.QueueId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescStatsUpdatedBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupFeaturesUpdatedBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
/**
* Class converts multipart reply messages to the notification objects defined
* by statistics provider (manager ).
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.GetFlowStatisticsFromFlowTableOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.State;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.PortBuilder;
import java.lang.reflect.Method;
import java.math.BigInteger;
import java.util.List;
+
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorMessage;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.BaseNodeErrorNotification;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessageBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
*/
package org.opendaylight.openflowplugin.openflow.md.core.translator;
-import java.math.BigInteger;
import java.lang.reflect.Method;
+import java.math.BigInteger;
import org.junit.Assert;
import org.junit.Before;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorMessage;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.errors.rev131116.ErrorType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev131103.TransactionId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessageBuilder;
import org.slf4j.Logger;
import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.CommonPort;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;