private static final Logger log = LoggerFactory.getLogger(EvcListener.class);
private ListenerRegistration<EvcListener> evcListenerRegistration;
private final IUniPortManager uniPortManager;
+ private final UniQosManager uniQosManager;
- public EvcListener(final DataBroker dataBroker, final UniPortManager uniPortManager) {
+ public EvcListener(final DataBroker dataBroker, final UniPortManager uniPortManager,
+ final UniQosManager uniQosManager) {
super(dataBroker);
this.uniPortManager = uniPortManager;
+ this.uniQosManager = uniQosManager;
registerListener();
}
for (Uni uni : data.getUnis().getUni()) {
createUniElanInterfaces(evcId, instanceName, uni, isEtree);
}
+ updateQos(data.getUnis().getUni());
}
} catch (final Exception e) {
log.error("Add evc failed !", e);
try {
Evc data = removedDataObject.getRootNode().getDataBefore();
InstanceIdentifier<Evc> evcId = removedDataObject.getRootPath().getRootIdentifier();
- List<Uni> uniToRemove = data.getUnis() != null && data.getUnis().getUni() != null
- ? data.getUnis().getUni() : Collections.emptyList();
-
+ List<Uni> uniToRemove = data.getUnis() != null && data.getUnis().getUni() != null ? data.getUnis().getUni()
+ : Collections.emptyList();
synchronized (data.getEvcId().getValue().intern()) {
EvcElan evcElan = getOperEvcElan(evcId);
for (Uni uni : uniToRemove) {
removeUniElanInterfaces(evcId, instanceName, uni);
}
+ updateQos(uniToRemove);
log.info("Removing elan instance: " + instanceName);
NetvirtUtils.deleteElanInstance(dataBroker, instanceName);
for (Uni uni : uniToRemove) {
removeUniElanInterfaces(evcId, instanceName, uni);
}
+ updateQos(uniToRemove);
List<Uni> uniToCreate = new ArrayList<>(updateUni);
uniToCreate.removeAll(originalUni);
for (Uni uni : uniToCreate) {
createUniElanInterfaces(evcId, instanceName, uni, isEtree);
}
+ updateQos(uniToCreate);
}
} catch (final Exception e) {
log.error("Update evc failed !", e);
log.info("Creting elan interface for elan {} vlan {} interface {}", instanceName, 0, interfaceName);
NetvirtUtils.createElanInterface(dataBroker, instanceName, interfaceName, roleToInterfaceType(role),
isEtree);
+ uniQosManager.mapUniPortBandwidthLimits(uni.getUniId().getValue(), interfaceName,
+ uni.getIngressBwProfile());
setOperEvcElanPort(evcId, instanceName, interfaceName);
} else {
for (EvcUniCeVlan ceVlan : evcUniCeVlan) {
log.info("Creting elan interface for elan {} vlan {} interface {}", instanceName, 0, interfaceName);
NetvirtUtils.createElanInterface(dataBroker, instanceName, interfaceName, roleToInterfaceType(role),
isEtree);
+ uniQosManager.mapUniPortBandwidthLimits(uni.getUniId().getValue(), interfaceName,
+ uni.getIngressBwProfile());
setOperEvcElanPort(evcId, instanceName, interfaceName);
}
}
interfaceName);
return;
}
- removeElanInterface(evcId, interfaceName);
+ removeElanInterface(evcId, uni.getUniId().getValue(), interfaceName);
} else {
for (EvcUniCeVlan ceVlan : evcUniCeVlan) {
Long vlan = safeCastVlan(ceVlan.getVid());
vlan, interfaceName);
return;
}
- removeElanInterface(evcId, interfaceName);
+ removeElanInterface(evcId, uni.getUniId().getValue(), interfaceName);
}
}
}
- private void removeElanInterface(InstanceIdentifier<Evc> identifier, String interfaceName) {
+ private void removeElanInterface(InstanceIdentifier<Evc> identifier, String uniId, String interfaceName) {
log.info("Removing elan interface: " + interfaceName);
+ uniQosManager.unMapUniPortBandwidthLimits(uniId, interfaceName);
NetvirtUtils.deleteElanInterface(dataBroker, interfaceName);
EvcElan evcElan = getOperEvcElan(identifier);
if (evcElan == null) {
log.error("Removing non-operational Elan interface {}", interfaceName);
}
+
deleteOperEvcElanPort(identifier, interfaceName);
}
InstanceIdentifier<EvcElan> path = identifier.augmentation(EvcElan.class);
EvcElan evcElan = getOperEvcElan(identifier);
EvcElanBuilder evcElanBuilder = evcElan != null ? new EvcElanBuilder(evcElan) : new EvcElanBuilder();
- List<ElanPorts> exPorts = evcElan != null && evcElan.getElanPorts() != null ? evcElan.getElanPorts() : new ArrayList<>();
+ List<ElanPorts> exPorts = evcElan != null && evcElan.getElanPorts() != null ? evcElan.getElanPorts()
+ : new ArrayList<>();
ElanPortsBuilder portB = new ElanPortsBuilder();
portB.setPortId(elanPort);
MdsalUtils.write(dataBroker, LogicalDatastoreType.OPERATIONAL, path, evcElanBuilder.build());
}
+ private void updateQos(List<Uni> uniToUpdate) {
+ uniToUpdate.forEach(u -> uniQosManager.setUniBandwidthLimits(u.getUniId()));
+ }
+
}