java.lang.Object
org.opendaylight.openflowplugin.applications.frsync.util.ReconcileUtil

public final class ReconcileUtil extends Object
Util methods for group reconcil task (future chaining, transforms).
  • Method Details

    • createRpcResultCondenser

      public static <D> com.google.common.base.Function<List<org.opendaylight.yangtools.yang.common.RpcResult<D>>,org.opendaylight.yangtools.yang.common.RpcResult<Void>> createRpcResultCondenser(String previousItemAction)
      Creates a single rpc result of type Void honoring all partial rpc results.
      Type Parameters:
      D - type of rpc output (gathered in list)
      Parameters:
      previousItemAction - description for case when the triggering future contains failure
      Returns:
      single rpc result of type Void honoring all partial rpc results
    • createRpcResultToVoidFunction

      public static <D> com.google.common.base.Function<org.opendaylight.yangtools.yang.common.RpcResult<D>,org.opendaylight.yangtools.yang.common.RpcResult<Void>> createRpcResultToVoidFunction(String actionDescription)
      Creates a single rpc result of type Void honoring all partial rpc results.
      Type Parameters:
      D - type of rpc output (gathered in list)
      Parameters:
      actionDescription - description for case when the triggering future contains failure
      Returns:
      single rpc result of type Void honoring all partial rpc results
    • chainBarrierFlush

      public static com.google.common.util.concurrent.AsyncFunction<org.opendaylight.yangtools.yang.common.RpcResult<Void>,org.opendaylight.yangtools.yang.common.RpcResult<Void>> chainBarrierFlush(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<Node> nodeIdent, SendBarrier sendBarrier)
      Flushes a chain barrier.
      Parameters:
      nodeIdent - flow capable node path - target device for routed rpc
      sendBarrier - barrier rpc service
      Returns:
      async barrier result
    • resolveAndDivideGroupDiffs

      public static List<ItemSyncBox<Group>> resolveAndDivideGroupDiffs(NodeId nodeId, Map<org.opendaylight.yangtools.yang.common.Uint32,Group> installedGroupsArg, Collection<Group> pendingGroups)
      Returns a list of safe synchronization steps with updates.
      Parameters:
      nodeId - target node
      installedGroupsArg - groups resent on device
      pendingGroups - groups configured for device
      Returns:
      list of safe synchronization steps with updates
    • resolveAndDivideGroupDiffs

      public static List<ItemSyncBox<Group>> resolveAndDivideGroupDiffs(NodeId nodeId, Map<org.opendaylight.yangtools.yang.common.Uint32,Group> installedGroupsArg, Collection<Group> pendingGroups, boolean gatherUpdates)
      Returns a list of safe synchronization steps.
      Parameters:
      nodeId - target node
      installedGroupsArg - groups resent on device
      pendingGroups - groups configured for device
      gatherUpdates - check content of pending item if present on device (and create update task eventually)
      Returns:
      list of safe synchronization steps
    • checkGroupPrecondition

      public static boolean checkGroupPrecondition(Set<org.opendaylight.yangtools.yang.common.Uint32> installedGroupIds, Group pendingGroup)
    • countTotalPushed

      public static <E> int countTotalPushed(Iterable<ItemSyncBox<E>> groupsAddPlan)
    • countTotalUpdated

      public static <E> int countTotalUpdated(Iterable<ItemSyncBox<E>> groupsAddPlan)
    • resolveMeterDiffs

      public static ItemSyncBox<Meter> resolveMeterDiffs(NodeId nodeId, Map<MeterId,Meter> meterOperationalMap, Collection<Meter> metersConfigured, boolean gatherUpdates)
      Resolves meter differences.
      Parameters:
      nodeId - target node
      meterOperationalMap - meters present on device
      metersConfigured - meters configured for device
      gatherUpdates - check content of pending item if present on device (and create update task eventually)
      Returns:
      synchronization box
    • resolveFlowDiffsInAllTables

      public static Map<TableKey,ItemSyncBox<Flow>> resolveFlowDiffsInAllTables(NodeId nodeId, Map<org.opendaylight.yangtools.yang.common.Uint8,Table> tableOperationalMap, Collection<Table> tablesConfigured, boolean gatherUpdates)
      Resolves flow differences in all tables.
      Parameters:
      nodeId - target node
      tableOperationalMap - flow-tables resent on device
      tablesConfigured - flow-tables configured for device
      gatherUpdates - check content of pending item if present on device (and create update task eventually)
      Returns:
      map : key=TableKey, value=ItemSyncBox of safe synchronization steps
    • safeGroups

      public static Collection<Group> safeGroups(FlowCapableNode node)
    • safeTables

      public static Collection<Table> safeTables(FlowCapableNode node)
    • safeMeters

      public static Collection<Meter> safeMeters(FlowCapableNode node)