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;
Interface getInterface(String tunnelName);
Optional<StateTunnelList> getTunnelState(String interfaceName) throws ReadFailedException;
+
+ void showOfPorts(Collection<OfTep> ofTeps);
}
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;
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);
+ }
+ }
}
--- /dev/null
+/*
+ * 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;
+ }
+}
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;
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()) {
<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>