Allow reading PortDescription from DeviceStore

DeviceManager had to reverse-engineer PortDescription
in order to mark port off-line, etc.
which required domain specific knowledge.
(e.g., OpticalPortOperatorr#descriptionOf)

required work for ONOS-4691

Change-Id: I954f5f2db2cb7db938f498ead4c8e3f84212a53f
diff --git a/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java b/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java
index f3bc222..cfc9626 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DeviceStore.java
@@ -24,6 +24,7 @@
 
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Stream;
 
 /**
  * Manages inventory of infrastructure devices; not intended for direct use.
@@ -115,6 +116,15 @@
     List<Port> getPorts(DeviceId deviceId);
 
     /**
+     * Returns the stream of port descriptions that belong to the specified device.
+     *
+     * @param providerId  provider identifier
+     * @param deviceId    device identifier
+     * @return stream of device portdescriptions
+     */
+    Stream<PortDescription> getPortDescriptions(ProviderId providerId, DeviceId deviceId);
+
+    /**
      * Updates the port statistics of the specified device using the give port
      * statistics.
      *
@@ -152,6 +162,16 @@
     Port getPort(DeviceId deviceId, PortNumber portNumber);
 
     /**
+     * Returns the specified device port description.
+     *
+     * @param providerId provider identifier
+     * @param deviceId   device identifier
+     * @param portNumber port number
+     * @return device port description
+     */
+    PortDescription getPortDescription(ProviderId providerId, DeviceId deviceId, PortNumber portNumber);
+
+    /**
      * Indicates whether the specified device is available/online.
      *
      * @param deviceId device identifier