/*
- * 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,
import org.opendaylight.vpnservice.interfacemgr.renderer.ovs.confighelpers.OvsInterfaceConfigAddHelper;
import org.opendaylight.vpnservice.interfacemgr.renderer.ovs.confighelpers.OvsInterfaceConfigRemoveHelper;
import org.opendaylight.vpnservice.interfacemgr.renderer.ovs.confighelpers.OvsInterfaceConfigUpdateHelper;
+import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager;
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.alivenessmonitor.rev150629.AlivenessMonitorService;
private DataBroker dataBroker;
private IdManagerService idManager;
private AlivenessMonitorService alivenessMonitorService;
+ private IMdsalApiManager mdsalApiManager;
+ private static final int MAX_RETRIES = 3;
- public InterfaceConfigListener(final DataBroker dataBroker, final IdManagerService idManager, final AlivenessMonitorService alivenessMonitorService) {
+ public InterfaceConfigListener(final DataBroker dataBroker, final IdManagerService idManager,
+ final AlivenessMonitorService alivenessMonitorService,
+ final IMdsalApiManager mdsalApiManager) {
super(Interface.class, InterfaceConfigListener.class);
this.dataBroker = dataBroker;
this.idManager = idManager;
this.alivenessMonitorService = alivenessMonitorService;
+ this.mdsalApiManager = mdsalApiManager;
}
@Override
protected void remove(InstanceIdentifier<Interface> key, Interface interfaceOld) {
LOG.debug("Received Interface Remove Event: {}, {}", key, interfaceOld);
String ifName = interfaceOld.getName();
- String parentInterface = null;
-
ParentRefs parentRefs = interfaceOld.getAugmentation(ParentRefs.class);
- if (parentRefs != null) {
- parentInterface = parentRefs.getParentInterface();
- if (parentInterface != null && !parentInterface.equals(ifName)) {
- return;
- }
- if (parentRefs.getDatapathNodeIdentifier() == null) {
- return;
- }
- }
-
DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
RendererConfigRemoveWorker configWorker = new RendererConfigRemoveWorker(key, interfaceOld, ifName, parentRefs);
- coordinator.enqueueJob(ifName, configWorker);
+ coordinator.enqueueJob(ifName, configWorker, MAX_RETRIES);
}
@Override
protected void update(InstanceIdentifier<Interface> key, Interface interfaceOld, Interface interfaceNew) {
LOG.debug("Received Interface Update Event: {}, {}, {}", key, interfaceOld, interfaceNew);
String ifNameNew = interfaceNew.getName();
- String parentInterface = null;
-
ParentRefs parentRefs = interfaceNew.getAugmentation(ParentRefs.class);
- if (parentRefs != null) {
- parentInterface = parentRefs.getParentInterface();
- }
-
- if (parentInterface != null && !parentInterface.equals(ifNameNew)) {
+ if (parentRefs == null || parentRefs.getDatapathNodeIdentifier() == null && parentRefs.getParentInterface() == null) {
+ LOG.error("parent refs not specified for {}",interfaceNew.getName());
return;
}
-
DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
RendererConfigUpdateWorker worker = new RendererConfigUpdateWorker(key, interfaceOld, interfaceNew, ifNameNew);
- coordinator.enqueueJob(ifNameNew, worker);
+ coordinator.enqueueJob(ifNameNew, worker, MAX_RETRIES);
}
@Override
protected void add(InstanceIdentifier<Interface> key, Interface interfaceNew) {
LOG.debug("Received Interface Add Event: {}, {}", key, interfaceNew);
String ifName = interfaceNew.getName();
- String parentInterface = null;
-
ParentRefs parentRefs = interfaceNew.getAugmentation(ParentRefs.class);
- if (parentRefs != null) {
- parentInterface = parentRefs.getParentInterface();
- }
-
- if (parentInterface != null && !parentInterface.equals(ifName)) {
+ if (parentRefs == null || parentRefs.getDatapathNodeIdentifier() == null && parentRefs.getParentInterface() == null) {
+ LOG.error("parent refs not specified for {}",interfaceNew.getName());
return;
}
-
DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
RendererConfigAddWorker configWorker = new RendererConfigAddWorker(key, interfaceNew, parentRefs, ifName);
- coordinator.enqueueJob(ifName, configWorker);
+ coordinator.enqueueJob(ifName, configWorker, MAX_RETRIES);
}
private class RendererConfigAddWorker implements Callable<List<ListenableFuture<Void>>> {
// If another renderer(for eg : CSS) needs to be supported, check can be performed here
// to call the respective helpers.
return OvsInterfaceConfigAddHelper.addConfiguration(dataBroker, parentRefs, interfaceNew,
- idManager);
+ idManager, alivenessMonitorService, mdsalApiManager);
}
@Override
// If another renderer(for eg : CSS) needs to be supported, check can be performed here
// to call the respective helpers.
return OvsInterfaceConfigUpdateHelper.updateConfiguration(dataBroker, alivenessMonitorService, idManager,
- interfaceNew, interfaceOld);
+ mdsalApiManager, interfaceNew, interfaceOld);
}
@Override
// If another renderer(for eg : CSS) needs to be supported, check can be performed here
// to call the respective helpers.
return OvsInterfaceConfigRemoveHelper.removeConfiguration(dataBroker, alivenessMonitorService,
- interfaceOld, idManager, parentRefs);
+ interfaceOld, idManager, mdsalApiManager, parentRefs);
}
@Override