diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java index 46599ea0f3..0ab5ef0a39 100644 --- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java +++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java @@ -689,6 +689,18 @@ public class SegmentRoutingManager implements SegmentRoutingService { return mcastHandler.getMcastLeaders(mcastIp); } + @Override + public Map, NodeId> getShouldProgram() { + return defaultRoutingHandler == null ? ImmutableMap.of() : + ImmutableMap.copyOf(defaultRoutingHandler.shouldProgram); + } + + @Override + public Map getShouldProgramCache() { + return defaultRoutingHandler == null ? ImmutableMap.of() : + ImmutableMap.copyOf(defaultRoutingHandler.shouldProgramCache); + } + /** * Extracts the application ID from the manager. * diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingService.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingService.java index 87ba7f3b60..f52fad1eb4 100644 --- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingService.java +++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/SegmentRoutingService.java @@ -273,4 +273,18 @@ public interface SegmentRoutingService { * @return the mapping group-node */ Map getMcastLeaders(IpAddress mcastIp); + + /** + * Returns shouldProgram map. + * + * @return shouldProgram map + */ + Map, NodeId> getShouldProgram(); + + /** + * Returns shouldProgram local cache. + * + * @return shouldProgram local cache + */ + Map getShouldProgramCache(); } diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/ShouldProgramCommand.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/ShouldProgramCommand.java new file mode 100644 index 0000000000..43a021300d --- /dev/null +++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/cli/ShouldProgramCommand.java @@ -0,0 +1,46 @@ +/* + * Copyright 2018-present Open Networking Foundation + * + * 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.segmentrouting.cli; + +import org.apache.karaf.shell.commands.Command; +import org.onosproject.cli.AbstractShellCommand; +import org.onosproject.cluster.NodeId; +import org.onosproject.net.DeviceId; +import org.onosproject.segmentrouting.SegmentRoutingService; + +import java.util.Map; +import java.util.Set; + +/** + * Display current shouldProgram map. + */ +@Command(scope = "onos", name = "sr-should-program", + description = "Display current shouldProgram map") +public class ShouldProgramCommand extends AbstractShellCommand { + @Override + protected void execute() { + SegmentRoutingService srService = AbstractShellCommand.get(SegmentRoutingService.class); + Map, NodeId> shouldProgram = srService.getShouldProgram(); + Map shouldProgramCache = srService.getShouldProgramCache(); + + print("shouldProgram"); + shouldProgram.forEach((k, v) -> print("%s -> %s", k, v)); + + print("shouldProgramCache"); + shouldProgramCache.forEach((k, v) -> print("%s -> %s", k, v)); + } +} \ No newline at end of file diff --git a/apps/segmentrouting/app/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/apps/segmentrouting/app/src/main/resources/OSGI-INF/blueprint/shell-config.xml index 71e80ef3b4..1c8610a0b8 100644 --- a/apps/segmentrouting/app/src/main/resources/OSGI-INF/blueprint/shell-config.xml +++ b/apps/segmentrouting/app/src/main/resources/OSGI-INF/blueprint/shell-config.xml @@ -48,6 +48,9 @@ + + + diff --git a/tools/package/runtime/bin/onos-diagnostics b/tools/package/runtime/bin/onos-diagnostics index 9cc77e3c52..75f307c613 100755 --- a/tools/package/runtime/bin/onos-diagnostics +++ b/tools/package/runtime/bin/onos-diagnostics @@ -94,6 +94,7 @@ CLI_COMMANDS=( "sr-device-subnets" "sr-ecmp-spg" + "sr-should-program" "sr-link-state" "sr-mcast-next" "sr-mcast-tree"