X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=interfacemanager%2Finterfacemanager-shell%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fgenius%2Finterfacemanager%2Fshell%2FIfmCLIUtil.java;h=297c11244365394e6813a3853b2ea7e13d7a9ebc;hb=868ec032398b8ba71fe1643c7a91f8e3c881ea0f;hp=a15450f9c96a285b3b3fdd73d582bdb9e6ce483c;hpb=1c104d713ed34091e1057cad747ffb9bad042502;p=genius.git diff --git a/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/IfmCLIUtil.java b/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/IfmCLIUtil.java index a15450f9c..297c11244 100644 --- a/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/IfmCLIUtil.java +++ b/interfacemanager/interfacemanager-shell/src/main/java/org/opendaylight/genius/interfacemanager/shell/IfmCLIUtil.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. + * Copyright (c) 2016 - 2017 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -7,24 +7,37 @@ */ package org.opendaylight.genius.interfacemanager.shell; +import java.util.Formatter; import org.apache.felix.service.command.CommandSession; import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo; import org.opendaylight.genius.interfacemanager.globals.InterfaceInfo.InterfaceOpState; +import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.SouthboundUtils; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Options; +import org.opendaylight.yangtools.yang.common.Uint64; -import java.util.Formatter; - -public class IfmCLIUtil { +public final class IfmCLIUtil { private static final String VLAN_OUTPUT_FORMAT_LINE1 = "%-55s"; private static final String VLAN_OUTPUT_FORMAT = "%-24s %-20s %-15s %-24s"; private static final String VXLAN_OUTPUT_FORMAT = "%-24s %-24s %-18s %-5s"; private static final String VXLAN_OUTPUT_FORMAT_LINE1 = "%-49s %-45s"; + private static final String IF_TP_OUTPUT_FORMAT = "%-24s"; + private static final String TP_OUTPUT_FORMAT = "%-24s %-20s %-8s"; + private static final String BFD_OUTPUT_FORMAT = "%-24s %-8s"; + private static final String TP_VXLAN_OUTPUT_FORMAT_LINE1 = "local_ip:%-24s remote_ip:%-24s key:%-12s"; + private static final String BRIDGE_PORTS_OUTPUT_FORMAT_HEADER = "%-8s %-20s"; + private static final String TP_OUTPUT_FORMAT_LINE2 = "%-12s"; private static final String UNSET = "N/A"; + private static final int IFTYPE_LEN = "InterfaceType".length(); + + private IfmCLIUtil() { + } - public static void showVlanHeaderOutput(CommandSession session) { + static void showVlanHeaderOutput(CommandSession session) { StringBuilder sb = new StringBuilder(); Formatter fmt = new Formatter(sb); session.getConsole().println(fmt.format(VLAN_OUTPUT_FORMAT_LINE1, "Name")); @@ -37,36 +50,37 @@ public class IfmCLIUtil { sb.setLength(0); session.getConsole().println(fmt.format(VLAN_OUTPUT_FORMAT, "Description", "", "", "")); sb.setLength(0); - session.getConsole().println(fmt.format("--------------------------------------------------------------------------------")); + session.getConsole().println(fmt + .format("--------------------------------------------------------------------------------")); sb.setLength(0); fmt.close(); } - public static void showVlanOutput(InterfaceInfo ifaceInfo, Interface iface, CommandSession session) { + static void showVlanOutput(InterfaceInfo ifaceInfo, Interface iface, CommandSession session) { StringBuilder sb = new StringBuilder(); Formatter fmt = new Formatter(sb); - IfL2vlan l2vlan = iface.getAugmentation(IfL2vlan.class); - int vlanId = l2vlan != null ? l2vlan.getVlanId() != null ? l2vlan.getVlanId().getValue() : 0 : 0; + IfL2vlan l2vlan = iface.augmentation(IfL2vlan.class); + int vlanId = l2vlan != null ? l2vlan.getVlanId() != null ? l2vlan.getVlanId().getValue().toJava() : 0 : 0; session.getConsole().println(fmt.format(VLAN_OUTPUT_FORMAT_LINE1, iface.getName())); sb.setLength(0); session.getConsole().println(fmt.format(VLAN_OUTPUT_FORMAT, - "", (ifaceInfo == null) ? UNSET : ifaceInfo.getDpId(), - (ifaceInfo == null) ? UNSET : ifaceInfo.getPortName(), vlanId)); + "", ifaceInfo == null ? UNSET : ifaceInfo.getDpId(), + ifaceInfo == null ? UNSET : ifaceInfo.getPortName(), vlanId)); sb.setLength(0); session.getConsole().println(fmt.format(VLAN_OUTPUT_FORMAT, - (ifaceInfo == null) ? UNSET : ifaceInfo.getInterfaceTag(), - (ifaceInfo == null) ? UNSET : ifaceInfo.getPortNo(), - (ifaceInfo == null) ? UNSET : ifaceInfo.getAdminState(), - (ifaceInfo == null) ? UNSET : ifaceInfo.getOpState())); + ifaceInfo == null ? UNSET : ifaceInfo.getInterfaceTag(), + ifaceInfo == null ? UNSET : ifaceInfo.getPortNo(), + ifaceInfo == null ? UNSET : ifaceInfo.getAdminState(), + ifaceInfo == null ? UNSET : ifaceInfo.getOpState())); sb.setLength(0); - session.getConsole().println(fmt.format(VLAN_OUTPUT_FORMAT + "\n", + session.getConsole().println(fmt.format(VLAN_OUTPUT_FORMAT + "%n", iface.getDescription(), "", "", "")); sb.setLength(0); fmt.close(); } - public static void showVxlanHeaderOutput(CommandSession session) { + static void showVxlanHeaderOutput(CommandSession session) { StringBuilder sb = new StringBuilder(); Formatter fmt = new Formatter(sb); session.getConsole().println(fmt @@ -83,26 +97,138 @@ public class IfmCLIUtil { fmt.close(); } - public static void showVxlanOutput(Interface iface, InterfaceInfo interfaceInfo, CommandSession session) { + static void showVxlanOutput(Interface iface, InterfaceInfo interfaceInfo, CommandSession session) { StringBuilder sb = new StringBuilder(); Formatter fmt = new Formatter(sb); session.getConsole().println(fmt.format(VXLAN_OUTPUT_FORMAT_LINE1, iface.getName(), iface.getDescription() == null ? UNSET : iface.getDescription())); sb.setLength(0); - IfTunnel ifTunnel = iface.getAugmentation(IfTunnel.class); + IfTunnel ifTunnel = iface.augmentation(IfTunnel.class); session.getConsole().println(fmt.format(VXLAN_OUTPUT_FORMAT, - ifTunnel.getTunnelSource().getIpv4Address().getValue(), - ifTunnel.getTunnelDestination().getIpv4Address().getValue(), - ifTunnel.getTunnelGateway() == null ? UNSET : ifTunnel.getTunnelGateway().getIpv4Address().getValue(), - (interfaceInfo == null) ? InterfaceInfo.InterfaceAdminState.DISABLED : interfaceInfo.getAdminState())); + ifTunnel.getTunnelSource().stringValue(), + ifTunnel.getTunnelDestination().stringValue(), + ifTunnel.getTunnelGateway() == null ? UNSET : ifTunnel.getTunnelGateway().stringValue(), + interfaceInfo == null ? InterfaceInfo.InterfaceAdminState.DISABLED : interfaceInfo.getAdminState())); sb.setLength(0); - ParentRefs parentRefs = iface.getAugmentation(ParentRefs.class); + ParentRefs parentRefs = iface.augmentation(ParentRefs.class); session.getConsole().println(fmt.format(VXLAN_OUTPUT_FORMAT + "\n", - (interfaceInfo == null) ? InterfaceOpState.DOWN : interfaceInfo.getOpState(), + interfaceInfo == null ? InterfaceOpState.DOWN : interfaceInfo.getOpState(), String.format("%s/%s", parentRefs.getDatapathNodeIdentifier(), iface.getName()), - (interfaceInfo == null) ? UNSET : interfaceInfo.getInterfaceTag(), "")); + interfaceInfo == null ? UNSET : interfaceInfo.getInterfaceTag(), "")); + fmt.close(); + } + + //TODO: Capture more information and cleaner display for TerminationPoint + static void showInterfaceToTpHeader(CommandSession session) { + StringBuilder sb = new StringBuilder(); + Formatter fmt = new Formatter(sb); + session.getConsole().println(fmt + .format(TP_OUTPUT_FORMAT, "PortName", "Type", "OFPort")); + sb.setLength(0); + session.getConsole().println(fmt + .format(IF_TP_OUTPUT_FORMAT, "InterfaceName")); + sb.setLength(0); + session.getConsole().println(fmt + .format("--------------------------------------------------------------------------------")); + fmt.close(); + } + + static void showInterfaceToTpOutput(String ifName, OvsdbTerminationPointAugmentation port, + CommandSession session) { + StringBuilder sb = new StringBuilder(); + Formatter fmt = new Formatter(sb); + session.getConsole().println(fmt + .format(TP_OUTPUT_FORMAT, port.getName(), getPortTypeStr(port), port.getOfport())); + sb.setLength(0); + session.getConsole().println(fmt.format(IF_TP_OUTPUT_FORMAT, ifName)); + sb.setLength(0); + fmt.close(); + } + + static void printBfdCachesHeader(CommandSession session) { + StringBuilder sb = new StringBuilder(); + Formatter fmt = new Formatter(sb); + session.getConsole().println(fmt.format(BFD_OUTPUT_FORMAT, "InterfaceName", "OperStatus")); + sb.setLength(0); + session.getConsole().println(fmt + .format("--------------------------------------------------------------------------------")); fmt.close(); } + + static void printBfdCachesOutput(String ifName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf + .interfaces.rev140508.interfaces.state.Interface.OperStatus st, + CommandSession session) { + StringBuilder sb = new StringBuilder(); + Formatter fmt = new Formatter(sb); + session.getConsole().println(fmt.format(BFD_OUTPUT_FORMAT, ifName, st.getName())); + fmt.close(); + } + + static void showBridgePortsHeader(CommandSession session, Uint64 dpnId) { + StringBuilder sb = new StringBuilder(); + Formatter fmt = new Formatter(sb); + session.getConsole().println(fmt + .format(BRIDGE_PORTS_OUTPUT_FORMAT_HEADER, "DPN-ID", dpnId)); + sb.setLength(0); + session.getConsole().println(fmt + .format("--------------------------------------------------------------------------------")); + sb.setLength(0); + session.getConsole().println(fmt + .format(TP_OUTPUT_FORMAT, "PortName", "Type", "OFPort")); + sb.setLength(0); + session.getConsole().println(fmt + .format(TP_OUTPUT_FORMAT_LINE2, "PortDetails")); + sb.setLength(0); + session.getConsole().println(fmt + .format("--------------------------------------------------------------------------------")); + fmt.close(); + } + + static void showBridgePortsOutput(CommandSession session, OvsdbTerminationPointAugmentation port) { + StringBuilder sb = new StringBuilder(); + Formatter fmt = new Formatter(sb); + session.getConsole().println(fmt + .format(TP_OUTPUT_FORMAT, port.getName(), getPortTypeStr(port), port.getOfport())); + sb.setLength(0); + session.getConsole().println(getPortDetails(port)); + sb.setLength(0); + fmt.close(); + } + + private static String getPortTypeStr(OvsdbTerminationPointAugmentation port) { + String portType = port.getInterfaceType().getSimpleName(); + // Skip the InterfaceType part + if (portType.startsWith("InterfaceType")) { + return portType.substring(IFTYPE_LEN); + } else { + return portType; + } + } + + private static String getPortDetails(OvsdbTerminationPointAugmentation port) { + if (SouthboundUtils.isInterfaceTypeTunnel(port.getInterfaceType())) { + String remoteIp = UNSET; + String localIp = UNSET; + String key = UNSET; + for (Options portOption: port.nonnullOptions()) { + switch (portOption.getOption()) { + case "local_ip": + localIp = portOption.getValue(); + break; + case "remote_ip": + remoteIp = portOption.getValue(); + break; + case "key": + key = portOption.getValue(); + break; + default: + break; + } + } + return String.format(TP_VXLAN_OUTPUT_FORMAT_LINE1, localIp, remoteIp, key); + } + return String.format(TP_OUTPUT_FORMAT_LINE2, UNSET); + } }