Add CLI command to view provisioned subscribers
Change-Id: I67a49d7fa569e9f4f28eb8eaea1b34ba2bd5a5fa
diff --git a/api/src/main/java/org/onosproject/olt/AccessDeviceService.java b/api/src/main/java/org/onosproject/olt/AccessDeviceService.java
index 74d8a28..456e264 100644
--- a/api/src/main/java/org/onosproject/olt/AccessDeviceService.java
+++ b/api/src/main/java/org/onosproject/olt/AccessDeviceService.java
@@ -21,6 +21,7 @@
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
+import java.util.Collection;
import java.util.Map;
/**
@@ -45,6 +46,13 @@
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
diff --git a/app/src/main/java/org/onosproject/olt/cli/ShowOltCommand.java b/app/src/main/java/org/onosproject/olt/cli/ShowOltCommand.java
index 63b3af1..21996aa 100644
--- a/app/src/main/java/org/onosproject/olt/cli/ShowOltCommand.java
+++ b/app/src/main/java/org/onosproject/olt/cli/ShowOltCommand.java
@@ -26,9 +26,9 @@
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 {
diff --git a/app/src/main/java/org/onosproject/olt/cli/ShowSubscribersCommand.java b/app/src/main/java/org/onosproject/olt/cli/ShowSubscribersCommand.java
new file mode 100644
index 0000000..105abe9
--- /dev/null
+++ b/app/src/main/java/org/onosproject/olt/cli/ShowSubscribersCommand.java
@@ -0,0 +1,45 @@
+/*
+ * 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());
+ }
+}
diff --git a/app/src/main/java/org/onosproject/olt/impl/Olt.java b/app/src/main/java/org/onosproject/olt/impl/Olt.java
index 976fcaa..a62b115 100644
--- a/app/src/main/java/org/onosproject/olt/impl/Olt.java
+++ b/app/src/main/java/org/onosproject/olt/impl/Olt.java
@@ -67,6 +67,7 @@
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 @@
}
@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 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()) &&
diff --git a/app/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/app/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 5d114f9..aa62d74 100644
--- a/app/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/app/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -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"/>