Log.info("Adding vpn instance: " + instanceName);
NetvirtVpnUtils.createVpnInstance(dataBroker, vpnName);
+ Log.info("Number of UNI's: " + data.getUnis().getUni().size());
+
// Create elan interfaces
for (Uni uni : data.getUnis().getUni()) {
String uniId = uniInService.getUniId().getValue();
String ipUniId = uniInService.getIpUniId().getValue();
+ Log.info("Adding/updating elan instance: " + uniId);
+
org.opendaylight.yang.gen.v1.http.metroethernetforum.org.ns.yang.mef.interfaces.rev150526.mef.interfaces.unis.Uni uni = IpvcUniUtils
.getUni(dataBroker, uniId);
if (uni == null) {
throw new UnsupportedOperationException();
}
IpUni ipUni = IpvcUniUtils.getIpUni(dataBroker, uniId, ipUniId);
- Integer vlan = (ipUni.getVlan()) != null ? ipUni.getVlan().getValue() : null;
+ Integer vlan = ipUni.getVlan() != null ? ipUni.getVlan().getValue() : null;
- Log.info("Adding/updating elan instance: " + uniId);
String elanName = NetvirtVpnUtils.getElanNameForVpnPort(uniId);
Log.info("Adding elan instance: " + elanName);
NetvirtUtils.updateElanInstance(dataBroker, elanName);
if (ipUni.getSubnets() != null) {
for (Subnet subnet : ipUni.getSubnets().getSubnet()) {
+ Log.info("Resolving MAC address for gateway: " + subnet.getGateway());
MacAddress gwMacAddress = NetvirtVpnUtils.resolveGwMac(dataBroker, arpUtilService, vpnName,
ipUni.getIpAddress(), subnet.getGateway(), interfaceName); // trunk
if (gwMacAddress == null) {
continue;
}
+ Log.info("update vpn interface: " + interfaceName);
NetvirtVpnUtils.createUpdateVpnInterface(dataBroker, vpnName, interfaceName, subnet.getSubnet(),
gwMacAddress, false, ipUni.getIpAddress());
}
}
+ Log.info("Finished working on elan instance: " + uniId);
}
private void removeElanInterface(String instanceName, Uni uni) {
private static Adjacencies buildInterfaceAdjacency(String ipAddress, MacAddress macAddress, boolean primary,
String nextHopIp) {
AdjacenciesBuilder builder = new AdjacenciesBuilder();
- List<Adjacency> list = new ArrayList<Adjacency>();
+ List<Adjacency> list = new ArrayList<>();
AdjacencyBuilder aBuilder = new AdjacencyBuilder();
aBuilder.setIpAddress(ipAddress);
- aBuilder.setMacAddress(macAddress.getValue());
+ if (macAddress != null) {
+ aBuilder.setMacAddress(macAddress.getValue());
+ }
aBuilder.setPrimaryAdjacency(primary);
if (nextHopIp != null) {
aBuilder.setNextHopIpList(Arrays.asList(nextHopIp));
logger.info("Publish subnet {}", subnetName);
publishSubnetAddNotification(notificationPublishService, subnetId, subnetIp, vpnName, elanTag);
+ logger.info("Finished Working on subnet {}", subnetName);
}
if (null != portId) {
List<Uuid> portList = builder.getPortList();
if (null == portList) {
- portList = new ArrayList<Uuid>();
+ portList = new ArrayList<>();
}
portList.add(portId);
builder.setPortList(portList);
MacAddress macAddress = null;
int retries = MaxRetries;
while (retries > 0 && macAddress == null) {
+ logger.info("Sending ARP request to dstIp {} take {}", dstIpAddress, MaxRetries - retries + 1);
sendArpRequest(arpUtilService, srcIpAddress, dstIpAddress, interf);
macAddress = waitForArpReplyProcessing(dataBroker, vpnName, dstIpAddress, MaxRetries);
retries--;
public static MacAddress waitForArpReplyProcessing(DataBroker dataBroker, String vpnName, IpAddress dstIpAddress,
int retries) {
while (retries > 0) {
+ logger.info("Waiting for ARP reply from dstIp {} take {}", dstIpAddress, MaxRetries - retries + 1);
InstanceIdentifier<VpnPortipToPort> optionalPortIpId = buildVpnPortipToPortIdentifier(vpnName,
MefUtils.ipAddressToString(dstIpAddress));
Optional<VpnPortipToPort> optionalPortIp = MdsalUtils.read(dataBroker, LogicalDatastoreType.OPERATIONAL,
} else {
sleep();
}
+ retries--;
}
return null;
}