package org.opendaylight.unimgr.mef.nrp.cisco.xr.l2vpn.driver;
-import java.util.Optional;
-
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.MountPointService;
+import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.unimgr.mef.nrp.api.ActivationDriver;
import org.opendaylight.unimgr.mef.nrp.api.ActivationDriverBuilder;
+import org.opendaylight.unimgr.utils.CapabilitiesService;
import org.opendaylight.unimgr.mef.nrp.cisco.xr.l2vpn.activator.L2vpnXconnectActivator;
import org.opendaylight.unimgr.mef.nrp.common.FixedServiceNaming;
import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.forwarding.constructs.ForwardingConstruct;
import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.g_forwardingconstruct.FcPort;
+import java.util.Optional;
+
+import static org.opendaylight.unimgr.utils.CapabilitiesService.NodeContext.NodeCapability.NETCONF;
+import static org.opendaylight.unimgr.utils.CapabilitiesService.Capability.Mode.AND;
+import static org.opendaylight.unimgr.utils.CapabilitiesService.NodeContext.NodeCapability.NETCONF_CISCO_IOX_IFMGR;
+import static org.opendaylight.unimgr.utils.CapabilitiesService.NodeContext.NodeCapability.NETCONF_CISCO_IOX_L2VPN;
+
/**
- * Xconnect builder (FIXME no decision logic yet)
+ * Xconnect builder
* @author bartosz.michalik@amartus.com
*/
public class L2vpnXconnectDriverBuilder implements ActivationDriverBuilder {
+ private final DataBroker dataBroker;
+
private final FixedServiceNaming namingProvider;
+
private L2vpnXconnectActivator xconnectActivator;
public L2vpnXconnectDriverBuilder(DataBroker dataBroker, MountPointService mountPointService) {
+ this.dataBroker = dataBroker;
xconnectActivator = new L2vpnXconnectActivator(dataBroker, mountPointService);
namingProvider = new FixedServiceNaming();
}
@Override
- public Optional<ActivationDriver> driverFor(FcPort port,BuilderContext _ctx) {
- return Optional.of(getDriver());
+ public Optional<ActivationDriver> driverFor(FcPort port, BuilderContext _ctx) {
+ if (new CapabilitiesService(dataBroker).nodeByPort(port).isSupporting(AND, NETCONF, NETCONF_CISCO_IOX_IFMGR, NETCONF_CISCO_IOX_L2VPN)) {
+ return Optional.of(getDriver());
+ }
+
+ return Optional.empty();
}
@Override
}
@Override
- public void activate() {
+ public void activate() throws TransactionCommitFailedException {
String id = ctx.getUuid();
long mtu = 1500;
String outerName = namingProvider.getOuterName(id);
}
@Override
- public void deactivate() {
+ public void deactivate() throws TransactionCommitFailedException {
String id = ctx.getUuid();
long mtu = 1500;
String outerName = namingProvider.getOuterName(id);