public Ports build() { return new PortsImpl(this); }
public PortsBuilder(Ports base) { if (base.getKey() == null) { this._key = new PortsKey( base.getPortName() ); this._portName = base.getPortName(); } else { this._key = base.getKey(); this._portName = _key.getPortName(); } this._ipMapping = base.getIpMapping(); if (base instanceof PortsImpl) { PortsImpl impl = (PortsImpl) base; if (!impl.augmentation.isEmpty()) { this.augmentation = new HashMap<>(impl.augmentation); } } else if (base instanceof AugmentationHolder) { @SuppressWarnings("unchecked") AugmentationHolder<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.Ports> casted =(AugmentationHolder<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.Ports>) base; if (!casted.augmentations().isEmpty()) { this.augmentation = new HashMap<>(casted.augmentations()); } } }
public PortsBuilder addAugmentation(java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.Ports>> augmentationType, Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.Ports> augmentation) { if (augmentation == null) { return removeAugmentation(augmentationType); } if (!(this.augmentation instanceof HashMap)) { this.augmentation = new HashMap<>(); } this.augmentation.put(augmentationType, augmentation); return this; }
void updateOperationalDS(String routerId, String interfaceName, long label, String internalIp, String externalIp) { LOG.info("Updating operational DS for floating ip config : {} with label {}", internalIp, label); InstanceIdentifier<Ports> portsId = NatUtil.getPortsIdentifier(routerId, interfaceName); Optional<Ports> optPorts = NatUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, portsId); IpMapping ipMapping = new IpMappingBuilder().setKey(new IpMappingKey(internalIp)).setInternalIp(internalIp) .setExternalIp(externalIp).setLabel(label).build(); if(optPorts.isPresent()) { LOG.debug("Ports {} entry already present. Updating ipmapping for internal ip {}", interfaceName, internalIp); MDSALUtil.syncWrite(dataBroker, LogicalDatastoreType.OPERATIONAL, portsId.child(IpMapping.class, new IpMappingKey(internalIp)), ipMapping); } else { LOG.debug("Adding Ports entry {} along with ipmapping {}", interfaceName, internalIp); List<IpMapping> ipMappings = new ArrayList<>(); ipMappings.add(ipMapping); Ports ports = new PortsBuilder().setKey(new PortsKey(interfaceName)).setPortName(interfaceName).setIpMapping(ipMappings).build(); MDSALUtil.syncWrite(dataBroker, LogicalDatastoreType.OPERATIONAL, portsId, ports); } }
void handleDNATConfigurationForRouterDisassociation(String routerName, String vpnName, String externalNetwork) { InstanceIdentifier<RouterPorts> routerPortsId = NatUtil.getRouterPortsId(routerName); Optional<RouterPorts> optRouterPorts = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, routerPortsId); if(!optRouterPorts.isPresent()) { LOG.debug("Could not read Router Ports data object with id: {} to handle disassociate vpn {}", routerName, vpnName); return; } Uuid networkId = Uuid.getDefaultInstance(externalNetwork); RouterPorts routerPorts = optRouterPorts.get(); List<Ports> interfaces = routerPorts.getPorts(); for(Ports port : interfaces) { String portName = port.getPortName(); BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName); if(dpnId.equals(BigInteger.ZERO)) { LOG.debug("DPN not found for {}, skip handling of router {} association with vpn", portName, routerName, vpnName); continue; } List<IpMapping> ipMapping = port.getIpMapping(); for(IpMapping ipMap : ipMapping) { String externalIp = ipMap.getExternalIp(); //remove all NAT related entries with routerName //floatingIpListener.removeNATOnlyFlowEntries(dpnId, portName, routerName, vpnName, ipMap.getInternalIp(), externalIp); //Create NAT entries with VPN Id floatingIpListener.createNATOnlyFlowEntries(dpnId, portName, routerName, null, networkId, ipMap.getInternalIp(), externalIp); } } }
List<IpMapping> ipMapping = new ArrayList<>(); for (Ports ports : portsList) { if (ports.getPortName().equals(fixedNeutronPortName)) { ipMapping = ports.getIpMapping(); portsIdentifierBuilder = routerPortsIdentifierBuilder.child(Ports.class, new PortsKey (fixedNeutronPortName)); try { portsIdentifierBuilder.child(IpMapping.class, new IpMappingKey(fixedIpAddress)).build(); try {
private PortsImpl(PortsBuilder base) { if (base.getKey() == null) { this._key = new PortsKey( base.getPortName() ); this._portName = base.getPortName(); } else { this._key = base.getKey(); this._portName = _key.getPortName(); } this._ipMapping = base.getIpMapping(); switch (base.augmentation.size()) { case 0: this.augmentation = Collections.emptyMap(); break; case 1: final Map.Entry<java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.Ports>>, Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.Ports>> e = base.augmentation.entrySet().iterator().next(); this.augmentation = Collections.<java.lang.Class<? extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.Ports>>, Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.Ports>>singletonMap(e.getKey(), e.getValue()); break; default : this.augmentation = new HashMap<>(base.augmentation); } }
if (!Objects.equals(_ipMapping, other.getIpMapping())) { return false; if (!Objects.equals(_key, other.getKey())) { return false; if (!Objects.equals(_portName, other.getPortName())) { return false; if (!e.getValue().equals(other.getAugmentation(e.getKey()))) { return false;
static InstanceIdentifier<IpMapping> getIpMappingIdentifier(String routerId, String portName, String internalIp) { return InstanceIdentifier.builder(FloatingIpInfo.class).child(RouterPorts.class, new RouterPortsKey(routerId)) .child(Ports.class, new PortsKey(portName)) .child(IpMapping.class, new IpMappingKey(internalIp)).build(); }
static InstanceIdentifier<Ports> buildPortToIpMapIdentifier(String routerId, String portName) { InstanceIdentifier<Ports> ipPortMapId = InstanceIdentifier.builder(FloatingIpInfo.class).child (RouterPorts.class, new RouterPortsKey(routerId)).child(Ports.class, new PortsKey(portName)).build(); return ipPortMapId; }
private List<IpMapping> getIpMappingForPortName(String portName, String routerId) { InstanceIdentifier<Ports> portToIpMapIdentifier = NatUtil.buildPortToIpMapIdentifier(routerId, portName); Optional<Ports> port = NatUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, portToIpMapIdentifier); if(!port.isPresent()) { LOG.error("NAT Service : Unable to read router port entry for router ID {} and port name {}", routerId, portName); return null; } List<IpMapping> ipMappingList = port.get().getIpMapping(); return ipMappingList; }
private void processFloatingIPAdd(final InstanceIdentifier<IpMapping> identifier, final IpMapping mapping) { LOG.trace("Add event - key: {}, value: {}", identifier, mapping); final String routerId = identifier.firstKeyOf(RouterPorts.class).getRouterId(); final PortsKey pKey = identifier.firstKeyOf(Ports.class); String interfaceName = pKey.getPortName(); InstanceIdentifier<RouterPorts> pIdentifier = identifier.firstIdentifierOf(RouterPorts.class); createNATFlowEntries(interfaceName, mapping, pIdentifier, routerId); }
if (neutronPort.getPortName().equals(fixedNeutronPortName)) { fixedNeutronPortBuilder = new PortsBuilder(neutronPort); break; fixedNeutronPortBuilder = new PortsBuilder().setKey(new PortsKey(fixedNeutronPortName)) .setPortName(fixedNeutronPortName); List<IpMapping> ipMappingList = fixedNeutronPortBuilder.getIpMapping(); if (ipMappingList == null) { ipMappingList = new ArrayList<>(); IpMapping ipMapping = new IpMappingBuilder().setKey(new IpMappingKey(fixedIpAddress)) .setInternalIp(fixedIpAddress).setExternalIp(floatingIpAddress).setLabel(null).build(); ipMappingList.add(ipMapping); fixedNeutronPortBuilder.setIpMapping(ipMappingList); portsList.add(fixedNeutronPortBuilder.build()); routerPortsBuilder.setPorts(portsList);
void handleDNATConfigurationForRouterAssociation(String routerName, String vpnName, String externalNetwork) { InstanceIdentifier<RouterPorts> routerPortsId = NatUtil.getRouterPortsId(routerName); Optional<RouterPorts> optRouterPorts = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, routerPortsId); if(!optRouterPorts.isPresent()) { LOG.debug("Could not read Router Ports data object with id: {} to handle associate vpn {}", routerName, vpnName); return; } Uuid networkId = Uuid.getDefaultInstance(externalNetwork); RouterPorts routerPorts = optRouterPorts.get(); List<Ports> interfaces = routerPorts.getPorts(); Map<String, BigInteger> portToDpnMap = new HashMap<>(); for(Ports port : interfaces) { String portName = port.getPortName(); BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName); if(dpnId.equals(BigInteger.ZERO)) { LOG.debug("DPN not found for {}, skip handling of router {} association with vpn", portName, routerName, vpnName); continue; } portToDpnMap.put(portName, dpnId); List<IpMapping> ipMapping = port.getIpMapping(); for(IpMapping ipMap : ipMapping) { String externalIp = ipMap.getExternalIp(); //remove all NAT related entries with routerName //floatingIpListener.removeNATOnlyFlowEntries(dpnId, portName, routerName, null, ipMap.getInternalIp(), externalIp); //Create NAT entries with VPN Id LOG.debug("Updating DNAT flows with VPN metadata {} ", vpnName); floatingIpListener.createNATOnlyFlowEntries(dpnId, portName, routerName, vpnName, networkId, ipMap.getInternalIp(), externalIp); } } }
static InstanceIdentifier<Ports> getPortsIdentifier(String routerId, String portName) { return InstanceIdentifier.builder(FloatingIpInfo.class).child(RouterPorts.class, new RouterPortsKey(routerId)) .child(Ports.class, new PortsKey(portName)).build(); }
private void processFloatingIPDel(final InstanceIdentifier<IpMapping> identifier, final IpMapping mapping) { LOG.trace("Del event - key: {}, value: {}", identifier, mapping); final String routerId = identifier.firstKeyOf(RouterPorts.class).getRouterId(); final PortsKey pKey = identifier.firstKeyOf(Ports.class); String interfaceName = pKey.getPortName(); InstanceIdentifier<RouterPorts> pIdentifier = identifier.firstIdentifierOf(RouterPorts.class); removeNATFlowEntries(interfaceName, mapping, pIdentifier, routerId); }
private void disassociateExternalNetworkFromVPN(Networks network, String vpnName) { List<Uuid> routerIds = network.getRouterIds(); //long vpnId = NatUtil.getVpnId(dataBroker, vpnName); for(Uuid routerId : routerIds) { //long router = NatUtil.getVpnId(dataBroker, routerId.getValue()); InstanceIdentifier<RouterPorts> routerPortsId = NatUtil.getRouterPortsId(routerId.getValue()); Optional<RouterPorts> optRouterPorts = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, routerPortsId); if(!optRouterPorts.isPresent()) { LOG.debug("Could not read Router Ports data object with id: {} to handle disassociate ext nw {}", routerId, network.getId()); continue; } RouterPorts routerPorts = optRouterPorts.get(); List<Ports> interfaces = routerPorts.getPorts(); for(Ports port : interfaces) { String portName = port.getPortName(); BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName); if(dpnId.equals(BigInteger.ZERO)) { LOG.debug("DPN not found for {}, skip handling of ext nw {} disassociation", portName, network.getId()); continue; } List<IpMapping> ipMapping = port.getIpMapping(); for(IpMapping ipMap : ipMapping) { String externalIp = ipMap.getExternalIp(); floatingIpListener.removeNATFlowEntries(dpnId, portName, vpnName, routerId.getValue(), network.getId(), ipMap.getInternalIp(), externalIp); } } } }
.Ports> portsIdentifierBuilder = routerPortsIdentifierBuilder.child(org .opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111 .floating.ip.info.router.ports.Ports.class, new PortsKey(fixedNeutronPortName)); try {
List<Ports> interfaces = routerPorts.getPorts(); for(Ports port : interfaces) { String portName = port.getPortName(); BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName); if(dpnId.equals(BigInteger.ZERO)) { continue; List<IpMapping> ipMapping = port.getIpMapping(); for(IpMapping ipMap : ipMapping) { String externalIp = ipMap.getExternalIp(); floatingIpListener.createNATFlowEntries(dpnId, portName, routerId.getValue(), network.getId(), ipMap.getInternalIp(), externalIp);