DHCP Handling for TOR VM
[vpnservice.git] / neutronvpn / neutronvpn-api / src / main / java / org / opendaylight / vpnservice / neutronvpn / api / utils / NeutronUtils.java
1 /*
2  * Copyright (c) 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
9 package org.opendaylight.vpnservice.neutronvpn.api.utils;
10
11 import java.util.List;
12
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.binding.rev150712.PortBindingExtension;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeBase;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeVxlan;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.Network;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.provider.ext.rev150712.NetworkProviderExtension;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.provider.ext.rev150712.neutron.networks.network.Segments;
20
21 public class NeutronUtils {
22     public static final String VNIC_TYPE_NORMAL = "normal";
23
24     public static boolean isPortVnicTypeNormal(Port port) {
25         PortBindingExtension portBinding = port.getAugmentation(PortBindingExtension.class);
26         if(portBinding == null || portBinding.getVnicType() == null) {
27             // By default, VNIC_TYPE is NORMAL
28             return true;
29         }
30         String vnicType = portBinding.getVnicType().trim().toLowerCase();
31         return vnicType.equals(VNIC_TYPE_NORMAL);
32     }
33
34     public static String getSegmentationIdFromNeutronNetwork(Network network) {
35         String segmentationId = null;
36         NetworkProviderExtension providerExtension = network.getAugmentation(NetworkProviderExtension.class);
37         if (providerExtension != null) {
38             segmentationId = providerExtension.getSegmentationId();
39             if (segmentationId == null) {
40                 List<Segments> providerSegments = providerExtension.getSegments();
41                 if (providerSegments != null && providerSegments.size() > 0) {
42                     for (Segments providerSegment: providerSegments) {
43                         if (isNetworkSegmentTypeVxlan(providerSegment)) {
44                             segmentationId = providerSegment.getSegmentationId();
45                             break;
46                         }
47                     }
48                 }
49             }
50         }
51         return segmentationId;
52     }
53
54     static boolean isNetworkSegmentTypeVxlan(Segments providerSegment) {
55         Class<? extends NetworkTypeBase> networkType = providerSegment.getNetworkType();
56         return (networkType != null && networkType.isAssignableFrom(NetworkTypeVxlan.class));
57     }
58 }