Remove GENIUS UTIL references in Statemanager Module
[netvirt.git] / statemanager / impl / src / main / java / org / opendaylight / netvirt / statemanager / StateManager.java
1 /*
2  * Copyright (c) 2016 Red Hat, Inc. 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.netvirt.statemanager;
10
11 import static org.opendaylight.mdsal.binding.util.Datastore.OPERATIONAL;
12
13 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
14 import java.util.concurrent.ExecutionException;
15 import javax.annotation.PostConstruct;
16 import javax.inject.Inject;
17 import javax.inject.Singleton;
18 import org.opendaylight.mdsal.binding.api.DataBroker;
19 import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunner;
20 import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunnerImpl;
21 import org.opendaylight.netvirt.bgpmanager.api.IBgpManager;
22 import org.opendaylight.netvirt.elanmanager.api.IElanService;
23 import org.opendaylight.netvirt.fibmanager.api.IFibManager;
24 import org.opendaylight.netvirt.neutronvpn.interfaces.INeutronVpnManager;
25 import org.opendaylight.netvirt.vpnmanager.api.IVpnManager;
26 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
27 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
28 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
29 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyBuilder;
30 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
31 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34
35 @Singleton
36 public class StateManager implements IStateManager {
37
38     private static final Logger LOG = LoggerFactory.getLogger(StateManager.class);
39     private final ManagedNewTransactionRunner txRunner;
40
41     // This class relies on its arguments being ready, even though it doesn't use them
42     @SuppressWarnings("unused")
43     @Inject
44     public StateManager(final DataBroker dataBroker, final IBgpManager bgpManager, final IElanService elanService,
45                         final IFibManager fibManager, final INeutronVpnManager neutronVpnManager,
46                         final IVpnManager vpnManager) {
47         this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker);
48     }
49
50     /**
51      * Start method called by blueprint.
52      */
53     @PostConstruct
54     public void start() {
55         setReady(true);
56     }
57
58     @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
59             justification = "https://github.com/spotbugs/spotbugs/issues/811")
60     private void initializeNetvirtTopology() {
61         final TopologyId topologyId = new TopologyId("netvirt:1");
62         InstanceIdentifier<Topology> path =
63                 InstanceIdentifier.create(NetworkTopology.class).child(Topology.class, new TopologyKey(topologyId));
64         TopologyBuilder tpb = new TopologyBuilder();
65         tpb.setTopologyId(topologyId);
66         try {
67             txRunner.callWithNewWriteOnlyTransactionAndSubmit(OPERATIONAL,
68                 tx -> tx.put(path, tpb.build())).get();
69         } catch (InterruptedException | ExecutionException e) {
70             LOG.error("StateManager error initializing netvirt topology", e);
71         }
72     }
73
74     private class WriteTopology implements Runnable {
75         @Override
76         public void run() {
77             try {
78                 Thread.sleep(5000);
79             } catch (InterruptedException e) {
80                 LOG.warn("StateManager thread was interrupted", e);
81             }
82             LOG.info("StateManager all is ready");
83             initializeNetvirtTopology();
84         }
85     }
86
87     @Override
88     public void setReady(boolean ready) {
89         if (ready) {
90             new Thread(new WriteTopology()).start();
91         }
92     }
93 }