From f56409bf07209d661eb79f3c82a6df106728ebdb Mon Sep 17 00:00:00 2001 From: Dave Tucker Date: Sun, 6 Apr 2014 17:48:33 +0100 Subject: [PATCH 1/1] Fix bug 666 - Neutron Subnet Creation Error When a neutron subnet is created on the Northbound API, containing the new "ipv6_address_mode" or "ipv6_ra_mode" fields with "null" values Jersey will fail to deserialise the object correctly and throw an HTTP 500 error with a NullPointerException. This commit adds the above fields to the NeutronSubnet object and permits these fields to be nillable. Change-Id: I225581b57a1698a5e5c17f91b117fba556b70976 Signed-off-by: Dave Tucker --- .../networkconfig/neutron/NeutronSubnet.java | 25 +++++++++++++++++-- .../northbound/NeutronSubnetsNorthbound.java | 8 ++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronSubnet.java b/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronSubnet.java index 6582d8c021..ae84a72bba 100644 --- a/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronSubnet.java +++ b/opendaylight/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/NeutronSubnet.java @@ -1,5 +1,5 @@ /* - * Copyright IBM Corporation, 2013. All rights reserved. + * Copyright IBM Corporation and others, 2013. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -64,6 +64,12 @@ public class NeutronSubnet extends ConfigurationObject implements Serializable { @XmlElement (name="tenant_id") String tenantID; + @XmlElement (name="ipv6_address_mode", nillable=true) + String ipV6AddressMode; + + @XmlElement (name="ipv6_ra_mode", nillable=true) + String ipV6RaMode; + /* stores the OpenStackPorts associated with an instance * used to determine if that instance can be deleted. */ @@ -170,6 +176,14 @@ public class NeutronSubnet extends ConfigurationObject implements Serializable { this.tenantID = tenantID; } + public String getIpV6AddressMode() { return ipV6AddressMode; } + + public void setIpV6AddressMode(String ipV6AddressMode) { this.ipV6AddressMode = ipV6AddressMode; } + + public String getIpV6RaMode() { return ipV6RaMode; } + + public void setIpV6RaMode(String ipV6RaMode) { this.ipV6RaMode = ipV6RaMode; } + /** * This method copies selected fields from the object and returns them * as a new object, suitable for marshaling. @@ -224,6 +238,12 @@ public class NeutronSubnet extends ConfigurationObject implements Serializable { if (s.equals("tenant_id")) { ans.setTenantID(this.getTenantID()); } + if (s.equals("ipv6_address_mode")) { + ans.setIpV6AddressMode(this.getIpV6AddressMode()); + } + if (s.equals("ipv6_ra_mode")) { + ans.setIpV6RaMode(this.getIpV6RaMode()); + } } return ans; } @@ -444,6 +464,7 @@ public class NeutronSubnet extends ConfigurationObject implements Serializable { + ", ipVersion=" + ipVersion + ", cidr=" + cidr + ", gatewayIP=" + gatewayIP + ", dnsNameservers=" + dnsNameservers + ", allocationPools=" + allocationPools + ", hostRoutes=" + hostRoutes + ", enableDHCP=" + enableDHCP + ", tenantID=" + tenantID + ", myPorts=" + myPorts - + ", gatewayIPAssigned=" + gatewayIPAssigned + "]"; + + ", gatewayIPAssigned=" + gatewayIPAssigned + ", ipv6AddressMode=" + ipV6AddressMode + + ", ipv6RaMode=" + ipV6RaMode + "]"; } } diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetsNorthbound.java b/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetsNorthbound.java index 224fcb5f01..f397eb3a97 100644 --- a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetsNorthbound.java +++ b/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronSubnetsNorthbound.java @@ -1,5 +1,5 @@ /* - * Copyright IBM Corporation, 2013. All rights reserved. + * Copyright IBM Corporation and others, 2013. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -87,6 +87,8 @@ public class NeutronSubnetsNorthbound { @QueryParam("gateway_ip") String queryGatewayIP, @QueryParam("enable_dhcp") String queryEnableDHCP, @QueryParam("tenant_id") String queryTenantID, + @QueryParam("ipv6_address_mode") String queryIpV6AddressMode, + @QueryParam("ipv6_ra_mode") String queryIpV6RaMode, // pagination @QueryParam("limit") String limit, @QueryParam("marker") String marker, @@ -110,7 +112,9 @@ public class NeutronSubnetsNorthbound { (queryCIDR == null || queryCIDR.equals(oSS.getCidr())) && (queryGatewayIP == null || queryGatewayIP.equals(oSS.getGatewayIP())) && (queryEnableDHCP == null || queryEnableDHCP.equals(oSS.getEnableDHCP())) && - (queryTenantID == null || queryTenantID.equals(oSS.getTenantID()))) { + (queryTenantID == null || queryTenantID.equals(oSS.getTenantID())) && + (queryIpV6AddressMode == null || queryIpV6AddressMode.equals(oSS.getIpV6AddressMode())) && + (queryIpV6RaMode == null || queryIpV6RaMode.equals(oSS.getIpV6RaMode()))){ if (fields.size() > 0) { ans.add(extractFields(oSS,fields)); } else { -- 2.36.6