From d26e06727c41e67d92789a24ca246894c63c006d Mon Sep 17 00:00:00 2001 From: Yakir Dorani Date: Mon, 14 Nov 2016 17:27:48 +0200 Subject: [PATCH] Remove ElanListener and ElanInterfaceListener Change-Id: Ibf39dbbfb6e15ca8e4a97020d8c750b1021d6319 Signed-off-by: Yakir Dorani --- .../mef/netvirt/ElanInterfaceListener.java | 171 ------------------ .../unimgr/mef/netvirt/ElanListener.java | 78 -------- .../unimgr/mef/netvirt/NetvirtUtils.java | 2 +- .../opendaylight/blueprint/netvirt-driver.xml | 6 - 4 files changed, 1 insertion(+), 256 deletions(-) delete mode 100644 netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/ElanInterfaceListener.java delete mode 100644 netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/ElanListener.java diff --git a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/ElanInterfaceListener.java b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/ElanInterfaceListener.java deleted file mode 100644 index 72e42a3f..00000000 --- a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/ElanInterfaceListener.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2016 Hewlett Packard Enterprise, Co. 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.unimgr.mef.netvirt; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.apache.commons.lang3.StringUtils; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.unimgr.api.UnimgrDataTreeChangeListener; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.Evc; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.Unis; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.UnisBuilder; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.Uni; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.UniBuilder; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.UniKey; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.EvcUniCeVlansBuilder; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlanBuilder; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.services.rev150526.mef.services.mef.service.mef.service.choice.evc.choice.evc.unis.uni.evc.uni.ce.vlans.EvcUniCeVlanKey; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.EvcUniRoleType; -import org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.types.rev150526.Identifier45; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; -import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan; -import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan.L2vlanMode; -import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.ElanInterfaces; -import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ElanInterfaceListener extends UnimgrDataTreeChangeListener { - - private static final Logger log = LoggerFactory.getLogger(ElanInterfaceListener.class); - private ListenerRegistration elanListenerRegistration; - - public ElanInterfaceListener(final DataBroker dataBroker) { - super(dataBroker); - - registerListener(); - } - - public void registerListener() { - try { - final DataTreeIdentifier dataTreeIid = new DataTreeIdentifier<>( - LogicalDatastoreType.CONFIGURATION, NetvirtUtils.getElanInterfacesInstanceIdentifier()); - elanListenerRegistration = dataBroker.registerDataTreeChangeListener(dataTreeIid, this); - log.info("ElanInterfaceDataTreeChangeListener created and registered"); - } catch (final Exception e) { - log.error("ElanInterface DataChange listener registration failed !", e); - throw new IllegalStateException("ElanInterface registration Listener failed.", e); - } - } - - @Override - public void close() throws Exception { - elanListenerRegistration.close(); - } - - @Override - public void add(DataTreeModification newDataObject) { - log.info("org.opendaylight.unimgr.mef.netvirt.ElanInterfaceListener in add"); - - handleUpdatedInterfaces(newDataObject); - - } - - private void handleUpdatedInterfaces(DataTreeModification newDataObject) { - ElanInterfaces instance = newDataObject.getRootNode().getDataAfter(); - Optional findFirst = instance.getElanInterface().stream().map(x -> x.getElanInstanceName()).findFirst(); - if (!findFirst.isPresent()) { - log.info("empty - exiting"); - return; - } - String elanInstanceName = findFirst.get(); - if (!StringUtils.isNumericSpace(elanInstanceName)) { - elanInstanceName = String.valueOf(elanInstanceName.hashCode()); - } - - com.google.common.base.Optional evc = MefUtils.getEvc(dataBroker, elanInstanceName); - - if (MefUtils.isEvcAdminStateEnabled(dataBroker, elanInstanceName)) { - log.info("The EVC {} is admin state enabled, ignoring"); - return; - } - - final String instanceName = elanInstanceName; - List ifaces = instance.getElanInterface().stream() - .map(x -> NetvirtUtils.getIetfInterface(dataBroker, x.getName()))// - .filter(x -> x.isPresent())// - .map(x -> x.get())// - .collect(Collectors.toList()); - - if (log.isInfoEnabled()) { - log.info("adding unis from interfaces [{}] are not null from [{}] interfaces are: [{}]", ifaces.size(), - instance.getElanInterface().size(), - StringUtils.join( - instance.getElanInterface().stream().map(x -> x.getName()).collect(Collectors.toList()), - ", ")); - - } - List trunks = ifaces.stream().filter(x -> x.getAugmentation(IfL2vlan.class) != null)// - .filter(x -> x.getAugmentation(IfL2vlan.class).getL2vlanMode() == L2vlanMode.Trunk)// - .map(x -> x.getName()).collect(Collectors.toList()); - - Map> vlans = ifaces.stream()// - .filter(x -> x.getAugmentation(IfL2vlan.class) != null)// - .filter(x -> x.getAugmentation(IfL2vlan.class)// - .getL2vlanMode() == L2vlanMode.TrunkMember)// - .collect(// - Collectors.groupingBy(// - x -> x.getAugmentation(ParentRefs.class).getParentInterface(), // - Collectors.mapping(// - x -> x.getAugmentation(IfL2vlan.class).getVlanId().getValue(), // - Collectors.toList()))); - - Unis unisObj = new UnisBuilder() - .setUni(Stream.concat(trunks.stream(), vlans.keySet().stream()) - .filter(x -> !MefUtils.EvcUniExists(dataBroker, instanceName, x)) - .map(x -> createElanInterfaceToUni(dataBroker, x, vlans.get(x))).collect(Collectors.toList())) - .build(); - MdsalUtils.syncUpdate(dataBroker, LogicalDatastoreType.CONFIGURATION, - MefUtils.getUnisInstanceIdentifier(elanInstanceName), unisObj); - } - - private static Uni createElanInterfaceToUni(DataBroker dataBroker, String name, List vlans) { - if (log.isInfoEnabled()) { - String vlansstr = "null"; - if (vlans != null) { - vlansstr = StringUtils.join(vlans, ","); - } - log.info("create uni: {} setAdminStateEnabled false vlans: {}", name, vlansstr); - } - UniBuilder b = new UniBuilder(); - b.setAdminStateEnabled(false); - Identifier45 _uniId = new Identifier45(name); - b.setKey(new UniKey(_uniId)); - b.setUniId(_uniId); - b.setRole(EvcUniRoleType.Root); - if (vlans != null) { - b.setEvcUniCeVlans(new EvcUniCeVlansBuilder().setEvcUniCeVlan( - vlans.stream().map(x -> new EvcUniCeVlanBuilder().setKey(new EvcUniCeVlanKey(x)).build()) - .collect(Collectors.toList())) - .build()); - } - return b.build(); - } - - @Override - public void remove(DataTreeModification removedDataObject) { - log.info("org.opendaylight.unimgr.mef.netvirt.ElanInterfaceListener in remove"); - } - - @Override - public void update(DataTreeModification modifiedDataObject) { - log.info("org.opendaylight.unimgr.mef.netvirt.ElanInterfaceListener in update"); - handleUpdatedInterfaces(modifiedDataObject); - } - -} \ No newline at end of file diff --git a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/ElanListener.java b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/ElanListener.java deleted file mode 100644 index db12c697..00000000 --- a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/ElanListener.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2016 Hewlett Packard Enterprise, Co. 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.unimgr.mef.netvirt; - -import org.apache.commons.lang3.StringUtils; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.unimgr.api.UnimgrDataTreeChangeListener; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance; -import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ElanListener extends UnimgrDataTreeChangeListener { - - private static final Logger log = LoggerFactory.getLogger(ElanListener.class); - private ListenerRegistration elanListenerRegistration; - - public ElanListener(final DataBroker dataBroker) { - super(dataBroker); - - registerListener(); - } - - public void registerListener() { - try { - final DataTreeIdentifier dataTreeIid = new DataTreeIdentifier<>( - LogicalDatastoreType.CONFIGURATION, NetvirtUtils.getElanInstanceInstanceIdentifier()); - elanListenerRegistration = dataBroker.registerDataTreeChangeListener(dataTreeIid, this); - log.info("ElanDataTreeChangeListener created and registered"); - } catch (final Exception e) { - log.error("Elan DataChange listener registration failed !", e); - throw new IllegalStateException("Elan registration Listener failed.", e); - } - } - - @Override - public void close() throws Exception { - elanListenerRegistration.close(); - } - - @Override - public void add(DataTreeModification newDataObject) { - log.info("org.opendaylight.unimgr.mef.netvirt.ElanListener in add"); - ElanInstance instance = newDataObject.getRootNode().getDataAfter(); - - String instanceName = instance.getElanInstanceName(); - if (!StringUtils.isNumericSpace(instanceName)) { - instanceName = String.valueOf(instanceName.hashCode()); - } - if (!MefUtils.EvcExists(dataBroker, instanceName)) { - log.info("creating evc {}", instance); - MefUtils.createEvcInstance(dataBroker, instanceName); - } else { - log.info("evc {} exists, skipping", instance); - } - - } - - @Override - public void remove(DataTreeModification removedDataObject) { - log.info("org.opendaylight.unimgr.mef.netvirt.ElanListener in remove"); - } - - @Override - public void update(DataTreeModification modifiedDataObject) { - log.info("org.opendaylight.unimgr.mef.netvirt.ElanListener in update"); - } - -} \ No newline at end of file diff --git a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtUtils.java b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtUtils.java index 6d1a9d9f..17af1e72 100644 --- a/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtUtils.java +++ b/netvirt/src/main/java/org/opendaylight/unimgr/mef/netvirt/NetvirtUtils.java @@ -53,7 +53,7 @@ import org.slf4j.LoggerFactory; import com.google.common.base.Optional; public class NetvirtUtils { - private static final Logger logger = LoggerFactory.getLogger(MdsalUtils.class); + private static final Logger logger = LoggerFactory.getLogger(NetvirtUtils.class); public final static String VLAN_SEPARATOR = "."; diff --git a/netvirt/src/main/resources/org/opendaylight/blueprint/netvirt-driver.xml b/netvirt/src/main/resources/org/opendaylight/blueprint/netvirt-driver.xml index 7ce0b343..f012dd87 100644 --- a/netvirt/src/main/resources/org/opendaylight/blueprint/netvirt-driver.xml +++ b/netvirt/src/main/resources/org/opendaylight/blueprint/netvirt-driver.xml @@ -21,12 +21,6 @@ - - - - - - -- 2.36.6