blob: 68a94f834dd6d0ac565f210c805316b3eb1ab2f2 [file] [log] [blame]
Jimo Jung14e87bf2018-09-03 16:28:13 +09001/*
2 * Copyright 2018-present Open Networking Foundation
3 *
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.openstackvtap.cli;
17
18import com.google.common.collect.ImmutableSet;
19import org.apache.karaf.shell.commands.Command;
20import org.onosproject.cli.AbstractShellCommand;
21import org.onosproject.net.DeviceId;
22import org.onosproject.openstacknode.api.OpenstackNode;
23import org.onosproject.openstacknode.api.OpenstackNodeService;
24import org.onosproject.openstackvtap.api.OpenstackVtapAdminService;
25import org.onosproject.openstackvtap.api.OpenstackVtapNetwork;
26
27import java.util.Objects;
28import java.util.Set;
29import java.util.stream.Collectors;
30
31/**
32 * Lists openstack vtap networks.
33 */
34@Command(scope = "onos", name = "openstack-vtap-network-list",
35 description = "OpenstackVtap network list")
36public class OpenstackVtapNetworkListCommand extends AbstractShellCommand {
37
38 private final OpenstackVtapAdminService osVtapAdminService = get(OpenstackVtapAdminService.class);
39 private final OpenstackNodeService osNodeService = get(OpenstackNodeService.class);
40
41 private static final String FORMAT = "mode [%s], networkId [%d], serverIp [%s]";
42 private static final String FORMAT_NODES = " openstack nodes: %s";
43
44 @Override
45 protected void execute() {
46 OpenstackVtapNetwork vtapNetwork = osVtapAdminService.getVtapNetwork();
47 if (vtapNetwork != null) {
48 print(FORMAT,
49 vtapNetwork.mode().toString(),
50 vtapNetwork.networkId() != null ? vtapNetwork.networkId() : "N/A",
51 vtapNetwork.serverIp().toString());
52 print(FORMAT_NODES, osNodeNames(osVtapAdminService.getVtapNetworkDevices()));
53 }
54 }
55
56 private Set<String> osNodeNames(Set<DeviceId> deviceIds) {
57 if (deviceIds == null) {
58 return ImmutableSet.of();
59 } else {
60 return deviceIds.parallelStream()
61 .map(osNodeService::node)
62 .filter(Objects::nonNull)
63 .map(OpenstackNode::hostname)
64 .collect(Collectors.toSet());
65 }
66 }
67
68}