Since ConnectionInfo is basically the same info only better.
Change-Id: Icbf8a8946f26ffd971b006595a6933e9ddf020ab
Signed-off-by: Ed Warnicke <eaw@cisco.com>
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.ovsdb.southbound;
-
-import org.opendaylight.ovsdb.lib.OvsdbClient;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
-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;
-
-public class OvsdbClientKey {
- /*
- * This class is immutable. If you are in anyway changing its fields after
- * creation, your are doing it wrong :)
- */
- private IpAddress ipaddress;
- private PortNumber port;
-
- OvsdbClientKey(ConnectionInfo connectionInfo) {
- ipaddress = connectionInfo.getRemoteIp();
- port = connectionInfo.getRemotePort();
- }
-
- public OvsdbClientKey(IpAddress ip, PortNumber port) {
- this.ipaddress = ip;
- this.port = port;
- }
-
- OvsdbClientKey(OvsdbClient client) {
- ipaddress = SouthboundMapper.createIpAddress(client.getConnectionInfo().getRemoteAddress());
- port = new PortNumber(client.getConnectionInfo().getRemotePort());
- }
-
- public IpAddress getIp() {
- return ipaddress;
- }
-
- public PortNumber getPort() {
- return port;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result
- + ((ipaddress == null) ? 0 : ipaddress.hashCode());
- result = prime * result + ((port == null) ? 0 : port.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- OvsdbClientKey other = (OvsdbClientKey) obj;
- if (ipaddress == null) {
- if (other.ipaddress != null) {
- return false;
- }
- } else if (!ipaddress.equals(other.ipaddress)) {
- return false;
- }
- if (port == null) {
- if (other.port != null) {
- return false;
- }
- } else if (!port.equals(other.port)) {
- return false;
- }
- return true;
- }
-
- public InstanceIdentifier<Node> toInstanceIndentifier() {
- return SouthboundMapper.createInstanceIdentifier(ipaddress,port);
- }
-}
import org.opendaylight.ovsdb.southbound.ovsdb.transact.TransactInvokerImpl;
import org.opendaylight.ovsdb.southbound.transactions.md.OvsdbNodeCreateCommand;
import org.opendaylight.ovsdb.southbound.transactions.md.TransactionInvoker;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class OvsdbConnectionInstance implements OvsdbClient {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbConnectionInstance.class);
private OvsdbClient client;
- private OvsdbClientKey key;
+ private ConnectionInfo connectionInfo;
private TransactionInvoker txInvoker;
private Map<DatabaseSchema,TransactInvoker> transactInvokers = new HashMap<DatabaseSchema,TransactInvoker>();
private MonitorCallBack callback;
- OvsdbConnectionInstance(OvsdbClientKey key,OvsdbClient client,TransactionInvoker txInvoker) {
- this.key = key;
+ OvsdbConnectionInstance(ConnectionInfo key,OvsdbClient client,TransactionInvoker txInvoker) {
+ this.connectionInfo = key;
this.client = client;
this.txInvoker = txInvoker;
txInvoker.invoke(new OvsdbNodeCreateCommand(key, null,null));
}
private void registerCallBack() {
- this.callback = new OvsdbMonitorCallback(key,txInvoker);
+ this.callback = new OvsdbMonitorCallback(connectionInfo,txInvoker);
try {
List<String> databases = getDatabases().get();
if (databases != null) {
transactInvokers.put(dbSchema, new TransactInvokerImpl(this,dbSchema));
monitorAllTables(database, dbSchema);
} else {
- LOG.warn("No schema reported for database {} for key {}",database,key);
+ LOG.warn("No schema reported for database {} for key {}",database,connectionInfo);
}
}
} else {
- LOG.warn("No databases reported from {}",key);
+ LOG.warn("No databases reported from {}",connectionInfo);
}
} catch (InterruptedException | ExecutionException e) {
- LOG.warn("Exception attempting to initialize {}: {}",key,e);
+ LOG.warn("Exception attempting to initialize {}: {}",connectionInfo,e);
}
}
}
this.callback.update(monitor(dbSchema, monitorRequests, callback),dbSchema);
} else {
- LOG.warn("No tables for schema {} for database {} for key {}",dbSchema,database,key);
+ LOG.warn("No tables for schema {} for database {} for key {}",dbSchema,database,connectionInfo);
}
}
client.stopEchoService();
}
- public OvsdbConnectionInfo getConnectionInfo() {
- return client.getConnectionInfo();
- }
-
public boolean isActive() {
return client.isActive();
}
return client.getTypedRowWrapper(klazz, row);
}
- public OvsdbClientKey getKey() {
- return key;
+ public OvsdbConnectionInfo getConnectionInfo() {
+ return client.getConnectionInfo();
+ }
+
+ public ConnectionInfo getMDConnectionInfo() {
+ return connectionInfo;
}
- public void setKey(OvsdbClientKey key) {
- this.key = key;
+ public void setMDConnectionInfo(ConnectionInfo key) {
+ this.connectionInfo = key;
}
}
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.OvsdbNodeAugmentation;
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.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfoBuilder;
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.slf4j.Logger;
import com.google.common.util.concurrent.CheckedFuture;
public class OvsdbConnectionManager implements OvsdbConnectionListener, AutoCloseable {
- Map<OvsdbClientKey,OvsdbConnectionInstance> clients
- = new ConcurrentHashMap<OvsdbClientKey,OvsdbConnectionInstance>();
+ Map<ConnectionInfo,OvsdbConnectionInstance> clients
+ = new ConcurrentHashMap<ConnectionInfo,OvsdbConnectionInstance>();
private static final Logger LOG = LoggerFactory.getLogger(OvsdbConnectionManager.class);
private DataBroker db;
public void connected(final OvsdbClient externalClient) {
LOG.info("OVSDB Connection from {}:{}",externalClient.getConnectionInfo().getRemoteAddress(),
externalClient.getConnectionInfo().getRemotePort());
- OvsdbClientKey key = new OvsdbClientKey(externalClient);
+ ConnectionInfo key = SouthboundMapper.createConnectionInfo(externalClient);
OvsdbConnectionInstance client = new OvsdbConnectionInstance(key,externalClient,txInvoker);
clients.put(key, client);
}
public void disconnected(OvsdbClient client) {
LOG.info("OVSDB Disconnect from {}:{}",client.getConnectionInfo().getRemoteAddress(),
client.getConnectionInfo().getRemotePort());
- OvsdbClientKey key = new OvsdbClientKey(client);
+ ConnectionInfo key = SouthboundMapper.createConnectionInfo(client);
txInvoker.invoke(new OvsdbNodeRemoveCommand(key,null,null));
clients.remove(key);
}
}
public void disconnect(OvsdbNodeAugmentation ovsdbNode) throws UnknownHostException {
- OvsdbClientKey key = new OvsdbClientKey(ovsdbNode.getConnectionInfo().getRemoteIp(),
- ovsdbNode.getConnectionInfo().getRemotePort());
- OvsdbClient client = clients.get(key);
+ OvsdbClient client = clients.get(ovsdbNode.getConnectionInfo());
if (client != null) {
client.disconnect();
}
}
}
- public OvsdbConnectionInstance getConnectionInstance(OvsdbClientKey key) {
- return clients.get(key);
- }
-
- public OvsdbConnectionInstance getConnectionInstance(ConnectionInfo connectionInfo) {
- Preconditions.checkNotNull(connectionInfo);
- return getConnectionInstance(new OvsdbClientKey(connectionInfo));
+ public OvsdbConnectionInstance getConnectionInstance(ConnectionInfo key) {
+ ConnectionInfoBuilder connectionInfoBuilder = new ConnectionInfoBuilder(key);
+ return clients.get(connectionInfoBuilder.build());
}
public OvsdbConnectionInstance getConnectionInstance(OvsdbBridgeAttributes mn) {
}
}
- public OvsdbClient getClient(OvsdbClientKey key) {
- return getConnectionInstance(key);
- }
-
public OvsdbClient getClient(ConnectionInfo connectionInfo) {
return getConnectionInstance(connectionInfo);
}
connectionInstance.transact(new TransactCommandAggregator(
new BridgeOperationalState(db, changes),
new DataChangesManagedByOvsdbNodeEvent(
- SouthboundMapper.createInstanceIdentifier(connectionInstance.getKey()),
+ SouthboundMapper.createInstanceIdentifier(connectionInstance.getMDConnectionInfo()),
changes)));
}
}
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.southbound.transactions.md.OvsdbOperationalCommandAggregator;
import org.opendaylight.ovsdb.southbound.transactions.md.TransactionInvoker;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(OvsdbMonitorCallback.class);
private TransactionInvoker txInvoker;
- private OvsdbClientKey key;
+ private ConnectionInfo key;
- OvsdbMonitorCallback(OvsdbClientKey key,TransactionInvoker txInvoker) {
+ OvsdbMonitorCallback(ConnectionInfo key,TransactionInvoker txInvoker) {
this.txInvoker = txInvoker;
this.key = key;
}
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.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.ConnectionInfo;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfoBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
nodeBuilder.addAugmentation(OvsdbNodeAugmentation.class, createOvsdbAugmentation(client));
return nodeBuilder.build();
}
- public static Node createNode(OvsdbClientKey key) {
+ public static Node createNode(ConnectionInfo key) {
NodeBuilder nodeBuilder = new NodeBuilder();
- nodeBuilder.setNodeId(createNodeId(key.getIp(),key.getPort()));
+ nodeBuilder.setNodeId(createNodeId(key.getRemoteIp(),key.getRemotePort()));
nodeBuilder.addAugmentation(OvsdbNodeAugmentation.class, createOvsdbAugmentation(key));
return nodeBuilder.build();
}
public static OvsdbNodeAugmentation createOvsdbAugmentation(OvsdbClient client) {
- return createOvsdbAugmentation(new OvsdbClientKey(client));
+ return createOvsdbAugmentation(createConnectionInfo(client));
}
- public static OvsdbNodeAugmentation createOvsdbAugmentation(OvsdbClientKey key) {
+ public static OvsdbNodeAugmentation createOvsdbAugmentation(ConnectionInfo key) {
OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = new OvsdbNodeAugmentationBuilder();
- ConnectionInfoBuilder ciBuilder = new ConnectionInfoBuilder();
- ciBuilder.setRemoteIp(key.getIp());
- ciBuilder.setRemotePort(key.getPort());
- ovsdbNodeBuilder.setConnectionInfo(ciBuilder.build());
+ ovsdbNodeBuilder.setConnectionInfo(key);
return ovsdbNodeBuilder.build();
}
return nodePath;
}
- public static InstanceIdentifier<Node> createInstanceIdentifier(OvsdbClientKey key,OvsdbBridgeName bridgeName) {
+ public static InstanceIdentifier<Node> createInstanceIdentifier(ConnectionInfo key,OvsdbBridgeName bridgeName) {
return createInstanceIdentifier(createManagedNodeId(key, bridgeName));
}
- public static InstanceIdentifier<Node> createInstanceIdentifier(OvsdbClientKey key,Bridge bridge) {
+ public static InstanceIdentifier<Node> createInstanceIdentifier(ConnectionInfo key,Bridge bridge) {
String managedNodePathString = bridge
.getExternalIdsColumn()
.getData()
return nodeKey.getNodeId();
}
- public static InstanceIdentifier<Node> createInstanceIdentifier(OvsdbClientKey key) {
- return createInstanceIdentifier(key.getIp(), key.getPort());
+ public static InstanceIdentifier<Node> createInstanceIdentifier(ConnectionInfo key) {
+ return createInstanceIdentifier(key.getRemoteIp(), key.getRemotePort());
}
public static InstanceIdentifier<Node> createInstanceIdentifier(IpAddress ip, PortNumber port) {
bridgeName);
}
- public static NodeId createManagedNodeId(OvsdbClientKey key, OvsdbBridgeName bridgeName) {
- return createManagedNodeId(key.getIp(),key.getPort(),bridgeName);
+ public static NodeId createManagedNodeId(ConnectionInfo key, OvsdbBridgeName bridgeName) {
+ return createManagedNodeId(key.getRemoteIp(),key.getRemotePort(),bridgeName);
}
public static NodeId createManagedNodeId(IpAddress ip, PortNumber port, OvsdbBridgeName bridgeName) {
public static String getRandomUUID() {
return "Random_" + java.util.UUID.randomUUID().toString().replace("-", "");
}
+ public static ConnectionInfo createConnectionInfo(OvsdbClient client) {
+ ConnectionInfoBuilder connectionInfoBuilder = new ConnectionInfoBuilder();
+ connectionInfoBuilder.setRemoteIp(createIpAddress(client.getConnectionInfo().getRemoteAddress()));
+ connectionInfoBuilder.setLocalIp(createIpAddress(client.getConnectionInfo().getLocalAddress()));
+ connectionInfoBuilder.setRemotePort(new PortNumber(client.getConnectionInfo().getRemotePort()));
+ connectionInfoBuilder.setLocalPort(new PortNumber(client.getConnectionInfo().getLocalPort()));
+ return connectionInfoBuilder.build();
+ }
}
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
public abstract class AbstractTransactionCommand implements TransactionCommand {
private TableUpdates updates;
private DatabaseSchema dbSchema;
- private OvsdbClientKey key;
+ private ConnectionInfo key;
public TableUpdates getUpdates() {
return updates;
return dbSchema;
}
- public OvsdbClientKey getKey() {
+ public ConnectionInfo getConnectionInfo() {
return key;
}
// NO OP
}
- public AbstractTransactionCommand(OvsdbClientKey key,TableUpdates updates, DatabaseSchema dbSchema) {
+ public AbstractTransactionCommand(ConnectionInfo key,TableUpdates updates, DatabaseSchema dbSchema) {
this.updates = updates;
this.dbSchema = dbSchema;
this.key = key;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.openvswitch.OpenVSwitch;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
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.OvsdbNodeAugmentationBuilder;
private static final Logger LOG = LoggerFactory
.getLogger(OpenVSwitchUpdateCommand.class);
- public OpenVSwitchUpdateCommand(OvsdbClientKey key, TableUpdates updates,
+ public OpenVSwitchUpdateCommand(ConnectionInfo key, TableUpdates updates,
DatabaseSchema dbSchema) {
super(key, updates, dbSchema);
}
for (Entry<UUID, OpenVSwitch> entry : updatedOpenVSwitchRows.entrySet()) {
OpenVSwitch openVSwitch = entry.getValue();
- final InstanceIdentifier<Node> nodePath = getKey()
- .toInstanceIndentifier();
+ final InstanceIdentifier<Node> nodePath = SouthboundMapper.createInstanceIdentifier(getConnectionInfo());
Optional<Node> node = Optional.absent();
try {
node = transaction.read(LogicalDatastoreType.OPERATIONAL,
if (node.isPresent()) {
LOG.debug("Node {} is present", node);
OvsdbNodeAugmentation ovsdbNode = SouthboundMapper
- .createOvsdbAugmentation(getKey());
+ .createOvsdbAugmentation(getConnectionInfo());
OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = new OvsdbNodeAugmentationBuilder();
ovsdbNodeBuilder.setOvsVersion(openVSwitch.getVersion()
.toString());
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
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.OvsdbNodeAugmentation;
+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.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.ManagedNodeEntryKey;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
public class OvsdbBridgeRemovedCommand extends AbstractTransactionCommand {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbBridgeRemovedCommand.class);
- public OvsdbBridgeRemovedCommand(OvsdbClientKey key, TableUpdates updates,
+ public OvsdbBridgeRemovedCommand(ConnectionInfo key, TableUpdates updates,
DatabaseSchema dbSchema) {
super(key,updates,dbSchema);
}
Collection<Bridge> removedRows = TyperUtils.extractRowsRemoved(Bridge.class,
getUpdates(), getDbSchema()).values();
for (Bridge bridge : removedRows) {
- InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getKey(),
+ InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getConnectionInfo(),
bridge);
- InstanceIdentifier<ManagedNodeEntry> mnIid = SouthboundMapper.createInstanceIdentifier(getKey())
+ InstanceIdentifier<ManagedNodeEntry> mnIid = SouthboundMapper.createInstanceIdentifier(getConnectionInfo())
.augmentation(OvsdbNodeAugmentation.class)
.child(ManagedNodeEntry.class, new ManagedNodeEntryKey(new OvsdbBridgeRef(bridgeIid)));
// TODO handle removal of reference to managed node from model
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
import org.opendaylight.ovsdb.southbound.SouthboundConstants;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeOtherConfigsKey;
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.ProtocolEntryKey;
+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.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.ManagedNodeEntryBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
private Map<UUID,Bridge> updatedBridgeRows;
private Map<UUID, Bridge> oldBridgeRows;
- public OvsdbBridgeUpdateCommand(OvsdbClientKey key, TableUpdates updates,
+ public OvsdbBridgeUpdateCommand(ConnectionInfo key, TableUpdates updates,
DatabaseSchema dbSchema) {
super(key,updates,dbSchema);
updatedBridgeRows = TyperUtils.extractRowsUpdated(Bridge.class, getUpdates(), getDbSchema());
private void updateBridge(ReadWriteTransaction transaction,
Bridge bridge) {
- final InstanceIdentifier<Node> connectionIId = getKey().toInstanceIndentifier();
- Optional<Node> connection = readNode(transaction, getKey().toInstanceIndentifier());
+ final InstanceIdentifier<Node> connectionIId = SouthboundMapper.createInstanceIdentifier(getConnectionInfo());
+ Optional<Node> connection = readNode(transaction, connectionIId);
if (connection.isPresent()) {
LOG.debug("Connection {} is present",connection);
transaction.merge(LogicalDatastoreType.OPERATIONAL, connectionIId, connectionNode);
// Update the bridge node with whatever data we are getting
- InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getKey(),bridge);
+ InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getConnectionInfo(),bridge);
Node bridgeNode = buildBridgeNode(bridge);
transaction.merge(LogicalDatastoreType.OPERATIONAL, bridgeIid, bridgeNode);
deleteEntries(transaction, protocolEntriesToRemove(bridgeIid,bridge));
Bridge bridge) {
//Update node with managed node reference
NodeBuilder connectionNode = new NodeBuilder();
- connectionNode.setNodeId(SouthboundMapper.createNodeId(getKey().getIp(),getKey().getPort()));
+ connectionNode.setNodeId(SouthboundMapper.createNodeId(getConnectionInfo().getRemoteIp(),
+ getConnectionInfo().getRemotePort()));
OvsdbNodeAugmentationBuilder ovsdbConnectionAugmentationBuilder = new OvsdbNodeAugmentationBuilder();
List<ManagedNodeEntry> managedBridges = new ArrayList<ManagedNodeEntry>();
- InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getKey(),bridge);
+ InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getConnectionInfo(),bridge);
ManagedNodeEntry managedBridge = new ManagedNodeEntryBuilder().setBridgeRef(
new OvsdbBridgeRef(bridgeIid)).build();
managedBridges.add(managedBridge);
private Node buildBridgeNode(Bridge bridge) {
NodeBuilder bridgeNodeBuilder = new NodeBuilder();
- InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getKey(),bridge);
+ InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getConnectionInfo(),bridge);
NodeId bridgeNodeId = SouthboundMapper.createManagedNodeId(bridgeIid);
bridgeNodeBuilder.setNodeId(bridgeNodeId);
OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
}
private void setManagedBy(OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder) {
- InstanceIdentifier<Node> connectionNodePath = getKey().toInstanceIndentifier();
+ InstanceIdentifier<Node> connectionNodePath = SouthboundMapper.createInstanceIdentifier(getConnectionInfo());
ovsdbBridgeAugmentationBuilder.setManagedBy(new OvsdbNodeRef(connectionNodePath));
}
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
import org.opendaylight.ovsdb.schema.openvswitch.Controller;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
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.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
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.ControllerEntryKey;
+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;
private Map<UUID, Controller> removedControllerRows;
private Map<UUID, Bridge> updatedBridgeRows;
- public OvsdbControllerRemovedCommand(OvsdbClientKey key,
+ public OvsdbControllerRemovedCommand(ConnectionInfo key,
TableUpdates updates, DatabaseSchema dbSchema) {
super(key, updates, dbSchema);
updatedBridgeRows = TyperUtils.extractRowsUpdated(Bridge.class, getUpdates(), getDbSchema());
@Override
public void execute(ReadWriteTransaction transaction) {
for (Bridge bridge : updatedBridgeRows.values()) {
- InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getKey(), bridge);
+ InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getConnectionInfo(), bridge);
deleteControllers(transaction, controllerEntriesToRemove(bridgeIid,bridge));
}
}
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
import org.opendaylight.ovsdb.schema.openvswitch.Controller;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
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.ovsdb.bridge.attributes.ControllerEntry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class OvsdbControllerUpdateCommand extends AbstractTransactionCommand {
private Map<UUID, Controller> updatedControllerRows;
private Map<UUID, Bridge> updatedBridgeRows;
- public OvsdbControllerUpdateCommand(OvsdbClientKey key,
+ public OvsdbControllerUpdateCommand(ConnectionInfo key,
TableUpdates updates, DatabaseSchema dbSchema) {
super(key, updates, dbSchema);
updatedBridgeRows = TyperUtils.extractRowsUpdated(Bridge.class, getUpdates(), getDbSchema());
private void setController(ReadWriteTransaction transaction, Bridge bridge) {
for (ControllerEntry controllerEntry: SouthboundMapper.createControllerEntries(bridge, updatedControllerRows)) {
- InstanceIdentifier<ControllerEntry> iid = SouthboundMapper.createInstanceIdentifier(getKey(), bridge)
+ InstanceIdentifier<ControllerEntry> iid =
+ SouthboundMapper.createInstanceIdentifier(getConnectionInfo(), bridge)
.augmentation(OvsdbBridgeAugmentation.class)
.child(ControllerEntry.class,controllerEntry.getKey());
transaction.put(LogicalDatastoreType.OPERATIONAL, iid, controllerEntry);
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
public class OvsdbNodeCreateCommand extends AbstractTransactionCommand {
- public OvsdbNodeCreateCommand(OvsdbClientKey key,TableUpdates updates,DatabaseSchema dbSchema) {
+ public OvsdbNodeCreateCommand(ConnectionInfo key,TableUpdates updates,DatabaseSchema dbSchema) {
super(key,updates,dbSchema);
}
@Override
public void execute(ReadWriteTransaction transaction) {
- transaction.put(LogicalDatastoreType.OPERATIONAL, getKey().toInstanceIndentifier(),
- SouthboundMapper.createNode(getKey()));
+ transaction.put(LogicalDatastoreType.OPERATIONAL,
+ SouthboundMapper.createInstanceIdentifier(getConnectionInfo()),
+ SouthboundMapper.createNode(getConnectionInfo()));
}
}
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
+import org.opendaylight.ovsdb.southbound.SouthboundMapper;
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.ovsdb.node.attributes.ConnectionInfo;
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.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.slf4j.Logger;
public class OvsdbNodeRemoveCommand extends AbstractTransactionCommand {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbNodeRemoveCommand.class);
- public OvsdbNodeRemoveCommand(OvsdbClientKey key,TableUpdates updates,DatabaseSchema dbSchema) {
+ public OvsdbNodeRemoveCommand(ConnectionInfo key,TableUpdates updates,DatabaseSchema dbSchema) {
super(key,updates,dbSchema);
}
@Override
public void execute(ReadWriteTransaction transaction) {
CheckedFuture<Optional<Node>, ReadFailedException> ovsdbNodeFuture = transaction.read(
- LogicalDatastoreType.OPERATIONAL, getKey().toInstanceIndentifier());
+ LogicalDatastoreType.OPERATIONAL, SouthboundMapper.createInstanceIdentifier(getConnectionInfo()));
Optional<Node> ovsdbNodeOptional;
try {
ovsdbNodeOptional = ovsdbNodeFuture.get();
transaction.delete(LogicalDatastoreType.OPERATIONAL, managedNode.getBridgeRef().getValue());
}
}
- transaction.delete(LogicalDatastoreType.OPERATIONAL, getKey().toInstanceIndentifier());
+ transaction.delete(LogicalDatastoreType.OPERATIONAL,
+ SouthboundMapper.createInstanceIdentifier(getConnectionInfo()));
}
} catch (Exception e) {
LOG.warn("Failure to delete ovsdbNode {}",e);
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
public class OvsdbOperationalCommandAggregator implements TransactionCommand {
private List<TransactionCommand> commands = new ArrayList<TransactionCommand>();
- public OvsdbOperationalCommandAggregator(OvsdbClientKey key,TableUpdates updates, DatabaseSchema dbSchema) {
+ public OvsdbOperationalCommandAggregator(ConnectionInfo key,TableUpdates updates, DatabaseSchema dbSchema) {
commands.add(new OvsdbBridgeUpdateCommand(key, updates, dbSchema));
commands.add(new OvsdbBridgeRemovedCommand(key, updates, dbSchema));
commands.add(new OvsdbControllerUpdateCommand(key, updates, dbSchema));
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.openvswitch.Port;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
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.ovsdb.node.attributes.ConnectionInfo;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class OvsdbPortRemoveCommand extends AbstractTransactionCommand {
- public OvsdbPortRemoveCommand(OvsdbClientKey key, TableUpdates updates,
+ public OvsdbPortRemoveCommand(ConnectionInfo key, TableUpdates updates,
DatabaseSchema dbSchema) {
super(key, updates, dbSchema);
}
for (Port port : portRemovedRows) {
portName = port.getName();
final InstanceIdentifier<TerminationPoint> nodePath = SouthboundMapper
- .createInstanceIdentifier(getKey(),
+ .createInstanceIdentifier(getConnectionInfo(),
new OvsdbBridgeName(bridgeName)).child(
TerminationPoint.class,
new TerminationPointKey(new TpId(portName)));
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.ovsdb.lib.message.TableUpdates;
import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
public class OvsdbPortTransactionCommand extends AbstractTransactionCommand {
- public OvsdbPortTransactionCommand(OvsdbClientKey key,
+ public OvsdbPortTransactionCommand(ConnectionInfo key,
TableUpdates updates, DatabaseSchema dbSchema) {
super(key, updates, dbSchema);
// TODO Auto-generated constructor stub
import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
import org.opendaylight.ovsdb.schema.openvswitch.Interface;
import org.opendaylight.ovsdb.schema.openvswitch.Port;
-import org.opendaylight.ovsdb.southbound.OvsdbClientKey;
import org.opendaylight.ovsdb.southbound.SouthboundConstants;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbPortInterfaceAttributes;
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.OvsdbTerminationPointAugmentationBuilder;
+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.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceExternalIds;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceExternalIdsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceOtherConfigs;
public class OvsdbPortUpdateCommand extends AbstractTransactionCommand {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbPortUpdateCommand.class);
- public OvsdbPortUpdateCommand(OvsdbClientKey key, TableUpdates updates,
+ public OvsdbPortUpdateCommand(ConnectionInfo key, TableUpdates updates,
DatabaseSchema dbSchema) {
super(key, updates, dbSchema);
}
if (portUUID.equals(port.getUuid())) {
bridgeName = bridge.getName();
NodeId bridgeId = SouthboundMapper.createManagedNodeId(
- getKey(), new OvsdbBridgeName(bridgeName));
+ getConnectionInfo(), new OvsdbBridgeName(bridgeName));
final InstanceIdentifier<Node> nodePath = SouthboundMapper
.createInstanceIdentifier(bridgeId);
Optional<Node> node = readNode(transaction, nodePath);
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
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.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfoBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
-
/**
* Unit test for {@link OvsdbClientKey}
*
public class OvsdbClientKeyTest {
private static final String ADDRESS_STR = "192.168.120.1";
private static final String PORT_STR = "6640";
- private OvsdbClientKey ovsdbClientKeyTest;
+ private ConnectionInfo ovsdbClientKeyTest;
private InstanceIdentifier<Node> nodePath;
@Before
public void setUp() {
Ipv4Address ipv4 = new Ipv4Address(ADDRESS_STR);
PortNumber port = new PortNumber(Integer.parseInt(PORT_STR));
- ovsdbClientKeyTest = new OvsdbClientKey(new IpAddress(ipv4), port);
+ ConnectionInfoBuilder connectionInfoBuilder = new ConnectionInfoBuilder();
+ connectionInfoBuilder.setRemoteIp(new IpAddress(ipv4));
+ connectionInfoBuilder.setRemotePort(port);
+ ovsdbClientKeyTest = connectionInfoBuilder.build();
String uriString = SouthboundConstants.OVSDB_URI_PREFIX + "://" + ADDRESS_STR + ":" + PORT_STR;
Uri uri = new Uri(uriString);
public void testToInstanceIndentifier() {
Assert.assertNotNull("OvsdbClientKey should not be null", ovsdbClientKeyTest);
- PowerMockito.mockStatic(SouthboundMapper.class);
- PowerMockito.when(SouthboundMapper.createInstanceIdentifier(any(IpAddress.class), any(PortNumber.class)))
- .thenReturn(nodePath);
-
- Assert.assertEquals("Failed to return " + nodePath, nodePath, ovsdbClientKeyTest.toInstanceIndentifier());
+ Assert.assertEquals("Failed to return " + nodePath, nodePath, SouthboundMapper.createInstanceIdentifier(ovsdbClientKeyTest));
}
}
\ No newline at end of file