blob: deda24454194b977dad556e416cd491f4443a179 [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;
19import org.apache.karaf.shell.commands.Command;
Jonathan Hartff280fa2015-11-10 08:33:17 -080020import org.onlab.packet.MacAddress;
21import org.onlab.packet.VlanId;
Jonathan Harteb8c9472015-08-05 07:43:13 -070022import org.onosproject.cli.AbstractShellCommand;
Ray Milkeyc7477292016-03-11 10:53:43 -080023import org.onosproject.utils.Comparators;
Ray Milkeyfacf2862017-08-03 11:58:29 -070024import org.onosproject.net.intf.Interface;
25import org.onosproject.net.intf.InterfaceService;
Jonathan Harteb8c9472015-08-05 07:43:13 -070026
27import java.util.Collections;
28import java.util.List;
29
30/**
31 * Lists all configured interfaces.
32 */
33@Command(scope = "onos", name = "interfaces",
34 description = "Lists all configured interfaces.")
35public class InterfacesListCommand extends AbstractShellCommand {
36
Jonathan Hartff280fa2015-11-10 08:33:17 -080037 private static final String FORMAT = "%s: port=%s/%s";
38 private static final String IP_FORMAT = " ips=";
39 private static final String MAC_FORMAT = " mac=";
40 private static final String VLAN_FORMAT = " vlan=";
Charles Chanbae2cb22017-01-18 19:35:20 -080041 private static final String VLAN_UNTAGGED = " vlanUntagged=";
42 private static final String VLAN_TAGGED = " vlanTagged=";
43 private static final String VLAN_NATIVE = " vlanNative=";
Jonathan Harteb8c9472015-08-05 07:43:13 -070044
Jonathan Hartff280fa2015-11-10 08:33:17 -080045 private static final String NO_NAME = "(unamed)";
Jonathan Hart7dbe6292015-11-10 08:33:17 -080046
Jonathan Harteb8c9472015-08-05 07:43:13 -070047 @Override
48 protected void execute() {
49 InterfaceService interfaceService = get(InterfaceService.class);
50
51 List<Interface> interfaces = Lists.newArrayList(interfaceService.getInterfaces());
52
53 Collections.sort(interfaces, Comparators.INTERFACES_COMPARATOR);
54
Jonathan Hartff280fa2015-11-10 08:33:17 -080055 interfaces.forEach(this::printInterface);
56 }
57
58 private void printInterface(Interface intf) {
59 StringBuilder formatStringBuilder = new StringBuilder(FORMAT);
60
Ray Milkey048bf9a2017-05-12 14:31:50 -070061 if (!intf.ipAddressesList().isEmpty()) {
Jonathan Hartff280fa2015-11-10 08:33:17 -080062 formatStringBuilder.append(IP_FORMAT);
Ray Milkey048bf9a2017-05-12 14:31:50 -070063 formatStringBuilder.append(intf.ipAddressesList().toString());
Jonathan Harteb8c9472015-08-05 07:43:13 -070064 }
Jonathan Hartff280fa2015-11-10 08:33:17 -080065
66 if (!intf.mac().equals(MacAddress.NONE)) {
67 formatStringBuilder.append(MAC_FORMAT);
68 formatStringBuilder.append(intf.mac().toString());
69 }
70
71 if (!intf.vlan().equals(VlanId.NONE)) {
72 formatStringBuilder.append(VLAN_FORMAT);
73 formatStringBuilder.append(intf.vlan().toString());
74 }
75
Charles Chanbae2cb22017-01-18 19:35:20 -080076 if (!intf.vlanUntagged().equals(VlanId.NONE)) {
77 formatStringBuilder.append(VLAN_UNTAGGED);
78 formatStringBuilder.append(intf.vlanUntagged().toString());
79 }
80
81 if (!intf.vlanTagged().isEmpty()) {
82 formatStringBuilder.append(VLAN_TAGGED);
83 formatStringBuilder.append(intf.vlanTagged().toString());
84 }
85
86 if (!intf.vlanNative().equals(VlanId.NONE)) {
87 formatStringBuilder.append(VLAN_NATIVE);
88 formatStringBuilder.append(intf.vlanNative().toString());
89 }
90
Jonathan Hartff280fa2015-11-10 08:33:17 -080091 String name = (intf.name().equals(Interface.NO_INTERFACE_NAME)) ?
92 NO_NAME : intf.name();
93
94 print(formatStringBuilder.toString(), name, intf.connectPoint().deviceId(),
95 intf.connectPoint().port());
Jonathan Harteb8c9472015-08-05 07:43:13 -070096 }
97
98}