Implementing region hosts for topology 2
Change-Id: I6d1e45b1152b2387d4ff981dc0666868235eb1c3
diff --git a/core/api/src/main/java/org/onosproject/net/region/RegionService.java b/core/api/src/main/java/org/onosproject/net/region/RegionService.java
index 259c8b0..b2b9b14 100644
--- a/core/api/src/main/java/org/onosproject/net/region/RegionService.java
+++ b/core/api/src/main/java/org/onosproject/net/region/RegionService.java
@@ -18,6 +18,7 @@
import org.onosproject.event.ListenerService;
import org.onosproject.net.DeviceId;
+import org.onosproject.net.HostId;
import java.util.Set;
@@ -59,4 +60,12 @@
*/
Set<DeviceId> getRegionDevices(RegionId regionId);
+ /**
+ * Returns the set of hosts that belong to the specified region.
+ *
+ * @param regionId region identifier
+ * @return set of identifiers for hosts in the given region
+ */
+ Set<HostId> getRegionHosts(RegionId regionId);
+
}
diff --git a/core/api/src/main/java/org/onosproject/net/region/RegionStore.java b/core/api/src/main/java/org/onosproject/net/region/RegionStore.java
index 49cc378..a21a1f9 100644
--- a/core/api/src/main/java/org/onosproject/net/region/RegionStore.java
+++ b/core/api/src/main/java/org/onosproject/net/region/RegionStore.java
@@ -17,6 +17,7 @@
import org.onosproject.cluster.NodeId;
import org.onosproject.net.DeviceId;
+import org.onosproject.net.HostId;
import org.onosproject.store.Store;
import java.util.Collection;
@@ -110,4 +111,12 @@
*/
void removeDevices(RegionId regionId, Collection<DeviceId> deviceIds);
+ /**
+ * Returns the set of hosts that belong to the specified region.
+ *
+ * @param regionId region identifier
+ * @return set of identifiers for hosts in the given region
+ */
+ Set<HostId> getRegionHosts(RegionId regionId);
+
}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiHost.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiHost.java
index 8c5107e..ff22116 100644
--- a/core/api/src/main/java/org/onosproject/ui/model/topo/UiHost.java
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiHost.java
@@ -20,6 +20,7 @@
import org.onosproject.net.Host;
import org.onosproject.net.HostId;
import org.onosproject.net.PortNumber;
+import org.onosproject.net.region.RegionId;
import static com.google.common.base.MoreObjects.toStringHelper;
@@ -36,6 +37,7 @@
private PortNumber locPort;
private UiLinkId edgeLinkId;
+ private RegionId regionId;
/**
* Creates a new UI host.
@@ -70,6 +72,15 @@
return host.id();
}
+ /**
+ * Sets the ID of the region to which this device belongs.
+ *
+ * @param regionId region identifier
+ */
+ public void setRegionId(RegionId regionId) {
+ this.regionId = regionId;
+ }
+
@Override
public String idAsString() {
return id().toString();
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java
index 40dec55..7cd0da9 100644
--- a/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java
@@ -241,6 +241,17 @@
return topology.deviceSet(deviceIds);
}
+
+ /**
+ * Make sure we have only these hosts in the region.
+ *
+ * @param hosts hosts in the region
+ */
+ public void reconcileHosts(Set<HostId> hosts) {
+ hostIds.clear();
+ hostIds.addAll(hosts);
+ }
+
/**
* Returns the set of host identifiers for this region.
*
@@ -260,6 +271,15 @@
}
/**
+ * Returns the count of devices in this region.
+ *
+ * @return the device count
+ */
+ public int hostCount() {
+ return hostIds.size();
+ }
+
+ /**
* Returns the order in which layers should be rendered. Lower layers
* come earlier in the list. For example, to indicate that nodes in the
* optical layer should be rendered "below" nodes in the packet layer,