code cleanup
[unimgr.git] / cisco-xr-driver / src / main / java / org / opendaylight / unimgr / mef / nrp / cisco / xr / l2vpn / activator / L2vpnBridgeDomainActivator.java
1 /*
2  * Copyright (c) 2019 Xoriant Corporation and others. All rights reserved.
3  *
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
7  */
8 package org.opendaylight.unimgr.mef.nrp.cisco.xr.l2vpn.activator;
9
10 import static org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper.BandwidthProfileComposition.BwpApplicability.UNI;
11 import static org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper.BandwidthProfileComposition.BwpDirection.EGRESS;
12 import static org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper.BandwidthProfileComposition.BwpDirection.INGRESS;
13
14 import java.util.List;
15 import java.util.Optional;
16 import java.util.concurrent.ExecutionException;
17 import org.opendaylight.mdsal.binding.api.DataBroker;
18 import org.opendaylight.mdsal.binding.api.MountPointService;
19 import org.opendaylight.unimgr.mef.nrp.api.EndPoint;
20 import org.opendaylight.unimgr.mef.nrp.cisco.xr.common.FixedServiceNaming;
21 import org.opendaylight.unimgr.mef.nrp.cisco.xr.common.ServicePort;
22 import org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper.BandwidthProfileHelper;
23 import org.opendaylight.unimgr.mef.nrp.cisco.xr.common.util.LoopbackUtils;
24 import org.opendaylight.unimgr.mef.nrp.cisco.xr.l2vpn.helper.BridgeDomainAttachmentCircuitHelper;
25 import org.opendaylight.unimgr.mef.nrp.cisco.xr.l2vpn.helper.BridgeDomainHelper;
26 import org.opendaylight.unimgr.mef.nrp.cisco.xr.l2vpn.helper.BridgeDomainPseudowireHelper;
27 import org.opendaylight.unimgr.mef.nrp.cisco.xr.l2vpn.helper.L2vpnHelper;
28 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev170907.InterfaceConfigurations;
29 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev170907._interface.configurations.InterfaceConfiguration;
30 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.infra.policymgr.cfg.rev171212.PolicyManager;
31 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev170626.L2vpn;
32 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev170626.l2vpn.database.BridgeDomainGroups;
33 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev170626.l2vpn.database.bridge.domain.groups.BridgeDomainGroup;
34 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev170626.l2vpn.database.bridge.domain.groups.bridge.domain.group.bridge.domains.BridgeDomain;
35 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev170626.l2vpn.database.bridge.domain.groups.bridge.domain.group.bridge.domains.bridge.domain.BdAttachmentCircuits;
36 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev170626.l2vpn.database.bridge.domain.groups.bridge.domain.group.bridge.domains.bridge.domain.BdPseudowires;
37 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev180307.Uuid;
38 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
39
40 /*
41  * @author arif.hussain@xoriant.com
42  */
43 public class L2vpnBridgeDomainActivator extends AbstractL2vpnBridgeDomainActivator {
44
45     private final FixedServiceNaming namingProvider;
46
47     public L2vpnBridgeDomainActivator(DataBroker dataBroker, MountPointService mountService) {
48         super(dataBroker, mountService);
49         namingProvider = new FixedServiceNaming();
50     }
51
52     @Override
53     protected Optional<PolicyManager> activateQos(String name, ServicePort port) {
54         return new BandwidthProfileHelper(port).addPolicyMap(name, INGRESS, UNI)
55                 .addPolicyMap(name, EGRESS, UNI).build();
56     }
57
58     @Override
59     protected String getInnerName(String serviceId) {
60         return namingProvider.replaceForbidenCharacters(serviceId);
61     }
62
63     @Override
64     protected String getOuterName(String serviceId) {
65         return namingProvider.replaceForbidenCharacters(serviceId);
66     }
67
68     @Override
69     protected InterfaceConfigurations activateInterface(ServicePort portA, ServicePort portZ,
70             long mtu, boolean isExclusive) {
71
72         return new InterfaceActivator().activate(portA, portZ, mtu, isExclusive);
73     }
74
75     @Override
76     protected void createSubInterface(String nodeName, InterfaceConfigurations subInterfaceConfigurations,
77              MountPointService mountService2) throws InterruptedException, ExecutionException {
78         new TransactionActivator().activateSubInterface(nodeName, subInterfaceConfigurations, mountService2);
79     }
80
81     @Override
82     protected InterfaceConfigurations createSubInterface(ServicePort portA, ServicePort portZ,
83             long mtu) {
84
85         return new InterfaceActivator().buildSubInterface(portA, portZ, mtu);
86     }
87
88     @Override
89     protected BdPseudowires activateBdPseudowire(ServicePort neighbor) {
90
91         return new BridgeDomainPseudowireHelper()
92                 .addBdPseudowire(LoopbackUtils.getIpv4Address(neighbor, dataBroker)).build();
93     }
94
95     @Override
96     protected BridgeDomainGroups activateBridgeDomain(String outerName, String innerName,
97             ServicePort port, ServicePort neighbor, BdPseudowires bdPseudowires,
98             boolean isExclusive) {
99
100         BdAttachmentCircuits bdattachmentCircuits =
101                                 new BridgeDomainAttachmentCircuitHelper().addPort(port, isExclusive).build();
102         BridgeDomainGroup bridgeDomainGroup = new BridgeDomainHelper()
103                 .appendBridgeDomain(innerName, bdattachmentCircuits, bdPseudowires)
104                 .build(outerName);
105
106         return BridgeDomainHelper.createBridgeDomainGroups(bridgeDomainGroup);
107     }
108
109     @Override
110     protected L2vpn activateL2Vpn(BridgeDomainGroups bridgeDomainGroups) {
111
112         return L2vpnHelper.build(bridgeDomainGroups);
113     }
114
115     @Override
116     protected void doActivate(String node, InterfaceConfigurations interfaceConfigurations,
117             L2vpn l2vpn, MountPointService mountService2, Optional<PolicyManager> qosConfig)
118                     throws InterruptedException, ExecutionException {
119
120         new TransactionActivator().activate(node, interfaceConfigurations, l2vpn, mountService2, qosConfig);
121     }
122
123     @Override
124     protected InstanceIdentifier<InterfaceConfiguration> deactivateInterface(ServicePort port,
125             boolean isExclusive) {
126
127         return new InterfaceActivator().deactivate(port, isExclusive);
128     }
129
130     @Override
131     protected void doDeactivate(ServicePort port, InstanceIdentifier<BridgeDomain> bridgeDomainId,
132             InstanceIdentifier<InterfaceConfiguration> interfaceConfigurationId,
133             boolean isExclusive, EndPoint endPoint, List<String> dvls2, List<Uuid> inls2)
134                     throws InterruptedException, ExecutionException {
135
136         new TransactionActivator().deactivate(port, bridgeDomainId, interfaceConfigurationId,
137                 isExclusive, endPoint, mountService, dvls2, inls2);
138     }
139
140 }