New Package dealing with device rollback
[transportpce.git] / renderer / src / main / java / org / opendaylight / transportpce / renderer / provisiondevice / transaction / delete / DeleteService.java
1 /*
2  * Copyright © 2024 Smartoptics and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.transportpce.renderer.provisiondevice.transaction.delete;
10
11 import java.util.ArrayList;
12 import java.util.List;
13 import org.eclipse.jdt.annotation.NonNull;
14 import org.opendaylight.transportpce.common.crossconnect.CrossConnect;
15 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
16 import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19
20 public class DeleteService implements Delete {
21
22     private final CrossConnect crossConnect;
23     private final OpenRoadmInterfaces openRoadmInterfaces;
24
25     private final Subscriber subscriber;
26
27     private static final Logger LOG = LoggerFactory.getLogger(DeleteService.class);
28
29     public DeleteService(
30             CrossConnect crossConnect,
31             OpenRoadmInterfaces openRoadmInterfaces,
32             Subscriber subscriber) {
33         this.crossConnect = crossConnect;
34         this.openRoadmInterfaces = openRoadmInterfaces;
35         this.subscriber = subscriber;
36     }
37
38     @Override
39     public @NonNull List<String> deleteCrossConnect(String deviceId, String connectionNumber,
40                                                     boolean isOtn) {
41         List<String> result = crossConnect.deleteCrossConnect(deviceId, connectionNumber, isOtn);
42
43         if (result == null) {
44             subscriber.result(false, deviceId, connectionNumber);
45             return new ArrayList<>();
46         }
47
48         subscriber.result(true, deviceId, connectionNumber);
49
50         return result;
51     }
52
53     @Override
54     public boolean deleteInterface(String nodeId, String interfaceId) {
55         try {
56             openRoadmInterfaces.deleteInterface(nodeId, interfaceId);
57
58             subscriber.result(true, nodeId, interfaceId);
59             return true;
60         } catch (OpenRoadmInterfaceException e) {
61             LOG.error("Failed rolling back {} {}", nodeId, interfaceId);
62             subscriber.result(false, nodeId, interfaceId);
63             return false;
64         }
65     }
66 }