}
grouping hwvtep-mcast-mac-table-attributes {
- leaf locator-set-ref {
- description "Reference to a set of physical locators used for replication";
- type hwvtep-physical-locator-set-ref;
+ description "Multicast mac table attributes";
+ leaf ipaddr {
+ description "Optional IP address associated with the mac";
+ type inet:ip-address;
}
+ uses hwvtep-physical-locator-set-attributes;
}
grouping hwvtep-tunnel-attributes {
+ leaf tunnel-uuid {
+ description "The unique identifier of the tunnel";
+ type yang:uuid;
+ }
leaf local-locator-ref {
description "Reference to the physical locator to reach this entry";
type hwvtep-physical-locator-ref;
grouping hwvtep-physical-switch-attributes {
uses hwvtep-node-identification;
+
+ leaf physical-switch-uuid {
+ description "The unique identifier of the physical-switch";
+ type yang:uuid;
+ }
list management-ips {
key "management-ips-key";
leaf management-ips-key {
}
grouping hwvtep-physical-locator-attributes {
+ leaf physical-locator-uuid {
+ description "The unique identifier of the physical-locator";
+ type yang:uuid;
+ }
leaf encapsulation-type {
type encapsulation-type;
description "Encapsulation type used by this locator";
grouping hwvtep-logical-switch-attributes {
uses hwvtep-node-identification;
- leaf hwvtep-logical-switch-external-id {
+ leaf logical-switch-uuid {
description "A unique identifier of the logical switch";
type yang:uuid;
}
description "Per Logical Switch tunnel key";
type string;
}
- uses hwvtep-physical-locator-set-attributes;
}
grouping hwvtep-physical-port-attributes {
description "Reference to logical switch for the vlan";
type hwvtep-logical-switch-ref;
}
+ leaf physical-port-uuid {
+ description "The unique identifier of the physical-port";
+ type yang:uuid;
+ }
}
}
HwvtepGlobalAugmentation hwvtepGlobal = node.getAugmentation(HwvtepGlobalAugmentation.class);
PhysicalSwitchAugmentation pSwitchNode = node.getAugmentation(PhysicalSwitchAugmentation.class);
if (hwvtepGlobal != null) {
- return getConnectionInstance(hwvtepGlobal.getConnectionInfo());
+ if(hwvtepGlobal.getConnectionInfo() != null) {
+ return getConnectionInstance(hwvtepGlobal.getConnectionInfo());
+ } else {
+ // TODO: Case of user configured connection
+ return null; //for now
+ }
} //TODO: We could get it from Managers also.
else if(pSwitchNode != null){
return getConnectionInstance(pSwitchNode);
import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.HwvtepOperationalState;
import org.opendaylight.ovsdb.hwvtepsouthbound.transact.TransactCommandAggregator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.base.Optional;
+
public class HwvtepDataChangeListener implements DataTreeChangeListener<Node>, AutoCloseable {
private ListenerRegistration<HwvtepDataChangeListener> registration;
Node node = getCreated(mod);
if (node != null) {
HwvtepGlobalAugmentation hwvtepGlobal = node.getAugmentation(HwvtepGlobalAugmentation.class);
- if (hwvtepGlobal != null) {
+ // We can only connect if user configured connection info
+ if (hwvtepGlobal != null && hwvtepGlobal.getConnectionInfo() != null) {
ConnectionInfo connection = hwvtepGlobal.getConnectionInfo();
InstanceIdentifier<Node> iid = hcm.getInstanceIdentifier(connection);
if (iid != null) {
Node original = getOriginal(mod);
HwvtepGlobalAugmentation hgUpdated = updated.getAugmentation(HwvtepGlobalAugmentation.class);
HwvtepGlobalAugmentation hgOriginal = original.getAugmentation(HwvtepGlobalAugmentation.class);
- if (hgUpdated != null && hgOriginal != null) {
+ // Check if user has updated connection information
+ if (hgUpdated != null && hgOriginal != null && hgUpdated.getConnectionInfo() != null) {
OvsdbClient client = hcm.getClient(hgUpdated.getConnectionInfo());
if (client == null) {
try {
//From original node to get connection instance
Node node = mod.getDataBefore()!=null ? mod.getDataBefore() : mod.getDataAfter();
HwvtepConnectionInstance connection = hcm.getConnectionInstance(node);
+ if(connection == null) {
+ //Let us try getting it from Operational DS
+ final ReadWriteTransaction transaction = db.newReadWriteTransaction();
+ InstanceIdentifier<Node> connectionIid = HwvtepSouthboundMapper.createInstanceIdentifier(node.getNodeId());
+ Optional<Node> optionalNode = HwvtepSouthboundUtil.readNode(transaction, connectionIid);
+ LOG.trace("Node in Operational DataStore for user node {} is {}", node, optionalNode);
+ if(optionalNode.isPresent()) {
+ connection = hcm.getConnectionInstance(optionalNode.get());
+ }
+ }
if (connection != null) {
if (!result.containsKey(connection)) {
List<DataTreeModification<Node>> tempChanges= new ArrayList<DataTreeModification<Node>>();
public static final String UUID = "uuid";
public static final ImmutableBiMap<Class<? extends EncapsulationTypeBase>,String> ENCAPS_TYPE_MAP
= new ImmutableBiMap.Builder<Class<? extends EncapsulationTypeBase>,String>()
- .put(EncapsulationTypeVxlanOverIpv4.class,"vxlan-over-ipv4")
+ .put(EncapsulationTypeVxlanOverIpv4.class,"vxlan_over_ipv4")
.build();
}
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.hwvtep.rev150901.hwvtep.global.attributes.ConnectionInfo;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitchesKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.EncapsulationTypeBase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.EncapsulationTypeVxlanOverIpv4;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepNodeName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.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;
private static final Logger LOG = LoggerFactory.getLogger(HwvtepSouthboundMapper.class);
private static final String N_CONNECTIONS_STR = "n_connections";
- private static NodeId createNodeId(HwvtepConnectionInstance client) {
- NodeKey key = client.getInstanceIdentifier().firstKeyOf(Node.class, NodeKey.class);
- return key.getNodeId();
-
- }
-
public static InstanceIdentifier<Node> createInstanceIdentifier(NodeId nodeId) {
return InstanceIdentifier
.create(NetworkTopology.class)
.child(Node.class, nodeKey).build();
}
- public static InstanceIdentifier<Node> createInstanceIdentifier(HwvtepConnectionInstance client,
+ public static InstanceIdentifier<LogicalSwitches> createInstanceIdentifier(HwvtepConnectionInstance client,
LogicalSwitch lSwitch) {
- String nodeString = client.getNodeKey().getNodeId().getValue() + "/logicalswitch/" + lSwitch.getName();
- NodeId nodeId = new NodeId(new Uri(nodeString));
- NodeKey nodeKey = new NodeKey(nodeId);
- return InstanceIdentifier.builder(NetworkTopology.class)
+ InstanceIdentifier<LogicalSwitches> iid = null;
+ iid = InstanceIdentifier.builder(NetworkTopology.class)
.child(Topology.class, new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID))
- .child(Node.class, nodeKey).build();
+ .child(Node.class, client.getNodeKey()).augmentation(HwvtepGlobalAugmentation.class)
+ .child(LogicalSwitches.class, new LogicalSwitchesKey(new HwvtepNodeName(lSwitch.getName())))
+ .build();
+ /* TODO: Will this work instead to make it simpler?
+ iid = client.getInstanceIdentifier().builder()
+ .child(LogicalSwitches.class, new LogicalSwitchesKey(new HwvtepNodeName(lSwitch.getName())))).build()
+ */
+ return iid;
}
public static Class<? extends EncapsulationTypeBase> createEncapsulationType(String type) {
return result;
}
-/* public static Optional<HwvtepGlobalAugmentation> getManagingNode(DataBroker db,
- HwvtepLogicalSwitchAttributes lNode) {
- Preconditions.checkNotNull(lNode);
- Optional<HwvtepGlobalAugmentation> result = null;
-
- HwvtepGlobalRef ref = lNode.getLogicalSwitchManagedBy();
- if (ref != null && ref.getValue() != null) {
- result = getManagingNode(db, ref);
- } else {
- LOG.warn("Cannot find client for LogicalSwitch without a specified ManagedBy {}", lNode);
- return Optional.absent();
- }
- if(!result.isPresent()) {
- LOG.warn("Failed to find managing node for PhysicalSwitch {}",lNode);
- }
- return result;
- }*/
-
private static Optional<HwvtepGlobalAugmentation> getManagingNode(DataBroker db, HwvtepGlobalRef ref) {
try {
ReadOnlyTransaction transaction = db.newReadOnlyTransaction();
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.PhysicalSwitchAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitchesKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSet;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
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;
return Optional.absent();
}
- public Optional<LocatorSet> getPhysicalLocatorSet(InstanceIdentifier<?> iid) {
- Optional<Node> nodeOptional = getGlobalNode(iid);
- //TODO: physical locator set are under different logical switches
- /*if (nodeOptional.isPresent()) {
- return Optional.fromNullable(nodeOptional.get().getAugmentation(HwvtepGlobalAugmentation.class).getLogicalSwitches());
- }*/
- return Optional.absent();
- }
-
public Optional<TerminationPoint> getHwvtepTerminationPoint(InstanceIdentifier<?> iid) {
if (iid != null) {
Optional<Node> nodeOptional = getGlobalNode(iid);
public HwvtepOperationalCommandAggregator(HwvtepConnectionInstance key,TableUpdates updates,
DatabaseSchema dbSchema) {
- //TODO: Add commands in here
commands.add(new GlobalUpdateCommand(key, updates, dbSchema));
commands.add(new PhysicalSwitchUpdateCommand(key, updates, dbSchema));
commands.add(new PhysicalSwitchRemoveCommand(key, updates, dbSchema));
commands.add(new PhysicalPortRemoveCommand(key, updates, dbSchema));
commands.add(new HwvtepTunnelUpdateCommand(key, updates, dbSchema));
commands.add(new PhysicalLocatorUpdateCommand(key, updates, dbSchema));
- commands.add(new PhysicalLocatorSetUpdateCommand(key, updates, dbSchema));
+ commands.add(new PhysicalLocatorRemoveCommand(key, updates, dbSchema));
commands.add(new UcastMacsLocalUpdateCommand(key, updates, dbSchema));
- commands.add(new UcastMacsLocalRemoveCommand(key, updates, dbSchema));
commands.add(new UcastMacsRemoteUpdateCommand(key, updates, dbSchema));
- commands.add(new UcastMacsRemoteRemoveCommand(key, updates, dbSchema));
commands.add(new McastMacsLocalUpdateCommand(key, updates, dbSchema));
- commands.add(new McastMacsLocalRemoveCommand(key, updates, dbSchema));
commands.add(new McastMacsRemoteUpdateCommand(key, updates, dbSchema));
- commands.add(new McastMacsRemoteRemoveCommand(key, updates, dbSchema));
+ commands.add(new MacEntriesRemoveCommand(key, updates, dbSchema));
}
@Override
final InstanceIdentifier<Node> connectionIId = getOvsdbConnectionInstance().getInstanceIdentifier();
Optional<Node> connection = HwvtepSouthboundUtil.readNode(transaction, connectionIId);
if (connection.isPresent()) {
- LOG.debug("Connection {} is present",connection);
Node connectionNode = buildConnectionNode(lSwitch);
transaction.merge(LogicalDatastoreType.OPERATIONAL, connectionIId, connectionNode);
// TODO: Delete entries that are no longer needed
HwvtepGlobalAugmentationBuilder hgAugmentationBuilder = new HwvtepGlobalAugmentationBuilder();
List<LogicalSwitches> lSwitches = new ArrayList<>();
LogicalSwitchesBuilder lsBuilder = new LogicalSwitchesBuilder();
- lsBuilder.setHwvtepLogicalSwitchExternalId(new Uuid(lSwitch.getUuid().toString()));
+ lsBuilder.setLogicalSwitchUuid(new Uuid(lSwitch.getUuid().toString()));
lsBuilder.setHwvtepNodeDescription(lSwitch.getDescription());
HwvtepNodeName hwvtepName = new HwvtepNodeName(lSwitch.getName());
lsBuilder.setHwvtepNodeName(hwvtepName);
--- /dev/null
+/*
+ * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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.hwvtepsouthbound.transactions.md;
+
+import java.util.Collection;
+
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
+import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
+import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsLocal;
+import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsRemote;
+import org.opendaylight.ovsdb.schema.hardwarevtep.UcastMacsLocal;
+import org.opendaylight.ovsdb.schema.hardwarevtep.UcastMacsRemote;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacs;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacsKey;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MacEntriesRemoveCommand extends AbstractTransactionCommand {
+
+ private static final Logger LOG = LoggerFactory.getLogger(MacEntriesRemoveCommand.class);
+
+ public MacEntriesRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
+ DatabaseSchema dbSchema) {
+ super(key, updates, dbSchema);
+ }
+
+ @Override
+ public void execute(ReadWriteTransaction transaction) {
+ removeUcastMacsLocal(transaction);
+ removeUcastMacsRemote(transaction);
+ removeMcastMacsLocal(transaction);
+ removeMcastMacsRemote(transaction);
+ }
+
+ private void removeUcastMacsLocal(ReadWriteTransaction transaction) {
+ Collection<UcastMacsLocal> deletedLUMRows = TyperUtils.extractRowsRemoved(UcastMacsLocal.class, getUpdates(),getDbSchema()).values();
+ if(deletedLUMRows!=null && !deletedLUMRows.isEmpty()){
+ for (UcastMacsLocal lum : deletedLUMRows){
+ InstanceIdentifier<LocalUcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
+ .augmentation(HwvtepGlobalAugmentation.class)
+ .child(LocalUcastMacs.class, new LocalUcastMacsKey(new MacAddress(lum.getMac())));
+ transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
+ }
+ }
+ }
+
+ private void removeUcastMacsRemote(ReadWriteTransaction transaction) {
+ Collection<UcastMacsRemote> deletedUMRRows = TyperUtils.extractRowsRemoved(UcastMacsRemote.class, getUpdates(),getDbSchema()).values();
+ if(deletedUMRRows!=null && !deletedUMRRows.isEmpty()){
+ for (UcastMacsRemote lum : deletedUMRRows){
+ InstanceIdentifier<RemoteUcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
+ .augmentation(HwvtepGlobalAugmentation.class)
+ .child(RemoteUcastMacs.class, new RemoteUcastMacsKey(new MacAddress(lum.getMac())));
+ transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
+ }
+ }
+ }
+
+ private void removeMcastMacsLocal(ReadWriteTransaction transaction) {
+ Collection<McastMacsLocal> deletedLMMRows = TyperUtils.extractRowsRemoved(McastMacsLocal.class, getUpdates(),getDbSchema()).values();
+ if(deletedLMMRows!=null && !deletedLMMRows.isEmpty()){
+ for (McastMacsLocal lmm : deletedLMMRows){
+ InstanceIdentifier<LocalMcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
+ .augmentation(HwvtepGlobalAugmentation.class)
+ .child(LocalMcastMacs.class, new LocalMcastMacsKey(new MacAddress(lmm.getMac())));
+ transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
+ }
+ }
+ }
+
+ private void removeMcastMacsRemote(ReadWriteTransaction transaction) {
+ Collection<McastMacsRemote> deletedMMRRows = TyperUtils.extractRowsRemoved(McastMacsRemote.class, getUpdates(),getDbSchema()).values();
+ if(deletedMMRRows!=null && !deletedMMRRows.isEmpty()){
+ for (McastMacsRemote lum : deletedMMRRows){
+ InstanceIdentifier<RemoteMcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
+ .augmentation(HwvtepGlobalAugmentation.class)
+ .child(RemoteMcastMacs.class, new RemoteMcastMacsKey(new MacAddress(lum.getMac())));
+ transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
+ }
+ }
+ }
+
+}
+++ /dev/null
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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.hwvtepsouthbound.transactions.md;
-
-import java.util.Collection;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsLocal;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacsKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class McastMacsLocalRemoveCommand extends AbstractTransactionCommand {
-
- private static final Logger LOG = LoggerFactory.getLogger(McastMacsLocalRemoveCommand.class);
-
- public McastMacsLocalRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
- DatabaseSchema dbSchema) {
- super(key, updates, dbSchema);
- }
-
- @Override
- public void execute(ReadWriteTransaction transaction) {
- Collection<McastMacsLocal> deletedLMMRows = TyperUtils.extractRowsRemoved(McastMacsLocal.class, getUpdates(),getDbSchema()).values();
- if(deletedLMMRows!=null && !deletedLMMRows.isEmpty()){
- for (McastMacsLocal lmm : deletedLMMRows){
- InstanceIdentifier<LocalMcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
- .augmentation(HwvtepGlobalAugmentation.class)
- .child(LocalMcastMacs.class, new LocalMcastMacsKey(new MacAddress(lmm.getMac())));
- transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
- }
- }
- }
-
-}
package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
import com.google.common.base.Optional;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalSwitch;
import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsLocal;
import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocatorSet;
+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.yang.types.rev130715.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepLogicalSwitchRef;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorSetRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacs;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSetBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
private static final Logger LOG = LoggerFactory.getLogger(McastMacsLocalUpdateCommand.class);
private Map<UUID, McastMacsLocal> updatedMMacsLocalRows;
private Map<UUID, McastMacsLocal> oldMMacsLocalRows;
+ private Map<UUID, PhysicalLocatorSet> updatedPLocSetRows;
private Map<UUID, PhysicalLocator> updatedPLocRows;
private Map<UUID, LogicalSwitch> updatedLSRows;
super(key, updates, dbSchema);
updatedMMacsLocalRows = TyperUtils.extractRowsUpdated(McastMacsLocal.class, getUpdates(),getDbSchema());
oldMMacsLocalRows = TyperUtils.extractRowsOld(McastMacsLocal.class, getUpdates(),getDbSchema());
+ updatedPLocSetRows = TyperUtils.extractRowsUpdated(PhysicalLocatorSet.class, getUpdates(),getDbSchema());
updatedPLocRows = TyperUtils.extractRowsUpdated(PhysicalLocator.class, getUpdates(),getDbSchema());
updatedLSRows = TyperUtils.extractRowsUpdated(LogicalSwitch.class, getUpdates(),getDbSchema());
}
}
private Node buildConnectionNode(McastMacsLocal mMacLocal) {
- //Update node with McastMacsLocal reference
NodeBuilder connectionNode = new NodeBuilder();
connectionNode.setNodeId(getOvsdbConnectionInstance().getNodeId());
- InstanceIdentifier<Node> nodeIid = getOvsdbConnectionInstance().getInstanceIdentifier();
HwvtepGlobalAugmentationBuilder hgAugmentationBuilder = new HwvtepGlobalAugmentationBuilder();
LocalMcastMacsBuilder mMacLocalBuilder= new LocalMcastMacsBuilder();
mMacLocalBuilder.setMacEntryKey(new MacAddress(mMacLocal.getMac()));
- if(mMacLocal.getLocatorSetColumn() != null
- && mMacLocal.getLocatorSetColumn().getData() != null){
- UUID plocUUID = mMacLocal.getLocatorSetColumn().getData();
- if(updatedPLocRows.get(plocUUID) != null ){
- InstanceIdentifier<TerminationPoint> plIid = HwvtepSouthboundMapper.createInstanceIdentifier(nodeIid, updatedPLocRows.get(plocUUID));
- mMacLocalBuilder.setLocatorSetRef(new HwvtepPhysicalLocatorSetRef(plIid));
- }
- }
- if(mMacLocal.getLogicalSwitchColumn() != null
- && mMacLocal.getLogicalSwitchColumn().getData() != null){
- UUID lsUUID = mMacLocal.getLogicalSwitchColumn().getData();
- if (updatedLSRows.get(lsUUID) != null) {
- mMacLocalBuilder.setLogicalSwitchRef(new HwvtepLogicalSwitchRef(updatedLSRows.get(lsUUID).getName()));
- }
- }
+ setIpAddress(mMacLocalBuilder, mMacLocal);
+ setLocatorSet(mMacLocalBuilder, mMacLocal);
+ setLogicalSwitch(mMacLocalBuilder, mMacLocal);
+
List<LocalMcastMacs> mMacLocalList = new ArrayList<>();
mMacLocalList.add(mMacLocalBuilder.build());
hgAugmentationBuilder.setLocalMcastMacs(mMacLocalList);
return connectionNode.build();
}
+ private void setLogicalSwitch(LocalMcastMacsBuilder mMacLocalBuilder, McastMacsLocal mMacLocal) {
+ LogicalSwitch lSwitch = null;
+ if (mMacLocal.getLogicalSwitchColumn() != null && mMacLocal.getLogicalSwitchColumn().getData() != null) {
+ UUID lsUUID = mMacLocal.getLogicalSwitchColumn().getData();
+ if (updatedLSRows.get(lsUUID) != null) {
+ lSwitch = updatedLSRows.get(lsUUID);
+ mMacLocalBuilder.setLogicalSwitchRef(new HwvtepLogicalSwitchRef(lSwitch.getName()));
+ }
+ }
+ }
+
+ private void setIpAddress(LocalMcastMacsBuilder mMacLocalBuilder, McastMacsLocal mMacLocal) {
+ if(mMacLocal.getIpAddr() != null && !mMacLocal.getIpAddr().isEmpty()) {
+ mMacLocalBuilder.setIpaddr(new IpAddress(mMacLocal.getIpAddr().toCharArray()));
+ }
+ }
+
+ private void setLocatorSet(LocalMcastMacsBuilder mMacLocalBuilder, McastMacsLocal mMacLocal) {
+ if (mMacLocal.getLocatorSetColumn() != null && mMacLocal.getLocatorSetColumn().getData() != null) {
+ UUID pLocSetUUID = mMacLocal.getLocatorSetColumn().getData();
+ if (updatedPLocSetRows.get(pLocSetUUID) != null) {
+ PhysicalLocatorSet plSet = updatedPLocSetRows.get(pLocSetUUID);
+ if (plSet.getLocatorsColumn() != null && plSet.getLocatorsColumn().getData() != null
+ && !plSet.getLocatorsColumn().getData().isEmpty()) {
+ List<LocatorSet> plsList = new ArrayList<>();
+ for (UUID pLocUUID : plSet.getLocatorsColumn().getData()) {
+ PhysicalLocator pLoc = updatedPLocRows.get(pLocUUID);
+ InstanceIdentifier<TerminationPoint> tpIid = HwvtepSouthboundMapper.createInstanceIdentifier(
+ getOvsdbConnectionInstance().getInstanceIdentifier(), pLoc);
+ plsList.add(new LocatorSetBuilder()
+ .setLocatorRef(new HwvtepPhysicalLocatorRef(tpIid)).build());
+ }
+ mMacLocalBuilder.setLocatorSet(plsList);
+ }
+ }
+ }
+ }
+
}
+++ /dev/null
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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.hwvtepsouthbound.transactions.md;
-
-import java.util.Collection;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsRemote;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacsKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class McastMacsRemoteRemoveCommand extends AbstractTransactionCommand {
-
- private static final Logger LOG = LoggerFactory.getLogger(McastMacsRemoteRemoveCommand.class);
-
- public McastMacsRemoteRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
- DatabaseSchema dbSchema) {
- super(key, updates, dbSchema);
- }
-
- @Override
- public void execute(ReadWriteTransaction transaction) {
- Collection<McastMacsRemote> deletedMMRRows = TyperUtils.extractRowsRemoved(McastMacsRemote.class, getUpdates(),getDbSchema()).values();
- if(deletedMMRRows!=null && !deletedMMRRows.isEmpty()){
- for (McastMacsRemote lum : deletedMMRRows){
- InstanceIdentifier<RemoteMcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
- .augmentation(HwvtepGlobalAugmentation.class)
- .child(RemoteMcastMacs.class, new RemoteMcastMacsKey(new MacAddress(lum.getMac())));
- transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
- }
- }
- }
-
-}
package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
import com.google.common.base.Optional;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalSwitch;
import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsRemote;
import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocatorSet;
+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.yang.types.rev130715.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepLogicalSwitchRef;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorSetRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSetBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
private static final Logger LOG = LoggerFactory.getLogger(McastMacsRemoteUpdateCommand.class);
private Map<UUID, McastMacsRemote> updatedMMacsRemoteRows;
private Map<UUID, McastMacsRemote> oldMMacsRemoteRows;
+ private Map<UUID, PhysicalLocatorSet> updatedPLocSetRows;
private Map<UUID, PhysicalLocator> updatedPLocRows;
private Map<UUID, LogicalSwitch> updatedLSRows;
super(key, updates, dbSchema);
updatedMMacsRemoteRows = TyperUtils.extractRowsUpdated(McastMacsRemote.class, getUpdates(),getDbSchema());
oldMMacsRemoteRows = TyperUtils.extractRowsOld(McastMacsRemote.class, getUpdates(),getDbSchema());
+ updatedPLocSetRows = TyperUtils.extractRowsUpdated(PhysicalLocatorSet.class, getUpdates(),getDbSchema());
updatedPLocRows = TyperUtils.extractRowsUpdated(PhysicalLocator.class, getUpdates(),getDbSchema());
updatedLSRows = TyperUtils.extractRowsUpdated(LogicalSwitch.class, getUpdates(),getDbSchema());
}
}
private Node buildConnectionNode(McastMacsRemote mMacRemote) {
- //Update node with McastMacsRemote reference
NodeBuilder connectionNode = new NodeBuilder();
connectionNode.setNodeId(getOvsdbConnectionInstance().getNodeId());
- InstanceIdentifier<Node> nodeIid = getOvsdbConnectionInstance().getInstanceIdentifier();
HwvtepGlobalAugmentationBuilder hgAugmentationBuilder = new HwvtepGlobalAugmentationBuilder();
RemoteMcastMacsBuilder mMacRemoteBuilder= new RemoteMcastMacsBuilder();
mMacRemoteBuilder.setMacEntryKey(new MacAddress(mMacRemote.getMac()));
- if(mMacRemote.getLocatorSetColumn() != null
- && mMacRemote.getLocatorSetColumn().getData() != null){
- UUID plocUUID = mMacRemote.getLocatorSetColumn().getData();
- if(updatedPLocRows.get(plocUUID) != null ){
- InstanceIdentifier<TerminationPoint> plIid = HwvtepSouthboundMapper.createInstanceIdentifier(nodeIid, updatedPLocRows.get(plocUUID));
- mMacRemoteBuilder.setLocatorSetRef(new HwvtepPhysicalLocatorSetRef(plIid));
- }
- }
- if(mMacRemote.getLogicalSwitchColumn() != null
- && mMacRemote.getLogicalSwitchColumn().getData() != null){
- UUID lsUUID = mMacRemote.getLogicalSwitchColumn().getData();
- if (updatedLSRows.get(lsUUID) != null) {
- mMacRemoteBuilder.setLogicalSwitchRef(new HwvtepLogicalSwitchRef(updatedLSRows.get(lsUUID).getName()));
- }
- }
+ setIpAddress(mMacRemoteBuilder, mMacRemote);
+ setLocatorSet(mMacRemoteBuilder, mMacRemote);
+ setLogicalSwitch(mMacRemoteBuilder, mMacRemote);
+
List<RemoteMcastMacs> mMacRemoteList = new ArrayList<>();
mMacRemoteList.add(mMacRemoteBuilder.build());
hgAugmentationBuilder.setRemoteMcastMacs(mMacRemoteList);
return connectionNode.build();
}
+ private void setLogicalSwitch(RemoteMcastMacsBuilder mMacRemoteBuilder, McastMacsRemote mMacRemote) {
+ LogicalSwitch lSwitch = null;
+ if (mMacRemote.getLogicalSwitchColumn() != null && mMacRemote.getLogicalSwitchColumn().getData() != null) {
+ UUID lsUUID = mMacRemote.getLogicalSwitchColumn().getData();
+ if (updatedLSRows.get(lsUUID) != null) {
+ lSwitch = updatedLSRows.get(lsUUID);
+ mMacRemoteBuilder.setLogicalSwitchRef(new HwvtepLogicalSwitchRef(lSwitch.getName()));
+ }
+ }
+ }
+
+ private void setIpAddress(RemoteMcastMacsBuilder mMacRemoteBuilder, McastMacsRemote mMacRemote) {
+ if(mMacRemote.getIpAddr() != null && !mMacRemote.getIpAddr().isEmpty()) {
+ mMacRemoteBuilder.setIpaddr(new IpAddress(mMacRemote.getIpAddr().toCharArray()));
+ }
+ }
+
+ private void setLocatorSet(RemoteMcastMacsBuilder mMacRemoteBuilder, McastMacsRemote mMacRemote) {
+ if (mMacRemote.getLocatorSetColumn() != null && mMacRemote.getLocatorSetColumn().getData() != null) {
+ UUID pLocSetUUID = mMacRemote.getLocatorSetColumn().getData();
+ if (updatedPLocSetRows.get(pLocSetUUID) != null) {
+ PhysicalLocatorSet plSet = updatedPLocSetRows.get(pLocSetUUID);
+ if (plSet.getLocatorsColumn() != null && plSet.getLocatorsColumn().getData() != null
+ && !plSet.getLocatorsColumn().getData().isEmpty()) {
+ List<LocatorSet> plsList = new ArrayList<>();
+ for (UUID pLocUUID : plSet.getLocatorsColumn().getData()) {
+ PhysicalLocator pLoc = updatedPLocRows.get(pLocUUID);
+ InstanceIdentifier<TerminationPoint> tpIid = HwvtepSouthboundMapper.createInstanceIdentifier(
+ getOvsdbConnectionInstance().getInstanceIdentifier(), pLoc);
+ plsList.add(new LocatorSetBuilder()
+ .setLocatorRef(new HwvtepPhysicalLocatorRef(tpIid)).build());
+ }
+ mMacRemoteBuilder.setLocatorSet(plsList);
+ }
+ }
+ }
+ }
+
}
--- /dev/null
+/*
+ * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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.hwvtepsouthbound.transactions.md;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
+import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundMapper;
+import org.opendaylight.ovsdb.lib.message.TableUpdates;
+import org.opendaylight.ovsdb.lib.notation.UUID;
+import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
+import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalPort;
+import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalSwitch;
+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;
+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;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PhysicalLocatorRemoveCommand extends AbstractTransactionCommand {
+
+ private static final Logger LOG = LoggerFactory.getLogger(PhysicalLocatorRemoveCommand.class);
+
+ public PhysicalLocatorRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
+ DatabaseSchema dbSchema) {
+ super(key, updates, dbSchema);
+ }
+
+ @Override
+ public void execute(ReadWriteTransaction transaction) {
+ Collection<PhysicalLocator> deletedPLRows = TyperUtils.extractRowsRemoved(PhysicalLocator.class, getUpdates(),getDbSchema()).values();
+ if(deletedPLRows != null && !deletedPLRows.isEmpty()) {
+ for (PhysicalLocator pLoc : deletedPLRows) {
+ final InstanceIdentifier<Node> connectionIId = getOvsdbConnectionInstance().getInstanceIdentifier();
+ final InstanceIdentifier<TerminationPoint> nodePath = HwvtepSouthboundMapper
+ .createInstanceIdentifier(connectionIId, pLoc);
+ transaction.delete(LogicalDatastoreType.OPERATIONAL, nodePath);
+ //TODO: Check if any cleanup is required
+ }
+ }
+ }
+
+}
+++ /dev/null
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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.hwvtepsouthbound.transactions.md;
-
-import java.util.Map;
-
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.notation.UUID;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocatorSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class PhysicalLocatorSetUpdateCommand extends AbstractTransactionCommand {
-
- private static final Logger LOG = LoggerFactory.getLogger(PhysicalLocatorSetUpdateCommand.class);
- private Map<UUID, PhysicalLocatorSet> updatedPLocSetRows;
- private Map<UUID, PhysicalLocatorSet> oldPLocSetRows;
-
- public PhysicalLocatorSetUpdateCommand(HwvtepConnectionInstance key, TableUpdates updates,
- DatabaseSchema dbSchema) {
- super(key, updates, dbSchema);
- updatedPLocSetRows = TyperUtils.extractRowsUpdated(PhysicalLocatorSet.class, getUpdates(),getDbSchema());
- oldPLocSetRows = TyperUtils.extractRowsOld(PhysicalLocatorSet.class, getUpdates(),getDbSchema());
- }
-
- @Override
- public void execute(ReadWriteTransaction transaction) {
- // TODO Auto-generated method stub
- }
-
-}
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
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.yang.types.rev130715.Uuid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
|| updatedPLocRows.isEmpty()) {
return;
}
- LOG.trace("PhysicalLocatorTable updated: {}", updatedPLocRows);
Optional<Node> node = HwvtepSouthboundUtil.readNode(transaction, connectionIId);
if (node.isPresent()) {
updateTerminationPoints(transaction, node.get());
HwvtepSouthboundMapper.createInstanceIdentifier(nodeIid, pLoc);
HwvtepPhysicalLocatorAugmentationBuilder tpAugmentationBuilder =
new HwvtepPhysicalLocatorAugmentationBuilder();
+ tpAugmentationBuilder.setPhysicalLocatorUuid(new Uuid(pLoc.getUuid().toString()));
setEncapsType(tpAugmentationBuilder, pLoc);
setDstIp(tpAugmentationBuilder, pLoc);
tpBuilder.addAugmentation(HwvtepPhysicalLocatorAugmentation.class, tpAugmentationBuilder.build());
import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalSwitch;
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.yang.types.rev130715.Uuid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalRef;
NodeId psNodeId = getNodeId(pSwitch);
psNodeBuilder.setNodeId(psNodeId);
PhysicalSwitchAugmentationBuilder psAugmentationBuilder = new PhysicalSwitchAugmentationBuilder();
+ psAugmentationBuilder.setPhysicalSwitchUuid(new Uuid(pSwitch.getUuid().toString()));
setManagedBy(psAugmentationBuilder, pSwitch);
setPhysicalSwitchId(psAugmentationBuilder, pSwitch);
setManagementIps(psAugmentationBuilder, pSwitch);
+++ /dev/null
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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.hwvtepsouthbound.transactions.md;
-
-import java.util.Collection;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.UcastMacsLocal;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacsKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class UcastMacsLocalRemoveCommand extends AbstractTransactionCommand {
-
- private static final Logger LOG = LoggerFactory.getLogger(UcastMacsLocalRemoveCommand.class);
-
- public UcastMacsLocalRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
- DatabaseSchema dbSchema) {
- super(key, updates, dbSchema);
- }
-
- @Override
- public void execute(ReadWriteTransaction transaction) {
- Collection<UcastMacsLocal> deletedLUMRows = TyperUtils.extractRowsRemoved(UcastMacsLocal.class, getUpdates(),getDbSchema()).values();
- if(deletedLUMRows!=null && !deletedLUMRows.isEmpty()){
- for (UcastMacsLocal lum : deletedLUMRows){
- InstanceIdentifier<LocalUcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
- .augmentation(HwvtepGlobalAugmentation.class)
- .child(LocalUcastMacs.class, new LocalUcastMacsKey(new MacAddress(lum.getMac())));
- transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
- }
- }
- }
-
-}
+++ /dev/null
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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.hwvtepsouthbound.transactions.md;
-
-import java.util.Collection;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
-import org.opendaylight.ovsdb.lib.message.TableUpdates;
-import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
-import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
-import org.opendaylight.ovsdb.schema.hardwarevtep.UcastMacsRemote;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacsKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class UcastMacsRemoteRemoveCommand extends AbstractTransactionCommand {
-
- private static final Logger LOG = LoggerFactory.getLogger(UcastMacsRemoteRemoveCommand.class);
-
- public UcastMacsRemoteRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates,
- DatabaseSchema dbSchema) {
- super(key, updates, dbSchema);
- }
-
- @Override
- public void execute(ReadWriteTransaction transaction) {
- Collection<UcastMacsRemote> deletedUMRRows = TyperUtils.extractRowsRemoved(UcastMacsRemote.class, getUpdates(),getDbSchema()).values();
- if(deletedUMRRows!=null && !deletedUMRRows.isEmpty()){
- for (UcastMacsRemote lum : deletedUMRRows){
- InstanceIdentifier<RemoteUcastMacs> lumId = getOvsdbConnectionInstance().getInstanceIdentifier()
- .augmentation(HwvtepGlobalAugmentation.class)
- .child(RemoteUcastMacs.class, new RemoteUcastMacsKey(new MacAddress(lum.getMac())));
- transaction.delete(LogicalDatastoreType.OPERATIONAL, lumId);
- }
- }
- }
-
-}