Adding Lease expiry to DHCP GUI
Change-Id: I61a8ecf376475c1ac99a59cd11a5ba1e83e6a3c9
diff --git a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/DHCPService.java b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/DHCPService.java
index 0afda10..9c1a935 100644
--- a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/DHCPService.java
+++ b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/DHCPService.java
@@ -30,7 +30,7 @@
*
* @return collection of mappings.
*/
- Map<MacAddress, Ip4Address> listMapping();
+ Map<MacAddress, IPAssignment> listMapping();
/**
* Returns the default lease time granted by the DHCP Server.
diff --git a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/DHCPStore.java b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/DHCPStore.java
index e2cabbd..0ecd1cb 100644
--- a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/DHCPStore.java
+++ b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/DHCPStore.java
@@ -77,7 +77,7 @@
*
* @return the collection of the mappings
*/
- Map<MacAddress, Ip4Address> listMapping();
+ Map<MacAddress, IPAssignment> listMapping();
/**
* Assigns the requested IP to the MAC ID (if available) for an indefinite period of time.
diff --git a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/cli/DHCPListAllMappings.java b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/cli/DHCPListAllMappings.java
index b8d6287..42b0769 100644
--- a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/cli/DHCPListAllMappings.java
+++ b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/cli/DHCPListAllMappings.java
@@ -16,10 +16,10 @@
package org.onosproject.dhcpserver.cli;
import org.apache.karaf.shell.commands.Command;
-import org.onlab.packet.Ip4Address;
import org.onlab.packet.MacAddress;
import org.onosproject.cli.AbstractShellCommand;
import org.onosproject.dhcpserver.DHCPService;
+import org.onosproject.dhcpserver.IPAssignment;
import java.util.Map;
@@ -35,10 +35,10 @@
protected void execute() {
DHCPService dhcpService = AbstractShellCommand.get(DHCPService.class);
- Map<MacAddress, Ip4Address> allocationMap = dhcpService.listMapping();
+ Map<MacAddress, IPAssignment> allocationMap = dhcpService.listMapping();
- for (Map.Entry<MacAddress, Ip4Address> entry : allocationMap.entrySet()) {
- print(DHCP_MAPPING_FORMAT, entry.getKey().toString(), entry.getValue().toString());
+ for (Map.Entry<MacAddress, IPAssignment> entry : allocationMap.entrySet()) {
+ print(DHCP_MAPPING_FORMAT, entry.getKey().toString(), entry.getValue().ipAddress().toString());
}
}
}
diff --git a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DHCPManager.java b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DHCPManager.java
index b97f816..a732196 100644
--- a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DHCPManager.java
+++ b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DHCPManager.java
@@ -37,6 +37,7 @@
import org.onosproject.core.CoreService;
import org.onosproject.dhcpserver.DHCPService;
import org.onosproject.dhcpserver.DHCPStore;
+import org.onosproject.dhcpserver.IPAssignment;
import org.onosproject.net.config.ConfigFactory;
import org.onosproject.net.config.NetworkConfigEvent;
import org.onosproject.net.config.NetworkConfigListener;
@@ -212,7 +213,7 @@
}
@Override
- public Map<MacAddress, Ip4Address> listMapping() {
+ public Map<MacAddress, IPAssignment> listMapping() {
return dhcpStore.listMapping();
}
diff --git a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DhcpViewMessageHandler.java b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DhcpViewMessageHandler.java
index ee5a224..333f645 100644
--- a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DhcpViewMessageHandler.java
+++ b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DhcpViewMessageHandler.java
@@ -17,16 +17,17 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.collect.ImmutableSet;
-import org.onlab.packet.Ip4Address;
import org.onlab.packet.MacAddress;
import org.onosproject.cli.AbstractShellCommand;
import org.onosproject.dhcpserver.DHCPService;
+import org.onosproject.dhcpserver.IPAssignment;
import org.onosproject.ui.RequestHandler;
import org.onosproject.ui.UiMessageHandler;
import org.onosproject.ui.table.TableModel;
import org.onosproject.ui.table.TableRequestHandler;
import java.util.Collection;
+import java.util.Date;
import java.util.Map;
/**
@@ -40,9 +41,10 @@
private static final String MAC = "mac";
private static final String IP = "ip";
+ private static final String LEASE = "lease";
private static final String[] COL_IDS = {
- MAC, IP
+ MAC, IP, LEASE
};
@Override
@@ -71,16 +73,24 @@
@Override
protected void populateTable(TableModel tm, ObjectNode payload) {
DHCPService dhcpService = AbstractShellCommand.get(DHCPService.class);
- Map<MacAddress, Ip4Address> allocationMap = dhcpService.listMapping();
+ Map<MacAddress, IPAssignment> allocationMap = dhcpService.listMapping();
- for (Map.Entry<MacAddress, Ip4Address> entry : allocationMap.entrySet()) {
+ for (Map.Entry<MacAddress, IPAssignment> entry : allocationMap.entrySet()) {
populateRow(tm.addRow(), entry);
}
}
- private void populateRow(TableModel.Row row, Map.Entry<MacAddress, Ip4Address> entry) {
- row.cell(MAC, entry.getKey())
- .cell(IP, entry.getValue());
+ private void populateRow(TableModel.Row row, Map.Entry<MacAddress, IPAssignment> entry) {
+ if (entry.getValue().leasePeriod() > 0) {
+ Date now = new Date(entry.getValue().timestamp().getTime() + entry.getValue().leasePeriod());
+ row.cell(MAC, entry.getKey())
+ .cell(IP, entry.getValue().ipAddress())
+ .cell(LEASE, now.toString());
+ } else {
+ row.cell(MAC, entry.getKey())
+ .cell(IP, entry.getValue().ipAddress())
+ .cell(LEASE, "Infinite Static Lease");
+ }
}
}
}
diff --git a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DistributedDHCPStore.java b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DistributedDHCPStore.java
index d072b58..feb07f4 100644
--- a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DistributedDHCPStore.java
+++ b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/impl/DistributedDHCPStore.java
@@ -224,17 +224,17 @@
}
@Override
- public Map<MacAddress, Ip4Address> listMapping() {
+ public Map<MacAddress, IPAssignment> listMapping() {
- Map<MacAddress, Ip4Address> allMapping = new HashMap<>();
+ Map<MacAddress, IPAssignment> allMapping = new HashMap<>();
for (Map.Entry<MacAddress, Versioned<IPAssignment>> entry: allocationMap.entrySet()) {
IPAssignment assignment = entry.getValue().value();
if (assignment.assignmentStatus() == IPAssignment.AssignmentStatus.Option_Assigned) {
- allMapping.put(entry.getKey(), assignment.ipAddress());
+ allMapping.put(entry.getKey(), assignment);
}
}
-
return allMapping;
+
}
@Override
diff --git a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/rest/DHCPWebResource.java b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/rest/DHCPWebResource.java
index deb38c9..b5cd5f8 100644
--- a/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/rest/DHCPWebResource.java
+++ b/onos-app-dhcpserver/src/main/java/org/onosproject/dhcpserver/rest/DHCPWebResource.java
@@ -21,6 +21,7 @@
import org.onlab.packet.Ip4Address;
import org.onlab.packet.MacAddress;
import org.onosproject.dhcpserver.DHCPService;
+import org.onosproject.dhcpserver.IPAssignment;
import org.onosproject.rest.AbstractWebResource;
import javax.ws.rs.Consumes;
@@ -71,11 +72,11 @@
public Response listMappings() {
ObjectNode root = mapper().createObjectNode();
- final Map<MacAddress, Ip4Address> intents = service.listMapping();
+ final Map<MacAddress, IPAssignment> intents = service.listMapping();
ArrayNode arrayNode = root.putArray("mappings");
intents.entrySet().forEach(i -> arrayNode.add(mapper().createObjectNode()
.put("mac", i.getKey().toString())
- .put("ip", i.getValue().toString())));
+ .put("ip", i.getValue().ipAddress().toString())));
return ok(root.toString()).build();
}
@@ -123,11 +124,11 @@
}
}
- final Map<MacAddress, Ip4Address> intents = service.listMapping();
+ final Map<MacAddress, IPAssignment> intents = service.listMapping();
ArrayNode arrayNode = root.putArray("mappings");
intents.entrySet().forEach(i -> arrayNode.add(mapper().createObjectNode()
.put("mac", i.getKey().toString())
- .put("ip", i.getValue().toString())));
+ .put("ip", i.getValue().ipAddress().toString())));
} catch (IOException e) {
throw new IllegalArgumentException(e.getMessage());
}
@@ -149,11 +150,11 @@
if (!service.removeStaticMapping(MacAddress.valueOf(macID))) {
throw new IllegalArgumentException("Static Mapping Removal Failed.");
}
- final Map<MacAddress, Ip4Address> intents = service.listMapping();
+ final Map<MacAddress, IPAssignment> intents = service.listMapping();
ArrayNode arrayNode = root.putArray("mappings");
intents.entrySet().forEach(i -> arrayNode.add(mapper().createObjectNode()
.put("mac", i.getKey().toString())
- .put("ip", i.getValue().toString())));
+ .put("ip", i.getValue().ipAddress().toString())));
return ok(root.toString()).build();
}