2 * Copyright (c) 2018 Ericsson India Global Services Pvt Ltd. 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.netvirt.dhcpservice.shell;
10 import org.apache.karaf.shell.commands.Command;
11 import org.apache.karaf.shell.console.OsgiCommandSupport;
12 import org.eclipse.jdt.annotation.Nullable;
13 import org.opendaylight.netvirt.dhcpservice.api.IDhcpExternalTunnelManager;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
17 @Command(scope = "dhcp", name = "show-cache", description = "Displays dhcp cache")
18 public class DhcpCacheCli extends OsgiCommandSupport {
20 private static final Logger LOG = LoggerFactory.getLogger(DhcpCacheCli.class);
21 private IDhcpExternalTunnelManager dhcpExternalTunnelManager;
23 public void setDhcpExternalTunnelManager(IDhcpExternalTunnelManager dhcpExternalTunnelManager) {
24 this.dhcpExternalTunnelManager = dhcpExternalTunnelManager;
29 protected Object doExecute() {
30 session.getConsole().println("Printing Designated Dpns To TunnelIp and ElanName cache "
31 + "(DesignatedDpnsToTunnelIpElanNameCache)");
32 dhcpExternalTunnelManager.getDesignatedDpnsToTunnelIpElanNameCache().forEach(
33 (dpnId, tunnelIpAndElanName) -> {
34 session.getConsole().println(" DPN id : " + print(dpnId));
35 tunnelIpAndElanName.forEach(item -> {
36 session.getConsole().println(" Ip address : " + print(item.getLeft()));
37 session.getConsole().println(" Elan name : " + print(item.getRight()));
41 session.getConsole().println();
42 session.getConsole().println("Printing TunnelIp and ElanName To VmMac Cache "
43 + "(tunnelIpElanNameToVmMacCache)");
44 dhcpExternalTunnelManager.getTunnelIpElanNameToVmMacCache().forEach(
45 (tunnelIpAndElanName, vmMac) -> {
46 session.getConsole().println(" Tunnel Ip Address : " + print(tunnelIpAndElanName.getLeft()));
47 session.getConsole().println(" Elan Name : " + print(tunnelIpAndElanName));
48 vmMac.forEach(item -> session.getConsole().println(" VM Macs : " + print(item)));
51 session.getConsole().println();
52 session.getConsole().println("Printing available Vm Cache (availableVMCache)");
53 dhcpExternalTunnelManager.getAvailableVMCache().forEach(
54 (tunnelIpAndElanName, availableVm) -> {
55 session.getConsole().println(" Tunnel Ip Address : " + print(tunnelIpAndElanName.getLeft()));
56 session.getConsole().println(" Elan Name : " + print(tunnelIpAndElanName.getRight()));
57 availableVm.forEach(item -> session.getConsole().println(" VM Macs : " + print(item)));
60 session.getConsole().println();
61 session.getConsole().println("Vni and Mac addresses to Port cache (VniMacAddressToPortCache)");
62 dhcpExternalTunnelManager.getVniMacAddressToPortCache().forEach(
63 (vniAndMac, port) -> {
64 session.getConsole().println(" VNI : " + print(vniAndMac.getLeft()));
65 session.getConsole().println(" Mac address : " + print(vniAndMac.getRight()));
66 session.getConsole().println(" Port : " + print(port));
72 Object print(Object input) {
73 return input != null ? input : " ";