use of org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Transport in project genius by opendaylight.
the class OvsdbTepRemoveConfigHelper method removeVtepFromTZConfig.
/**
* Removes the TEP from subnet list in the transport zone list
* from ITM configuration Datastore by delete operation with write transaction.
*
* @param subnetMaskObj subnet mask in IpPrefix object
* @param dpnId bridge datapath ID in BigInteger
* @param tzName transport zone name in string
* @param portName port name as a part of VtepsKey
* @param wrTx WriteTransaction object
*/
private static void removeVtepFromTZConfig(IpPrefix subnetMaskObj, String tzName, BigInteger dpnId, String portName, WriteTransaction wrTx) {
SubnetsKey subnetsKey = new SubnetsKey(subnetMaskObj);
VtepsKey vtepkey = new VtepsKey(dpnId, portName);
InstanceIdentifier<Vteps> vtepPath = InstanceIdentifier.builder(TransportZones.class).child(TransportZone.class, new TransportZoneKey(tzName)).child(Subnets.class, subnetsKey).child(Vteps.class, vtepkey).build();
LOG.trace("Removing TEP from (TZ: {} Subnet: {} DPN-ID: {}) inside ITM Config DS.", tzName, subnetMaskObj, dpnId);
// remove vtep
wrTx.delete(LogicalDatastoreType.CONFIGURATION, vtepPath);
}
use of org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Transport in project genius by opendaylight.
the class OvsdbTepRemoveConfigHelper method removeVtepFromTepsNotHosted.
/**
* Removes the TEP from unknown vtep list under the transport zone in the TepsNotHosted list
* from ITM operational Datastore by delete operation with write transaction.
*
* @param tzName transport zone name in string
* @param dpnId bridge datapath ID in BigInteger
* @param wrTx WriteTransaction object
*/
private static void removeVtepFromTepsNotHosted(String tzName, BigInteger dpnId, WriteTransaction wrTx) {
UnknownVtepsKey unknownVtepkey = new UnknownVtepsKey(dpnId);
InstanceIdentifier<UnknownVteps> vtepPath = InstanceIdentifier.builder(NotHostedTransportZones.class).child(TepsInNotHostedTransportZone.class, new TepsInNotHostedTransportZoneKey(tzName)).child(UnknownVteps.class, unknownVtepkey).build();
LOG.trace("Removing TEP from unhosted (TZ: {}, DPID: {}) inside ITM Oper DS.", tzName, dpnId);
// remove vtep
wrTx.delete(LogicalDatastoreType.OPERATIONAL, vtepPath);
}
use of org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Transport in project genius by opendaylight.
the class ItmUtils method deleteTransportZoneFromConfigDS.
/**
* Deletes the transport zone from Configuration datastore.
*
* @param tzName transport zone name
* @param dataBroker data broker handle to perform operations on datastore
*/
public static void deleteTransportZoneFromConfigDS(String tzName, DataBroker dataBroker) {
// check whether transport-zone exists in config DS.
TransportZone transportZoneFromConfigDS = ItmUtils.getTransportZoneFromConfigDS(tzName, dataBroker);
if (transportZoneFromConfigDS != null) {
// it exists, delete default-TZ now
InstanceIdentifier<TransportZone> path = InstanceIdentifier.builder(TransportZones.class).child(TransportZone.class, new TransportZoneKey(tzName)).build();
LOG.debug("Removing {} transport-zone from config DS.", tzName);
try {
SingleTransactionDataBroker.syncDelete(dataBroker, LogicalDatastoreType.CONFIGURATION, path);
} catch (TransactionCommitFailedException e) {
LOG.error("deleteTransportZoneFromConfigDS failed. {} could not be deleted.", tzName, e);
}
}
}
use of org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Transport in project genius by opendaylight.
the class ItmUtils method validateForAddVtepConfigSchema.
public static VtepConfigSchema validateForAddVtepConfigSchema(VtepConfigSchema schema, List<VtepConfigSchema> existingSchemas) {
VtepConfigSchema validSchema = validateVtepConfigSchema(schema);
for (VtepConfigSchema existingSchema : emptyIfNull(existingSchemas)) {
if (!StringUtils.equalsIgnoreCase(schema.getSchemaName(), existingSchema.getSchemaName()) && schema.getSubnet().equals(existingSchema.getSubnet())) {
String subnetCidr = getSubnetCidrAsString(schema.getSubnet());
Preconditions.checkArgument(false, "VTEP schema with subnet [" + subnetCidr + "] already exists. Multiple VTEP schemas with same subnet is not allowed.");
}
}
if (isNotEmpty(getDpnIdList(validSchema.getDpnIds()))) {
String tzone = validSchema.getTransportZoneName();
List<BigInteger> lstDpns = getConflictingDpnsAlreadyConfiguredWithTz(validSchema.getSchemaName(), tzone, getDpnIdList(validSchema.getDpnIds()), existingSchemas);
if (!lstDpns.isEmpty()) {
Preconditions.checkArgument(false, "DPN's " + lstDpns + " already configured for transport zone " + tzone + ". Only one end point per transport Zone per Dpn is allowed.");
}
if (schema.getTunnelType().equals(TunnelTypeGre.class)) {
validateForSingleGreTep(validSchema.getSchemaName(), getDpnIdList(validSchema.getDpnIds()), existingSchemas);
}
}
return validSchema;
}
use of org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.Transport in project genius by opendaylight.
the class OvsdbTepAddConfigHelper method addTepReceivedFromOvsdb.
/**
* 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 tepIp TEP-IP address in string
* @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/operational datastore
* @param wrTx WriteTransaction object
*/
public static void addTepReceivedFromOvsdb(String tepIp, String strDpnId, String tzName, boolean ofTunnel, DataBroker dataBroker, WriteTransaction wrTx) {
BigInteger dpnId = BigInteger.valueOf(0);
if (strDpnId != null && !strDpnId.isEmpty()) {
dpnId = MDSALUtil.getDpnId(strDpnId);
}
// Get tep IP
IpAddress tepIpAddress = IpAddressBuilder.getDefaultInstance(tepIp);
TransportZone tzone = null;
// Case: TZ name is not given with OVS TEP.
if (tzName == null) {
tzName = ITMConstants.DEFAULT_TRANSPORT_ZONE;
// add TEP into default-TZ
tzone = ItmUtils.getTransportZoneFromConfigDS(tzName, dataBroker);
if (tzone == null) {
LOG.error("Error: default-transport-zone is not yet created.");
return;
}
LOG.trace("Add TEP into default-transport-zone.");
} else {
// 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-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;
} else {
LOG.trace("Add TEP into transport-zone already configured by Northbound.");
}
}
// Get subnet list of corresponding TZ created from Northbound.
List<Subnets> subnetList = tzone.getSubnets();
String portName = ITMConstants.DUMMY_PORT;
IpPrefix subnetMaskObj = ItmUtils.getDummySubnet();
if (subnetList == null || subnetList.isEmpty()) {
if (subnetList == null) {
subnetList = new ArrayList<>();
}
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);
} else {
List<Vteps> vtepList = null;
// subnet list already exists case; check for dummy-subnet
for (Subnets subnet : subnetList) {
if (subnet.getKey().getPrefix().equals(subnetMaskObj)) {
LOG.trace("Subnet exists in the subnet list of transport-zone {}.", tzName);
// get vtep list of existing subnet
vtepList = subnet.getVteps();
break;
}
}
if (vtepList == null || vtepList.isEmpty()) {
// case: vtep list does not exist or it has no elements
if (vtepList == null) {
vtepList = new ArrayList<>();
}
LOG.trace("Add TEP in transport-zone when no vtep-list for specific subnet.");
addVtepInITMConfigDS(subnetList, subnetMaskObj, vtepList, tepIpAddress, tzName, dpnId, portName, ofTunnel, wrTx);
} else {
// case: vtep list has elements
boolean vtepFound = false;
Vteps oldVtep = null;
for (Vteps vtep : vtepList) {
if (vtep.getDpnId().equals(dpnId)) {
vtepFound = true;
oldVtep = vtep;
// get portName of existing vtep
portName = vtep.getPortname();
break;
}
}
if (!vtepFound) {
addVtepInITMConfigDS(subnetList, subnetMaskObj, vtepList, tepIpAddress, tzName, dpnId, portName, ofTunnel, wrTx);
} else {
// vtep is found, update it with tep-ip
vtepList.remove(oldVtep);
addVtepInITMConfigDS(subnetList, subnetMaskObj, vtepList, tepIpAddress, tzName, dpnId, portName, ofTunnel, wrTx);
}
}
}
}
Aggregations