if(!(ifTunnel.getTunnelInterfaceType().isAssignableFrom(TunnelTypeVxlan.class)&& ifTunnel.isInternal())){
return;
}
+ LOG.debug("stop LLDP monitoring for {}", trunkInterface.getName());
List<Long> monitorIds = getMonitorIdForInterface(dataBroker, trunkInterface.getName());
if (monitorIds == null) {
LOG.error("Monitor Id doesn't exist for Interface {}", trunkInterface);
}
}
- private static org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.endpoint.endpoint.type.Interface getInterfaceForMonitoring(String interfaceName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress ipAddress) {
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.endpoint.endpoint.type.Interface getInterfaceForMonitoring(String interfaceName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress ipAddress) {
return new org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.endpoint.
endpoint.type.InterfaceBuilder().setInterfaceIp(ipAddress).setInterfaceName(interfaceName).build();
}
return;
}
LOG.debug("handling tunnel monitoring updates for interface {}", interfaceName);
- // Restart LLDP monitoring only if it's started already
- List<Long> monitorIds = getMonitorIdForInterface(dataBroker, interfaceName);
- if (monitorIds != null && !monitorIds.isEmpty()) {
- stopLLDPMonitoring(alivenessMonitorService, dataBroker, interfaceOld);
- if(ifTunnelNew.isMonitorEnabled()) {
- startLLDPMonitoring(alivenessMonitorService, dataBroker, interfaceNew);
- // Delete old profile from Aliveness Manager
- IfTunnel ifTunnelOld = interfaceOld.getAugmentation(IfTunnel.class);
- if(ifTunnelNew.getMonitorInterval() != ifTunnelOld.getMonitorInterval()) {
- LOG.debug("deleting older monitor profile for interface {}", interfaceName);
- long profileId = allocateProfile(alivenessMonitorService, FAILURE_THRESHOLD, ifTunnelOld.getMonitorInterval(), MONITORING_WINDOW, EtherTypes.Lldp);
- MonitorProfileDeleteInput profileDeleteInput = new MonitorProfileDeleteInputBuilder().setProfileId(profileId).build();
- alivenessMonitorService.monitorProfileDelete(profileDeleteInput);
- }
- }
+ stopLLDPMonitoring(alivenessMonitorService, dataBroker, interfaceOld);
+ if(ifTunnelNew.isMonitorEnabled()) {
+ startLLDPMonitoring(alivenessMonitorService, dataBroker, interfaceNew);
+
+ // Delete old profile from Aliveness Manager
+ IfTunnel ifTunnelOld = interfaceOld.getAugmentation(IfTunnel.class);
+ if(ifTunnelNew.getMonitorInterval() != ifTunnelOld.getMonitorInterval()) {
+ LOG.debug("deleting older monitor profile for interface {}", interfaceName);
+ long profileId = allocateProfile(alivenessMonitorService, FAILURE_THRESHOLD, ifTunnelOld.getMonitorInterval(), MONITORING_WINDOW, EtherTypes.Lldp);
+ MonitorProfileDeleteInput profileDeleteInput = new MonitorProfileDeleteInputBuilder().setProfileId(profileId).build();
+ alivenessMonitorService.monitorProfileDelete(profileDeleteInput);
}
+ }
}
if(rpcResult.isSuccessful()) {
return rpcResult.getResult().getProfileId();
} else {
- LOG.warn("RPC Call to Get Profile Id Id returned with Errors {}", rpcResult.getErrors());
+ LOG.warn("RPC Call to Get Profile Id Id returned with Errors {}.. Trying to fetch existing profile ID", rpcResult.getErrors());
+ try{
+ Profile createProfile = monitorProfileCreateInput.getProfile();
+ Future<RpcResult<MonitorProfileGetOutput>> existingProfile = alivenessMonitor.monitorProfileGet(buildMonitorGetProfile(createProfile.getMonitorInterval(), createProfile.getMonitorWindow(), createProfile.getFailureThreshold(), createProfile.getProtocolType()));
+ RpcResult<MonitorProfileGetOutput> rpcGetResult = existingProfile.get();
+ if(rpcGetResult.isSuccessful()){
+ return rpcGetResult.getResult().getProfileId();
+ }else{
+ LOG.warn("RPC Call to Get Existing Profile Id returned with Errors {}", rpcGetResult.getErrors());
+ }
+ }catch(Exception e){
+ LOG.warn("Exception when getting existing profile",e);
+ }
}
} catch (InterruptedException | ExecutionException e) {
LOG.warn("Exception when allocating profile Id",e);
}
return 0;
}
+
+ private static MonitorProfileGetInput buildMonitorGetProfile(long monitorInterval, long monitorWindow, long failureThreshold, EtherTypes protocolType){
+ MonitorProfileGetInputBuilder buildGetProfile = new MonitorProfileGetInputBuilder();
+ org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.monitor.profile.get.input.ProfileBuilder profileBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.monitor.profile.get.input.ProfileBuilder();
+ profileBuilder.setFailureThreshold(failureThreshold);
+ profileBuilder.setMonitorInterval(monitorInterval);
+ profileBuilder.setMonitorWindow(monitorWindow);
+ profileBuilder.setProtocolType(protocolType);
+ buildGetProfile.setProfile(profileBuilder.build());
+ return (buildGetProfile.build());
+ };
+
public static long allocateProfile(AlivenessMonitorService alivenessMonitor, long FAILURE_THRESHOLD, long MONITORING_INTERVAL,
long MONITORING_WINDOW, EtherTypes etherTypes) {
MonitorProfileCreateInput input = new MonitorProfileCreateInputBuilder().
.setMonitorInterval(MONITORING_INTERVAL).setMonitorWindow(MONITORING_WINDOW).setProtocolType(etherType);
return profileBuilder.build();
}
-}
\ No newline at end of file
+}