CLI to display Of-Port status 74/91574/10
authorApurba Mukherjee <apurba.mukherjee@ericsson.com>
Thu, 23 Jul 2020 06:18:00 +0000 (11:48 +0530)
committerApurba Mukherjee <apurba.mukherjee@ericsson.com>
Mon, 17 Aug 2020 11:27:10 +0000 (11:27 +0000)
Change-Id: I21401deb23bffd004bfa8acf0fa9cdf5320b1884
Signed-off-by: Apurba Mukherjee <apurba.mukherjee@ericsson.com>
itm/itm-api/src/main/java/org/opendaylight/genius/itm/api/IITMProvider.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepCommandHelper.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepShowOfPorts.java [new file with mode: 0644]
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmProvider.java
itm/itm-impl/src/main/resources/OSGI-INF/blueprint/itm.xml

index 82c8508c086d0b7caf607cf86d8a05a219ed4d5c..8676edfff54c85c18e18a2b527918fb0c310785b 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 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.TunnelTypeBase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.of.teps.state.OfTep;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
 import org.opendaylight.yangtools.yang.common.Uint64;
 
@@ -54,4 +55,6 @@ public interface IITMProvider {
     Interface getInterface(String tunnelName);
 
     Optional<StateTunnelList> getTunnelState(String interfaceName) throws ReadFailedException;
+
+    void showOfPorts(Collection<OfTep> ofTeps);
 }
index 6a10945831be2529d497b436c59d8949d693d873..d6a6c12c3b35e6dab4e0b92fed43ed9c4125da67 100644 (file)
@@ -52,6 +52,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.TunnelMonitorParamsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TepTypeInternal;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.TunnelOperStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.of.teps.state.OfTep;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZones;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZonesBuilder;
@@ -574,4 +575,23 @@ public class TepCommandHelper {
     public void handleError(String errorMessage) throws TepException {
         throw new TepException(errorMessage);
     }
+
+    @SuppressWarnings("checkstyle:RegexpSinglelineJava")
+    public void showOfPorts(Collection<OfTep> ofTeps) {
+        List<String> result = new ArrayList<String>();
+
+        result.add(String.format("%-16s  %-40s %-16s %-16s %-16s", "Source_DPN", "OfTep_Ip", "OfPort_Name",
+                "OfPort_Number", "State"));
+        result.add("-------------------------------------------------------------------------------------------------");
+
+        for (OfTep ofTep : ofTeps) {
+            result.add(String.format("%-16s  %-40s %-16s %-16s %-16s", ofTep.getSourceDpnId(),
+                    ofTep.getTepIp().getIpv4Address().getValue(), ofTep.getOfPortName(),ofTep.getPortNumber(),
+                    ofTep.getOfTepState()));
+        }
+
+        for (String p : result) {
+            System.out.println(p);
+        }
+    }
 }
diff --git a/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepShowOfPorts.java b/itm/itm-impl/src/main/java/org/opendaylight/genius/itm/cli/TepShowOfPorts.java
new file mode 100644 (file)
index 0000000..6338702
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2020 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,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.genius.itm.cli;
+
+import java.util.Collection;
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.opendaylight.genius.itm.api.IITMProvider;
+import org.opendaylight.genius.itm.cache.OfTepStateCache;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.of.teps.state.OfTep;
+
+@Command(scope = "tep", name = "show-ofports", description = "Monitors of ports")
+
+public class TepShowOfPorts extends OsgiCommandSupport {
+
+    private final IITMProvider itmProvider;
+    private final OfTepStateCache ofTepStateCache;
+
+    public TepShowOfPorts(IITMProvider itmProvider, OfTepStateCache ofTepStateCache) {
+        this.itmProvider = itmProvider;
+        this.ofTepStateCache = ofTepStateCache;
+    }
+
+    @Override
+    @SuppressWarnings("checkstyle:RegexpSinglelineJava")
+    protected Object doExecute() {
+        Collection<OfTep> ofPorts = ofTepStateCache.getAllPresent();
+        if (!ofPorts.isEmpty()) {
+            itmProvider.showOfPorts(ofPorts);
+        } else {
+            System.out.println("No OF ports configured on the switch");
+        }
+        return null;
+    }
+}
index faa434f659b9da198d8c825f07b314092b2e499e..ea4e28140ed66a09b345968130ab4952056d7bb7 100644 (file)
@@ -57,6 +57,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.config.rev160406.ItmConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.of.teps.state.OfTep;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointInputBuilder;
@@ -372,6 +373,14 @@ public class ItmProvider implements AutoCloseable, IITMProvider /*,ItmStateServi
         return tunnelStateCache.get(tunnelStateCache.getStateTunnelListIdentifier(interfaceName));
     }
 
+    @Override
+    public void showOfPorts(Collection<OfTep> ofTeps) {
+        if (ofTeps != null) {
+            tepCommandHelper.showOfPorts(ofTeps); }
+        else {
+            LOG.debug("No ofports available"); }
+    }
+
     public void handleOwnershipChange(EntityOwnershipChange ownershipChange,
                                       EntityOwnershipListenerRegistration listenerRegistration) {
         if (ownershipChange.getState().isOwner()) {
index 425b4ad632de89c7344229853e8c60d6526704da..89f20076ba8029392c40b45127fa7e2449a1d87e 100644 (file)
@@ -125,6 +125,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
                 <property name="itmProvider" ref="itmProvider" />
             </action>
         </command>
+        <command>
+            <action class="org.opendaylight.genius.itm.cli.TepShowOfPorts">
+                <argument ref="itmProvider" />
+                <argument ref="ofTepStateCache" />
+            </action>
+        </command>
     </command-bundle>
 
 </blueprint>