[ONOS-3730] Populate portSpeed for ODUCLT and OCH ports.
Also move the enum definition of ODU client port signal type outside of OduCltPort class.
Change-Id: Ibdff21d9707ad3d79587f579ad675f673cf9afeb
diff --git a/core/api/src/main/java/org/onosproject/net/CltSignalType.java b/core/api/src/main/java/org/onosproject/net/CltSignalType.java
new file mode 100644
index 0000000..5a5843e
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/CltSignalType.java
@@ -0,0 +1,47 @@
+/*
+ * 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.net;
+
+/**
+ * Represents ODU (Optical channel Data Unit) client port signal type.
+ *
+ * <p>
+ * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)" and
+ * Open Networking Foundation "Optical Transport Protocol Extensions Version 1.0".
+ * </p>
+ */
+public enum CltSignalType {
+ /** bit rate in Mbps. */
+ CLT_1GBE(1_000),
+ CLT_10GBE(10_000),
+ CLT_40GBE(40_000),
+ CLT_100GBE(100_000);
+
+ private final long bitRate;
+
+ CltSignalType(long bitRate) {
+ this.bitRate = bitRate;
+ }
+
+ /**
+ * Return the bit rate in Mbps of the port.
+ * @return bit rate
+ */
+ public long bitRate() {
+ return this.bitRate;
+ }
+}
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/net/OchPort.java b/core/api/src/main/java/org/onosproject/net/OchPort.java
index 8f1630b..c63b29d 100644
--- a/core/api/src/main/java/org/onosproject/net/OchPort.java
+++ b/core/api/src/main/java/org/onosproject/net/OchPort.java
@@ -44,8 +44,8 @@
*/
public OchPort(Element element, PortNumber number, boolean isEnabled, OduSignalType signalType,
boolean isTunable, OchSignal lambda, Annotations... annotations) {
- super(element, number, isEnabled, Type.OCH, 0, annotations);
- this.signalType = checkNotNull(signalType);
+ super(element, number, isEnabled, Type.OCH, checkNotNull(signalType).bitRate(), annotations);
+ this.signalType = signalType;
this.isTunable = isTunable;
this.lambda = checkNotNull(lambda);
}
diff --git a/core/api/src/main/java/org/onosproject/net/OduCltPort.java b/core/api/src/main/java/org/onosproject/net/OduCltPort.java
index 08bb943..56f0002 100644
--- a/core/api/src/main/java/org/onosproject/net/OduCltPort.java
+++ b/core/api/src/main/java/org/onosproject/net/OduCltPort.java
@@ -28,15 +28,7 @@
public class OduCltPort extends DefaultPort {
- public enum SignalType {
- CLT_1GBE,
- CLT_10GBE,
- CLT_40GBE,
- CLT_100GBE
- }
-
- private final SignalType signalType;
-
+ private final CltSignalType signalType;
/**
* Creates an ODU client port in the specified network element.
@@ -48,9 +40,9 @@
* @param annotations optional key/value annotations
*/
public OduCltPort(Element element, PortNumber number, boolean isEnabled,
- SignalType signalType, Annotations... annotations) {
- super(element, number, isEnabled, Type.ODUCLT, 0, annotations);
- this.signalType = checkNotNull(signalType);
+ CltSignalType signalType, Annotations... annotations) {
+ super(element, number, isEnabled, Type.ODUCLT, checkNotNull(signalType).bitRate(), annotations);
+ this.signalType = signalType;
}
/**
@@ -58,7 +50,7 @@
*
* @return ODU client signal type
*/
- public SignalType signalType() {
+ public CltSignalType signalType() {
return signalType;
}
diff --git a/core/api/src/main/java/org/onosproject/net/OduSignalType.java b/core/api/src/main/java/org/onosproject/net/OduSignalType.java
index 014c893..336d4fc 100644
--- a/core/api/src/main/java/org/onosproject/net/OduSignalType.java
+++ b/core/api/src/main/java/org/onosproject/net/OduSignalType.java
@@ -24,10 +24,25 @@
* </p>
*/
public enum OduSignalType {
- ODU0,
- ODU1,
- ODU2,
- ODU2e,
- ODU3,
- ODU4
+ /** bit rate in Mbps. */
+ ODU0(1_250),
+ ODU1(2_500),
+ ODU2(10_000),
+ ODU2e(10_000),
+ ODU3(40_000),
+ ODU4(100_000);
+
+ private final long bitRate;
+
+ OduSignalType(long bitRate) {
+ this.bitRate = bitRate;
+ }
+
+ /**
+ * Return the bit rate in Mbps of the port.
+ * @return bit rate
+ */
+ public long bitRate() {
+ return this.bitRate;
+ }
}
diff --git a/core/api/src/main/java/org/onosproject/net/device/OduCltPortDescription.java b/core/api/src/main/java/org/onosproject/net/device/OduCltPortDescription.java
index eee7de2..3991e64 100644
--- a/core/api/src/main/java/org/onosproject/net/device/OduCltPortDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/device/OduCltPortDescription.java
@@ -16,7 +16,7 @@
package org.onosproject.net.device;
import com.google.common.base.MoreObjects;
-import org.onosproject.net.OduCltPort;
+import org.onosproject.net.CltSignalType;
import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.net.SparseAnnotations;
@@ -26,7 +26,7 @@
*/
public class OduCltPortDescription extends DefaultPortDescription {
- private final OduCltPort.SignalType signalType;
+ private final CltSignalType signalType;
/**
* Creates ODU client port description based on the supplied information.
@@ -36,7 +36,7 @@
* @param signalType ODU client signal type
* @param annotations optional key/value annotations map
*/
- public OduCltPortDescription(PortNumber number, boolean isEnabled, OduCltPort.SignalType signalType,
+ public OduCltPortDescription(PortNumber number, boolean isEnabled, CltSignalType signalType,
SparseAnnotations... annotations) {
super(number, isEnabled, Port.Type.ODUCLT, 0, annotations);
this.signalType = signalType;
@@ -49,7 +49,7 @@
* @param signalType ODU client signal type
* @param annotations optional key/value annotations map
*/
- public OduCltPortDescription(PortDescription base, OduCltPort.SignalType signalType,
+ public OduCltPortDescription(PortDescription base, CltSignalType signalType,
SparseAnnotations annotations) {
super(base, annotations);
this.signalType = signalType;
@@ -60,7 +60,7 @@
*
* @return ODU client signal type
*/
- public OduCltPort.SignalType signalType() {
+ public CltSignalType signalType() {
return signalType;
}
diff --git a/core/api/src/main/java/org/onosproject/net/intent/OpticalCircuitIntent.java b/core/api/src/main/java/org/onosproject/net/intent/OpticalCircuitIntent.java
index 1e515c8..2a412f1 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/OpticalCircuitIntent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/OpticalCircuitIntent.java
@@ -18,8 +18,8 @@
import com.google.common.annotations.Beta;
import com.google.common.base.MoreObjects;
import org.onosproject.core.ApplicationId;
+import org.onosproject.net.CltSignalType;
import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.OduCltPort;
import java.util.Collections;
@@ -33,7 +33,7 @@
public class OpticalCircuitIntent extends Intent {
private final ConnectPoint src;
private final ConnectPoint dst;
- private final OduCltPort.SignalType signalType;
+ private final CltSignalType signalType;
private final boolean isBidirectional;
/**
@@ -49,7 +49,7 @@
* @param priority priority to use for flows from this intent
*/
protected OpticalCircuitIntent(ApplicationId appId, Key key, ConnectPoint src, ConnectPoint dst,
- OduCltPort.SignalType signalType, boolean isBidirectional, int priority) {
+ CltSignalType signalType, boolean isBidirectional, int priority) {
super(appId, key, Collections.emptyList(), priority);
this.src = checkNotNull(src);
this.dst = checkNotNull(dst);
@@ -73,7 +73,7 @@
public static class Builder extends Intent.Builder {
private ConnectPoint src;
private ConnectPoint dst;
- private OduCltPort.SignalType signalType;
+ private CltSignalType signalType;
private boolean isBidirectional;
@Override
@@ -119,7 +119,7 @@
* @param signalType signal type to use for built intent
* @return this builder
*/
- public Builder signalType(OduCltPort.SignalType signalType) {
+ public Builder signalType(CltSignalType signalType) {
this.signalType = signalType;
return this;
}
@@ -188,7 +188,7 @@
*
* @return ODU signal type
*/
- public OduCltPort.SignalType getSignalType() {
+ public CltSignalType getSignalType() {
return signalType;
}