Refactoring of cisco-xr-driver and impl modules.
[unimgr.git] / cisco-xr-driver / src / main / java / org / opendaylight / unimgr / mef / nrp / cisco / xr / common / helper / InterfaceHelper.java
1 /*
2  * Copyright (c) 2016 Cisco Systems Inc 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.common.helper;
9
10 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev150730.InterfaceActive;
11 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev150730.InterfaceConfigurations;
12 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev150730.InterfaceConfigurationsBuilder;
13 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev150730._interface.configurations.InterfaceConfiguration;
14 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev150730._interface.configurations.InterfaceConfigurationBuilder;
15 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.ifmgr.cfg.rev150730._interface.configurations._interface.configuration.Mtus;
16 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109.InterfaceConfiguration3;
17 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109.InterfaceConfiguration3Builder;
18 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109._interface.configurations._interface.configuration.L2Transport;
19 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.ios.xr.l2vpn.cfg.rev151109._interface.configurations._interface.configuration.L2TransportBuilder;
20 import org.opendaylight.yang.gen.v1.http.cisco.com.ns.yang.cisco.xr.types.rev150629.InterfaceName;
21 import org.opendaylight.yang.gen.v1.urn.onf.core.network.module.rev160630.g_forwardingconstruct.FcPort;
22 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
23
24 import java.util.LinkedList;
25 import java.util.List;
26 import java.util.Optional;
27
28 /**
29  * Helper, designated to support interface configuration
30  *
31  * @author krzysztof.bijakowski@amartus.com
32  */
33 public class InterfaceHelper {
34     private List<InterfaceConfiguration> configurations;
35
36     public static InterfaceName getInterfaceName(FcPort port) {
37         String interfaceName = port.getTp().getValue();
38
39         if(interfaceName.contains(":")) {
40             interfaceName = interfaceName.split(":")[1];
41         }
42
43         return new InterfaceName(interfaceName);
44     }
45
46     public static InstanceIdentifier<InterfaceConfigurations> getInterfaceConfigurationsId() {
47         return InstanceIdentifier.builder(InterfaceConfigurations.class).build();
48     }
49
50     public InterfaceHelper() {
51         configurations = new LinkedList<>();
52     }
53
54     public InterfaceHelper addInterface(FcPort port, Optional<Mtus> mtus, boolean setL2Transport) {
55         return addInterface(getInterfaceName(port), mtus, setL2Transport);
56     }
57
58     public InterfaceHelper addInterface(InterfaceName name, Optional<Mtus> mtus, boolean setL2Transport) {
59         InterfaceConfigurationBuilder configurationBuilder = new InterfaceConfigurationBuilder();
60
61         configurationBuilder
62             .setInterfaceName(name)
63             .setActive(new InterfaceActive("act"))
64             .setShutdown(Boolean.FALSE);
65
66         if(mtus.isPresent()) {
67             configurationBuilder.setMtus(mtus.get());
68         }
69
70         if(setL2Transport) {
71             setL2Configuration(configurationBuilder);
72         }
73
74         configurations.add(configurationBuilder.build());
75         return this;
76     }
77
78     public InterfaceConfigurations build() {
79         return new InterfaceConfigurationsBuilder()
80             .setInterfaceConfiguration(configurations)
81             .build();
82     }
83
84     private void setL2Configuration(InterfaceConfigurationBuilder configurationBuilder) {
85         L2Transport l2transport = new L2TransportBuilder()
86             .setEnabled(true)
87             .build();
88
89         InterfaceConfiguration3 augmentation = new InterfaceConfiguration3Builder()
90             .setL2Transport(l2transport)
91             .build();
92
93         configurationBuilder.addAugmentation(InterfaceConfiguration3.class, augmentation);
94     }
95 }