import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.idmanager.IdManager;
+import org.opendaylight.vpnservice.interfacemgr.IfmConstants;
import org.opendaylight.vpnservice.interfacemgr.IfmUtil;
import org.opendaylight.vpnservice.interfacemgr.commons.InterfaceManagerCommonUtils;
import org.opendaylight.vpnservice.interfacemgr.commons.InterfaceMetaUtils;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.IdManagerService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info.InterfaceParentEntry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info.InterfaceParentEntryKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info._interface.parent.entry.InterfaceChildEntry;
private static final Logger LOG = LoggerFactory.getLogger(OvsInterfaceConfigAddHelper.class);
public static List<ListenableFuture<Void>> addConfiguration(DataBroker dataBroker, ParentRefs parentRefs,
- Interface interfaceNew, IdManager idManager) {
+ Interface interfaceNew, IdManagerService idManager) {
List<ListenableFuture<Void>> futures = new ArrayList<>();
- WriteTransaction t = dataBroker.newWriteOnlyTransaction();
IfTunnel ifTunnel = interfaceNew.getAugmentation(IfTunnel.class);
if (ifTunnel != null) {
- addTunnelConfiguration(dataBroker, parentRefs, interfaceNew, idManager, t);
- futures.add(t.submit());
+ addTunnelConfiguration(dataBroker, parentRefs, interfaceNew, idManager, futures);
return futures;
}
- addVlanConfiguration(interfaceNew, t, dataBroker);
- futures.add(t.submit());
+ addVlanConfiguration(interfaceNew, dataBroker, idManager, futures);
return futures;
}
- private static void addVlanConfiguration(Interface interfaceNew, WriteTransaction t, DataBroker dataBroker) {
+ private static void addVlanConfiguration(Interface interfaceNew, DataBroker dataBroker, IdManagerService idManager,
+ List<ListenableFuture<Void>> futures) {
+ WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState =
InterfaceManagerCommonUtils.getInterfaceStateFromOperDS(interfaceNew.getName(), dataBroker);
+
if (ifState == null) {
return;
}
- updateStateEntry(interfaceNew, t, ifState);
+ updateStateEntry(interfaceNew, transaction, ifState);
IfL2vlan ifL2vlan = interfaceNew.getAugmentation(IfL2vlan.class);
if (ifL2vlan == null || ifL2vlan.getL2vlanMode() != IfL2vlan.L2vlanMode.Trunk) {
InterfaceBuilder childIfaceBuilder = new InterfaceBuilder().setAdminStatus(adminStatus)
.setOperStatus(operStatus).setPhysAddress(physAddress).setLowerLayerIf(childLowerLayerIfList);
childIfaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(ifaceChild.getName()));
- t.put(LogicalDatastoreType.OPERATIONAL, ifChildStateId, childIfaceBuilder.build(), true);
+ transaction.put(LogicalDatastoreType.OPERATIONAL, ifChildStateId, childIfaceBuilder.build(), true);
}
+ futures.add(transaction.submit());
}
private static void addTunnelConfiguration(DataBroker dataBroker, ParentRefs parentRefs,
- Interface interfaceNew, IdManager idManager,
- WriteTransaction t) {
+ Interface interfaceNew, IdManagerService idManager,
+ List<ListenableFuture<Void>> futures) {
+ LOG.debug("adding tunnel configuration for {}", interfaceNew.getName());
+ WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
if (parentRefs == null) {
LOG.warn("ParentRefs for interface: {} Not Found. " +
"Creation of Tunnel OF-Port not supported when dpid not provided.", interfaceNew.getName());
return;
}
- createBridgeEntryIfNotPresent(dpId, dataBroker, t);
+ BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpId);
+ BridgeInterfaceEntryKey bridgeInterfaceEntryKey = new BridgeInterfaceEntryKey(interfaceNew.getName());
+
+ LOG.debug("creating bridge interfaceEntry in ConfigDS {}", bridgeEntryKey);
+ InterfaceMetaUtils.createBridgeInterfaceEntryInConfigDS(bridgeEntryKey, bridgeInterfaceEntryKey,
+ interfaceNew.getName(), transaction);
+ futures.add(transaction.submit());
+ // create bridge on switch, if switch is connected
BridgeRefEntryKey BridgeRefEntryKey = new BridgeRefEntryKey(dpId);
InstanceIdentifier<BridgeRefEntry> dpnBridgeEntryIid =
InterfaceMetaUtils.getBridgeRefEntryIdentifier(BridgeRefEntryKey);
BridgeRefEntry bridgeRefEntry =
InterfaceMetaUtils.getBridgeRefEntryFromOperDS(dpnBridgeEntryIid, dataBroker);
- BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpId);
- BridgeInterfaceEntryKey bridgeInterfaceEntryKey = new BridgeInterfaceEntryKey(interfaceNew.getName());
- if (bridgeRefEntry == null) {
- InterfaceMetaUtils.createBridgeInterfaceEntryInConfigDS(bridgeEntryKey, bridgeInterfaceEntryKey,
- interfaceNew.getName(), t);
- return;
- }
-
- InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid =
- (InstanceIdentifier<OvsdbBridgeAugmentation>)bridgeRefEntry.getBridgeReference().getValue();
- Optional<OvsdbBridgeAugmentation> bridgeNodeOptional =
- IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeIid, dataBroker);
- if (bridgeNodeOptional.isPresent()) {
- OvsdbBridgeAugmentation ovsdbBridgeAugmentation = bridgeNodeOptional.get();
- String bridgeName = ovsdbBridgeAugmentation.getBridgeName().getValue();
- SouthboundUtils.addPortToBridge(bridgeIid, interfaceNew,
- ovsdbBridgeAugmentation, bridgeName, interfaceNew.getName(), dataBroker, t);
+ if(bridgeRefEntry != null && bridgeRefEntry.getBridgeReference() != null) {
+ LOG.debug("creating bridge interface on dpn {}", bridgeEntryKey);
+ InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid =
+ (InstanceIdentifier<OvsdbBridgeAugmentation>) bridgeRefEntry.getBridgeReference().getValue();
+ Optional<OvsdbBridgeAugmentation> bridgeNodeOptional =
+ IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeIid, dataBroker);
+ if (bridgeNodeOptional.isPresent()) {
+ OvsdbBridgeAugmentation ovsdbBridgeAugmentation = bridgeNodeOptional.get();
+ String bridgeName = ovsdbBridgeAugmentation.getBridgeName().getValue();
+ SouthboundUtils.addPortToBridge(bridgeIid, interfaceNew,
+ ovsdbBridgeAugmentation, bridgeName, interfaceNew.getName(), dataBroker, futures);
+ }
}
-
- InstanceIdentifier<TerminationPoint> tpIid = SouthboundUtils.createTerminationPointInstanceIdentifier(
- InstanceIdentifier.keyOf(bridgeIid.firstIdentifierOf(Node.class)), interfaceNew.getName());
- InterfaceMetaUtils.createBridgeInterfaceEntryInConfigDS(bridgeEntryKey, bridgeInterfaceEntryKey,
- interfaceNew.getName(), tpIid, t);
}
- private static void updateStateEntry(Interface interfaceNew, WriteTransaction t,
+ private static void updateStateEntry(Interface interfaceNew, WriteTransaction transaction,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState) {
- OperStatus operStatus;
+ InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> ifStateId =
+ IfmUtil.buildStateInterfaceId(interfaceNew.getName());
+ InterfaceBuilder ifaceBuilder = new InterfaceBuilder();
if (!interfaceNew.isEnabled() && ifState.getOperStatus() != OperStatus.Down) {
- operStatus = OperStatus.Down;
- InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> ifStateId =
- IfmUtil.buildStateInterfaceId(interfaceNew.getName());
- InterfaceBuilder ifaceBuilder = new InterfaceBuilder();
- ifaceBuilder.setOperStatus(operStatus);
+ ifaceBuilder.setOperStatus(OperStatus.Down);
ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(interfaceNew.getName()));
- t.merge(LogicalDatastoreType.OPERATIONAL, ifStateId, ifaceBuilder.build());
- }
- }
-
- private static void createBridgeEntryIfNotPresent(BigInteger dpId,
- DataBroker dataBroker, WriteTransaction t) {
- BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpId);
- InstanceIdentifier<BridgeEntry> bridgeEntryInstanceIdentifier =
- InterfaceMetaUtils.getBridgeEntryIdentifier(bridgeEntryKey);
- BridgeEntry bridgeEntry =
- InterfaceMetaUtils.getBridgeEntryFromConfigDS(bridgeEntryInstanceIdentifier,
- dataBroker);
- if (bridgeEntry == null) {
- BridgeEntryBuilder bridgeEntryBuilder = new BridgeEntryBuilder().setKey(bridgeEntryKey)
- .setDpid(dpId);
- t.put(LogicalDatastoreType.CONFIGURATION, bridgeEntryInstanceIdentifier, bridgeEntryBuilder.build(), true);
+ transaction.merge(LogicalDatastoreType.OPERATIONAL, ifStateId, ifaceBuilder.build());
}
}
-}
\ No newline at end of file
+}