New Package dealing with device rollback 29/109829/4
authorJoakim Törnqvist <joakim.tornqvist@smartoptics.com>
Wed, 17 Jan 2024 14:35:08 +0000 (14:35 +0000)
committerJoakim Törnqvist <joakim.tornqvist@smartoptics.com>
Tue, 13 Feb 2024 11:49:13 +0000 (11:49 +0000)
commit0a5e92dab0c7a79e3c7b446802d4551e53f943dc
tree77ad9101966cba4cbecff6d4a5e26b27915e1d6e
parent56e494764739075a80f9b00f84145e0093081bb8
New Package dealing with device rollback

Add a new class (TransactionHistory) capable of keeping
track of created interfaces (during a service creation
process) and rolling them back.

The DeleteService class handles the rollback process. Passing
in a subscriber (DeleteSubscriber) capable of tracking the process
and creating a result.

Pseudo code example

public Result rollbackExample(
        OpenRoadmInterfaceFactory openRoadmInterfaceFactory,
        OpenRoadmInterfaces openRoadmInterfaces,
        CrossConnect crossConnect
) {

    History transactionHistory = new TransactionHistory();

    String supportingOchInterface = openRoadmInterfaceFactory
        .createOpenRoadmOchInterface(...);

    transactionHistory.add(
        new DeviceInterface(nodeId, supportingOchInterface)
    );
    transactionHistory.addInterfaces(
        nodeId,
        supportingOchInterface.split("#")
    );

    Result rollbackResult = new FailedRollbackResult();
    Subscriber deleteSubscriber = new DeleteSubscriber(rollbackResult);

    transactionHistory.rollback(
        new DeleteService(
            crossConnect,
            openRoadmInterfaces,
            deleteSubscriber
        )
    );

    return rollbackResult.renderRollbackOutput();

}

JIRA: TRNSPRTPCE-615
Change-Id: I723e42628e8de0b45ab9160b5b8c366497c0f550
Signed-off-by: Joakim Törnqvist <joakim.tornqvist@smartoptics.com>
15 files changed:
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/Connection.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/DeviceInterface.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/Transaction.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/delete/Delete.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/delete/DeleteService.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/delete/DeleteSubscriber.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/delete/FailedRollbackResult.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/delete/Result.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/delete/Subscriber.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/history/History.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/history/NonStickHistoryMemory.java [new file with mode: 0644]
renderer/src/main/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/history/TransactionHistory.java [new file with mode: 0644]
renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/ConnectionTest.java [new file with mode: 0644]
renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/DeviceInterfaceTest.java [new file with mode: 0644]
renderer/src/test/java/org/opendaylight/transportpce/renderer/provisiondevice/transaction/history/TransactionHistoryTest.java [new file with mode: 0644]