X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=vpnservice.git;a=blobdiff_plain;f=interfacemgr%2Finterfacemgr-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Finterfacemgr%2Flisteners%2FHwVTEPConfigListener.java;fp=interfacemgr%2Finterfacemgr-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Finterfacemgr%2Flisteners%2FHwVTEPConfigListener.java;h=3109e1994c1168c78beaff7140dda1c6152b4cca;hp=4cb1e224c267b15977db051bf46dbbf0a4fcdb6a;hb=8025297a9d760ee5add270ad673d4adc5b41d79f;hpb=769edd5c7e8cfa0a13a2f8e442270978f649b83f diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/HwVTEPConfigListener.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/HwVTEPConfigListener.java index 4cb1e224..3109e199 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/HwVTEPConfigListener.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/HwVTEPConfigListener.java @@ -13,13 +13,17 @@ import org.opendaylight.vpnservice.datastoreutils.AsyncDataTreeChangeListenerBas import org.opendaylight.vpnservice.datastoreutils.DataStoreJobCoordinator; import org.opendaylight.vpnservice.interfacemgr.renderer.hwvtep.confighelpers.HwVTEPConfigRemoveHelper; import org.opendaylight.vpnservice.interfacemgr.renderer.hwvtep.confighelpers.HwVTEPInterfaceConfigAddHelper; +import org.opendaylight.vpnservice.interfacemgr.renderer.hwvtep.confighelpers.HwVTEPInterfaceConfigUpdateHelper; +import org.opendaylight.vpnservice.interfacemgr.renderer.hwvtep.utilities.SouthboundUtils; 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.opendaylight.vpnservice.interfacemgr.rev150331.IfL2vlan; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.AlivenessMonitorService; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfTunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.ParentRefs; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.TunnelTypeVxlan; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.interfaces._interface.NodeIdentifier; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,11 +51,13 @@ public class HwVTEPConfigListener extends AsyncDataTreeChangeListenerBase key, Interface interfaceOld, Interface interfaceNew) { - // TODO + // HwVTEPs support only vxlan + IfTunnel ifTunnel = interfaceNew.getAugmentation(IfTunnel.class); + if (ifTunnel != null && ifTunnel.getTunnelInterfaceType().isAssignableFrom(TunnelTypeVxlan.class)) { + ParentRefs parentRefs = interfaceNew.getAugmentation(ParentRefs.class); + if (parentRefs != null && parentRefs.getNodeIdentifier() != null) { + for(NodeIdentifier nodeIdentifier : parentRefs.getNodeIdentifier()) { + if(SouthboundUtils.HWVTEP_TOPOLOGY.equals(nodeIdentifier.getTopologyId())) { + DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance(); + RendererConfigUpdateWorker configWorker = new RendererConfigUpdateWorker(key, interfaceNew, + SouthboundUtils.createPhysicalSwitchInstanceIdentifier(nodeIdentifier.getNodeId()), + SouthboundUtils.createGlobalNodeInstanceIdentifier(dataBroker, nodeIdentifier.getNodeId()), ifTunnel); + coordinator.enqueueJob(interfaceNew.getName(), configWorker, 3); + } + } + } + } } @Override @@ -70,12 +91,14 @@ public class HwVTEPConfigListener extends AsyncDataTreeChangeListenerBase>> { InstanceIdentifier key; Interface interfaceNew; - IfL2vlan ifL2vlan; - ParentRefs parentRefs; + InstanceIdentifier physicalSwitchNodeId; + InstanceIdentifier globalNodeId; + IfTunnel ifTunnel; public RendererConfigAddWorker(InstanceIdentifier key, Interface interfaceNew, - ParentRefs parentRefs) { + InstanceIdentifier physicalSwitchNodeId, InstanceIdentifier globalNodeId, IfTunnel ifTunnel) { + this.key = key; + this.interfaceNew = interfaceNew; + this.physicalSwitchNodeId = physicalSwitchNodeId; + this.globalNodeId = globalNodeId; + this.ifTunnel = ifTunnel; + } + + @Override + public List> call() throws Exception { + return HwVTEPInterfaceConfigAddHelper.addConfiguration(dataBroker, + physicalSwitchNodeId, globalNodeId, interfaceNew, ifTunnel); + } + } + + private class RendererConfigUpdateWorker implements Callable>> { + InstanceIdentifier key; + Interface interfaceNew; + InstanceIdentifier globalNodeId; + InstanceIdentifier physicalSwitchNodeId; + IfTunnel ifTunnel; + + public RendererConfigUpdateWorker(InstanceIdentifier key, Interface interfaceNew, + InstanceIdentifier physicalSwitchNodeId, InstanceIdentifier globalNodeId, IfTunnel ifTunnel) { this.key = key; this.interfaceNew = interfaceNew; - this.ifL2vlan = ifL2vlan; - this.parentRefs = parentRefs; + this.physicalSwitchNodeId = physicalSwitchNodeId; + this.ifTunnel = ifTunnel; + this.globalNodeId = globalNodeId; } @Override public List> call() throws Exception { - return HwVTEPInterfaceConfigAddHelper.addConfiguration(dataBroker, parentRefs, interfaceNew); + return HwVTEPInterfaceConfigUpdateHelper.updateConfiguration(dataBroker, + physicalSwitchNodeId, globalNodeId, interfaceNew, ifTunnel); } } private class RendererConfigRemoveWorker implements Callable>> { InstanceIdentifier key; Interface interfaceOld; - ParentRefs parentRefs; + InstanceIdentifier physicalSwitchNodeId; + InstanceIdentifier globalNodeId; public RendererConfigRemoveWorker(InstanceIdentifier key, Interface interfaceOld, - ParentRefs parentRefs) { + InstanceIdentifier physicalSwitchNodeId, InstanceIdentifier globalNodeId) { this.key = key; this.interfaceOld = interfaceOld; - this.parentRefs = parentRefs; + this.physicalSwitchNodeId = physicalSwitchNodeId; + this.globalNodeId = globalNodeId; } @Override public List> call() throws Exception { - return HwVTEPConfigRemoveHelper.removeConfiguration(dataBroker, interfaceOld, parentRefs); + return HwVTEPConfigRemoveHelper.removeConfiguration(dataBroker, + interfaceOld, globalNodeId, physicalSwitchNodeId); } } } \ No newline at end of file