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/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java b/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
index ebcdd82..6fa169e 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/BasicDeviceConfig.java
@@ -35,9 +35,10 @@
@Override
public boolean isValid() {
- return hasOnlyFields(ALLOWED, NAME, LATITUDE, LONGITUDE, UI_TYPE,
- RACK_ADDRESS, OWNER, TYPE, DRIVER, MANUFACTURER, HW_VERSION,
- SW_VERSION, SERIAL, MANAGEMENT_ADDRESS, DEVICE_KEY_ID);
+ return hasOnlyFields(ALLOWED, NAME, LOC_TYPE, LATITUDE, LONGITUDE,
+ GRID_Y, GRID_X, UI_TYPE, RACK_ADDRESS, OWNER, TYPE, DRIVER,
+ MANUFACTURER, HW_VERSION, SW_VERSION, SERIAL,
+ MANAGEMENT_ADDRESS, DEVICE_KEY_ID);
}
/**
diff --git a/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java b/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java
index 65a2783..1d18e80 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/BasicElementConfig.java
@@ -48,15 +48,14 @@
public static final String LONGITUDE = "longitude";
/**
- * Key for grid X coordinate.
- */
- public static final String GRID_X = "gridx";
-
- /**
* Key for grid Y coordinate.
*/
- public static final String GRID_Y = "gridy";
+ public static final String GRID_Y = "gridY";
+ /**
+ * Key for grid X coordinate.
+ */
+ public static final String GRID_X = "gridX";
/**
* Key for rack address.
@@ -196,22 +195,17 @@
}
/**
- * Returns element grid x-coordinate.
+ * Returns true if the grid coordinates (gridY and gridX) are set on
+ * this element; false otherwise.
+ * <p>
+ * It is assumed that elements will not be placed at {@code (0,0)}.
+ * If you really need to position the element there, consider setting the
+ * coordinates to something like {@code (0.000001, 0.000001)} instead.
*
- * @return element x-coordinate
+ * @return true if grid coordinates are set; false otherwise.
*/
- public double gridX() {
- return get(GRID_X, DEFAULT_COORD);
- }
-
- /**
- * Sets the element grid x-coordinate.
- *
- * @param x new x-coordinate; null to clear
- * @return self
- */
- public BasicElementConfig gridX(Double x) {
- return (BasicElementConfig) setOrClear(GRID_X, x);
+ public boolean gridCoordsSet() {
+ return !doubleIsZero(gridY()) || !doubleIsZero(gridX());
}
/**
@@ -234,6 +228,25 @@
}
/**
+ * Returns element grid x-coordinate.
+ *
+ * @return element x-coordinate
+ */
+ public double gridX() {
+ return get(GRID_X, DEFAULT_COORD);
+ }
+
+ /**
+ * Sets the element grid x-coordinate.
+ *
+ * @param x new x-coordinate; null to clear
+ * @return self
+ */
+ public BasicElementConfig gridX(Double x) {
+ return (BasicElementConfig) setOrClear(GRID_X, x);
+ }
+
+ /**
* Returns the element rack address.
*
* @return rack address; null if not set
diff --git a/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java b/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java
index 3758c4e..cb99aaf 100644
--- a/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java
+++ b/core/api/src/main/java/org/onosproject/net/config/basics/BasicHostConfig.java
@@ -36,8 +36,8 @@
// Location and IP addresses can be absent, but if present must be valid.
this.location();
this.ipAddresses();
- return hasOnlyFields(ALLOWED, NAME, LATITUDE, LONGITUDE, UI_TYPE,
- RACK_ADDRESS, OWNER, IPS, LOCATION);
+ return hasOnlyFields(ALLOWED, NAME, LOC_TYPE, LATITUDE, LONGITUDE,
+ GRID_Y, GRID_Y, UI_TYPE, RACK_ADDRESS, OWNER, IPS, LOCATION);
}
/**