Jonathan Hart
Committed by Gerrit Code Review

Add CLI command to view provisioned subscribers

Change-Id: I67a49d7fa569e9f4f28eb8eaea1b34ba2bd5a5fa
......@@ -21,6 +21,7 @@ import org.onosproject.event.ListenerService;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
import java.util.Collection;
import java.util.Map;
/**
......@@ -45,6 +46,13 @@ public interface AccessDeviceService
void removeSubscriber(ConnectPoint port);
/**
* Returns information about the provisioned subscribers.
*
* @return subscribers
*/
Collection<Map.Entry<ConnectPoint, VlanId>> getSubscribers();
/**
* Returns the map of configured OLTs.
*
* @return a map
......
......@@ -26,9 +26,9 @@ import org.onosproject.olt.AccessDeviceService;
import java.util.Map;
/**
* Adds a subscriber to an access device.
* Shows configured OLTs.
*/
@Command(scope = "onos", name = "show-olts",
@Command(scope = "onos", name = "olts",
description = "Shows configured OLTs")
public class ShowOltCommand extends AbstractShellCommand {
......
/*
* Copyright 2016 Open Networking Laboratory
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.olt.cli;
import org.apache.karaf.shell.commands.Command;
import org.onlab.packet.VlanId;
import org.onosproject.cli.AbstractShellCommand;
import org.onosproject.net.ConnectPoint;
import org.onosproject.olt.AccessDeviceService;
import java.util.Map;
/**
* Shows provisioned subscribers.
*/
@Command(scope = "onos", name = "subscribers",
description = "Shows provisioned subscribers")
public class ShowSubscribersCommand extends AbstractShellCommand {
private static final String FORMAT = "port=%s, cvlan=%s";
@Override
protected void execute() {
AccessDeviceService service = AbstractShellCommand.get(AccessDeviceService.class);
service.getSubscribers().forEach(this::display);
}
private void display(Map.Entry<ConnectPoint, VlanId> subscriber) {
print(FORMAT, subscriber.getKey(), subscriber.getValue());
}
}
......@@ -67,6 +67,7 @@ import org.onosproject.store.service.StorageService;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import java.util.Collection;
import java.util.Dictionary;
import java.util.List;
import java.util.Map;
......@@ -243,6 +244,11 @@ public class Olt
}
@Override
public Collection<Map.Entry<ConnectPoint, VlanId>> getSubscribers() {
return subscribers.entrySet();
}
@Override
public Map<DeviceId, AccessDeviceData> fetchOlts() {
return Maps.newHashMap(oltData);
}
......@@ -459,11 +465,10 @@ public class Olt
public void event(DeviceEvent event) {
DeviceId devId = event.subject().id();
if (!oltData.containsKey(devId)) {
log.debug("Device {} is not an OLT", devId);
return;
}
switch (event.type()) {
//TODO: Port handling and bookkeeping should be inproved once
//TODO: Port handling and bookkeeping should be improved once
// olt firmware handles correct behaviour.
case PORT_ADDED:
if (!oltData.get(devId).uplink().equals(event.port().number()) &&
......
......@@ -37,6 +37,9 @@
<null/>
</completers>
</command>
<command>
<action class="org.onosproject.olt.cli.ShowSubscribersCommand"/>
</command>
</command-bundle>
<bean id="deviceIdCompleter" class="org.onosproject.cli.net.DeviceIdCompleter"/>
......