ELAN FT Support for BE
[vpnservice.git] / elanmanager / elanmanager-impl / src / main / java / org / opendaylight / vpnservice / elan / cli / ElanInterfaceGet.java
1 /*
2  * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. 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.vpnservice.elan.cli;
9
10 import org.apache.karaf.shell.commands.Argument;
11 import org.apache.karaf.shell.commands.Command;
12 import org.apache.karaf.shell.console.OsgiCommandSupport;
13 import org.opendaylight.elanmanager.api.IElanService;
14 import org.opendaylight.vpnservice.elan.utils.ElanCLIUtils;
15 import org.opendaylight.vpnservice.interfacemgr.globals.InterfaceInfo;
16 import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.elan.instances.ElanInstance;
18 import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory;
20
21 import java.util.List;
22
23 @Command(scope = "elanInterface", name = "show", description = "display Elan Interfaces for the ElanInstance")
24 public class ElanInterfaceGet extends OsgiCommandSupport {
25
26     private static final Logger logger = LoggerFactory.getLogger(ElanInterfaceGet.class);
27
28     @Argument(index = 0, name = "elanName", description = "ELAN-NAME", required = false, multiValued = false)
29     private String elanName;
30     private IInterfaceManager interfaceManager;
31     public static int MAX_LENGTH = 31;
32     private IElanService elanProvider;
33     public static boolean isDisplay = true;
34
35     public void setElanProvider(IElanService elanServiceProvider) {
36         this.elanProvider = elanServiceProvider;
37     }
38
39     public void setInterfaceManager(IInterfaceManager interfaceManager) {
40         this.interfaceManager = interfaceManager;
41     }
42
43     @Override
44     protected Object doExecute() {
45         try {
46             logger.debug("Executing Get ElanInterface command for the corresponding Elan Instance" + "\t" + elanName +  "\t");
47             if(elanName != null) {
48                 ElanInstance elanInstance = elanProvider.getElanInstance(elanName);
49                 List<String> elanInterfaces = elanProvider.getElanInterfaces(elanName);
50                 if (elanInterfaces == null) {
51                     System.out.println("No Elan Interfaces present for ELan Instance:" + elanName);
52                     return null;
53                 }
54                 System.out.println(getElanInterfaceHeaderOutput());
55                 displayInterfaces(elanInstance, elanInterfaces);
56
57             } else {
58                 List<ElanInstance> elanInstances = elanProvider.getElanInstances();
59                 if(!elanInstances.isEmpty()) {
60                     System.out.println(getElanInterfaceHeaderOutput());
61                     for(ElanInstance elanInstance : elanInstances) {
62                         List<String> elanInterfaces = elanProvider.getElanInterfaces(elanInstance.getElanInstanceName());
63                         displayInterfaces(elanInstance, elanInterfaces);
64                         System.out.println("\n");
65                     }
66                 }
67
68             }
69         } catch (Exception e) {
70             logger.error("Elan Instance failed to get {}", e);
71             e.printStackTrace();
72         }
73         return null;
74     }
75
76     private Object getElanInterfaceHeaderOutput() {
77         StringBuilder headerBuilder = new StringBuilder();
78         headerBuilder.append(String.format(ElanCLIUtils.ELAN_INTERFACE_CLI_FORMAT, "ElanInstance/Tag", "ElanInterface/Tag", "OpState" , "AdminState"));
79         headerBuilder.append('\n');
80         headerBuilder.append(ElanCLIUtils.HEADER_UNDERLINE);
81         return headerBuilder.toString();
82     }
83
84     private void displayInterfaces(ElanInstance elanInstance, List<String> interfaceList) {
85         if(!interfaceList.isEmpty()) {
86             for (String elanInterface : interfaceList)
87             {
88                 InterfaceInfo interfaceInfo = interfaceManager.getInterfaceInfo(elanInterface);
89                 if (interfaceInfo != null) {
90                     System.out.println(String.format(ElanCLIUtils.ELAN_INTERFACE_CLI_FORMAT, elanInstance.getElanInstanceName()+"/"+elanInstance.getElanTag(), elanInterface+"/"+interfaceInfo.getInterfaceTag(), interfaceInfo.getOpState(), interfaceInfo.getAdminState()));
91                 }
92             }
93         }
94     }
95 }