CLI to print DHCP caches.
[netvirt.git] / dhcpservice / shell / src / main / java / org / opendaylight / netvirt / dhcpservice / shell / DhcpCacheCli.java
1 /*
2  * Copyright (c) 2018 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.netvirt.dhcpservice.shell;
9
10 import org.apache.karaf.shell.commands.Command;
11 import org.apache.karaf.shell.console.OsgiCommandSupport;
12 import org.opendaylight.netvirt.dhcpservice.api.IDhcpExternalTunnelManager;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15
16 @Command(scope = "dhcp", name = "show-cache", description = "Displays dhcp cache")
17 public class DhcpCacheCli extends OsgiCommandSupport {
18
19     private static final Logger LOG = LoggerFactory.getLogger(DhcpCacheCli.class);
20     private IDhcpExternalTunnelManager dhcpExternalTunnelManager;
21
22     public void setDhcpExternalTunnelManager(IDhcpExternalTunnelManager dhcpExternalTunnelManager) {
23         this.dhcpExternalTunnelManager = dhcpExternalTunnelManager;
24     }
25
26     @Override
27     protected Object doExecute() throws Exception {
28         session.getConsole().println("Printing Designated Dpns To TunnelIp and ElanName cache "
29                 + "(DesignatedDpnsToTunnelIpElanNameCache)");
30         dhcpExternalTunnelManager.getDesignatedDpnsToTunnelIpElanNameCache().forEach(
31             (dpnId, tunnelIpAndElanName) -> {
32                 session.getConsole().println("   DPN id : " + print(dpnId));
33                 tunnelIpAndElanName.forEach(item -> {
34                     session.getConsole().println("       Ip address : " + print(item.getLeft()));
35                     session.getConsole().println("       Elan name : " + print(item.getRight()));
36                 });
37             }
38         );
39         session.getConsole().println();
40         session.getConsole().println("Printing TunnelIp and ElanName To VmMac Cache "
41                 + "(tunnelIpElanNameToVmMacCache)");
42         dhcpExternalTunnelManager.getTunnelIpElanNameToVmMacCache().forEach(
43             (tunnelIpAndElanName, vmMac) -> {
44                 session.getConsole().println("   Tunnel Ip Address : " + print(tunnelIpAndElanName.getLeft()));
45                 session.getConsole().println("   Elan Name : " + print(tunnelIpAndElanName));
46                 vmMac.forEach(item -> session.getConsole().println("        VM Macs : " + print(item)));
47             }
48         );
49         session.getConsole().println();
50         session.getConsole().println("Printing available Vm Cache (availableVMCache)");
51         dhcpExternalTunnelManager.getAvailableVMCache().forEach(
52             (tunnelIpAndElanName, availableVm) -> {
53                 session.getConsole().println("   Tunnel Ip Address : " + print(tunnelIpAndElanName.getLeft()));
54                 session.getConsole().println("   Elan Name : " + print(tunnelIpAndElanName.getRight()));
55                 availableVm.forEach(item -> session.getConsole().println("        VM Macs : " + print(item)));
56             }
57         );
58         session.getConsole().println();
59         session.getConsole().println("Vni and Mac addresses to Port cache (VniMacAddressToPortCache)");
60         dhcpExternalTunnelManager.getVniMacAddressToPortCache().forEach(
61             (vniAndMac, port) -> {
62                 session.getConsole().println("   VNI : " + print(vniAndMac.getLeft()));
63                 session.getConsole().println("   Mac address : " + print(vniAndMac.getRight()));
64                 session.getConsole().println("   Port : " + print(port));
65             }
66         );
67         return null;
68     }
69
70     Object print(Object input) {
71         return input != null ? input : " ";
72     }
73 }