Unbind SFC service from interface on sfc-genius.
Performs unbind of SFC service for the logical interfaces handled
through Genius. Includes removing the SFC terminating service action
from the interface node, which handles SFC traffic incoming through
tunnel, if there are no more interfaces bound to SFC service on the
node.
A handler is setup for this task, SfcGeniusServiceHandler, which
coordinates the task through more sub-handlers specialized in read and
write operations through asynchronous APIs. JDK8 new CompletableFuture
is leveraged to asynchronously chain read & write asynchronous
operations.
For the time being, the module stores in-memory the data plane node
location of each interface (dpnInterfaces map), which is an information
needed to handle the terminating service actions. On a later patch, this
will be stored in the SFC operational data store.
The implementation is asynchronous for the following reasons:
- Javadoc of APIs recommend using the asynchronous interfaces over
the synchronous ones.
- With the introduction of JDK8, more code facilities are available to
produce asynchronous readable code.
- Being sfc-genius an independent small module, it's deemed a good
chance to get a taste for it.
Change-Id: I145b4eb0aa6a4f17ff0c3bd8344a0486d8d7be96
Signed-off-by: Jaime Caamaño Ruiz <jaime.caamano.ruiz@ericsson.com>