blob: 34e74178092cd4cc65c24ef82194106d1fc9934f [file] [log] [blame]
Jonathan Harteb8c9472015-08-05 07:43:13 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2015-present Open Networking Foundation
Jonathan Harteb8c9472015-08-05 07:43:13 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.cli.net;
17
18import com.google.common.collect.Lists;
Ray Milkeyd84f89b2018-08-17 14:54:17 -070019import org.apache.karaf.shell.api.action.Command;
20import org.apache.karaf.shell.api.action.lifecycle.Service;
Jonathan Hartff280fa2015-11-10 08:33:17 -080021import org.onlab.packet.MacAddress;
22import org.onlab.packet.VlanId;
Jonathan Harteb8c9472015-08-05 07:43:13 -070023import org.onosproject.cli.AbstractShellCommand;
Ray Milkeyc7477292016-03-11 10:53:43 -080024import org.onosproject.utils.Comparators;
Ray Milkeyfacf2862017-08-03 11:58:29 -070025import org.onosproject.net.intf.Interface;
26import org.onosproject.net.intf.InterfaceService;
Jonathan Harteb8c9472015-08-05 07:43:13 -070027
28import java.util.Collections;
29import java.util.List;
30
31/**
32 * Lists all configured interfaces.
33 */
Ray Milkeyd84f89b2018-08-17 14:54:17 -070034@Service
Jonathan Harteb8c9472015-08-05 07:43:13 -070035@Command(scope = "onos", name = "interfaces",
36 description = "Lists all configured interfaces.")
37public class InterfacesListCommand extends AbstractShellCommand {
38
Jonathan Hartff280fa2015-11-10 08:33:17 -080039 private static final String FORMAT = "%s: port=%s/%s";
40 private static final String IP_FORMAT = " ips=";
41 private static final String MAC_FORMAT = " mac=";
42 private static final String VLAN_FORMAT = " vlan=";
Charles Chanbae2cb22017-01-18 19:35:20 -080043 private static final String VLAN_UNTAGGED = " vlanUntagged=";
44 private static final String VLAN_TAGGED = " vlanTagged=";
45 private static final String VLAN_NATIVE = " vlanNative=";
Jonathan Harteb8c9472015-08-05 07:43:13 -070046
Jonathan Hartff280fa2015-11-10 08:33:17 -080047 private static final String NO_NAME = "(unamed)";
Jonathan Hart7dbe6292015-11-10 08:33:17 -080048
Jonathan Harteb8c9472015-08-05 07:43:13 -070049 @Override
Ray Milkeyd84f89b2018-08-17 14:54:17 -070050 protected void doExecute() {
Jonathan Harteb8c9472015-08-05 07:43:13 -070051 InterfaceService interfaceService = get(InterfaceService.class);
52
53 List<Interface> interfaces = Lists.newArrayList(interfaceService.getInterfaces());
54
55 Collections.sort(interfaces, Comparators.INTERFACES_COMPARATOR);
56
Jonathan Hartff280fa2015-11-10 08:33:17 -080057 interfaces.forEach(this::printInterface);
58 }
59
60 private void printInterface(Interface intf) {
61 StringBuilder formatStringBuilder = new StringBuilder(FORMAT);
62
Ray Milkey048bf9a2017-05-12 14:31:50 -070063 if (!intf.ipAddressesList().isEmpty()) {
Jonathan Hartff280fa2015-11-10 08:33:17 -080064 formatStringBuilder.append(IP_FORMAT);
Ray Milkey048bf9a2017-05-12 14:31:50 -070065 formatStringBuilder.append(intf.ipAddressesList().toString());
Jonathan Harteb8c9472015-08-05 07:43:13 -070066 }
Jonathan Hartff280fa2015-11-10 08:33:17 -080067
68 if (!intf.mac().equals(MacAddress.NONE)) {
69 formatStringBuilder.append(MAC_FORMAT);
70 formatStringBuilder.append(intf.mac().toString());
71 }
72
73 if (!intf.vlan().equals(VlanId.NONE)) {
74 formatStringBuilder.append(VLAN_FORMAT);
75 formatStringBuilder.append(intf.vlan().toString());
76 }
77
Charles Chanbae2cb22017-01-18 19:35:20 -080078 if (!intf.vlanUntagged().equals(VlanId.NONE)) {
79 formatStringBuilder.append(VLAN_UNTAGGED);
80 formatStringBuilder.append(intf.vlanUntagged().toString());
81 }
82
83 if (!intf.vlanTagged().isEmpty()) {
84 formatStringBuilder.append(VLAN_TAGGED);
85 formatStringBuilder.append(intf.vlanTagged().toString());
86 }
87
88 if (!intf.vlanNative().equals(VlanId.NONE)) {
89 formatStringBuilder.append(VLAN_NATIVE);
90 formatStringBuilder.append(intf.vlanNative().toString());
91 }
92
Jonathan Hartff280fa2015-11-10 08:33:17 -080093 String name = (intf.name().equals(Interface.NO_INTERFACE_NAME)) ?
94 NO_NAME : intf.name();
95
96 print(formatStringBuilder.toString(), name, intf.connectPoint().deviceId(),
97 intf.connectPoint().port());
Jonathan Harteb8c9472015-08-05 07:43:13 -070098 }
99
100}