Refactoring rollback when service create fails
[transportpce.git] / renderer / src / main / java / org / opendaylight / transportpce / renderer / provisiondevice / tasks / NetworkDeviceRenderingRollbackTask.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.tasks;
10
11 import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
12 import org.opendaylight.transportpce.renderer.provisiondevice.transaction.history.History;
13 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev211004.RendererRollbackOutput;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17
18 public class NetworkDeviceRenderingRollbackTask extends RollbackTask {
19
20     private final History transactionHistory;
21
22     private final boolean isRollbackNecessary;
23
24     private final DeviceRendererService deviceRendererService;
25
26     private final ResultMessage message;
27
28     private static final Logger LOG = LoggerFactory.getLogger(NetworkDeviceRenderingRollbackTask.class);
29
30     public NetworkDeviceRenderingRollbackTask(String id, History transactionHistory,
31                                               boolean isRollbackNecessary,
32                                               DeviceRendererService deviceRendererService, ResultMessage message) {
33         super(id);
34         this.transactionHistory = transactionHistory;
35         this.isRollbackNecessary = isRollbackNecessary;
36         this.deviceRendererService = deviceRendererService;
37         this.message = message;
38     }
39
40     @Override
41     public boolean isRollbackNecessary() {
42         return isRollbackNecessary;
43     }
44
45     @Override
46     public Void call() throws Exception {
47
48         RendererRollbackOutput rollbackOutput = deviceRendererService.rendererRollback(transactionHistory);
49
50         if (! rollbackOutput.getSuccess()) {
51             LOG.warn("Device rendering rollback of {} was not successful! Failed rollback on {}.", this.getId(),
52                     message.createErrorMessage(rollbackOutput.nonnullFailedToRollback().values()));
53         } else {
54             LOG.info("Device rollback of {} successful.", this.getId());
55         }
56
57         return null;
58     }
59 }