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
8 package org.opendaylight.unimgr.mef.nrp.cisco.xr.common.helper;
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;
24 import java.util.LinkedList;
25 import java.util.List;
26 import java.util.Optional;
29 * Helper, designated to support interface configuration
31 * @author krzysztof.bijakowski@amartus.com
33 public class InterfaceHelper {
34 private List<InterfaceConfiguration> configurations;
36 public static InterfaceName getInterfaceName(FcPort port) {
37 String interfaceName = port.getTp().getValue();
39 if(interfaceName.contains(":")) {
40 interfaceName = interfaceName.split(":")[1];
43 return new InterfaceName(interfaceName);
46 public static InstanceIdentifier<InterfaceConfigurations> getInterfaceConfigurationsId() {
47 return InstanceIdentifier.builder(InterfaceConfigurations.class).build();
50 public InterfaceHelper() {
51 configurations = new LinkedList<>();
54 public InterfaceHelper addInterface(FcPort port, Optional<Mtus> mtus, boolean setL2Transport) {
55 return addInterface(getInterfaceName(port), mtus, setL2Transport);
58 public InterfaceHelper addInterface(InterfaceName name, Optional<Mtus> mtus, boolean setL2Transport) {
59 InterfaceConfigurationBuilder configurationBuilder = new InterfaceConfigurationBuilder();
62 .setInterfaceName(name)
63 .setActive(new InterfaceActive("act"))
64 .setShutdown(Boolean.FALSE);
66 if(mtus.isPresent()) {
67 configurationBuilder.setMtus(mtus.get());
71 setL2Configuration(configurationBuilder);
74 configurations.add(configurationBuilder.build());
78 public InterfaceConfigurations build() {
79 return new InterfaceConfigurationsBuilder()
80 .setInterfaceConfiguration(configurations)
84 private void setL2Configuration(InterfaceConfigurationBuilder configurationBuilder) {
85 L2Transport l2transport = new L2TransportBuilder()
89 InterfaceConfiguration3 augmentation = new InterfaceConfiguration3Builder()
90 .setL2Transport(l2transport)
93 configurationBuilder.addAugmentation(InterfaceConfiguration3.class, augmentation);