/* * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.netvirt.neutronvpn.api.utils; import java.util.List; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.binding.rev150712.PortBindingExtension; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.Network; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.provider.ext.rev150712.NetworkProviderExtension; import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.provider.ext.rev150712.neutron.networks.network.Segments; public class NeutronUtils { public static final String VNIC_TYPE_NORMAL = "normal"; public static boolean isPortVnicTypeNormal(Port port) { PortBindingExtension portBinding = port.getAugmentation(PortBindingExtension.class); if (portBinding == null || portBinding.getVnicType() == null) { // By default, VNIC_TYPE is NORMAL return true; } String vnicType = portBinding.getVnicType().trim().toLowerCase(); return vnicType.equals(VNIC_TYPE_NORMAL); } public static String getSegmentationIdFromNeutronNetwork(Network network) { String segmentationId = null; NetworkProviderExtension providerExtension = network.getAugmentation(NetworkProviderExtension.class); if (providerExtension != null) { Class networkType = providerExtension.getNetworkType(); segmentationId = getSegmentationIdFromNeutronNetwork(network, networkType); } return segmentationId; } public static String getSegmentationIdFromNeutronNetwork(Network network, Class networkType) { String segmentationId = null; NetworkProviderExtension providerExtension = network.getAugmentation(NetworkProviderExtension.class); if (providerExtension != null) { segmentationId = providerExtension.getSegmentationId(); if (segmentationId == null) { List providerSegments = providerExtension.getSegments(); if (providerSegments != null && providerSegments.size() > 0) { for (Segments providerSegment: providerSegments) { if (isNetworkSegmentType(providerSegment, networkType)) { segmentationId = providerSegment.getSegmentationId(); break; } } } } } return segmentationId; } static boolean isNetworkSegmentType(Segments providerSegment, Class expectedNetworkType) { Class networkType = providerSegment.getNetworkType(); return (networkType != null && networkType.isAssignableFrom(expectedNetworkType)); } public static boolean isNetworkSegmentType(Network network, Long index, Class expectedNetworkType) { Class segmentType = null; NetworkProviderExtension providerExtension = network.getAugmentation(NetworkProviderExtension.class); if (providerExtension != null) { List providerSegments = providerExtension.getSegments(); if (providerSegments != null && providerSegments.size() > 0) { for (Segments providerSegment : providerSegments) { if (providerSegment.getSegmentationIndex() == index) { segmentType = providerSegment.getNetworkType(); break; } } } } return (segmentType != null && segmentType.isAssignableFrom(expectedNetworkType)); } public static Long getNumberSegmentsFromNeutronNetwork(Network network) { NetworkProviderExtension providerExtension = network.getAugmentation(NetworkProviderExtension.class); Integer numSegs = 0; if (providerExtension != null) { List providerSegments = providerExtension.getSegments(); if (providerSegments != null ) { numSegs = providerSegments.size(); } } return Long.valueOf(numSegs); } public static String getSegmentationIdFromNeutronNetworkSegment(Network network, Long index) { String segmentationId = null; NetworkProviderExtension providerExtension = network.getAugmentation(NetworkProviderExtension.class); if (providerExtension != null) { List providerSegments = providerExtension.getSegments(); if (providerSegments != null && providerSegments.size() > 0) { for (Segments providerSegment : providerSegments) { if (providerSegment.getSegmentationIndex() == index) { segmentationId = providerSegment.getSegmentationId(); break; } } } } return segmentationId; } }