diff --git a/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java b/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java index 595599df85..20c8b34c9c 100644 --- a/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java +++ b/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java @@ -28,6 +28,7 @@ import org.apache.karaf.shell.commands.Option; import org.onlab.util.StringFilter; import org.onlab.util.Tools; import org.onosproject.cli.AbstractShellCommand; +import org.onosproject.cluster.NodeId; import org.onosproject.net.ConnectPoint; import org.onosproject.net.FilteredConnectPoint; import org.onosproject.net.flow.TrafficSelector; @@ -38,6 +39,7 @@ import org.onosproject.net.intent.Intent; import org.onosproject.net.intent.IntentService; import org.onosproject.net.intent.IntentState; import org.onosproject.net.intent.LinkCollectionIntent; +import org.onosproject.net.intent.Key; import org.onosproject.net.intent.MultiPointToSinglePointIntent; import org.onosproject.net.intent.OpticalCircuitIntent; import org.onosproject.net.intent.OpticalConnectivityIntent; @@ -45,6 +47,7 @@ import org.onosproject.net.intent.OpticalOduIntent; import org.onosproject.net.intent.PathIntent; import org.onosproject.net.intent.PointToPointIntent; import org.onosproject.net.intent.SinglePointToMultiPointIntent; +import org.onosproject.net.intent.WorkPartitionService; import static com.google.common.base.MoreObjects.firstNonNull; import static java.lang.String.format; @@ -71,6 +74,8 @@ public class IntentsListCommand extends AbstractShellCommand { // Messages and string formatter private static final String APP_ID = BOLD + "Application Id:" + RESET + " %s"; + private static final String LEADER_ID = BOLD + "Leader Id:" + RESET + " %s"; + private static final String COMMON_SELECTOR = BOLD + "Common ingress " + "selector:" + RESET + " %s"; @@ -98,6 +103,8 @@ public class IntentsListCommand extends AbstractShellCommand { private static final String KEY = BOLD + "Key:" + RESET + " %s"; + private static final String NONE = "None"; + private static final String RESOURCES = BOLD + "Resources:" + RESET + " %s"; private static final String SELECTOR = BOLD + "Selector:" + RESET + " %s"; @@ -171,10 +178,17 @@ public class IntentsListCommand extends AbstractShellCommand { private StringFilter contentFilter; private IntentService service; + private WorkPartitionService workPartitionService; @Override protected void execute() { service = get(IntentService.class); + workPartitionService = get(WorkPartitionService.class); + + if (workPartitionService == null) { + return; + } + contentFilter = new StringFilter(filter, StringFilter.Strategy.AND); Iterable intents; @@ -614,6 +628,8 @@ public class IntentsListCommand extends AbstractShellCommand { */ private StringBuilder fullFormat(Intent intent, IntentState state) { StringBuilder builder = new StringBuilder(); + NodeId nodeId = workPartitionService.getLeader(intent.key(), Key::hash); + builder.append(format(ID, intent.id())); if (state != null) { builder.append('\n').append(format(STATE, state)); @@ -621,6 +637,7 @@ public class IntentsListCommand extends AbstractShellCommand { builder.append('\n').append(format(KEY, intent.key())); builder.append('\n').append(format(TYPE, intent.getClass().getSimpleName())); builder.append('\n').append(format(APP_ID, intent.appId().name())); + builder.append('\n').append(nodeId == null ? NONE : format(LEADER_ID, nodeId.id())); return builder; }