X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=interfacemgr%2Finterfacemgr-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Finterfacemgr%2FInterfacemgrProvider.java;h=4cc72503407d1635eea6debf9db5a611abd28c80;hb=9c0e16907ffb4d6c79ea397885f9dfed738dc848;hp=e886115f33768695ae2ea6758ec8c2c343eccb3f;hpb=462c6a1f859067a517111cb7a1441571659c984b;p=vpnservice.git diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java index e886115f..4cc72503 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. + * Copyright (c) 2015 - 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, @@ -7,79 +7,140 @@ */ package org.opendaylight.vpnservice.interfacemgr; + +import com.google.common.base.Optional; import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.NotificationService; +import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; -import org.opendaylight.idmanager.IdManager; +import org.opendaylight.vpnservice.interfacemgr.commons.InterfaceManagerCommonUtils; +import org.opendaylight.vpnservice.interfacemgr.globals.InterfaceInfo; +import org.opendaylight.vpnservice.interfacemgr.globals.InterfaceInfo.InterfaceAdminState; +import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager; +import org.opendaylight.vpnservice.interfacemgr.listeners.AlivenessMonitorListener; import org.opendaylight.vpnservice.interfacemgr.listeners.InterfaceConfigListener; +import org.opendaylight.vpnservice.interfacemgr.listeners.HwVTEPConfigListener; +import org.opendaylight.vpnservice.interfacemgr.listeners.HwVTEPTunnelsStateListener; import org.opendaylight.vpnservice.interfacemgr.listeners.InterfaceInventoryStateListener; +import org.opendaylight.vpnservice.interfacemgr.listeners.TerminationPointStateListener; import org.opendaylight.vpnservice.interfacemgr.listeners.InterfaceTopologyStateListener; -import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager; +import org.opendaylight.vpnservice.interfacemgr.listeners.VlanMemberConfigListener; +import org.opendaylight.vpnservice.interfacemgr.pmcounters.NodeConnectorStatsImpl; import org.opendaylight.vpnservice.interfacemgr.rpcservice.InterfaceManagerRpcService; import org.opendaylight.vpnservice.interfacemgr.servicebindings.flowbased.listeners.FlowBasedServicesConfigListener; import org.opendaylight.vpnservice.interfacemgr.servicebindings.flowbased.listeners.FlowBasedServicesInterfaceStateListener; -import org.opendaylight.vpnservice.interfacemgr.listeners.VlanMemberConfigListener; +import org.opendaylight.vpnservice.interfacemgr.statusanddiag.InterfaceStatusMonitor; import org.opendaylight.vpnservice.mdsalutil.ActionInfo; -import org.opendaylight.vpnservice.mdsalutil.MatchInfo; +import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.OpendaylightFlowTableStatisticsService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.servicebinding.rev151015.ServiceBindings; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.servicebinding.rev151015.service.bindings.ServicesInfo; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.servicebinding.rev151015.service.bindings.ServicesInfoKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.servicebinding.rev151015.service.bindings.services.info.BoundServices; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.servicebinding.rev151015.service.bindings.services.info.BoundServicesKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.OpendaylightPortStatisticsService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.AlivenessMonitorService; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.CreateIdPoolInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.CreateIdPoolInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.IdManagerService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfL2vlan; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfL2vlanBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.ParentRefs; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.ParentRefsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rpcs.rev151003.*; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigInteger; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; + public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable, IInterfaceManager { private static final Logger LOG = LoggerFactory.getLogger(InterfacemgrProvider.class); + private static final InterfaceStatusMonitor interfaceStatusMonitor = InterfaceStatusMonitor.getInstance(); private RpcProviderRegistry rpcProviderRegistry; - private IdManager idManager; - + private IdManagerService idManager; + private NotificationService notificationService; + private AlivenessMonitorService alivenessManager; + private IMdsalApiManager mdsalManager; private InterfaceConfigListener interfaceConfigListener; private InterfaceTopologyStateListener topologyStateListener; + private TerminationPointStateListener terminationPointStateListener; + private HwVTEPTunnelsStateListener hwVTEPTunnelsStateListener; private InterfaceInventoryStateListener interfaceInventoryStateListener; private FlowBasedServicesInterfaceStateListener flowBasedServicesInterfaceStateListener; private FlowBasedServicesConfigListener flowBasedServicesConfigListener; private VlanMemberConfigListener vlanMemberConfigListener; - + private HwVTEPConfigListener hwVTEPConfigListener; + private AlivenessMonitorListener alivenessMonitorListener; + private DataBroker dataBroker; private InterfaceManagerRpcService interfaceManagerRpcService; private BindingAwareBroker.RpcRegistration rpcRegistration; + private NodeConnectorStatsImpl nodeConnectorStatsManager; public void setRpcProviderRegistry(RpcProviderRegistry rpcProviderRegistry) { this.rpcProviderRegistry = rpcProviderRegistry; + interfaceStatusMonitor.registerMbean(); + } + + public void setMdsalManager(IMdsalApiManager mdsalManager) { + this.mdsalManager = mdsalManager; + } + + public void setNotificationService(NotificationService notificationService) { + this.notificationService = notificationService; } @Override public void onSessionInitiated(ProviderContext session) { LOG.info("InterfacemgrProvider Session Initiated"); + interfaceStatusMonitor.reportStatus("STARTING"); try { - final DataBroker dataBroker = session.getSALService(DataBroker.class); - idManager = new IdManager(dataBroker); + dataBroker = session.getSALService(DataBroker.class); + idManager = rpcProviderRegistry.getRpcService(IdManagerService.class); createIdPool(); - interfaceManagerRpcService = new InterfaceManagerRpcService(dataBroker); + alivenessManager = rpcProviderRegistry.getRpcService(AlivenessMonitorService.class); + interfaceManagerRpcService = new InterfaceManagerRpcService(dataBroker, mdsalManager); rpcRegistration = getRpcProviderRegistry().addRpcImplementation( OdlInterfaceRpcService.class, interfaceManagerRpcService); - interfaceConfigListener = new InterfaceConfigListener(dataBroker, idManager); + interfaceConfigListener = new InterfaceConfigListener(dataBroker, idManager,alivenessManager, mdsalManager); interfaceConfigListener.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); - interfaceInventoryStateListener = new InterfaceInventoryStateListener(dataBroker); + interfaceInventoryStateListener = new InterfaceInventoryStateListener(dataBroker, idManager, mdsalManager, alivenessManager); interfaceInventoryStateListener.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); topologyStateListener = new InterfaceTopologyStateListener(dataBroker); topologyStateListener.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); + hwVTEPTunnelsStateListener = new HwVTEPTunnelsStateListener(dataBroker); + hwVTEPTunnelsStateListener.registerListener(LogicalDatastoreType.OPERATIONAL,dataBroker); + + //terminationPointStateListener = new TerminationPointStateListener(dataBroker); + //terminationPointStateListener.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); + flowBasedServicesConfigListener = new FlowBasedServicesConfigListener(dataBroker); flowBasedServicesConfigListener.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); @@ -88,19 +149,33 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable flowBasedServicesInterfaceStateListener.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); vlanMemberConfigListener = - new VlanMemberConfigListener(dataBroker, idManager); + new VlanMemberConfigListener(dataBroker, idManager, alivenessManager,mdsalManager); vlanMemberConfigListener.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); + + hwVTEPConfigListener = new HwVTEPConfigListener(dataBroker); + hwVTEPConfigListener.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); + + alivenessMonitorListener = new org.opendaylight.vpnservice.interfacemgr.listeners.AlivenessMonitorListener(dataBroker); + notificationService.registerNotificationListener(alivenessMonitorListener); + + //Initialize nodeconnectorstatsimpl + nodeConnectorStatsManager = new NodeConnectorStatsImpl(dataBroker, notificationService, + session.getRpcService(OpendaylightPortStatisticsService.class), session.getRpcService(OpendaylightFlowTableStatisticsService.class)); + + + interfaceStatusMonitor.reportStatus("OPERATIONAL"); } catch (Exception e) { LOG.error("Error initializing services", e); + interfaceStatusMonitor.reportStatus("ERROR"); } } private void createIdPool() { CreateIdPoolInput createPool = new CreateIdPoolInputBuilder() - .setPoolName(IfmConstants.IFM_IDPOOL_NAME) + .setPoolName(IfmConstants.IFM_IDPOOL_NAME) .setLow(IfmConstants.IFM_ID_POOL_START) .setHigh(IfmConstants.IFM_ID_POOL_END) - .build(); + .build(); //TODO: Error handling Future> result = idManager.createIdPool(createPool); try { @@ -153,6 +228,151 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable return null; } + @Override + public InterfaceInfo getInterfaceInfo(String interfaceName) { + //FIXME [ELANBE] This is not working yet, fix this + + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface + ifState = InterfaceManagerCommonUtils.getInterfaceStateFromOperDS(interfaceName,dataBroker); + + if(ifState == null) { + LOG.error("Interface {} is not present", interfaceName); + return null; + } + + Integer lportTag = ifState.getIfIndex(); + Interface intf = InterfaceManagerCommonUtils.getInterfaceFromConfigDS(new InterfaceKey(interfaceName), dataBroker); + if (intf == null) { + LOG.error("Interface {} doesn't exist in config datastore", interfaceName); + return null; + } + + NodeConnectorId ncId = IfmUtil.getNodeConnectorIdFromInterface(intf, dataBroker); + InterfaceInfo.InterfaceType interfaceType = IfmUtil.getInterfaceType(intf); + InterfaceInfo interfaceInfo = null; + BigInteger dpId = org.opendaylight.vpnservice.interfacemgr.globals.IfmConstants.INVALID_DPID; + Integer portNo = org.opendaylight.vpnservice.interfacemgr.globals.IfmConstants.INVALID_PORT_NO; + if (ncId !=null ) { + dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId)); + portNo = Integer.parseInt(IfmUtil.getPortNoFromNodeConnectorId(ncId)); + } + + if(interfaceType == InterfaceInfo.InterfaceType.VLAN_INTERFACE){ + interfaceInfo = IfmUtil.getVlanInterfaceInfo(interfaceName, intf, dpId); + } else if (interfaceType == InterfaceInfo.InterfaceType.VXLAN_TRUNK_INTERFACE || interfaceType == InterfaceInfo.InterfaceType.GRE_TRUNK_INTERFACE) {/* + trunkInterfaceInfo trunkInterfaceInfo = (TrunkInterfaceInfo) ConfigIfmUtil.getTrunkInterfaceInfo(ifName, ConfigIfmUtil.getInterfaceByIfName(dataBroker, ifName)); + String higherLayerIf = inf.getHigherLayerIf().get(0); + Interface vlanInterface = ConfigIfmUtil.getInterfaceByIfName(dataBroker, higherLayerIf); + trunkInterfaceInfo.setPortName(vlanInterface.getAugmentation(BaseConfig.class).getParentInterface()); + trunkInterfaceManager.updateTargetMacAddressInInterfaceInfo(trunkInterfaceInfo, trunkInterface); + if (trunkInterface.getPhysAddress() != null) { + trunkInterfaceInfo.setLocalMacAddress(trunkInterface.getPhysAddress().getValue()); + } + interfaceInfo = trunkInterfaceInfo; + interfaceInfo.setL2domainGroupId(IfmUtil.getGroupId(OperationalIfmUtil.getInterfaceStateByIfName(dataBroker, higherLayerIf).getIfIndex(), InterfaceType.VLAN_INTERFACE)); + */} else { + LOG.error("Type of Interface {} is unknown", interfaceName); + return null; + } + interfaceInfo.setDpId(dpId); + interfaceInfo.setPortNo(portNo); + interfaceInfo.setAdminState((intf.isEnabled() == true) ? InterfaceAdminState.ENABLED : InterfaceAdminState.DISABLED); + interfaceInfo.setInterfaceName(interfaceName); + interfaceInfo.setInterfaceTag(lportTag); + interfaceInfo.setInterfaceType(interfaceType); + interfaceInfo.setGroupId(IfmUtil.getGroupId(lportTag, interfaceType)); + interfaceInfo.setOpState((ifState.getOperStatus() == OperStatus.Up) ? InterfaceInfo.InterfaceOpState.UP : InterfaceInfo.InterfaceOpState.DOWN); + + + return interfaceInfo; + + } + + @Override + public InterfaceInfo getInterfaceInfoFromOperationalDataStore(String interfaceName, InterfaceInfo.InterfaceType interfaceType) { + InterfaceInfo interfaceInfo = new InterfaceInfo(interfaceName); + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState = InterfaceManagerCommonUtils + .getInterfaceStateFromOperDS(interfaceName, dataBroker); + if (ifState == null) { + LOG.error("Interface {} is not present", interfaceName); + return null; + } + Integer lportTag = ifState.getIfIndex(); + NodeConnectorId ncId = IfmUtil.getNodeConnectorIdFromInterface(ifState); + if (ncId != null) { + interfaceInfo.setDpId(new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId))); + interfaceInfo.setPortNo(Integer.parseInt(IfmUtil.getPortNoFromNodeConnectorId(ncId))); + } + interfaceInfo.setAdminState((ifState.getAdminStatus() == AdminStatus.Up) ? InterfaceAdminState.ENABLED : InterfaceAdminState.DISABLED); + interfaceInfo.setInterfaceName(interfaceName); + interfaceInfo.setInterfaceTag(lportTag); + interfaceInfo.setInterfaceType(interfaceType); + interfaceInfo.setGroupId(IfmUtil.getGroupId(lportTag, interfaceType)); + interfaceInfo.setOpState((ifState.getOperStatus() == OperStatus.Up) ? InterfaceInfo.InterfaceOpState.UP : InterfaceInfo.InterfaceOpState.DOWN); + + + return interfaceInfo; + } + + @Override + public InterfaceInfo getInterfaceInfoFromOperationalDataStore(String interfaceName) { + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState = InterfaceManagerCommonUtils + .getInterfaceStateFromOperDS(interfaceName, dataBroker); + if (ifState == null) { + LOG.error("Interface {} is not present", interfaceName); + return null; + } + Integer lportTag = ifState.getIfIndex(); + InterfaceInfo interfaceInfo = new InterfaceInfo(interfaceName); + NodeConnectorId ncId = IfmUtil.getNodeConnectorIdFromInterface(ifState); + if (ncId != null) { + interfaceInfo.setPortName(IfmUtil.getPortName(dataBroker, ncId)); + interfaceInfo.setDpId(new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId))); + interfaceInfo.setPortNo(Integer.parseInt(IfmUtil.getPortNoFromNodeConnectorId(ncId))); + } + interfaceInfo.setAdminState((ifState.getAdminStatus() == AdminStatus.Up) ? InterfaceAdminState.ENABLED : InterfaceAdminState.DISABLED); + interfaceInfo.setInterfaceName(interfaceName); + interfaceInfo.setInterfaceTag(lportTag); + interfaceInfo.setOpState((ifState.getOperStatus() == OperStatus.Up) ? InterfaceInfo.InterfaceOpState.UP : InterfaceInfo.InterfaceOpState.DOWN); + return interfaceInfo; + } + + public void createVLANInterface(String interfaceName, String portName, BigInteger dpId, Integer vlanId, + String description, IfL2vlan.L2vlanMode l2vlanMode) { + LOG.info("Create VLAN interface : {}",interfaceName); + InstanceIdentifier interfaceInstanceIdentifier = InterfaceManagerCommonUtils. + getInterfaceIdentifier(new InterfaceKey(interfaceName)); + IfL2vlanBuilder l2vlanBuilder = new IfL2vlanBuilder().setL2vlanMode(l2vlanMode); + if(vlanId > 0){ + l2vlanBuilder.setVlanId(new VlanId(vlanId)); + } + ParentRefs parentRefs = new ParentRefsBuilder().setParentInterface(portName).build(); + Interface inf = new InterfaceBuilder().setEnabled(true).setName(interfaceName).setType(L2vlan.class). + addAugmentation(IfL2vlan.class, l2vlanBuilder.build()).addAugmentation(ParentRefs.class, parentRefs). + setDescription(description).build(); + WriteTransaction t = dataBroker.newWriteOnlyTransaction(); + t.put(LogicalDatastoreType.CONFIGURATION, interfaceInstanceIdentifier, inf, true); + } + + public void bindService(String interfaceName, BoundServices serviceInfo){ + LOG.info("Binding Service : {}",interfaceName); + WriteTransaction t = dataBroker.newWriteOnlyTransaction(); + InstanceIdentifier boundServicesInstanceIdentifier = InstanceIdentifier.builder(ServiceBindings.class).child(ServicesInfo.class, new ServicesInfoKey(interfaceName)) + .child(BoundServices.class, new BoundServicesKey(serviceInfo.getServicePriority())).build(); + // List services = (List)serviceInfo.getBoundServices(); + t.put(LogicalDatastoreType.CONFIGURATION, boundServicesInstanceIdentifier, serviceInfo, true); + t.submit(); + } + + public void unbindService(String interfaceName, BoundServices serviceInfo){ + LOG.info("Unbinding Service : {}",interfaceName); + WriteTransaction t = dataBroker.newWriteOnlyTransaction(); + InstanceIdentifier boundServicesInstanceIdentifier = InstanceIdentifier.builder(ServiceBindings.class).child(ServicesInfo.class, new ServicesInfoKey(interfaceName)) + .child(BoundServices.class, new BoundServicesKey(serviceInfo.getServicePriority())).build(); + t.delete(LogicalDatastoreType.CONFIGURATION, boundServicesInstanceIdentifier); + t.submit(); + } + @Override public BigInteger getDpnForInterface(String ifName) { GetDpidFromInterfaceInput input = new GetDpidFromInterfaceInputBuilder().setIntfName(ifName).build(); @@ -188,11 +408,35 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable @Override public List getInterfaceEgressActions(String ifName) { - return interfaceManagerRpcService.getEgressActionInfosForInterface(ifName); + return IfmUtil.getEgressActionInfosForInterface(ifName, 0, dataBroker); } @Override public BigInteger getDpnForInterface(Interface intrf) { return getDpnForInterface(intrf.getName()); } + + @Override + public List getVlanInterfaces() { + List vlanList = new ArrayList(); + InstanceIdentifier interfacesInstanceIdentifier = InstanceIdentifier.builder(Interfaces.class).build(); + Optional interfacesOptional = IfmUtil.read(LogicalDatastoreType.CONFIGURATION, interfacesInstanceIdentifier, dataBroker); + if (!interfacesOptional.isPresent()) { + return vlanList; + } + Interfaces interfaces = interfacesOptional.get(); + List interfacesList = interfaces.getInterface(); + for (Interface iface : interfacesList) { + if (IfmUtil.getInterfaceType(iface) == InterfaceInfo.InterfaceType.VLAN_INTERFACE) { + vlanList.add(iface); + } + } + return vlanList; + } + + @Override + public List getVxlanInterfaces() { + return InterfaceManagerCommonUtils.getAllTunnelInterfaces(dataBroker, + InterfaceInfo.InterfaceType.VXLAN_TRUNK_INTERFACE); + } } \ No newline at end of file