diff options
author | 2015-11-11 14:39:51 -0800 | |
---|---|---|
committer | 2015-11-11 14:40:00 -0800 | |
commit | baac58c7c50e6f89eb0520e3f5b0e83a69839bd3 (patch) | |
tree | 9c5a149ee6cdf345fed7dfe8c97fcaac8959a70d /framework/src/onos/apps/dhcp/api | |
parent | 8f92448e4f2f5d9c98036097bdabd1c40166908a (diff) |
Updating onos src to commit id ec0425c18cbe49d368c600160f033acf9fe344ca
Change-Id: Iec2815bf7771080f25272842b852bd9d33f908ff
Signed-off-by: Ashlee Young <ashlee@wildernessvoice.com>
Diffstat (limited to 'framework/src/onos/apps/dhcp/api')
3 files changed, 126 insertions, 11 deletions
diff --git a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java index 7c2127f9..e356c38b 100644 --- a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java +++ b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpService.java @@ -19,8 +19,10 @@ import org.onlab.packet.Ip4Address; import org.onlab.packet.MacAddress; import org.onosproject.net.HostId; +import java.util.List; import java.util.Map; + /** * DHCP Service Interface. */ @@ -56,12 +58,16 @@ public interface DhcpService { /** * Registers a static IP mapping with the DHCP Server. + * Supports the request from OpenStack * - * @param macID macID of the client + * @param macID macID of the client * @param ipAddress IP Address requested for the client - * @return true if the mapping was successfully registered, false otherwise + * @param fromOpenStack true if the request is from OpenStack + * @param addressList subnetMask, DHCP/Router/Domain Server IP Address if the request from OpenStack + * @return true if the mapping was successfully added, false otherwise */ - boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress); + boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean fromOpenStack, + List<Ip4Address> addressList); /** * Removes a static IP mapping with the DHCP Server. @@ -77,5 +83,4 @@ public interface DhcpService { * @return list of available IPs */ Iterable<Ip4Address> getAvailableIPs(); - } diff --git a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java index e263b3a2..bd2e16b3 100644 --- a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java +++ b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/DhcpStore.java @@ -19,8 +19,10 @@ import org.onlab.packet.Ip4Address; import org.onlab.packet.MacAddress; import org.onosproject.net.HostId; +import java.util.List; import java.util.Map; + /** * DHCPStore Interface. */ @@ -43,15 +45,21 @@ public interface DhcpStore { */ Ip4Address suggestIP(HostId hostId, Ip4Address requestedIP); + /** * Assigns the requested IP to the Mac ID, in response to a DHCP REQUEST message. * * @param hostId Host Id of the client requesting an IP * @param ipAddr IP Address being requested * @param leaseTime Lease time offered by the server for this mapping + * @param fromOpenStack true if the request is from Openstack + * @param addressList subnetMask, DHCP IP Address, Router IP Address, Domain Server IP Address if the request + * from OpenStack * @return returns true if the assignment was successful, false otherwise */ - boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime); + boolean assignIP(HostId hostId, Ip4Address ipAddr, int leaseTime, boolean fromOpenStack, + List<Ip4Address> addressList); + /** * Sets the default time for which suggested IP mappings are valid. @@ -87,9 +95,11 @@ public interface DhcpStore { * * @param macID macID of the client * @param ipAddr IP Address requested for the client + * @param fromOpenStack true if the request is from Openstack + * @param addressList subnetMask, DHCP/Router/Domain Server IP Address if the request from OpenStack * @return true if the mapping was successfully registered, false otherwise */ - boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr); + boolean assignStaticIP(MacAddress macID, Ip4Address ipAddr, boolean fromOpenStack, List<Ip4Address> addressList); /** * Removes a static IP mapping associated with the given MAC ID from the DHCP Server. @@ -106,4 +116,11 @@ public interface DhcpStore { */ Iterable<Ip4Address> getAvailableIPs(); + /** + * + * + * @param hostId + * @return + */ + IpAssignment getIpAssignmentFromAllocationMap(HostId hostId); } diff --git a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java index 9b3aa686..998579e2 100644 --- a/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java +++ b/framework/src/onos/apps/dhcp/api/src/main/java/org/onosproject/dhcp/IpAssignment.java @@ -33,6 +33,16 @@ public final class IpAssignment { private final long leasePeriod; + private final Ip4Address subnetMask; + + private final Ip4Address dhcpServer; + + private final Ip4Address routerAddress; + + private final Ip4Address domainServer; + + private final boolean fromOpenStack; + private final AssignmentStatus assignmentStatus; public enum AssignmentStatus { @@ -42,6 +52,10 @@ public final class IpAssignment { Option_Requested, /** + * IP Assignment has been requested by a OpenStack. + */ + Option_Requested_From_OpenStack, + /** * IP has been assigned to a host. */ Option_Assigned, @@ -58,16 +72,28 @@ public final class IpAssignment { * * @param ipAddress * @param leasePeriod + * @param timestamp * @param assignmentStatus + * @param subnetMask + * @param dhcpServer + * @param routerAddress + * @param domainServer + * @param fromOpenStack */ private IpAssignment(Ip4Address ipAddress, long leasePeriod, Date timestamp, - AssignmentStatus assignmentStatus) { + AssignmentStatus assignmentStatus, Ip4Address subnetMask, Ip4Address dhcpServer, + Ip4Address routerAddress, Ip4Address domainServer, boolean fromOpenStack) { this.ipAddress = ipAddress; this.leasePeriod = leasePeriod; this.timestamp = timestamp; this.assignmentStatus = assignmentStatus; + this.subnetMask = subnetMask; + this.dhcpServer = dhcpServer; + this.routerAddress = routerAddress; + this.domainServer = domainServer; + this.fromOpenStack = fromOpenStack; } /** @@ -115,6 +141,26 @@ public final class IpAssignment { return (int) this.leasePeriod * 1000; } + public Ip4Address subnetMask() { + return subnetMask; + } + + public Ip4Address dhcpServer() { + return dhcpServer; + } + + public Ip4Address routerAddress() { + return routerAddress; + } + + public Ip4Address domainServer() { + return domainServer; + } + + public boolean fromOpenStack() { + return fromOpenStack; + } + @Override public String toString() { return MoreObjects.toStringHelper(getClass()) @@ -122,6 +168,11 @@ public final class IpAssignment { .add("timestamp", timestamp) .add("lease", leasePeriod) .add("assignmentStatus", assignmentStatus) + .add("subnetMask", subnetMask) + .add("dhcpServer", dhcpServer) + .add("routerAddress", routerAddress) + .add("domainServer", domainServer) + .add("fromOpenStack", fromOpenStack) .toString(); } @@ -157,6 +208,16 @@ public final class IpAssignment { private AssignmentStatus assignmentStatus; + private Ip4Address subnetMask; + + private Ip4Address dhcpServer; + + private Ip4Address domainServer; + + private Ip4Address routerAddress; + + private boolean fromOpenStack = false; + private Builder() { } @@ -170,10 +231,8 @@ public final class IpAssignment { public IpAssignment build() { validateInputs(); - return new IpAssignment(ipAddress, - leasePeriod, - timeStamp, - assignmentStatus); + return new IpAssignment(ipAddress, leasePeriod, timeStamp, assignmentStatus, subnetMask, + dhcpServer, domainServer, routerAddress, fromOpenStack); } public Builder ipAddress(Ip4Address addr) { @@ -196,14 +255,48 @@ public final class IpAssignment { return this; } + public Builder subnetMask(Ip4Address subnetMask) { + this.subnetMask = subnetMask; + return this; + } + + public Builder dhcpServer(Ip4Address dhcpServer) { + this.dhcpServer = dhcpServer; + return this; + } + + public Builder domainServer(Ip4Address domainServer) { + this.domainServer = domainServer; + return this; + } + + public Builder routerAddress(Ip4Address routerAddress) { + this.routerAddress = routerAddress; + return this; + } + + public Builder fromOpenStack(boolean fromOpenStack) { + this.fromOpenStack = fromOpenStack; + return this; + } + + private void validateInputs() { checkNotNull(ipAddress, "IP Address must be specified"); checkNotNull(assignmentStatus, "Assignment Status must be specified"); checkNotNull(leasePeriod, "Lease Period must be specified"); checkNotNull(timeStamp, "Timestamp must be specified"); + if (fromOpenStack) { + checkNotNull(subnetMask, "subnetMask must be specified in case of OpenStack"); + checkNotNull(dhcpServer, "dhcpServer must be specified in case of OpenStack"); + checkNotNull(domainServer, "domainServer must be specified in case of OpenStack"); + checkNotNull(routerAddress, "routerAddress must be specified in case of OpenStack"); + } + switch (assignmentStatus) { case Option_Requested: + case Option_Requested_From_OpenStack: case Option_Assigned: case Option_Expired: break; |