More plumbing of grid coordinates vs. geo coordinates.
- Added background reference parameter to layout command
- send correct location data to client for devices, hosts
Change-Id: Ic00bda76f4e4bc8d3e23e07a08f3bc5367ec85a9
diff --git a/cli/src/main/java/org/onosproject/cli/net/LayoutAddCommand.java b/cli/src/main/java/org/onosproject/cli/net/LayoutAddCommand.java
index 8665a4e..942fe39 100644
--- a/cli/src/main/java/org/onosproject/cli/net/LayoutAddCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/LayoutAddCommand.java
@@ -28,24 +28,28 @@
import static org.onosproject.ui.model.topo.UiTopoLayoutId.layoutId;
/**
- * Creates a new UI layout.
+ * Add a new UI layout.
*/
@Command(scope = "onos", name = "layout-add",
- description = "Creates a new UI layout")
+ description = "Adds a new UI layout.")
public class LayoutAddCommand extends AbstractShellCommand {
- private static final String FMT = "id=%s, name=%s, type=%s";
- private static final String FMT_MASTER = " master=%s";
+ private static final char CODE_GEO = '@';
+ private static final char CODE_GRID = '+';
@Argument(index = 0, name = "id", description = "Layout ID",
required = true, multiValued = false)
String id = null;
- @Argument(index = 1, name = "id", description = "Region ID (optional)",
+ @Argument(index = 1, name = "bgref", description = "Background Ref",
+ required = true, multiValued = false)
+ String backgroundRef = null;
+
+ @Argument(index = 2, name = "rid", description = "Region ID (optional)",
required = false, multiValued = false)
String regionId = null;
- @Argument(index = 2, name = "id", description = "Parent layout ID (optional)",
+ @Argument(index = 3, name = "plid", description = "Parent layout ID (optional)",
required = false, multiValued = false)
String parentId = null;
@@ -60,6 +64,28 @@
UiTopoLayoutId pid = parentId == null ? UiTopoLayoutId.DEFAULT_ID : layoutId(parentId);
UiTopoLayout layout = new UiTopoLayout(layoutId(id)).region(region).parent(pid);
+ setAppropriateBackground(layout, backgroundRef);
service.addLayout(layout);
}
+
+ private void setAppropriateBackground(UiTopoLayout layout, String bgRef) {
+ /*
+ * A note about the format of bgref.. it should be one of:
+ * "." - signifies no background
+ * "@{map-id}" - signifies geo background (map)
+ * "+{sprite-id}" - signifies grid background (sprite)
+ *
+ * For example, "!", "@bayareaGEO", "+segmentRouting"
+ */
+ char type = bgRef.charAt(0);
+
+ if (type == CODE_GEO) {
+ // GEO (map) reference
+ layout.geomap(bgRef.substring(1));
+
+ } else if (type == CODE_GRID) {
+ // Grid (sprite) reference
+ layout.sprites(bgRef.substring(1));
+ }
+ }
}
diff --git a/cli/src/main/java/org/onosproject/cli/net/LayoutListCommand.java b/cli/src/main/java/org/onosproject/cli/net/LayoutListCommand.java
index 8ba13f2..69588d3 100644
--- a/cli/src/main/java/org/onosproject/cli/net/LayoutListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/LayoutListCommand.java
@@ -36,7 +36,7 @@
description = "List layout details")
public class LayoutListCommand extends AbstractShellCommand {
- private static final String FMT = "id=%s, region=%s, parent=%s";
+ private static final String FMT = "id=%s, bgref=%s, region=%s, parent=%s";
@Argument(index = 0, name = "id", description = "Layout ID",
required = false, multiValued = false)
@@ -68,7 +68,17 @@
}
private void printLayout(UiTopoLayout layout) {
- print(FMT, layout.id(), layout.regionId(),
- layout.parent() != null ? layout.parent().id() : "none");
+ String map = layout.geomap();
+ String spr = layout.sprites();
+ String bgRef = ".";
+ if (map != null) {
+ bgRef = "@" + map;
+ } else if (spr != null) {
+ bgRef = "+" + spr;
+ }
+
+ String pid = layout.parent() != null ? layout.parent().id() : "(none)";
+
+ print(FMT, layout.id(), bgRef, layout.regionId(), pid);
}
}