HIGUCHI Yuta
Committed by Yuta HIGUCHI

ONOS-4415 Remove OmsPort out of core.

Change-Id: Ic796c4e715789ba18f350f28e29db04dd537822f
Showing 21 changed files with 737 additions and 48 deletions
...@@ -26,12 +26,12 @@ import org.onlab.util.Frequency; ...@@ -26,12 +26,12 @@ import org.onlab.util.Frequency;
26 import org.onosproject.utils.Comparators; 26 import org.onosproject.utils.Comparators;
27 import org.onosproject.net.Device; 27 import org.onosproject.net.Device;
28 import org.onosproject.net.OduCltPort; 28 import org.onosproject.net.OduCltPort;
29 -import org.onosproject.net.OmsPort;
30 import org.onosproject.net.OtuPort; 29 import org.onosproject.net.OtuPort;
31 import org.onosproject.net.Port; 30 import org.onosproject.net.Port;
32 import org.onosproject.net.PortNumber; 31 import org.onosproject.net.PortNumber;
33 import org.onosproject.net.device.DeviceService; 32 import org.onosproject.net.device.DeviceService;
34 import org.onosproject.net.optical.OchPort; 33 import org.onosproject.net.optical.OchPort;
34 +import org.onosproject.net.optical.OmsPort;
35 import org.onosproject.net.optical.OpticalDevice; 35 import org.onosproject.net.optical.OpticalDevice;
36 import java.util.ArrayList; 36 import java.util.ArrayList;
37 import java.util.Collections; 37 import java.util.Collections;
...@@ -191,11 +191,27 @@ public class DevicePortsListCommand extends DevicesListCommand { ...@@ -191,11 +191,27 @@ public class DevicePortsListCommand extends DevicesListCommand {
191 ((OduCltPort) port).signalType().toString(), annotations); 191 ((OduCltPort) port).signalType().toString(), annotations);
192 break; 192 break;
193 case OMS: 193 case OMS:
194 - print(FMT_OMS, portName, portIsEnabled, portType, 194 + if (port instanceof org.onosproject.net.OmsPort) {
195 - ((OmsPort) port).minFrequency().asHz() / Frequency.ofGHz(1).asHz(), 195 + org.onosproject.net.OmsPort oms = (org.onosproject.net.OmsPort) port;
196 - ((OmsPort) port).maxFrequency().asHz() / Frequency.ofGHz(1).asHz(), 196 + print("WARN: OmsPort in old model");
197 - ((OmsPort) port).grid().asHz() / Frequency.ofGHz(1).asHz(), 197 + print(FMT_OMS, portName, portIsEnabled, portType,
198 - ((OmsPort) port).totalChannels(), annotations); 198 + oms.minFrequency().asHz() / Frequency.ofGHz(1).asHz(),
199 + oms.maxFrequency().asHz() / Frequency.ofGHz(1).asHz(),
200 + oms.grid().asHz() / Frequency.ofGHz(1).asHz(),
201 + oms.totalChannels(), annotations);
202 + break;
203 + }
204 + if (port instanceof OmsPort) {
205 + OmsPort oms = (OmsPort) port;
206 + print(FMT_OMS, portName, portIsEnabled, portType,
207 + oms.minFrequency().asHz() / Frequency.ofGHz(1).asHz(),
208 + oms.maxFrequency().asHz() / Frequency.ofGHz(1).asHz(),
209 + oms.grid().asHz() / Frequency.ofGHz(1).asHz(),
210 + oms.totalChannels(), annotations);
211 + break;
212 + }
213 + print("WARN: OmsPort but not on OpticalDevice or ill-formed");
214 + print(FMT, portName, portIsEnabled, portType, port.portSpeed(), annotations);
199 break; 215 break;
200 case OTU: 216 case OTU:
201 print(FMT_ODUCLT_OTU, portName, portIsEnabled, portType, 217 print(FMT_ODUCLT_OTU, portName, portIsEnabled, portType,
......
...@@ -28,7 +28,10 @@ import static com.google.common.base.Preconditions.checkNotNull; ...@@ -28,7 +28,10 @@ import static com.google.common.base.Preconditions.checkNotNull;
28 * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)" 28 * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)"
29 * 29 *
30 * Assumes we only support fixed grid for now. 30 * Assumes we only support fixed grid for now.
31 + *
32 + * @deprecated in Goldeneye (1.6.0)
31 */ 33 */
34 +@Deprecated
32 public class OmsPort extends DefaultPort { 35 public class OmsPort extends DefaultPort {
33 36
34 private final Frequency minFrequency; // Minimum frequency 37 private final Frequency minFrequency; // Minimum frequency
......
...@@ -23,7 +23,10 @@ import org.onosproject.net.SparseAnnotations; ...@@ -23,7 +23,10 @@ import org.onosproject.net.SparseAnnotations;
23 23
24 /** 24 /**
25 * Default implementation of immutable OMS port description. 25 * Default implementation of immutable OMS port description.
26 + *
27 + * @deprecated in Goldeneye (1.6.0)
26 */ 28 */
29 +@Deprecated
27 public class OmsPortDescription extends DefaultPortDescription { 30 public class OmsPortDescription extends DefaultPortDescription {
28 31
29 private final Frequency minFrequency; 32 private final Frequency minFrequency;
...@@ -39,7 +42,10 @@ public class OmsPortDescription extends DefaultPortDescription { ...@@ -39,7 +42,10 @@ public class OmsPortDescription extends DefaultPortDescription {
39 * @param maxFrequency maximum frequency 42 * @param maxFrequency maximum frequency
40 * @param grid grid spacing frequency 43 * @param grid grid spacing frequency
41 * @param annotations optional key/value annotations map 44 * @param annotations optional key/value annotations map
45 + *
46 + * @deprecated in Goldeneye (1.6.0)
42 */ 47 */
48 + @Deprecated
43 public OmsPortDescription(PortNumber number, boolean isEnabled, Frequency minFrequency, Frequency maxFrequency, 49 public OmsPortDescription(PortNumber number, boolean isEnabled, Frequency minFrequency, Frequency maxFrequency,
44 Frequency grid, SparseAnnotations... annotations) { 50 Frequency grid, SparseAnnotations... annotations) {
45 super(number, isEnabled, Port.Type.OMS, 0, annotations); 51 super(number, isEnabled, Port.Type.OMS, 0, annotations);
...@@ -56,7 +62,10 @@ public class OmsPortDescription extends DefaultPortDescription { ...@@ -56,7 +62,10 @@ public class OmsPortDescription extends DefaultPortDescription {
56 * @param maxFrequency maximum frequency 62 * @param maxFrequency maximum frequency
57 * @param grid grid spacing frequency 63 * @param grid grid spacing frequency
58 * @param annotations optional key/value annotations map 64 * @param annotations optional key/value annotations map
65 + *
66 + * @deprecated in Goldeneye (1.6.0)
59 */ 67 */
68 + @Deprecated
60 public OmsPortDescription(PortDescription base, Frequency minFrequency, Frequency maxFrequency, 69 public OmsPortDescription(PortDescription base, Frequency minFrequency, Frequency maxFrequency,
61 Frequency grid, SparseAnnotations annotations) { 70 Frequency grid, SparseAnnotations annotations) {
62 super(base, annotations); 71 super(base, annotations);
......
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
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 + */
16 +package org.onosproject.net.optical;
17 +
18 +import org.onlab.util.Frequency;
19 +import org.onosproject.net.Port;
20 +
21 +import com.google.common.annotations.Beta;
22 +
23 +/**
24 + * OMS port (Optical Multiplexing Section).
25 + * Also referred to as a WDM port or W-port.
26 + * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)"
27 + *
28 + * Assumes we only support fixed grid for now.
29 + */
30 +@Beta
31 +public interface OmsPort extends Port {
32 +
33 + /**
34 + * Returns the total number of channels on the port.
35 + *
36 + * @return total number of channels
37 + */
38 + default short totalChannels() {
39 + Frequency diff = maxFrequency().subtract(minFrequency());
40 + return (short) (diff.asHz() / grid().asHz());
41 + }
42 +
43 + /**
44 + * Returns the minimum frequency.
45 + *
46 + * @return minimum frequency
47 + */
48 + Frequency minFrequency();
49 +
50 + /**
51 + * Returns the maximum frequency.
52 + *
53 + * @return maximum frequency
54 + */
55 + Frequency maxFrequency();
56 +
57 + /**
58 + * Returns the grid spacing frequency.
59 + *
60 + * @return grid spacing frequency
61 + */
62 + Frequency grid();
63 +
64 +}
...@@ -28,8 +28,10 @@ import org.onosproject.net.device.DeviceService; ...@@ -28,8 +28,10 @@ import org.onosproject.net.device.DeviceService;
28 import org.onosproject.net.driver.AbstractBehaviour; 28 import org.onosproject.net.driver.AbstractBehaviour;
29 import org.onosproject.net.driver.DriverData; 29 import org.onosproject.net.driver.DriverData;
30 import org.onosproject.net.optical.OchPort; 30 import org.onosproject.net.optical.OchPort;
31 +import org.onosproject.net.optical.OmsPort;
31 import org.onosproject.net.optical.OpticalDevice; 32 import org.onosproject.net.optical.OpticalDevice;
32 import org.onosproject.net.optical.device.port.OchPortMapper; 33 import org.onosproject.net.optical.device.port.OchPortMapper;
34 +import org.onosproject.net.optical.device.port.OmsPortMapper;
33 import org.onosproject.net.optical.device.port.PortMapper; 35 import org.onosproject.net.optical.device.port.PortMapper;
34 import org.onosproject.net.optical.utils.ForwardingDevice; 36 import org.onosproject.net.optical.utils.ForwardingDevice;
35 import org.slf4j.Logger; 37 import org.slf4j.Logger;
...@@ -60,6 +62,7 @@ public class DefaultOpticalDevice ...@@ -60,6 +62,7 @@ public class DefaultOpticalDevice
60 private static final Map<Class<? extends Port>, PortMapper<? extends Port>> MAPPERS 62 private static final Map<Class<? extends Port>, PortMapper<? extends Port>> MAPPERS
61 = ImmutableMap.<Class<? extends Port>, PortMapper<? extends Port>>builder() 63 = ImmutableMap.<Class<? extends Port>, PortMapper<? extends Port>>builder()
62 .put(OchPort.class, new OchPortMapper()) 64 .put(OchPort.class, new OchPortMapper())
65 + .put(OmsPort.class, new OmsPortMapper())
63 // TODO add other optical port type here 66 // TODO add other optical port type here
64 .build(); 67 .build();
65 68
......
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
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 + */
16 +package org.onosproject.net.optical.device;
17 +
18 +import static org.slf4j.LoggerFactory.getLogger;
19 +
20 +import java.util.Optional;
21 +
22 +import org.onlab.util.Frequency;
23 +import org.onosproject.net.Annotations;
24 +import org.onosproject.net.DefaultAnnotations;
25 +import org.onosproject.net.Port;
26 +import org.onosproject.net.PortNumber;
27 +import org.onosproject.net.SparseAnnotations;
28 +import org.onosproject.net.DefaultAnnotations.Builder;
29 +import org.onosproject.net.device.DefaultPortDescription;
30 +import org.onosproject.net.device.PortDescription;
31 +import org.onosproject.net.optical.OmsPort;
32 +import org.onosproject.net.optical.impl.DefaultOmsPort;
33 +import org.slf4j.Logger;
34 +
35 +import com.google.common.annotations.Beta;
36 +
37 +/**
38 + * OMS port related helpers.
39 + */
40 +@Beta
41 +public final class OmsPortHelper {
42 +
43 + private static final Logger log = getLogger(OmsPortHelper.class);
44 +
45 + // Annotation keys
46 + /**
47 + * minFrequency in Hz.
48 + */
49 + private static final String MIN_FREQ_HZ = "minFrequency";
50 + /**
51 + * maxFrequency in Hz.
52 + */
53 + private static final String MAX_FREQ_HZ = "maxFrequency";
54 + /**
55 + * grid in Hz.
56 + */
57 + private static final String GRID_HZ = "grid";
58 +
59 + /**
60 + * Creates OMS port description based on the supplied information.
61 + *
62 + * @param number port number
63 + * @param isEnabled port enabled state
64 + * @param minFrequency minimum frequency
65 + * @param maxFrequency maximum frequency
66 + * @param grid grid spacing frequency
67 + * @param annotations key/value annotations map
68 + */
69 + public static PortDescription omsPortDescription(PortNumber number,
70 + boolean isEnabled,
71 + Frequency minFrequency,
72 + Frequency maxFrequency,
73 + Frequency grid,
74 + SparseAnnotations annotations) {
75 +
76 + Builder builder = DefaultAnnotations.builder();
77 + builder.putAll(annotations);
78 +
79 + builder.set(MIN_FREQ_HZ, String.valueOf(minFrequency.asHz()));
80 + builder.set(MAX_FREQ_HZ, String.valueOf(maxFrequency.asHz()));
81 + builder.set(GRID_HZ, String.valueOf(grid.asHz()));
82 +
83 + long portSpeed = 0;
84 + return new DefaultPortDescription(number, isEnabled, Port.Type.OMS, portSpeed, builder.build());
85 + }
86 +
87 + /**
88 + * Creates OMS port description based on the supplied information.
89 + *
90 + * @param number port number
91 + * @param isEnabled port enabled state
92 + * @param minFrequency minimum frequency
93 + * @param maxFrequency maximum frequency
94 + * @param grid grid spacing frequency
95 + */
96 + public static PortDescription omsPortDescription(PortNumber number,
97 + boolean isEnabled,
98 + Frequency minFrequency,
99 + Frequency maxFrequency,
100 + Frequency grid) {
101 + return omsPortDescription(number, isEnabled, minFrequency, maxFrequency, grid, DefaultAnnotations.EMPTY);
102 + }
103 +
104 + /**
105 + * Creates OMS port description based on the supplied information.
106 + *
107 + * @param base PortDescription to get basic information from
108 + * @param minFrequency minimum frequency
109 + * @param maxFrequency maximum frequency
110 + * @param grid grid spacing frequency
111 + * @param annotations key/value annotations map
112 + */
113 + public static PortDescription omsPortDescription(PortDescription base,
114 + Frequency minFrequency,
115 + Frequency maxFrequency,
116 + Frequency grid,
117 + SparseAnnotations annotations) {
118 +
119 + return omsPortDescription(base.portNumber(), base.isEnabled(),
120 + minFrequency, maxFrequency, grid,
121 + annotations);
122 + }
123 +
124 + public static Optional<OmsPort> asOmsPort(Port port) {
125 + if (port instanceof OmsPort) {
126 + return Optional.of((OmsPort) port);
127 + }
128 +
129 + try {
130 + Annotations an = port.annotations();
131 +
132 + Frequency minFrequency = Frequency.ofHz(Long.parseLong(an.value(MIN_FREQ_HZ)));
133 + Frequency maxFrequency = Frequency.ofHz(Long.parseLong(an.value(MAX_FREQ_HZ)));
134 + Frequency grid = Frequency.ofHz(Long.parseLong(an.value(GRID_HZ)));
135 +
136 + return Optional.of(new DefaultOmsPort(port, minFrequency, maxFrequency, grid));
137 +
138 + } catch (NumberFormatException e) {
139 +
140 + log.warn("{} was not well-formed OMS port.", port, e);
141 + return Optional.empty();
142 + }
143 + }
144 +
145 + // not meant to be instantiated
146 + private OmsPortHelper() {}
147 +}
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
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 + */
16 +package org.onosproject.net.optical.device.port;
17 +
18 +import java.util.Optional;
19 +
20 +import org.onosproject.net.Port;
21 +import org.onosproject.net.optical.OmsPort;
22 +import org.onosproject.net.optical.device.OmsPortHelper;
23 +import org.onosproject.net.optical.impl.DefaultOmsPort;
24 +
25 +import com.google.common.annotations.Beta;
26 +
27 +/**
28 + * {@link PortMapper} to handler {@link OmsPort} translation.
29 + */
30 +@Beta
31 +public class OmsPortMapper extends AbstractPortMapper<OmsPort> {
32 +
33 + @Override
34 + public boolean is(Port port) {
35 + return port != null &&
36 + port.type() == Port.Type.OMS &&
37 + super.is(port);
38 + }
39 +
40 + @Override
41 + public Optional<OmsPort> as(Port port) {
42 + if (port instanceof OmsPort) {
43 + return Optional.of((OmsPort) port);
44 + }
45 + return super.as(port);
46 + }
47 +
48 + @Override
49 + protected Optional<OmsPort> mapPort(Port port) {
50 + if (port instanceof OmsPort) {
51 + return Optional.of((OmsPort) port);
52 + } else if (port instanceof org.onosproject.net.OmsPort) {
53 + // TODO remove after deprecation of old OmsPort is complete
54 +
55 + // translate to new OmsPort
56 + org.onosproject.net.OmsPort old = (org.onosproject.net.OmsPort) port;
57 + return Optional.of(new DefaultOmsPort(old,
58 + old.minFrequency(),
59 + old.maxFrequency(),
60 + old.grid()));
61 + }
62 +
63 + return OmsPortHelper.asOmsPort(port);
64 + }
65 +
66 +}
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
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 + */
16 +package org.onosproject.net.optical.impl;
17 +
18 +import static com.google.common.base.Preconditions.checkNotNull;
19 +
20 +import java.util.Objects;
21 +
22 +import org.onlab.util.Frequency;
23 +import org.onosproject.net.Port;
24 +import org.onosproject.net.optical.OmsPort;
25 +import org.onosproject.net.optical.utils.ForwardingPort;
26 +
27 +import com.google.common.annotations.Beta;
28 +
29 +/**
30 + * Implementation of OMS port (Optical Multiplexing Section).
31 + * Also referred to as a WDM port or W-port.
32 + * See ITU G.709 "Interfaces for the Optical Transport Network (OTN)"
33 + *
34 + * Assumes we only support fixed grid for now.
35 + */
36 +@Beta
37 +public class DefaultOmsPort extends ForwardingPort implements OmsPort {
38 +
39 + private final Frequency minFrequency; // Minimum frequency
40 + private final Frequency maxFrequency; // Maximum frequency
41 + private final Frequency grid; // Grid spacing frequency
42 +
43 + /**
44 + * Creates an OMS port.
45 + *
46 + * @param delegate Port
47 + * @param minFrequency minimum frequency
48 + * @param maxFrequency maximum frequency
49 + * @param grid grid spacing frequency
50 + */
51 + public DefaultOmsPort(Port delegate, Frequency minFrequency, Frequency maxFrequency, Frequency grid) {
52 + super(delegate);
53 +
54 + this.minFrequency = checkNotNull(minFrequency);
55 + this.maxFrequency = checkNotNull(maxFrequency);
56 + this.grid = checkNotNull(grid);
57 + }
58 +
59 + @Override
60 + public Type type() {
61 + return Type.OMS;
62 + }
63 +
64 + @Override
65 + public long portSpeed() {
66 + return 0;
67 + }
68 +
69 + @Override
70 + public Frequency minFrequency() {
71 + return minFrequency;
72 + }
73 +
74 + @Override
75 + public Frequency maxFrequency() {
76 + return maxFrequency;
77 + }
78 +
79 + @Override
80 + public Frequency grid() {
81 + return grid;
82 + }
83 +
84 + @Override
85 + public int hashCode() {
86 + return Objects.hash(super.hashCode(),
87 + minFrequency(),
88 + maxFrequency(),
89 + grid());
90 + }
91 +
92 + @Override
93 + public boolean equals(Object obj) {
94 + if (this == obj) {
95 + return true;
96 + }
97 +
98 + if (obj != null && getClass() == obj.getClass()) {
99 + final DefaultOmsPort that = (DefaultOmsPort) obj;
100 + return super.toEqualsBuilder(that)
101 + .append(this.minFrequency(), that.minFrequency())
102 + .append(this.maxFrequency(), that.maxFrequency())
103 + .append(this.grid(), that.grid())
104 + .isEquals();
105 + }
106 + return false;
107 + }
108 +
109 + @Override
110 + public String toString() {
111 + return super.toStringHelper()
112 + .add("minFrequency", minFrequency())
113 + .add("maxFrequency", maxFrequency())
114 + .add("grid", grid())
115 + .toString();
116 + }
117 +
118 +}
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
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 + */
16 +package org.onosproject.net.optical.device;
17 +
18 +import static org.hamcrest.Matchers.*;
19 +import static org.junit.Assert.*;
20 +
21 +import java.util.Optional;
22 +
23 +import org.junit.Test;
24 +import org.onlab.packet.ChassisId;
25 +import org.onlab.util.Frequency;
26 +import org.onosproject.net.Annotations;
27 +import org.onosproject.net.DefaultAnnotations;
28 +import org.onosproject.net.DefaultDevice;
29 +import org.onosproject.net.DefaultPort;
30 +import org.onosproject.net.Device;
31 +import org.onosproject.net.DeviceId;
32 +import org.onosproject.net.Port;
33 +import org.onosproject.net.PortNumber;
34 +import org.onosproject.net.SparseAnnotations;
35 +import org.onosproject.net.device.PortDescription;
36 +import org.onosproject.net.optical.OmsPort;
37 +import org.onosproject.net.Device.Type;
38 +import org.onosproject.net.provider.ProviderId;
39 +
40 +/**
41 + * Tests for {@link OmsPortHelper}.
42 + */
43 +public class OmsPortHelperTest {
44 +
45 + private static final ProviderId PID = new ProviderId("test", "id");
46 + private static final DeviceId DID = DeviceId.deviceId("test:00123");
47 + private static final String MFC = "MFC";
48 + private static final String HW = "HW V";
49 + private static final String SW = "SW V";
50 + private static final String SER = "SER";
51 + private static final ChassisId CHS = new ChassisId(42);
52 + private static final Annotations DEV_ANON = DefaultAnnotations.EMPTY;
53 + private static final Device DEV = new DefaultDevice(PID, DID, Type.ROADM, MFC, HW, SW, SER, CHS, DEV_ANON);
54 +
55 +
56 + @Test
57 + public void testOmsPortDescriptionCanBeConvertedToOmsPort() {
58 + PortNumber pn = PortNumber.portNumber(4900);
59 +
60 + boolean isEnabled = true;
61 + String anKey = "Base";
62 + String anValue = "value";
63 + SparseAnnotations an = DefaultAnnotations.builder()
64 + .set(anKey, anValue)
65 + .build();
66 +
67 + Frequency minF = Frequency.ofGHz(3);
68 + Frequency maxF = Frequency.ofGHz(33);
69 + Frequency grid = Frequency.ofGHz(2);
70 +
71 + PortDescription portDescription = OmsPortHelper.omsPortDescription(pn, isEnabled, minF, maxF, grid, an);
72 + Port port = new DefaultPort(DEV,
73 + portDescription.portNumber(),
74 + portDescription.isEnabled(),
75 + portDescription.type(),
76 + portDescription.portSpeed(),
77 + portDescription.annotations());
78 +
79 + Optional<OmsPort> maybeOms = OmsPortHelper.asOmsPort(port);
80 + assertTrue(maybeOms.isPresent());
81 +
82 + OmsPort oms = maybeOms.get();
83 +
84 + assertThat(oms.isEnabled(), is(isEnabled));
85 + assertThat(oms.number(), is(pn));
86 + assertThat(oms.annotations().value(anKey), is(anValue));
87 +
88 + assertThat("type is always OMS", oms.type(), is(Port.Type.OMS));
89 + assertThat("port speed is undefined", oms.portSpeed(), is(equalTo(0L)));
90 +
91 + assertThat(oms.maxFrequency(), is(maxF));
92 + assertThat(oms.minFrequency(), is(minF));
93 + assertThat(oms.grid(), is(grid));
94 + assertThat("(33-3)/2 = 15", oms.totalChannels(), is((short) 15));
95 + }
96 +
97 +}
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
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 + */
16 +package org.onosproject.net.optical.impl;
17 +
18 +import static org.hamcrest.Matchers.*;
19 +import static org.junit.Assert.*;
20 +import static org.onosproject.net.PortNumber.portNumber;
21 +
22 +import org.junit.Test;
23 +import org.onlab.packet.ChassisId;
24 +import org.onlab.util.Frequency;
25 +import org.onosproject.net.Annotations;
26 +import org.onosproject.net.DefaultAnnotations;
27 +import org.onosproject.net.DefaultDevice;
28 +import org.onosproject.net.DefaultPort;
29 +import org.onosproject.net.Device;
30 +import org.onosproject.net.Device.Type;
31 +import org.onosproject.net.DeviceId;
32 +import org.onosproject.net.Port;
33 +import org.onosproject.net.PortNumber;
34 +import org.onosproject.net.optical.OmsPort;
35 +import org.onosproject.net.provider.ProviderId;
36 +
37 +import com.google.common.testing.EqualsTester;
38 +
39 +/**
40 + * Tests for {@link DefaultOmsPort}.
41 + */
42 +public class DefaultOmsPortTest {
43 +
44 + private static final ProviderId PID = new ProviderId("test", "id");
45 + private static final DeviceId DID = DeviceId.deviceId("test:00123");
46 + private static final String MFC = "MFC";
47 + private static final String HW = "HW V";
48 + private static final String SW = "SW V";
49 + private static final String SER = "SER";
50 + private static final ChassisId CHS = new ChassisId(42);
51 + private static final Annotations DEV_ANON = DefaultAnnotations.EMPTY;
52 + private static final Device DEV = new DefaultDevice(PID, DID, Type.ROADM, MFC, HW, SW, SER, CHS, DEV_ANON);
53 +
54 + @Test
55 + public void testEquality() {
56 + PortNumber pn = PortNumber.portNumber(4900);
57 + Annotations an = DefaultAnnotations.builder()
58 + .set("Base", "value")
59 + .build();
60 + Annotations an2 = DefaultAnnotations.builder()
61 + .set("Base", "value2")
62 + .build();
63 +
64 + Port base = new DefaultPort(DEV, pn, true, Port.Type.VIRTUAL, 2, an);
65 + Frequency minF = Frequency.ofGHz(3);
66 + Frequency maxF = Frequency.ofGHz(33);
67 + Frequency grid = Frequency.ofGHz(2);
68 +
69 + // reference OMS port
70 + OmsPort oms = new DefaultOmsPort(base, minF, maxF, grid);
71 +
72 + new EqualsTester()
73 + .addEqualityGroup(oms,
74 + // different base port type or portspeed is ignored
75 + new DefaultOmsPort(new DefaultPort(DEV, pn, true, an), minF, maxF, grid))
76 + // different port number
77 + .addEqualityGroup(new DefaultOmsPort(new DefaultPort(DEV, portNumber(1), true, an), minF, maxF, grid))
78 + // different isEnabled
79 + .addEqualityGroup(new DefaultOmsPort(new DefaultPort(DEV, pn, false, an), minF, maxF, grid))
80 + // different annotation
81 + .addEqualityGroup(new DefaultOmsPort(new DefaultPort(DEV, pn, true, an2), minF, maxF, grid))
82 + // different minFreq
83 + .addEqualityGroup(new DefaultOmsPort(base, Frequency.ofKHz(3), maxF, grid))
84 + // different maxFreq
85 + .addEqualityGroup(new DefaultOmsPort(base, minF, Frequency.ofKHz(33), grid))
86 + // different grid
87 + .addEqualityGroup(new DefaultOmsPort(base, minF, maxF, Frequency.ofKHz(2)))
88 + .testEquals();
89 +
90 + }
91 +
92 + @Test
93 + public void basicTests() {
94 + PortNumber pn = PortNumber.portNumber(4900);
95 + Annotations annotations = DefaultAnnotations.builder()
96 + .set("Base", "value")
97 + .build();
98 +
99 + boolean isEnabled = true;
100 + Port base = new DefaultPort(DEV, pn, isEnabled, Port.Type.VIRTUAL, 2, annotations);
101 + Frequency minFrequency = Frequency.ofGHz(3);
102 + Frequency maxFrequency = Frequency.ofGHz(33);
103 + Frequency grid = Frequency.ofGHz(2);
104 + OmsPort oms = new DefaultOmsPort(base, minFrequency, maxFrequency, grid);
105 +
106 + // basic attributes and annotations are inherited from base
107 + assertThat(oms.element(), is(DEV));
108 + assertThat(oms.isEnabled(), is(isEnabled));
109 + assertThat(oms.number(), is(pn));
110 + assertThat(oms.annotations(), is(annotations));
111 +
112 + assertThat("type is always OMS", oms.type(), is(Port.Type.OMS));
113 + assertThat("port speed is undefined", oms.portSpeed(), is(equalTo(0L)));
114 +
115 + assertThat(oms.maxFrequency(), is(maxFrequency));
116 + assertThat(oms.minFrequency(), is(minFrequency));
117 + assertThat(oms.grid(), is(grid));
118 + assertThat("(33-3)/2 = 15", oms.totalChannels(), is((short) 15));
119 + }
120 +
121 +}
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 package org.onosproject.net.device.impl; 16 package org.onosproject.net.device.impl;
17 17
18 import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription; 18 import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription;
19 +import static org.onosproject.net.optical.device.OmsPortHelper.omsPortDescription;
19 import static org.slf4j.LoggerFactory.getLogger; 20 import static org.slf4j.LoggerFactory.getLogger;
20 import static com.google.common.base.Preconditions.checkNotNull; 21 import static com.google.common.base.Preconditions.checkNotNull;
21 22
...@@ -25,7 +26,6 @@ import org.onosproject.net.AnnotationKeys; ...@@ -25,7 +26,6 @@ import org.onosproject.net.AnnotationKeys;
25 import org.onosproject.net.DefaultAnnotations; 26 import org.onosproject.net.DefaultAnnotations;
26 import org.onosproject.net.OtuPort; 27 import org.onosproject.net.OtuPort;
27 import org.onosproject.net.OduCltPort; 28 import org.onosproject.net.OduCltPort;
28 -import org.onosproject.net.OmsPort;
29 import org.onosproject.net.Port; 29 import org.onosproject.net.Port;
30 import org.onosproject.net.PortNumber; 30 import org.onosproject.net.PortNumber;
31 import org.onosproject.net.SparseAnnotations; 31 import org.onosproject.net.SparseAnnotations;
...@@ -36,6 +36,7 @@ import org.onosproject.net.device.OmsPortDescription; ...@@ -36,6 +36,7 @@ import org.onosproject.net.device.OmsPortDescription;
36 import org.onosproject.net.device.OtuPortDescription; 36 import org.onosproject.net.device.OtuPortDescription;
37 import org.onosproject.net.device.PortDescription; 37 import org.onosproject.net.device.PortDescription;
38 import org.onosproject.net.optical.OchPort; 38 import org.onosproject.net.optical.OchPort;
39 +import org.onosproject.net.optical.OmsPort;
39 import org.onosproject.net.optical.OpticalDevice; 40 import org.onosproject.net.optical.OpticalDevice;
40 import org.slf4j.Logger; 41 import org.slf4j.Logger;
41 42
...@@ -103,9 +104,13 @@ public final class OpticalPortOperator implements ConfigOperator { ...@@ -103,9 +104,13 @@ public final class OpticalPortOperator implements ConfigOperator {
103 PortNumber port, SparseAnnotations sa, PortDescription descr) { 104 PortNumber port, SparseAnnotations sa, PortDescription descr) {
104 switch (descr.type()) { 105 switch (descr.type()) {
105 case OMS: 106 case OMS:
106 - OmsPortDescription oms = (OmsPortDescription) descr; 107 + if (descr instanceof OmsPortDescription) {
107 - return new OmsPortDescription(port, oms.isEnabled(), oms.minFrequency(), 108 + // TODO This block can go away once deprecation is complete.
108 - oms.maxFrequency(), oms.grid(), sa); 109 + OmsPortDescription oms = (OmsPortDescription) descr;
110 + return omsPortDescription(port, oms.isEnabled(), oms.minFrequency(),
111 + oms.maxFrequency(), oms.grid(), sa);
112 + }
113 + return descr;
109 case OCH: 114 case OCH:
110 // We might need to update lambda below with STATIC_LAMBDA. 115 // We might need to update lambda below with STATIC_LAMBDA.
111 if (descr instanceof OchPortDescription) { 116 if (descr instanceof OchPortDescription) {
...@@ -185,9 +190,21 @@ public final class OpticalPortOperator implements ConfigOperator { ...@@ -185,9 +190,21 @@ public final class OpticalPortOperator implements ConfigOperator {
185 final SparseAnnotations an = (SparseAnnotations) port.annotations(); 190 final SparseAnnotations an = (SparseAnnotations) port.annotations();
186 switch (port.type()) { 191 switch (port.type()) {
187 case OMS: 192 case OMS:
188 - OmsPort oms = (OmsPort) port; 193 + if (port instanceof org.onosproject.net.OmsPort) {
189 - return new OmsPortDescription(ptn, isup, oms.minFrequency(), 194 + // remove if-block once deprecation is complete
190 - oms.maxFrequency(), oms.grid(), an); 195 + org.onosproject.net.OmsPort oms = (org.onosproject.net.OmsPort) port;
196 + return omsPortDescription(ptn, isup, oms.minFrequency(),
197 + oms.maxFrequency(), oms.grid(), an);
198 + }
199 + if (port.element().is(OpticalDevice.class)) {
200 + OpticalDevice optDevice = port.element().as(OpticalDevice.class);
201 + if (optDevice.portIs(port, OmsPort.class)) {
202 + OmsPort oms = optDevice.portAs(port, OmsPort.class).get();
203 + return omsPortDescription(ptn, isup, oms.minFrequency(),
204 + oms.maxFrequency(), oms.grid(), an);
205 + }
206 + }
207 + return new DefaultPortDescription(ptn, isup, port.type(), port.portSpeed(), an);
191 case OCH: 208 case OCH:
192 if (port instanceof org.onosproject.net.OchPort) { 209 if (port instanceof org.onosproject.net.OchPort) {
193 // remove if-block once old OchPort deprecation is complete 210 // remove if-block once old OchPort deprecation is complete
......
...@@ -18,6 +18,7 @@ package org.onosproject.store.device.impl; ...@@ -18,6 +18,7 @@ package org.onosproject.store.device.impl;
18 import static com.google.common.base.Preconditions.checkNotNull; 18 import static com.google.common.base.Preconditions.checkNotNull;
19 import static org.onosproject.net.DefaultAnnotations.union; 19 import static org.onosproject.net.DefaultAnnotations.union;
20 import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription; 20 import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription;
21 +import static org.onosproject.net.optical.device.OmsPortHelper.omsPortDescription;
21 22
22 import java.util.Collections; 23 import java.util.Collections;
23 import java.util.Map; 24 import java.util.Map;
...@@ -105,11 +106,21 @@ class DeviceDescriptions { ...@@ -105,11 +106,21 @@ class DeviceDescriptions {
105 newOne = null; 106 newOne = null;
106 switch (newDesc.value().type()) { 107 switch (newDesc.value().type()) {
107 case OMS: 108 case OMS:
108 - OmsPortDescription omsDesc = (OmsPortDescription) (newDesc.value()); 109 + if (newDesc.value() instanceof OmsPortDescription) {
109 - newOne = new Timestamped<>( 110 + // remove if-block after deprecation is complete
110 - new OmsPortDescription( 111 + OmsPortDescription omsDesc = (OmsPortDescription) (newDesc.value());
111 - omsDesc, omsDesc.minFrequency(), omsDesc.maxFrequency(), omsDesc.grid(), merged), 112 + newOne = new Timestamped<>(
112 - newDesc.timestamp()); 113 + omsPortDescription(omsDesc,
114 + omsDesc.minFrequency(),
115 + omsDesc.maxFrequency(),
116 + omsDesc.grid(), merged),
117 + newDesc.timestamp());
118 + } else {
119 + // same as default case
120 + newOne = new Timestamped<>(
121 + new DefaultPortDescription(newDesc.value(), merged),
122 + newDesc.timestamp());
123 + }
113 break; 124 break;
114 case OCH: 125 case OCH:
115 if (newDesc.value() instanceof OchPortDescription) { 126 if (newDesc.value() instanceof OchPortDescription) {
......
...@@ -530,9 +530,15 @@ public class ECDeviceStore ...@@ -530,9 +530,15 @@ public class ECDeviceStore
530 // FIXME this switch need to go away once all ports are done. 530 // FIXME this switch need to go away once all ports are done.
531 switch (description.type()) { 531 switch (description.type()) {
532 case OMS: 532 case OMS:
533 - OmsPortDescription omsDesc = (OmsPortDescription) description; 533 + if (description instanceof OmsPortDescription) {
534 - return new OmsPort(device, number, isEnabled, omsDesc.minFrequency(), 534 + // remove if-block once deprecation is complete
535 - omsDesc.maxFrequency(), omsDesc.grid(), annotations); 535 + OmsPortDescription omsDesc = (OmsPortDescription) description;
536 + return new OmsPort(device, number, isEnabled, omsDesc.minFrequency(),
537 + omsDesc.maxFrequency(), omsDesc.grid(), annotations);
538 + }
539 + // same as default
540 + return new DefaultPort(device, number, isEnabled, description.type(),
541 + description.portSpeed(), annotations);
536 case OCH: 542 case OCH:
537 if (description instanceof OchPortDescription) { 543 if (description instanceof OchPortDescription) {
538 // remove if-block once Och deprecation is complete 544 // remove if-block once Och deprecation is complete
......
...@@ -1088,9 +1088,15 @@ public class GossipDeviceStore ...@@ -1088,9 +1088,15 @@ public class GossipDeviceStore
1088 // FIXME this switch need to go away once all ports are done. 1088 // FIXME this switch need to go away once all ports are done.
1089 switch (description.type()) { 1089 switch (description.type()) {
1090 case OMS: 1090 case OMS:
1091 - OmsPortDescription omsDesc = (OmsPortDescription) description; 1091 + if (description instanceof OmsPortDescription) {
1092 - return new OmsPort(device, number, isEnabled, omsDesc.minFrequency(), 1092 + // remove if-block once deprecation is complete
1093 - omsDesc.maxFrequency(), omsDesc.grid(), annotations); 1093 + OmsPortDescription omsDesc = (OmsPortDescription) description;
1094 + return new OmsPort(device, number, isEnabled, omsDesc.minFrequency(),
1095 + omsDesc.maxFrequency(), omsDesc.grid(), annotations);
1096 + }
1097 + // same as default
1098 + return new DefaultPort(device, number, isEnabled, description.type(),
1099 + description.portSpeed(), annotations);
1094 case OCH: 1100 case OCH:
1095 if (description instanceof OchPortDescription) { 1101 if (description instanceof OchPortDescription) {
1096 // remove if-block once Och deprecation is complete 1102 // remove if-block once Och deprecation is complete
......
...@@ -55,13 +55,6 @@ ...@@ -55,13 +55,6 @@
55 <extensions>true</extensions> 55 <extensions>true</extensions>
56 <configuration> 56 <configuration>
57 <niceManifest>true</niceManifest> 57 <niceManifest>true</niceManifest>
58 - <instructions>
59 - <!-- TODO this can be removed once optical package
60 - has been separated out from the default drivers -->
61 - <Import-Package>
62 - *,org.onosproject.net.optical.device
63 - </Import-Package>
64 - </instructions>
65 </configuration> 58 </configuration>
66 </plugin> 59 </plugin>
67 </plugins> 60 </plugins>
......
...@@ -17,12 +17,14 @@ package org.onosproject.driver.query; ...@@ -17,12 +17,14 @@ package org.onosproject.driver.query;
17 17
18 import org.onosproject.net.ChannelSpacing; 18 import org.onosproject.net.ChannelSpacing;
19 import org.onosproject.net.OchSignal; 19 import org.onosproject.net.OchSignal;
20 -import org.onosproject.net.OmsPort;
21 import org.onosproject.net.Port; 20 import org.onosproject.net.Port;
22 import org.onosproject.net.PortNumber; 21 import org.onosproject.net.PortNumber;
23 import org.onosproject.net.behaviour.LambdaQuery; 22 import org.onosproject.net.behaviour.LambdaQuery;
24 import org.onosproject.net.device.DeviceService; 23 import org.onosproject.net.device.DeviceService;
25 import org.onosproject.net.driver.AbstractHandlerBehaviour; 24 import org.onosproject.net.driver.AbstractHandlerBehaviour;
25 +import org.onosproject.net.optical.OmsPort;
26 +
27 +import static org.onosproject.net.optical.device.OpticalDeviceServiceView.opticalView;
26 28
27 import java.util.Collections; 29 import java.util.Collections;
28 import java.util.Set; 30 import java.util.Set;
...@@ -46,7 +48,7 @@ public class OFOpticalSwitch13LambdaQuery extends AbstractHandlerBehaviour imple ...@@ -46,7 +48,7 @@ public class OFOpticalSwitch13LambdaQuery extends AbstractHandlerBehaviour imple
46 48
47 @Override 49 @Override
48 public Set<OchSignal> queryLambdas(PortNumber port) { 50 public Set<OchSignal> queryLambdas(PortNumber port) {
49 - DeviceService deviceService = this.handler().get(DeviceService.class); 51 + DeviceService deviceService = opticalView(this.handler().get(DeviceService.class));
50 Port p = deviceService.getPort(this.data().deviceId(), port); 52 Port p = deviceService.getPort(this.data().deviceId(), port);
51 53
52 // Only OMS ports expose lambda resources 54 // Only OMS ports expose lambda resources
......
...@@ -18,6 +18,8 @@ package org.onosproject.drivers.lumentum; ...@@ -18,6 +18,8 @@ package org.onosproject.drivers.lumentum;
18 18
19 import org.apache.felix.scr.annotations.Component; 19 import org.apache.felix.scr.annotations.Component;
20 import org.onosproject.net.driver.AbstractDriverLoader; 20 import org.onosproject.net.driver.AbstractDriverLoader;
21 +import org.onosproject.net.optical.OpticalDevice;
22 +import org.onosproject.net.optical.device.DefaultOpticalDevice;
21 23
22 /** 24 /**
23 * Loader for Lumentum device drivers from specific xml. 25 * Loader for Lumentum device drivers from specific xml.
...@@ -25,6 +27,12 @@ import org.onosproject.net.driver.AbstractDriverLoader; ...@@ -25,6 +27,12 @@ import org.onosproject.net.driver.AbstractDriverLoader;
25 @Component(immediate = true) 27 @Component(immediate = true)
26 public class LumentumDriversLoader extends AbstractDriverLoader { 28 public class LumentumDriversLoader extends AbstractDriverLoader {
27 29
30 + // OSGI: help bundle plugin discover runtime package dependency.
31 + @SuppressWarnings("unused")
32 + private OpticalDevice optical;
33 + @SuppressWarnings("unused")
34 + private DefaultOpticalDevice driver;
35 +
28 public LumentumDriversLoader() { 36 public LumentumDriversLoader() {
29 super("/lumentum-drivers.xml"); 37 super("/lumentum-drivers.xml");
30 } 38 }
......
...@@ -27,7 +27,6 @@ import org.onosproject.net.device.DefaultDeviceDescription; ...@@ -27,7 +27,6 @@ import org.onosproject.net.device.DefaultDeviceDescription;
27 import org.onosproject.net.device.DeviceDescription; 27 import org.onosproject.net.device.DeviceDescription;
28 import org.onosproject.net.device.DeviceDescriptionDiscovery; 28 import org.onosproject.net.device.DeviceDescriptionDiscovery;
29 import org.onosproject.net.device.DeviceService; 29 import org.onosproject.net.device.DeviceService;
30 -import org.onosproject.net.device.OmsPortDescription;
31 import org.onosproject.net.device.PortDescription; 30 import org.onosproject.net.device.PortDescription;
32 import org.onosproject.net.driver.AbstractHandlerBehaviour; 31 import org.onosproject.net.driver.AbstractHandlerBehaviour;
33 import org.slf4j.Logger; 32 import org.slf4j.Logger;
...@@ -40,6 +39,7 @@ import java.util.Collections; ...@@ -40,6 +39,7 @@ import java.util.Collections;
40 import java.util.List; 39 import java.util.List;
41 40
42 import static com.google.common.base.Preconditions.checkNotNull; 41 import static com.google.common.base.Preconditions.checkNotNull;
42 +import static org.onosproject.net.optical.device.OmsPortHelper.omsPortDescription;
43 import static org.slf4j.LoggerFactory.getLogger; 43 import static org.slf4j.LoggerFactory.getLogger;
44 44
45 /** 45 /**
...@@ -97,7 +97,7 @@ public class LumentumRoadmDeviceDescription extends AbstractHandlerBehaviour imp ...@@ -97,7 +97,7 @@ public class LumentumRoadmDeviceDescription extends AbstractHandlerBehaviour imp
97 SparseAnnotations ann = DefaultAnnotations.builder() 97 SparseAnnotations ann = DefaultAnnotations.builder()
98 .set(AnnotationKeys.PORT_NAME, portDirection + "-" + portNumber) 98 .set(AnnotationKeys.PORT_NAME, portDirection + "-" + portNumber)
99 .build(); 99 .build();
100 - PortDescription p = new OmsPortDescription( 100 + PortDescription p = omsPortDescription(
101 PortNumber.portNumber(ports.size() + 1), 101 PortNumber.portNumber(ports.size() + 1),
102 true, 102 true,
103 LumentumSnmpDevice.START_CENTER_FREQ, 103 LumentumSnmpDevice.START_CENTER_FREQ,
...@@ -115,7 +115,7 @@ public class LumentumRoadmDeviceDescription extends AbstractHandlerBehaviour imp ...@@ -115,7 +115,7 @@ public class LumentumRoadmDeviceDescription extends AbstractHandlerBehaviour imp
115 SparseAnnotations annLineIn = DefaultAnnotations.builder() 115 SparseAnnotations annLineIn = DefaultAnnotations.builder()
116 .set(AnnotationKeys.PORT_NAME, "LINE IN") 116 .set(AnnotationKeys.PORT_NAME, "LINE IN")
117 .build(); 117 .build();
118 - ports.add(new OmsPortDescription( 118 + ports.add(omsPortDescription(
119 PortNumber.portNumber(ports.size() + 1), 119 PortNumber.portNumber(ports.size() + 1),
120 true, 120 true,
121 LumentumSnmpDevice.START_CENTER_FREQ, 121 LumentumSnmpDevice.START_CENTER_FREQ,
...@@ -127,7 +127,7 @@ public class LumentumRoadmDeviceDescription extends AbstractHandlerBehaviour imp ...@@ -127,7 +127,7 @@ public class LumentumRoadmDeviceDescription extends AbstractHandlerBehaviour imp
127 SparseAnnotations annLineOut = DefaultAnnotations.builder() 127 SparseAnnotations annLineOut = DefaultAnnotations.builder()
128 .set(AnnotationKeys.PORT_NAME, "LINE OUT") 128 .set(AnnotationKeys.PORT_NAME, "LINE OUT")
129 .build(); 129 .build();
130 - ports.add(new OmsPortDescription( 130 + ports.add(omsPortDescription(
131 PortNumber.portNumber(ports.size() + 1), 131 PortNumber.portNumber(ports.size() + 1),
132 true, 132 true,
133 LumentumSnmpDevice.START_CENTER_FREQ, 133 LumentumSnmpDevice.START_CENTER_FREQ,
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
24 impl="org.onosproject.drivers.lumentum.LumentumFlowRuleProgrammable"/> 24 impl="org.onosproject.drivers.lumentum.LumentumFlowRuleProgrammable"/>
25 <behaviour api="org.onosproject.incubator.net.faultmanagement.alarm.AlarmConsumer" 25 <behaviour api="org.onosproject.incubator.net.faultmanagement.alarm.AlarmConsumer"
26 impl="org.onosproject.drivers.lumentum.LumentumAlarmConsumer"/> 26 impl="org.onosproject.drivers.lumentum.LumentumAlarmConsumer"/>
27 + <behaviour api="org.onosproject.net.optical.OpticalDevice"
28 + impl="org.onosproject.net.optical.device.DefaultOpticalDevice"/>
27 </driver> 29 </driver>
28 </drivers> 30 </drivers>
29 31
......
...@@ -22,6 +22,7 @@ import static org.onosproject.net.DeviceId.deviceId; ...@@ -22,6 +22,7 @@ import static org.onosproject.net.DeviceId.deviceId;
22 import static org.onosproject.net.Port.Type.COPPER; 22 import static org.onosproject.net.Port.Type.COPPER;
23 import static org.onosproject.net.Port.Type.FIBER; 23 import static org.onosproject.net.Port.Type.FIBER;
24 import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription; 24 import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription;
25 +import static org.onosproject.net.optical.device.OmsPortHelper.omsPortDescription;
25 import static org.onosproject.openflow.controller.Dpid.dpid; 26 import static org.onosproject.openflow.controller.Dpid.dpid;
26 import static org.onosproject.openflow.controller.Dpid.uri; 27 import static org.onosproject.openflow.controller.Dpid.uri;
27 import static org.slf4j.LoggerFactory.getLogger; 28 import static org.slf4j.LoggerFactory.getLogger;
...@@ -67,7 +68,6 @@ import org.onosproject.net.device.DeviceProvider; ...@@ -67,7 +68,6 @@ import org.onosproject.net.device.DeviceProvider;
67 import org.onosproject.net.device.DeviceProviderRegistry; 68 import org.onosproject.net.device.DeviceProviderRegistry;
68 import org.onosproject.net.device.DeviceProviderService; 69 import org.onosproject.net.device.DeviceProviderService;
69 import org.onosproject.net.device.OduCltPortDescription; 70 import org.onosproject.net.device.OduCltPortDescription;
70 -import org.onosproject.net.device.OmsPortDescription;
71 import org.onosproject.net.device.OtuPortDescription; 71 import org.onosproject.net.device.OtuPortDescription;
72 import org.onosproject.net.device.PortDescription; 72 import org.onosproject.net.device.PortDescription;
73 import org.onosproject.net.device.PortStatistics; 73 import org.onosproject.net.device.PortStatistics;
...@@ -582,7 +582,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr ...@@ -582,7 +582,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
582 PortDescription portDes = null; 582 PortDescription portDes = null;
583 switch (sigType) { 583 switch (sigType) {
584 case OMSN: 584 case OMSN:
585 - portDes = new OmsPortDescription(portNo, enabled, 585 + portDes = omsPortDescription(portNo, enabled,
586 FREQ191_7, FREQ191_7.add(FREQ4_4), FREQ50, annotations); 586 FREQ191_7, FREQ191_7.add(FREQ4_4), FREQ50, annotations);
587 break; 587 break;
588 case OCH: 588 case OCH:
...@@ -703,7 +703,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr ...@@ -703,7 +703,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
703 case 2: // OMS port 703 case 2: // OMS port
704 // Assume complete optical spectrum and 50 GHz grid 704 // Assume complete optical spectrum and 50 GHz grid
705 // LINC-OE is only supported optical OF device for now 705 // LINC-OE is only supported optical OF device for now
706 - return new OmsPortDescription(portNo, enabled, 706 + return omsPortDescription(portNo, enabled,
707 Spectrum.U_BAND_MIN, Spectrum.O_BAND_MAX, Frequency.ofGHz(50), annotations); 707 Spectrum.U_BAND_MIN, Spectrum.O_BAND_MAX, Frequency.ofGHz(50), annotations);
708 case 5: // OCH port 708 case 5: // OCH port
709 OchSignal signal = new OchSignal(GridType.DWDM, ChannelSpacing.CHL_50GHZ, 0, 4); 709 OchSignal signal = new OchSignal(GridType.DWDM, ChannelSpacing.CHL_50GHZ, 0, 4);
...@@ -742,7 +742,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr ...@@ -742,7 +742,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
742 742
743 // S160 data sheet 743 // S160 data sheet
744 // Wavelength range: 1260 - 1630 nm, grid is irrelevant for this type of switch 744 // Wavelength range: 1260 - 1630 nm, grid is irrelevant for this type of switch
745 - return new OmsPortDescription(portNo, enabled, 745 + return omsPortDescription(portNo, enabled,
746 Spectrum.U_BAND_MIN, Spectrum.O_BAND_MAX, Frequency.ofGHz(100), annotations); 746 Spectrum.U_BAND_MIN, Spectrum.O_BAND_MAX, Frequency.ofGHz(100), annotations);
747 } 747 }
748 748
......
...@@ -41,7 +41,6 @@ import org.onosproject.net.MastershipRole; ...@@ -41,7 +41,6 @@ import org.onosproject.net.MastershipRole;
41 import org.onosproject.net.OchSignal; 41 import org.onosproject.net.OchSignal;
42 import org.onosproject.net.OduCltPort; 42 import org.onosproject.net.OduCltPort;
43 import org.onosproject.net.OduSignalType; 43 import org.onosproject.net.OduSignalType;
44 -import org.onosproject.net.OmsPort;
45 import org.onosproject.net.Port; 44 import org.onosproject.net.Port;
46 import org.onosproject.net.PortNumber; 45 import org.onosproject.net.PortNumber;
47 import org.onosproject.net.SparseAnnotations; 46 import org.onosproject.net.SparseAnnotations;
...@@ -55,7 +54,6 @@ import org.onosproject.net.device.DeviceProviderRegistry; ...@@ -55,7 +54,6 @@ import org.onosproject.net.device.DeviceProviderRegistry;
55 import org.onosproject.net.device.DeviceProviderService; 54 import org.onosproject.net.device.DeviceProviderService;
56 import org.onosproject.net.device.DeviceService; 55 import org.onosproject.net.device.DeviceService;
57 import org.onosproject.net.device.OduCltPortDescription; 56 import org.onosproject.net.device.OduCltPortDescription;
58 -import org.onosproject.net.device.OmsPortDescription;
59 import org.onosproject.net.device.PortDescription; 57 import org.onosproject.net.device.PortDescription;
60 import org.onosproject.net.host.DefaultHostDescription; 58 import org.onosproject.net.host.DefaultHostDescription;
61 import org.onosproject.net.host.HostProvider; 59 import org.onosproject.net.host.HostProvider;
...@@ -66,6 +64,7 @@ import org.onosproject.net.link.LinkProvider; ...@@ -66,6 +64,7 @@ import org.onosproject.net.link.LinkProvider;
66 import org.onosproject.net.link.LinkProviderRegistry; 64 import org.onosproject.net.link.LinkProviderRegistry;
67 import org.onosproject.net.link.LinkProviderService; 65 import org.onosproject.net.link.LinkProviderService;
68 import org.onosproject.net.optical.OchPort; 66 import org.onosproject.net.optical.OchPort;
67 +import org.onosproject.net.optical.OmsPort;
69 import org.onosproject.net.provider.ProviderId; 68 import org.onosproject.net.provider.ProviderId;
70 import org.slf4j.Logger; 69 import org.slf4j.Logger;
71 import org.slf4j.LoggerFactory; 70 import org.slf4j.LoggerFactory;
...@@ -88,6 +87,7 @@ import static org.onosproject.net.PortNumber.portNumber; ...@@ -88,6 +87,7 @@ import static org.onosproject.net.PortNumber.portNumber;
88 import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_ADDED; 87 import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_ADDED;
89 import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED; 88 import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED;
90 import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription; 89 import static org.onosproject.net.optical.device.OchPortHelper.ochPortDescription;
90 +import static org.onosproject.net.optical.device.OmsPortHelper.omsPortDescription;
91 import static org.onosproject.net.optical.device.OpticalDeviceServiceView.opticalView; 91 import static org.onosproject.net.optical.device.OpticalDeviceServiceView.opticalView;
92 92
93 /** 93 /**
...@@ -259,7 +259,7 @@ class ConfigProvider implements DeviceProvider, LinkProvider, HostProvider { ...@@ -259,7 +259,7 @@ class ConfigProvider implements DeviceProvider, LinkProvider, HostProvider {
259 case FIBER: 259 case FIBER:
260 // Currently, assume OMS when FIBER. Provide sane defaults. 260 // Currently, assume OMS when FIBER. Provide sane defaults.
261 annotations = annotations(node.get("annotations")); 261 annotations = annotations(node.get("annotations"));
262 - return new OmsPortDescription(port, node.path("enabled").asBoolean(true), 262 + return omsPortDescription(port, node.path("enabled").asBoolean(true),
263 Spectrum.CENTER_FREQUENCY, Spectrum.CENTER_FREQUENCY.add(TOTAL), 263 Spectrum.CENTER_FREQUENCY, Spectrum.CENTER_FREQUENCY.add(TOTAL),
264 Frequency.ofGHz(100), annotations); 264 Frequency.ofGHz(100), annotations);
265 case ODUCLT: 265 case ODUCLT:
...@@ -276,7 +276,7 @@ class ConfigProvider implements DeviceProvider, LinkProvider, HostProvider { ...@@ -276,7 +276,7 @@ class ConfigProvider implements DeviceProvider, LinkProvider, HostProvider {
276 case OMS: 276 case OMS:
277 annotations = annotations(node.get("annotations")); 277 annotations = annotations(node.get("annotations"));
278 OmsPort omsPort = (OmsPort) deviceService.getPort(deviceId, port); 278 OmsPort omsPort = (OmsPort) deviceService.getPort(deviceId, port);
279 - return new OmsPortDescription(port, node.path("enabled").asBoolean(true), 279 + return omsPortDescription(port, node.path("enabled").asBoolean(true),
280 omsPort.minFrequency(), omsPort.maxFrequency(), omsPort.grid(), annotations); 280 omsPort.minFrequency(), omsPort.maxFrequency(), omsPort.grid(), annotations);
281 default: 281 default:
282 log.warn("{}: Unsupported Port Type"); 282 log.warn("{}: Unsupported Port Type");
...@@ -398,8 +398,8 @@ class ConfigProvider implements DeviceProvider, LinkProvider, HostProvider { ...@@ -398,8 +398,8 @@ class ConfigProvider implements DeviceProvider, LinkProvider, HostProvider {
398 Frequency min = Spectrum.CENTER_FREQUENCY.add(grid); 398 Frequency min = Spectrum.CENTER_FREQUENCY.add(grid);
399 Frequency max = Spectrum.CENTER_FREQUENCY.add(grid.multiply(numChls)); 399 Frequency max = Spectrum.CENTER_FREQUENCY.add(grid.multiply(numChls));
400 400
401 - PortDescription srcPortDesc = new OmsPortDescription(srcCp.port(), true, min, max, grid); 401 + PortDescription srcPortDesc = omsPortDescription(srcCp.port(), true, min, max, grid);
402 - PortDescription dstPortDesc = new OmsPortDescription(dstCp.port(), true, min, max, grid); 402 + PortDescription dstPortDesc = omsPortDescription(dstCp.port(), true, min, max, grid);
403 descriptions.put(srcCp, srcPortDesc); 403 descriptions.put(srcCp, srcPortDesc);
404 descriptions.put(dstCp, dstPortDesc); 404 descriptions.put(dstCp, dstPortDesc);
405 deviceProviderService.portStatusChanged(srcCp.deviceId(), srcPortDesc); 405 deviceProviderService.portStatusChanged(srcCp.deviceId(), srcPortDesc);
...@@ -479,7 +479,7 @@ class ConfigProvider implements DeviceProvider, LinkProvider, HostProvider { ...@@ -479,7 +479,7 @@ class ConfigProvider implements DeviceProvider, LinkProvider, HostProvider {
479 switch (p.type()) { 479 switch (p.type()) {
480 case OMS: 480 case OMS:
481 OmsPort op = (OmsPort) p; 481 OmsPort op = (OmsPort) p;
482 - return new OmsPortDescription( 482 + return omsPortDescription(
483 op.number(), op.isEnabled(), op.minFrequency(), op.maxFrequency(), op.grid()); 483 op.number(), op.isEnabled(), op.minFrequency(), op.maxFrequency(), op.grid());
484 case OCH: 484 case OCH:
485 OchPort ochp = (OchPort) p; 485 OchPort ochp = (OchPort) p;
......