Switch to JDT annotations for Nullable and NonNull
[netvirt.git] / neutronvpn / impl / src / main / java / org / opendaylight / netvirt / neutronvpn / NeutronExternalSubnetHandler.java
1 /*
2  * Copyright (c) 2017 HPE, 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 package org.opendaylight.netvirt.neutronvpn;
9
10 import java.util.List;
11 import javax.annotation.PreDestroy;
12 import javax.inject.Inject;
13 import javax.inject.Singleton;
14 import org.eclipse.jdt.annotation.Nullable;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.Network;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19
20 @Singleton
21 public class NeutronExternalSubnetHandler implements AutoCloseable {
22     private static final Logger LOG = LoggerFactory.getLogger(NeutronExternalSubnetHandler.class);
23     private final NeutronvpnManager nvpnManager;
24     private final NeutronvpnNatManager nvpnNatManager;
25
26     @Inject
27     public NeutronExternalSubnetHandler(final NeutronvpnManager neutronvpnManager,
28             final NeutronvpnNatManager neutronvpnNatMgr) {
29         this.nvpnManager = neutronvpnManager;
30         this.nvpnNatManager = neutronvpnNatMgr;
31     }
32
33     @Override
34     @PreDestroy
35     public void close() {
36         LOG.info("{} close", getClass().getSimpleName());
37     }
38
39     public void handleExternalSubnetAdded(Network network, Uuid subnetId, @Nullable List<Uuid> routerIds) {
40         Uuid networkId = network.getUuid();
41         if (NeutronvpnUtils.getIsExternal(network) && NeutronvpnUtils.isFlatOrVlanNetwork(network)) {
42             LOG.info("Added external subnet {} part of external network {} will create NAT external subnet",
43                     subnetId.getValue(), networkId.getValue());
44             nvpnNatManager.updateOrAddExternalSubnet(networkId, subnetId, routerIds);
45             nvpnManager.updateSubnetNode(subnetId, null/* routerId */, subnetId, null /* internet-vpn-id */);
46             nvpnManager.createVpnInstanceForSubnet(subnetId);
47         }
48     }
49
50     public void handleExternalSubnetRemoved(Network network, Uuid subnetId) {
51         Uuid networkId = network.getUuid();
52         if (NeutronvpnUtils.getIsExternal(network) && NeutronvpnUtils.isFlatOrVlanNetwork(network)) {
53             LOG.info("Removed subnet {} part of external network {} will remove NAT external subnet",
54                     subnetId.getValue(), networkId.getValue());
55             nvpnManager.removeVpnInstanceForSubnet(subnetId);
56             nvpnNatManager.removeExternalSubnet(networkId, subnetId);
57         }
58     }
59 }