X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=neutron-ovsdb%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fgroupbasedpolicy%2Fneutron%2Fovsdb%2FOvsdbNodeListener.java;h=09f8c2a23dc2a048170589747fddaaa6a9e33bd7;hb=02dd576a2ff7d7a8c304bd74a239c150be1ddd2b;hp=c191a1397af73a1ae87007fce8c51991cc27dbc8;hpb=57d89fde6ea8d7fab2524d8ef08faebcc0c73673;p=groupbasedpolicy.git diff --git a/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/OvsdbNodeListener.java b/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/OvsdbNodeListener.java index c191a1397..09f8c2a23 100644 --- a/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/OvsdbNodeListener.java +++ b/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/OvsdbNodeListener.java @@ -7,52 +7,47 @@ */ package org.opendaylight.groupbasedpolicy.neutron.ovsdb; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; +import com.google.common.base.Function; +import com.google.common.base.Strings; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.MoreExecutors; + import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import javax.annotation.Nonnull; -import org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl.IntegrationBridgeSetting; -import org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl.NeutronOvsdbModule; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.groupbasedpolicy.neutron.ovsdb.util.InventoryHelper; import org.opendaylight.groupbasedpolicy.neutron.ovsdb.util.NeutronOvsdbIidFactory; -import org.opendaylight.groupbasedpolicy.neutron.ovsdb.util.OvsdbHelper; -import org.opendaylight.groupbasedpolicy.util.DataStoreHelper; import org.opendaylight.groupbasedpolicy.util.DataTreeChangeHandler; import org.opendaylight.ovsdb.southbound.SouthboundConstants; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.ovsdb.params.rev160812.IntegrationBridgeSetting; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeBase; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeSystem; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentationBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeName; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeProtocolOpenflow13; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbFailModeSecure; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntryBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ManagedNodeEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ManagerEntry; @@ -67,28 +62,16 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.base.Strings; -import com.google.common.collect.Collections2; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; - public class OvsdbNodeListener extends DataTreeChangeHandler { + static final String BRIDGE_SEPARATOR = "/bridge/"; + static final String NEUTRON_PROVIDER_MAPPINGS_KEY = "provider_mappings"; private static final Logger LOG = LoggerFactory.getLogger(OvsdbNodeListener.class); - public static final String NEUTRON_PROVIDER_MAPPINGS_KEY = "provider_mappings"; private static final String OF_SEPARATOR = ":"; private static final String OF_INVENTORY_PREFIX = "openflow"; - private static final String BRIDGE_SEPARATOR = "/bridge/"; private static IntegrationBridgeSetting intBrSettings; private final Map providerPortNameByBridgeRef = new HashMap<>(); @@ -109,7 +92,8 @@ public class OvsdbNodeListener extends DataTreeChangeHandler { OvsdbNodeAugmentation ovsdbNode = node.getAugmentation(OvsdbNodeAugmentation.class); if (ovsdbNode != null) { LOG.trace("OVSDB node created: {} \n {}", rootIdentifier, node); - DataObjectModification ovsOtherConfigModification = getProviderMappingsModification(rootNode); + DataObjectModification + ovsOtherConfigModification = getProviderMappingsModification(rootNode); boolean integrationBridgePresent = false; if (isProviderPortNameChanged(ovsOtherConfigModification) && ovsdbNode.getManagedNodeEntry() != null) { String newProviderPortName = getProviderPortName(ovsOtherConfigModification.getDataAfter()); @@ -120,19 +104,20 @@ public class OvsdbNodeListener extends DataTreeChangeHandler { LOG.trace("Added Provider port name {} by OVSDB bridge ref {}", newProviderPortName, mngdNodeEntry.getBridgeRef()); NodeKey managedNodeKey = bridgeRef.getValue().firstKeyOf(Node.class); - if (intBrSettings != null && managedNodeKey.getNodeId().getValue().equals(intBrSettings.getName())) { + if (intBrSettings != null && managedNodeKey.getNodeId().getValue() + .equals(intBrSettings.getName())) { integrationBridgePresent = true; } } } - if (intBrSettings != null && integrationBridgePresent == false) { + if (intBrSettings != null && !integrationBridgePresent) { final Node bridge = createBridge(rootIdentifier, managerToControllerEntries(ovsdbNode.getManagerEntry()), intBrSettings.getName()); InstanceIdentifier bridgeNodeIid = NeutronOvsdbIidFactory.nodeIid( rootIdentifier.firstKeyOf(Topology.class).getTopologyId(), bridge.getNodeId()); - WriteTransaction wTx = dataProvider.newWriteOnlyTransaction(); - wTx.merge(LogicalDatastoreType.CONFIGURATION, bridgeNodeIid, bridge, true); - Futures.addCallback(wTx.submit(), new FutureCallback() { + WriteTransaction writeTx = dataProvider.newWriteOnlyTransaction(); + writeTx.merge(LogicalDatastoreType.CONFIGURATION, bridgeNodeIid, bridge, true); + Futures.addCallback(writeTx.submit(), new FutureCallback() { @Override public void onSuccess(Void result) { @@ -140,11 +125,11 @@ public class OvsdbNodeListener extends DataTreeChangeHandler { } @Override - public void onFailure(Throwable t) { + public void onFailure(Throwable throwable) { LOG.error("Failed to write bridge {}. Message: {}" + bridge.getNodeId().getValue(), - t.getMessage()); + throwable.getMessage()); } - }); + }, MoreExecutors.directExecutor()); } } OvsdbBridgeAugmentation ovsdbBridge = node.getAugmentation(OvsdbBridgeAugmentation.class); @@ -277,7 +262,8 @@ public class OvsdbNodeListener extends DataTreeChangeHandler { OvsdbTerminationPointAugmentation oldTp = ovsdbTpModification.getDataBefore(); OvsdbTerminationPointAugmentation newTp = ovsdbTpModification.getDataAfter(); if (oldTp != null && newTp != null) { - if (oldTp.getOfport() != null && newTp.getOfport() != null && oldTp.getOfport() != newTp.getOfport()) { + if (oldTp.getOfport() != null && newTp.getOfport() != null && !Objects.equals(oldTp.getOfport(), + newTp.getOfport())) { return true; } if (!(Strings.nullToEmpty(oldTp.getName())).equals(Strings.nullToEmpty(newTp.getName()))) { @@ -347,7 +333,7 @@ public class OvsdbNodeListener extends DataTreeChangeHandler { } /** - * Extracts IP address from URI + * Extracts IP address from URI. * * @param uri in format protocol:ip:port * @return IPv4 or IPv6 address as {@link String}. @@ -388,7 +374,7 @@ public class OvsdbNodeListener extends DataTreeChangeHandler { .setControllerEntry(controllerEntries) .setDatapathType(DatapathTypeSystem.class) .setProtocolEntry( - ImmutableList.of(new ProtocolEntryBuilder().setProtocol( + ImmutableList.of(new ProtocolEntryBuilder().setProtocol( OvsdbBridgeProtocolOpenflow13.class).build())) .build(); NodeKey managerNodeKey = managedByIid.firstKeyOf(Node.class);