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.L2vpnXconnectActivator;
18 import org.opendaylight.unimgr.mef.nrp.common.FixedServiceNaming;
19 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.forwarding.constructs.ForwardingConstruct;
20 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.g_forwardingconstruct.FcPort;
22 import java.util.Optional;
24 import static org.opendaylight.unimgr.utils.CapabilitiesService.NodeContext.NodeCapability.NETCONF;
25 import static org.opendaylight.unimgr.utils.CapabilitiesService.Capability.Mode.AND;
26 import static org.opendaylight.unimgr.utils.CapabilitiesService.NodeContext.NodeCapability.NETCONF_CISCO_IOX_IFMGR;
27 import static org.opendaylight.unimgr.utils.CapabilitiesService.NodeContext.NodeCapability.NETCONF_CISCO_IOX_L2VPN;
31 * @author bartosz.michalik@amartus.com
33 public class L2vpnXconnectDriverBuilder implements ActivationDriverBuilder {
35 private final DataBroker dataBroker;
37 private final FixedServiceNaming namingProvider;
39 private L2vpnXconnectActivator xconnectActivator;
41 public L2vpnXconnectDriverBuilder(DataBroker dataBroker, MountPointService mountPointService) {
42 this.dataBroker = dataBroker;
43 xconnectActivator = new L2vpnXconnectActivator(dataBroker, mountPointService);
44 namingProvider = new FixedServiceNaming();
48 public Optional<ActivationDriver> driverFor(FcPort port, BuilderContext _ctx) {
49 if (new CapabilitiesService(dataBroker).nodeByPort(port).isSupporting(AND, NETCONF, NETCONF_CISCO_IOX_IFMGR, NETCONF_CISCO_IOX_L2VPN)) {
50 return Optional.of(getDriver());
53 return Optional.empty();
57 public Optional<ActivationDriver> driverFor(FcPort aPort, FcPort zPort, BuilderContext context) {
58 return Optional.empty();
61 protected ActivationDriver getDriver() {
62 final ActivationDriver driver = new ActivationDriver() {
63 public ForwardingConstruct ctx;
68 public void commit() {
69 //ignore for the moment
73 public void rollback() {
74 //ignore for the moment
78 public void initialize(FcPort from, FcPort to, ForwardingConstruct ctx) {
85 public void activate() throws TransactionCommitFailedException {
86 String id = ctx.getUuid();
88 String outerName = namingProvider.getOuterName(id);
89 String innerName = namingProvider.getInnerName(id);
91 String aEndNodeName = aEnd.getNode().getValue();
92 xconnectActivator.activate(aEndNodeName, outerName, innerName, aEnd, zEnd, mtu);
97 public void deactivate() throws TransactionCommitFailedException {
98 String id = ctx.getUuid();
100 String outerName = namingProvider.getOuterName(id);
101 String innerName = namingProvider.getInnerName(id);
103 String aEndNodeName = aEnd.getNode().getValue();
104 xconnectActivator.deactivate(aEndNodeName, outerName, innerName, aEnd, zEnd, mtu);
108 public int priority() {