2 * Copyright (c) 2016 Cisco Systems Inc and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.unimgr.mef.nrp.cisco.xr.l2vpn.driver;
11 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
12 import org.opendaylight.controller.md.sal.binding.api.MountPointService;
13 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
14 import org.opendaylight.unimgr.mef.nrp.api.ActivationDriver;
15 import org.opendaylight.unimgr.mef.nrp.api.ActivationDriverBuilder;
16 import org.opendaylight.unimgr.utils.CapabilitiesService;
17 import org.opendaylight.unimgr.mef.nrp.cisco.xr.l2vpn.activator.L2vpnBridgeActivator;
18 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.forwarding.constructs.ForwardingConstruct;
19 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.g_forwardingconstruct.FcPort;
21 import java.util.Optional;
23 import static org.opendaylight.unimgr.utils.CapabilitiesService.Capability.Mode.AND;
24 import static org.opendaylight.unimgr.utils.CapabilitiesService.NodeContext.NodeCapability.*;
27 * Provides drivers for binding two ports on the same node.
28 * @author bartosz.michalik@amartus.com
30 public class L2vpnBridgeDriverBuilder implements ActivationDriverBuilder {
32 private final DataBroker dataBroker;
34 private L2vpnBridgeActivator activator;
36 private static final String GROUP_NAME = "local";
38 public L2vpnBridgeDriverBuilder(DataBroker dataBroker, MountPointService mountPointService) {
39 this.dataBroker = dataBroker;
40 activator = new L2vpnBridgeActivator(dataBroker, mountPointService);
44 public Optional<ActivationDriver> driverFor(FcPort port, BuilderContext _ctx) {
45 return Optional.empty();
49 public Optional<ActivationDriver> driverFor(FcPort aPort, FcPort zPort, BuilderContext context) {
50 CapabilitiesService capabilitiesService = new CapabilitiesService(dataBroker);
52 if (capabilitiesService.nodeByPort(aPort).isSupporting(AND, NETCONF, NETCONF_CISCO_IOX_IFMGR, NETCONF_CISCO_IOX_L2VPN) &&
53 capabilitiesService.nodeByPort(zPort).isSupporting(AND, NETCONF, NETCONF_CISCO_IOX_IFMGR, NETCONF_CISCO_IOX_L2VPN)) {
54 return Optional.of(getDriver());
57 return Optional.empty();
60 protected ActivationDriver getDriver() {
61 final ActivationDriver driver = new ActivationDriver() {
66 public void commit() {
67 //ignore for the moment
71 public void rollback() {
72 //ignore for the moment
76 public void initialize(FcPort from, FcPort to, ForwardingConstruct ctx) {
82 public void activate() throws TransactionCommitFailedException {
85 String aEndNodeName = aEnd.getNode().getValue();
86 activator.activate(aEndNodeName, GROUP_NAME, GROUP_NAME, aEnd, zEnd, mtu);
90 public void deactivate() throws TransactionCommitFailedException {
93 String aEndNodeName = aEnd.getNode().getValue();
94 activator.deactivate(aEndNodeName, GROUP_NAME, GROUP_NAME, aEnd, zEnd, mtu);
98 public int priority() {