import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
-
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.genius.itm.impl.ItmUtils;
import org.opendaylight.genius.mdsalutil.MDSALUtil;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.NotHostedTransportZones;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZones;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TepsNotHostedInTransportZone;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TepsNotHostedInTransportZoneBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TepsNotHostedInTransportZoneKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.not.hosted.transport.zones.TepsInNotHostedTransportZone;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.not.hosted.transport.zones.TepsInNotHostedTransportZoneBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.not.hosted.transport.zones.TepsInNotHostedTransportZoneKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.not.hosted.transport.zones.tepsinnothostedtransportzone.UnknownVteps;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.not.hosted.transport.zones.tepsinnothostedtransportzone.UnknownVtepsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.not.hosted.transport.zones.tepsinnothostedtransportzone.UnknownVtepsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZone;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZoneBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZoneKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.tepsnothostedintransportzone.UnknownVteps;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.tepsnothostedintransportzone.UnknownVtepsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.tepsnothostedintransportzone.UnknownVtepsKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.Subnets;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.SubnetsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.transport.zone.SubnetsKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class OvsdbTepAddConfigHelper {
+public final class OvsdbTepAddConfigHelper {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbTepAddConfigHelper.class);
+ private OvsdbTepAddConfigHelper() { }
+
/**
- * Adds the TEP into ITM configuration Datastore in one of the following cases.
+ * Adds the TEP into ITM configuration/operational Datastore in one of the following cases.
* 1) default transport zone
* 2) Configured transport zone
* 3) Unhosted transport zone
* @param strDpnId bridge datapath ID in string
* @param tzName transport zone name in string
* @param ofTunnel boolean flag for TEP to enable/disable of-tunnel feature on it
- * @param dataBroker data broker handle to perform operations on config datastore
+ * @param dataBroker data broker handle to perform operations on config/operational datastore
* @param wrTx WriteTransaction object
*/
}
// Get tep IP
- IpAddress tepIpAddress = new IpAddress(tepIp.toCharArray());
+ IpAddress tepIpAddress = IpAddressBuilder.getDefaultInstance(tepIp);
TransportZone tzone = null;
- // Case: TZ name is not given with CSS TEP.
+ // Case: TZ name is not given with OVS TEP.
if (tzName == null) {
tzName = ITMConstants.DEFAULT_TRANSPORT_ZONE;
// add TEP into default-TZ
// Case: Add TEP into corresponding TZ created from Northbound.
tzone = ItmUtils.getTransportZoneFromConfigDS(tzName, dataBroker);
if (tzone == null) {
- // Case: TZ is not configured from Northbound, then add TEP into "teps-not-hosted-in-transport-zone"
- LOG.trace("Adding TEP with unknown TZ into teps-not-hosted-in-transport-zone.");
+ // Case: TZ is not configured from Northbound, then add TEP into "teps-in-not-hosted-transport-zone"
+ LOG.trace("Adding TEP with unknown TZ into teps-in-not-hosted-transport-zone.");
addUnknownTzTepIntoTepsNotHosted(tzName, tepIpAddress, dpnId, ofTunnel,
dataBroker, wrTx);
return;
if (subnetList == null || subnetList.isEmpty()) {
if (subnetList == null) {
- subnetList = new ArrayList<Subnets>();
+ subnetList = new ArrayList<>();
}
- List<Vteps> vtepList = new ArrayList<Vteps>();
+ List<Vteps> vtepList = new ArrayList<>();
LOG.trace("Add TEP in transport-zone when no subnet-list.");
addVtepInITMConfigDS(subnetList, subnetMaskObj, vtepList, tepIpAddress, tzName, dpnId,
portName, ofTunnel, wrTx);
if (vtepList == null || vtepList.isEmpty()) {
// case: vtep list does not exist or it has no elements
if (vtepList == null) {
- vtepList = new ArrayList<Vteps>();
+ vtepList = new ArrayList<>();
}
LOG.trace("Add TEP in transport-zone when no vtep-list for specific subnet.");
addVtepInITMConfigDS(subnetList, subnetMaskObj, vtepList, tepIpAddress, tzName,
// Add vtep obtained from bridge into list
updatedVtepList.add(vtepObj);
- LOG.trace("Adding TEP (TZ: {} Subnet: {} TEP IP: {} DPID: {}, of-tunnel: {})"
- + "in ITM Config DS.", tzName, subnetMaskObj.getValue().toString(), tepIpAddress,
- dpid, ofTunnel);
+ LOG.trace("Adding TEP (TZ: {} Subnet: {} TEP IP: {} DPID: {}, of-tunnel: {}) in ITM Config DS.", tzName,
+ subnetMaskObj, tepIpAddress, dpid, ofTunnel);
} else {
// this is case when this function is called while TEPs movement from tepsNotHosted list when
// corresponding TZ is configured from northbound.
for (Vteps vtep: updatedVtepList) {
LOG.trace("Moving TEP (TEP IP: {} DPID: {}, of-tunnel: {})"
- + "from tepNotHosted list into transport-zone {} in ITM Config DS.",
- vtep.getIpAddress().getValue().toString(), vtep.getDpnId(), ofTunnel, tzName);
+ + "from not-hosted-transport-zone {} into ITM Config DS.",
+ vtep.getIpAddress(), vtep.getDpnId(), ofTunnel, tzName);
}
}
// Create subnet object
SubnetsKey subKey = new SubnetsKey(subnetMaskObj);
- IpAddress gatewayIP = new IpAddress(ITMConstants.DUMMY_GATEWAY_IP.toCharArray());
+ IpAddress gatewayIP = IpAddressBuilder.getDefaultInstance(ITMConstants.DUMMY_GATEWAY_IP);
int vlanID = ITMConstants.DUMMY_VLANID;
Subnets subnet =
/**
* Adds the TEP into Vtep list in the subnet list in the transport zone list
- * from ITM configuration Datastore by merge operation with write transaction.
+ * from ITM operational Datastore by merge operation with write transaction.
*
* @param tzName transport zone name in string
* @param tepIpAddress TEP IP address in IpAddress object
* @param dpid bridge datapath ID in BigInteger
* @param ofTunnel boolean flag for TEP to enable/disable of-tunnel feature on it
- * @param dataBroker data broker handle to perform operations on config datastore
+ * @param dataBroker data broker handle to perform operations on operational datastore
* @param wrTx WriteTransaction object
*/
protected static void addUnknownTzTepIntoTepsNotHosted(String tzName, IpAddress tepIpAddress,
BigInteger dpid, boolean ofTunnel, DataBroker dataBroker, WriteTransaction wrTx) {
List<UnknownVteps> vtepList = null;
- TepsNotHostedInTransportZone unknownTz =
- ItmUtils.getUnknownTransportZoneFromITMConfigDS(tzName, dataBroker);
- if (unknownTz == null) {
- LOG.trace("Unhosted TransportZone does not exist.");
- vtepList = new ArrayList<UnknownVteps>();
+ TepsInNotHostedTransportZone tepsInNotHostedTransportZone =
+ ItmUtils.getUnknownTransportZoneFromITMOperDS(tzName, dataBroker);
+ if (tepsInNotHostedTransportZone == null) {
+ LOG.trace("Unhosted TransportZone ({}) does not exist in OperDS.", tzName);
+ vtepList = new ArrayList<>();
addVtepIntoTepsNotHosted(vtepList, tepIpAddress, tzName, dpid, ofTunnel, wrTx);
} else {
- vtepList = unknownTz.getUnknownVteps();
+ vtepList = tepsInNotHostedTransportZone.getUnknownVteps();
if (vtepList == null || vtepList.isEmpty()) {
// case: vtep list does not exist or it has no elements
if (vtepList == null) {
- vtepList = new ArrayList<UnknownVteps>();
+ vtepList = new ArrayList<>();
}
- LOG.trace("Add TEP in unhosted TZ ({}) when no vtep-list in the TZ.", tzName);
+ LOG.trace("Add TEP into unhosted TZ ({}) when no vtep-list in the TZ.", tzName);
addVtepIntoTepsNotHosted(vtepList, tepIpAddress, tzName, dpid, ofTunnel, wrTx);
} else {
// case: vtep list has elements
/**
* Adds the TEP into Unknown Vtep list under the transport zone in the TepsNotHosted list
- * from ITM configuration Datastore by merge operation with write transaction.
+ * from ITM operational Datastore by merge operation with write transaction.
*
* @param updatedVtepList updated UnknownVteps list object which will have new TEP for addition
* into TepsNotHosted
IpAddress tepIpAddress, String tzName, BigInteger dpid, boolean ofTunnel,
WriteTransaction wrTx) {
//Create TZ node path
- InstanceIdentifier<TepsNotHostedInTransportZone> transportZonePath =
- InstanceIdentifier.builder(TransportZones.class)
- .child(TepsNotHostedInTransportZone.class,
- new TepsNotHostedInTransportZoneKey(tzName)).build();
+ InstanceIdentifier<TepsInNotHostedTransportZone> tepsInNotHostedTransportZoneIid =
+ InstanceIdentifier.builder(NotHostedTransportZones.class)
+ .child(TepsInNotHostedTransportZone.class,
+ new TepsInNotHostedTransportZoneKey(tzName)).build();
// create vtep
UnknownVtepsKey vtepkey = new UnknownVtepsKey(dpid);
updatedVtepList.add(vtepObj);
// create unknown TZ node with updated vtep list
- TepsNotHostedInTransportZone updatedTzone = new TepsNotHostedInTransportZoneBuilder()
- .setKey(new TepsNotHostedInTransportZoneKey(tzName)).setZoneName(tzName)
+ TepsInNotHostedTransportZone updatedTzone = new TepsInNotHostedTransportZoneBuilder()
+ .setKey(new TepsInNotHostedTransportZoneKey(tzName)).setZoneName(tzName)
.setUnknownVteps(updatedVtepList).build();
- LOG.trace("Adding TEP into unhosted (TZ: {}, DPID: {}, TEP IP: {}, of-tunnel: {})"
- + "in ITM Config DS.", tzName, dpid, tepIpAddress, ofTunnel);
+ LOG.trace("Adding TEP (DPID: {}, TEP IP: {}, of-tunnel: {}) into unhosted TZ: {}"
+ + "inside ITM Oper DS.", dpid, tepIpAddress, ofTunnel, tzName);
- // Update TZ in Config DS.
- wrTx.merge(LogicalDatastoreType.CONFIGURATION, transportZonePath, updatedTzone, true);
+ // Update TZ in Oper DS.
+ wrTx.merge(LogicalDatastoreType.OPERATIONAL, tepsInNotHostedTransportZoneIid, updatedTzone, true);
}
}