- else if (tableName.equalsIgnoreCase(ovsdbConfigService.getTableName(node, Interface.class))) {
- logger.debug("Processing update of {}:{} node: {}, interface uuid: {}, row: {}",
- tableName, action, node, uuid, row);
- Interface intf = this.ovsdbConfigService.getTypedRow(node, Interface.class, row);
- NeutronNetwork network = tenantNetworkManager.getTenantNetwork(intf);
- if (network != null && !network.getRouterExternal()) {
- if (networkingProviderManager.getProvider(node).hasPerTenantTunneling()) {
- int vlan = tenantNetworkManager.networkCreated(node, network.getID());
- String portUUID = this.getPortIdForInterface(node, uuid, intf);
- if (portUUID != null) {
- logger.debug("Neutron Network {}:{} Created with Internal vlan {} port {}",
- network.getNetworkUUID(), network.getNetworkName(), vlan, portUUID);
- tenantNetworkManager.programInternalVlan(node, portUUID, network);
- } else {
- logger.trace("Neutron Network {}:{} Created with Internal vlan {} but have no portUUID",
- network.getNetworkUUID(), network.getNetworkName(), vlan);
- }
- }
- this.handleInterfaceUpdate(node, uuid, intf);
- }
- } else if (tableName.equalsIgnoreCase(ovsdbConfigService.getTableName(node, Port.class))) {
- logger.debug("Processing update of {}:{} node: {}, port uuid: {}, row: {}", tableName, action, node, uuid, row);
- Port port = this.ovsdbConfigService.getTypedRow(node, Port.class, row);
- Set<UUID> interfaceUUIDs = port.getInterfacesColumn().getData();
- for (UUID intfUUID : interfaceUUIDs) {
- logger.trace("Scanning interface "+intfUUID);
- try {
- Row intfRow = this.ovsdbConfigService.getRow(node, ovsdbConfigService.getTableName(node, Interface.class), intfUUID.toString());
- Interface intf = this.ovsdbConfigService.getTypedRow(node, Interface.class, intfRow);
- NeutronNetwork network = tenantNetworkManager.getTenantNetwork(intf);
- if (network != null && !network.getRouterExternal()) {
- logger.debug("Processing update of {}:{} node {} intf {} network {}",
- tableName, action, node, intfUUID, network.getNetworkUUID());
- tenantNetworkManager.programInternalVlan(node, uuid, network);
- this.handleInterfaceUpdate(node, intfUUID.toString(), intf);
- } else {
- logger.trace("Ignoring update because there is not a neutron network {} for port {}, interface {}",
- network, uuid, intfUUID);
- }
- } catch (Exception e) {
- logger.error("Failed to process row update", e);
- }
- }
- } else if (tableName.equalsIgnoreCase(ovsdbConfigService.getTableName(node, OpenVSwitch.class))) {
- logger.debug("Processing update of {}:{} node: {}, ovs uuid: {}, row: {}", tableName, action, node, uuid, row);
- try {
- ConcurrentMap<String, Row> interfaces = this.ovsdbConfigService.getRows(node, ovsdbConfigService.getTableName(node, Interface.class));
- if (interfaces != null) {
- for (String intfUUID : interfaces.keySet()) {
- Interface intf = ovsdbConfigService.getTypedRow(node, Interface.class, interfaces.get(intfUUID));
- this.handleInterfaceUpdate(node, intfUUID, intf);
- }
- }
- } catch (Exception e) {
- logger.error("Error fetching Interface Rows for node " + node, e);