import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.CheckedFuture;
-
import java.net.InetAddress;
import java.net.NetworkInterface;
+import java.net.SocketException;
import java.util.Enumeration;
+import java.util.concurrent.ExecutionException;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.ovsdb.lib.error.SchemaVersionMismatchException;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAttributes;
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.ovsdb.node.attributes.ConnectionInfo;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class SouthboundUtil {
+public final class SouthboundUtil {
private static final Logger LOG = LoggerFactory.getLogger(SouthboundUtil.class);
private static final String SCHEMA_VERSION_MISMATCH =
"{} column for {} table is not supported by this version of the {} schema: {}";
- private static InstanceIdentifierCodec instanceIdentifierCodec;
-
private SouthboundUtil() {
// Prevent instantiating a utility class
}
- public static void setInstanceIdentifierCodec(InstanceIdentifierCodec iidc) {
- instanceIdentifierCodec = iidc;
- }
-
- public static InstanceIdentifierCodec getInstanceIdentifierCodec() {
- return instanceIdentifierCodec;
- }
-
- public static String serializeInstanceIdentifier(InstanceIdentifier<?> iid) {
- return instanceIdentifierCodec.serialize(iid);
- }
-
- public static InstanceIdentifier<?> deserializeInstanceIdentifier(String iidString) {
- InstanceIdentifier<?> result = null;
- try {
- result = instanceIdentifierCodec.bindingDeserializer(iidString);
- } catch (DeserializationException e) {
- LOG.warn("Unable to deserialize iidString", e);
- }
- return result;
- }
-
-
public static Optional<OvsdbNodeAugmentation> getManagingNode(DataBroker db, OvsdbBridgeAttributes mn) {
Preconditions.checkNotNull(mn);
try {
OvsdbNodeRef ref = mn.getManagedBy();
if (ref != null && ref.getValue() != null) {
ReadOnlyTransaction transaction = db.newReadOnlyTransaction();
- @SuppressWarnings("unchecked") // Note: erasure makes this safe in combination with the typecheck below
+ @SuppressWarnings("unchecked")
+ // Note: erasure makes this safe in combination with the typecheck below
InstanceIdentifier<Node> path = (InstanceIdentifier<Node>) ref.getValue();
CheckedFuture<Optional<Node>, ReadFailedException> nf = transaction.read(
LOG.warn("Cannot find client for OvsdbManagedNode without a specified ManagedBy {}", mn);
return Optional.absent();
}
- } catch (Exception e) {
+ } catch (InterruptedException | ExecutionException e) {
LOG.warn("Failed to get OvsdbNode that manages OvsdbManagedNode {}", mn, e);
return Optional.absent();
}
private static String getLocalControllerHostIpAddress() {
String ipaddress = null;
try {
- for (Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces();
- ifaces.hasMoreElements();) {
- NetworkInterface iface = ifaces.nextElement();
-
- for (Enumeration<InetAddress> inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements();) {
- InetAddress inetAddr = inetAddrs.nextElement();
- if (!inetAddr.isLoopbackAddress() && inetAddr.isSiteLocalAddress()) {
- ipaddress = inetAddr.getHostAddress();
- break;
+ Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces();
+ if (ifaces != null) {
+ while (ifaces.hasMoreElements()) {
+ NetworkInterface iface = ifaces.nextElement();
+
+ for (Enumeration<InetAddress> inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements();) {
+ InetAddress inetAddr = inetAddrs.nextElement();
+ if (!inetAddr.isLoopbackAddress() && inetAddr.isSiteLocalAddress()) {
+ ipaddress = inetAddr.getHostAddress();
+ break;
+ }
}
}
+ } else {
+ LOG.warn("Local Host don't have any associated IP address");
}
- } catch (Exception e) {
+ } catch (SocketException e) {
LOG.warn("Exception while fetching local host ip address ",e);
}
return ipaddress;