Class MappingService

java.lang.Object
org.opendaylight.lispflowmapping.implementation.MappingService
All Implemented Interfaces:
AutoCloseable, IMappingService, OdlMappingserviceService, org.opendaylight.yangtools.yang.binding.RpcService

public class MappingService extends Object implements OdlMappingserviceService, IMappingService, AutoCloseable
Dispatcher of API calls that implements the RPC and Java APIs in mappingservice.yang and IMappingService respectively. It also coordinates and acts as container for all objects in charge of - saving and updating md-sal datastore stored mappings - monitoring md-sal datastore mapping updates and pushing them to the in memory mapping-system - in memory mapping-system
Author:
Lorand Jakab, Florin Coras
  • Constructor Details

    • MappingService

      public MappingService(org.opendaylight.mdsal.binding.api.DataBroker broker, org.opendaylight.mdsal.binding.api.NotificationPublishService notificationPublishService, ILispDAO lispDAO)
  • Method Details

    • setMappingMerge

      public void setMappingMerge(boolean mergeMapping)
      Description copied from interface: IMappingService
      Configures Mapping Service mapping merge option. If set to false, mappings with the same key are overwritten, otherwise, mappings with the same key but from different xTR-IDs are all stored.
      Specified by:
      setMappingMerge in interface IMappingService
      Parameters:
      mergeMapping - enables or disables mapping merge
    • setLookupPolicy

      public void setLookupPolicy(IMappingService.LookupPolicy policy)
      Description copied from interface: IMappingService
      Configures Mapping Service mapping lookup policy option.
      Specified by:
      setLookupPolicy in interface IMappingService
      Parameters:
      policy - the policy to be activated
    • initialize

      public void initialize()
    • addKey

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<AddKeyOutput>> addKey(AddKeyInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke add-key RPC.
      Specified by:
      addKey in interface OdlMappingserviceService
      Parameters:
      input - of add-key
      Returns:
      output of add-key
    • addMapping

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<AddMappingOutput>> addMapping(AddMappingInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke add-mapping RPC.
      Specified by:
      addMapping in interface OdlMappingserviceService
      Parameters:
      input - of add-mapping
      Returns:
      output of add-mapping
    • addMapping

      public void addMapping(MappingOrigin origin, Eid key, SiteId siteId, MappingData mappingData)
      Description copied from interface: IMappingService
      Add mapping.
      Specified by:
      addMapping in interface IMappingService
      Parameters:
      origin - Table where mapping should be added
      key - Key of the mapping
      siteId - Site that stores the mapping
      mappingData - Mapping to be stored
    • addNegativeMapping

      public MappingData addNegativeMapping(Eid key)
      Description copied from interface: IMappingService
      Generate and add a negative mapping entry originated from the southbound, and return the generated mapping.
      Specified by:
      addNegativeMapping in interface IMappingService
      Parameters:
      key - Key of the mapping
      Returns:
      Returns the generated negative mapping (which is never null).
    • refreshMappingRegistration

      public void refreshMappingRegistration(Eid key, XtrId xtrId, Long timestamp)
      Description copied from interface: IMappingService
      Refresh southbound mapping registration timestamp.
      Specified by:
      refreshMappingRegistration in interface IMappingService
      Parameters:
      key - The EID whose registration must be refreshed
      xtrId - xTR-ID of the mapping to be refreshed
      timestamp - New timestamp for the mapping
    • getKey

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetKeyOutput>> getKey(GetKeyInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke get-key RPC.
      Specified by:
      getKey in interface OdlMappingserviceService
      Parameters:
      input - of get-key
      Returns:
      output of get-key
    • getMapping

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetMappingOutput>> getMapping(GetMappingInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke get-mapping RPC.
      Specified by:
      getMapping in interface OdlMappingserviceService
      Parameters:
      input - of get-mapping
      Returns:
      output of get-mapping
    • getMapping

      public MappingData getMapping(MappingOrigin origin, Eid key)
      Description copied from interface: IMappingService
      Retrieves mapping with given origin for the provided key. The lookup policy for the key is defined in the Mapping System.
      Specified by:
      getMapping in interface IMappingService
      Parameters:
      origin - Table where the mapping should be looked up.
      key - Key to be looked up
      Returns:
      Returns the mapping found in the Mapping System or null if nothing is found.
    • getMapping

      public MappingData getMapping(Eid key)
      Description copied from interface: IMappingService
      Retrieves mapping for given key.The lookup policy for the key is defined in the Mapping System.
      Specified by:
      getMapping in interface IMappingService
      Parameters:
      key - Key to be looked up
      Returns:
      Returns the mapping found in the Mapping System or null if nothing is found.
    • getMapping

      public MappingData getMapping(Eid srcKey, Eid dstKey)
      Description copied from interface: IMappingService
      Retrieves mapping with a Source/Dest policy. This method is meant to avoid the overhead of building LcafSourceDest addresses.
      Specified by:
      getMapping in interface IMappingService
      Parameters:
      srcKey - Source key being looked up
      dstKey - Destination key being looked up
      Returns:
      Returns the mapping found in the Mapping System or null if nothing is found.
    • subscribe

      public void subscribe(Subscriber subscriber, Eid subscribedEid)
      Description copied from interface: IMappingService
      Subscribe a Subscriber to receive updates about mapping changes for an EID.
      Specified by:
      subscribe in interface IMappingService
      Parameters:
      subscriber - The Subscriber object with information about the subscriber
      subscribedEid - The EID for which the subscriber will receive updates
    • getSubscribers

      public Set<Subscriber> getSubscribers(Eid eid)
      Description copied from interface: IMappingService
      Retrieves the subscribers for an EID.
      Specified by:
      getSubscribers in interface IMappingService
      Parameters:
      eid - The EID to be looked up
      Returns:
      The set of subscribers for the EID
    • getMappingWithXtrId

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetMappingWithXtrIdOutput>> getMappingWithXtrId(GetMappingWithXtrIdInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke get-mapping-with-xtr-id RPC.
      Specified by:
      getMappingWithXtrId in interface OdlMappingserviceService
      Parameters:
      input - of get-mapping-with-xtr-id
      Returns:
      output of get-mapping-with-xtr-id
    • removeKey

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<RemoveKeyOutput>> removeKey(RemoveKeyInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke remove-key RPC.
      Specified by:
      removeKey in interface OdlMappingserviceService
      Parameters:
      input - of remove-key
      Returns:
      output of remove-key
    • removeMapping

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<RemoveMappingOutput>> removeMapping(RemoveMappingInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke remove-mapping RPC.
      Specified by:
      removeMapping in interface OdlMappingserviceService
      Parameters:
      input - of remove-mapping
      Returns:
      output of remove-mapping
    • removeMapping

      public void removeMapping(MappingOrigin origin, Eid key)
      Description copied from interface: IMappingService
      Remove mapping.
      Specified by:
      removeMapping in interface IMappingService
      Parameters:
      origin - Table from where the mapping should be removed
      key - Key to be removed
    • updateKey

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<UpdateKeyOutput>> updateKey(UpdateKeyInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke update-key RPC.
      Specified by:
      updateKey in interface OdlMappingserviceService
      Parameters:
      input - of update-key
      Returns:
      output of update-key
    • updateMapping

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<UpdateMappingOutput>> updateMapping(UpdateMappingInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke update-mapping RPC.
      Specified by:
      updateMapping in interface OdlMappingserviceService
      Parameters:
      input - of update-mapping
      Returns:
      output of update-mapping
    • removeKeys

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<RemoveKeysOutput>> removeKeys(RemoveKeysInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke remove-keys RPC.
      Specified by:
      removeKeys in interface OdlMappingserviceService
      Parameters:
      input - of remove-keys
      Returns:
      output of remove-keys
    • removeMappings

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<RemoveMappingsOutput>> removeMappings(RemoveMappingsInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke remove-mappings RPC.
      Specified by:
      removeMappings in interface OdlMappingserviceService
      Parameters:
      input - of remove-mappings
      Returns:
      output of remove-mappings
    • getKeys

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetKeysOutput>> getKeys(GetKeysInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke get-keys RPC.
      Specified by:
      getKeys in interface OdlMappingserviceService
      Parameters:
      input - of get-keys
      Returns:
      output of get-keys
    • addMappings

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<AddMappingsOutput>> addMappings(AddMappingsInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke add-mappings RPC.
      Specified by:
      addMappings in interface OdlMappingserviceService
      Parameters:
      input - of add-mappings
      Returns:
      output of add-mappings
    • updateKeys

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<UpdateKeysOutput>> updateKeys(UpdateKeysInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke update-keys RPC.
      Specified by:
      updateKeys in interface OdlMappingserviceService
      Parameters:
      input - of update-keys
      Returns:
      output of update-keys
    • removeAllMappings

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<RemoveAllMappingsOutput>> removeAllMappings(RemoveAllMappingsInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke remove-all-mappings RPC.
      Specified by:
      removeAllMappings in interface OdlMappingserviceService
      Parameters:
      input - of remove-all-mappings
      Returns:
      output of remove-all-mappings
    • removeAllKeys

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<RemoveAllKeysOutput>> removeAllKeys(RemoveAllKeysInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke remove-all-keys RPC.
      Specified by:
      removeAllKeys in interface OdlMappingserviceService
      Parameters:
      input - of remove-all-keys
      Returns:
      output of remove-all-keys
    • getAllKeys

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetAllKeysOutput>> getAllKeys(GetAllKeysInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke get-all-keys RPC.
      Specified by:
      getAllKeys in interface OdlMappingserviceService
      Parameters:
      input - of get-all-keys
      Returns:
      output of get-all-keys
    • updateMappings

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<UpdateMappingsOutput>> updateMappings(UpdateMappingsInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke update-mappings RPC.
      Specified by:
      updateMappings in interface OdlMappingserviceService
      Parameters:
      input - of update-mappings
      Returns:
      output of update-mappings
    • addKeys

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<AddKeysOutput>> addKeys(AddKeysInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke add-keys RPC.
      Specified by:
      addKeys in interface OdlMappingserviceService
      Parameters:
      input - of add-keys
      Returns:
      output of add-keys
    • getAllMappings

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetAllMappingsOutput>> getAllMappings(GetAllMappingsInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke get-all-mappings RPC.
      Specified by:
      getAllMappings in interface OdlMappingserviceService
      Parameters:
      input - of get-all-mappings
      Returns:
      output of get-all-mappings
    • getMappings

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetMappingsOutput>> getMappings(GetMappingsInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke get-mappings RPC.
      Specified by:
      getMappings in interface OdlMappingserviceService
      Parameters:
      input - of get-mappings
      Returns:
      output of get-mappings
    • removeAllOperationalContent

      public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<RemoveAllOperationalContentOutput>> removeAllOperationalContent(RemoveAllOperationalContentInput input)
      Description copied from interface: OdlMappingserviceService
      Invoke remove-all-operational-content RPC.
      Specified by:
      removeAllOperationalContent in interface OdlMappingserviceService
      Parameters:
      input - of remove-all-operational-content
      Returns:
      output of remove-all-operational-content
    • getWidestNegativePrefix

      public Eid getWidestNegativePrefix(Eid key)
      Description copied from interface: IMappingService
      Retrieves widest negative prefix found in the Mapping System for given key.
      Specified by:
      getWidestNegativePrefix in interface IMappingService
      Parameters:
      key - Key being looked up
      Returns:
      Returns the widest negative prefix or null if nothing is found.
    • getSubtree

      public Set<Eid> getSubtree(MappingOrigin origin, Eid key)
      Description copied from interface: IMappingService
      Retrieves the subtree of a maskable prefix from the given map-cache.
      Specified by:
      getSubtree in interface IMappingService
      Parameters:
      origin - Table where the key should be looked up
      key - Key to be looked up
      Returns:
      The child prefixes of the prefix, including the prefix itself if present
    • addAuthenticationKey

      public void addAuthenticationKey(Eid key, MappingAuthkey authKey)
      Description copied from interface: IMappingService
      Add authentication key.
      Specified by:
      addAuthenticationKey in interface IMappingService
      Parameters:
      key - The key for which the authentication key is added
      authKey - The authentication key
    • getAuthenticationKey

      public MappingAuthkey getAuthenticationKey(Eid key)
      Description copied from interface: IMappingService
      Retrieve authentication key.
      Specified by:
      getAuthenticationKey in interface IMappingService
      Parameters:
      key - The key for which the authentication key is being looked up.
      Returns:
      The authentication key.
    • removeAuthenticationKey

      public void removeAuthenticationKey(Eid key)
      Description copied from interface: IMappingService
      Remove authentication key.
      Specified by:
      removeAuthenticationKey in interface IMappingService
      Parameters:
      key - Key for which the authentication key should be removed.
    • addData

      public void addData(MappingOrigin origin, Eid key, String subKey, Object data)
      Description copied from interface: IMappingService
      Generic addition of data. Not stored in MD-SAL datastore!
      Specified by:
      addData in interface IMappingService
      Parameters:
      origin - Table where data should be inserted
      key - The key where data should be inserted
      subKey - The subKey where data should be inserted
      data - The data to be stored
    • getData

      public Object getData(MappingOrigin origin, Eid key, String subKey)
      Description copied from interface: IMappingService
      Generic retrieval of data.
      Specified by:
      getData in interface IMappingService
      Parameters:
      origin - Table from where the data should be read
      key - The key where the data is stored
      subKey - The subKey where data is stored
      Returns:
      The data
    • removeData

      public void removeData(MappingOrigin origin, Eid key, String subKey)
      Description copied from interface: IMappingService
      Generic removal of data.
      Specified by:
      removeData in interface IMappingService
      Parameters:
      origin - The table from where the data should be removed
      key - The key of the data to be removed
      subKey - The subKey of the data to be removed
    • getParentPrefix

      public Eid getParentPrefix(Eid key)
      Description copied from interface: IMappingService
      Returns the parent prefix for given key.
      Specified by:
      getParentPrefix in interface IMappingService
      Parameters:
      key - The key which parent is to be returned.
      Returns:
      The parent perfix of a specific key.
    • printMappings

      public String printMappings()
      Description copied from interface: IMappingService
      Print all mappings. Used for testing, debugging and the karaf shell.
      Specified by:
      printMappings in interface IMappingService
      Returns:
      String consisting of all mappings
    • prettyPrintMappings

      public String prettyPrintMappings()
      Description copied from interface: IMappingService
      Print mappings in cache in a human friendly format.
      Specified by:
      prettyPrintMappings in interface IMappingService
      Returns:
      a String consisting of all the mappings in the cache
    • printKeys

      public String printKeys()
      Description copied from interface: IMappingService
      Print all authentication keys. Used for testing, debugging and the karaf shell.
      Specified by:
      printKeys in interface IMappingService
      Returns:
      String consisting of all mappings
    • prettyPrintKeys

      public String prettyPrintKeys()
      Description copied from interface: IMappingService
      Print keys in cache in a human friendly format.
      Specified by:
      prettyPrintKeys in interface IMappingService
      Returns:
      a String consisting of all the keys in the cache
    • close

      public void close() throws Exception
      Specified by:
      close in interface AutoCloseable
      Throws:
      Exception
    • cleanCachedMappings

      public void cleanCachedMappings()
      Description copied from interface: IMappingService
      Cleans all cached mappings.Used for testing.
      Specified by:
      cleanCachedMappings in interface IMappingService
    • setIsMaster

      public void setIsMaster(boolean isMaster)
      Description copied from interface: IMappingService
      Set cluster master status.
      Specified by:
      setIsMaster in interface IMappingService
      Parameters:
      isMaster - is|isn't master
    • isMaster

      public boolean isMaster()
      Description copied from interface: IMappingService
      Get cluster master status.
      Specified by:
      isMaster in interface IMappingService
      Returns:
      isMaster is|isn't master