Bump versions by 0.1.0 for next dev cycle
[vpnservice.git] / itm / itm-impl / src / main / java / org / opendaylight / vpnservice / itm / confighelpers / ItmMonitorToggleWorker.java
1 /*
2  * Copyright (c) 2015, 2016 Ericsson India Global Services Pvt Ltd. 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 package org.opendaylight.vpnservice.itm.confighelpers;
9
10 import com.google.common.base.Optional;
11 import com.google.common.util.concurrent.ListenableFuture;
12 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
13 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
14 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
15 import org.opendaylight.vpnservice.itm.impl.ItmUtils;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceBuilder;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfTunnel;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfTunnelBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.op.rev150701.ExternalTunnelList;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.op.rev150701.TunnelList;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.op.rev150701.external.tunnel.list.ExternalTunnel;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.op.rev150701.tunnel.list.InternalTunnel;
25 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29 import java.util.ArrayList;
30 import java.util.List;
31 import java.util.concurrent.Callable;
32
33 /**
34  * Created by eanraju on 23-Mar-16.
35  */
36 public class ItmMonitorToggleWorker implements Callable<List<ListenableFuture<Void>>> {
37     private static final Logger logger = LoggerFactory.getLogger(ItmMonitorToggleWorker.class) ;
38     private DataBroker dataBroker;
39     private String tzone;
40     private boolean enabled;
41     private List<HwVtep> hwVteps;
42     private  Boolean exists;
43
44   public  ItmMonitorToggleWorker(List<HwVtep> hwVteps,String tzone,boolean enabled, DataBroker dataBroker, Boolean exists){
45         this.dataBroker = dataBroker;
46         this.tzone = tzone;
47         this.enabled = enabled;
48         this.hwVteps = hwVteps;
49         this.exists = exists;
50         logger.trace("ItmMonitorToggleWorker initialized with  tzone {} and toggleBoolean {}",tzone,enabled );
51     }
52
53     @Override public List<ListenableFuture<Void>> call() throws Exception {
54         List<ListenableFuture<Void>> futures = new ArrayList<>() ;
55         logger.debug("Invoking Tunnel Monitor Worker tzone = {} enabled {}",tzone,enabled );
56         WriteTransaction t = dataBroker.newWriteOnlyTransaction();
57         toggleTunnelMonitoring(hwVteps,enabled,tzone,t,exists);
58         futures.add(t.submit());
59         return futures;
60     }
61
62     private void toggleTunnelMonitoring(List<HwVtep> hwVteps,Boolean enabled, String tzone, WriteTransaction t,Boolean exists) {
63         //exists means hwVteps exist for this tzone
64
65         List<String> TunnelList = ItmUtils.getTunnelsofTzone(hwVteps,tzone,dataBroker,exists);
66         if(TunnelList !=null &&!TunnelList.isEmpty()) {
67             for (String tunnel : TunnelList)
68                 toggle(tunnel, enabled,t);
69         }
70     }
71
72     private void toggle(String tunnelInterfaceName, boolean enabled, WriteTransaction t) {
73         if(tunnelInterfaceName!=null) {
74             InstanceIdentifier<Interface> trunkIdentifier = ItmUtils.buildId(tunnelInterfaceName);
75             IfTunnel tunnel = new IfTunnelBuilder().setMonitorEnabled(enabled).build();
76             InterfaceBuilder builder = new InterfaceBuilder().setKey(new InterfaceKey(tunnelInterfaceName))
77                             .addAugmentation(IfTunnel.class, tunnel);
78             t.merge(LogicalDatastoreType.CONFIGURATION, trunkIdentifier, builder.build());
79         }
80     }
81 }
82
83
84
85