From e63291850fd0795c5700e25e67e5dee89ba54c5f Mon Sep 17 00:00:00 2001 From: Ashlee Young Date: Tue, 1 Dec 2015 05:49:27 -0800 Subject: onos commit hash c2999f30c69e50df905a9d175ef80b3f23a98514 Change-Id: I2bb8562c4942b6d6a6d60b663db2e17540477b81 Signed-off-by: Ashlee Young --- .../newresource/impl/ResourceDeviceListener.java | 64 ++++++++++++++++++++-- 1 file changed, 58 insertions(+), 6 deletions(-) (limited to 'framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java') diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java index 066dd33e..4fb0d7ba 100644 --- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java +++ b/framework/src/onos/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java @@ -15,14 +15,23 @@ */ package org.onosproject.net.newresource.impl; +import com.google.common.collect.Lists; import org.onosproject.net.Device; import org.onosproject.net.Port; +import org.onosproject.net.OchPort; +import org.onosproject.net.TributarySlot; +import org.onosproject.net.OduSignalType; import org.onosproject.net.device.DeviceEvent; import org.onosproject.net.device.DeviceListener; import org.onosproject.net.newresource.ResourceAdminService; import org.onosproject.net.newresource.ResourcePath; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.util.List; import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; +import java.util.stream.IntStream; import static com.google.common.base.Preconditions.checkNotNull; @@ -31,6 +40,13 @@ import static com.google.common.base.Preconditions.checkNotNull; */ final class ResourceDeviceListener implements DeviceListener { + private static final Logger log = LoggerFactory.getLogger(ResourceDeviceListener.class); + + private static final int TOTAL_ODU2_TRIBUTARY_SLOTS = 8; + private static final int TOTAL_ODU4_TRIBUTARY_SLOTS = 80; + private static final List ENTIRE_ODU2_TRIBUTARY_SLOTS = getEntireOdu2TributarySlots(); + private static final List ENTIRE_ODU4_TRIBUTARY_SLOTS = getEntireOdu4TributarySlots(); + private final ResourceAdminService adminService; private final ExecutorService executor; @@ -67,20 +83,56 @@ final class ResourceDeviceListener implements DeviceListener { } private void registerDeviceResource(Device device) { - executor.submit(() -> adminService.registerResources(ResourcePath.ROOT, device.id())); + executor.submit(() -> adminService.registerResources(ResourcePath.discrete(device.id()))); } private void unregisterDeviceResource(Device device) { - executor.submit(() -> adminService.unregisterResources(ResourcePath.ROOT, device.id())); + executor.submit(() -> adminService.unregisterResources(ResourcePath.discrete(device.id()))); } private void registerPortResource(Device device, Port port) { - ResourcePath parent = ResourcePath.discrete(device.id()); - executor.submit(() -> adminService.registerResources(parent, port.number())); + ResourcePath portPath = ResourcePath.discrete(device.id(), port.number()); + executor.submit(() -> { + adminService.registerResources(portPath); + + switch (port.type()) { + case OCH: + // register ODU TributarySlots against the OCH port + registerTributarySlotsResources(((OchPort) port).signalType(), portPath); + break; + default: + break; + } + }); + } + + private void registerTributarySlotsResources(OduSignalType oduSignalType, ResourcePath portPath) { + switch (oduSignalType) { + case ODU2: + adminService.registerResources(Lists.transform(ENTIRE_ODU2_TRIBUTARY_SLOTS, portPath::child)); + break; + case ODU4: + adminService.registerResources(Lists.transform(ENTIRE_ODU4_TRIBUTARY_SLOTS, portPath::child)); + break; + default: + break; + } } private void unregisterPortResource(Device device, Port port) { - ResourcePath parent = ResourcePath.discrete(device.id()); - executor.submit(() -> adminService.unregisterResources(parent, port.number())); + ResourcePath resource = ResourcePath.discrete(device.id(), port.number()); + executor.submit(() -> adminService.unregisterResources(resource)); } + + private static List getEntireOdu2TributarySlots() { + return IntStream.rangeClosed(1, TOTAL_ODU2_TRIBUTARY_SLOTS) + .mapToObj(x -> TributarySlot.of(x)) + .collect(Collectors.toList()); + } + private static List getEntireOdu4TributarySlots() { + return IntStream.rangeClosed(1, TOTAL_ODU4_TRIBUTARY_SLOTS) + .mapToObj(x -> TributarySlot.of(x)) + .collect(Collectors.toList()); + } + } -- cgit 1.2.3-korg