/*
- * Copyright (c) 2015 Intel Corporation All rights reserved.
- * Copyright (c) 2015 Isaku Yamahata All rights reserved.
+ * Copyright (c) 2015 Intel Corporation and others. 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,
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class AbstractNeutronNorthbound<T extends NeutronObject, NeutronRequest extends INeutronRequest<T>, I extends INeutronCRUD<T>, INeutronAware> {
+public abstract class AbstractNeutronNorthbound<T extends NeutronObject, NeutronRequest extends INeutronRequest<T>, I extends INeutronCRUD<T>> {
private static final Logger LOGGER = LoggerFactory
.getLogger(AbstractNeutronNorthbound.class);
private static final String INTERFACE_NAME_BASE = " CRUD Interface";
private static final String UUID_NO_EXIST_BASE = " UUID does not exist.";
- protected static final String NO_PROVIDERS = "No providers registered. Please try again later";
- protected static final String NO_PROVIDER_LIST = "Couldn't get providers list. Please try again later";
protected final String serviceUnavailable() {
return getResourceName() + INTERFACE_NAME_BASE + RestMessages.SERVICEUNAVAILABLE.toString();
}
+
protected final String uuidNoExist() {
return getResourceName() + UUID_NO_EXIST_BASE;
}
protected abstract T extractFields(T o, List<String> fields);
protected abstract NeutronRequest newNeutronRequest(T o);
protected abstract I getNeutronCRUD();
- protected abstract Object[] getInstances();
- protected abstract int canCreate(Object instance, T singleton);
- protected abstract void created(Object instance, T singleton);
- protected abstract int canUpdate(Object instance, T delta, T original);
- protected abstract void updated(Object instance, T original);
- protected abstract int canDelete(Object instance, T singleton);
- protected abstract void deleted(Object instance, T singleton);
protected Response show(String uuid,
// return fields
if (input.isSingleton()) {
T singleton = input.getSingleton();
- Object[] instances = this.getInstances();
- if (instances != null) {
- if (instances.length > 0) {
- for (Object instance : instances) {
- int status = this.canCreate(instance, singleton);
- if (status < HTTP_OK_BOTTOM || status > HTTP_OK_TOP) {
- return Response.status(status).build();
- }
- }
- } else {
- throw new ServiceUnavailableException(NO_PROVIDERS);
- }
- } else {
- throw new ServiceUnavailableException(NO_PROVIDER_LIST);
- }
singleton.initDefaults();
neutronCRUD.add(singleton);
- if (instances != null) {
- for (Object instance : instances) {
- created(instance, singleton);
- }
- }
} else {
- Object[] instances = this.getInstances();
- for (T test : input.getBulk()) {
- if (instances != null) {
- if (instances.length > 0) {
- for (Object instance : instances) {
- int status = canCreate(instance, test);
- if (status < HTTP_OK_BOTTOM || status > HTTP_OK_TOP) {
- return Response.status(status).build();
- }
- }
- } else {
- throw new ServiceUnavailableException(NO_PROVIDERS);
- }
- } else {
- throw new ServiceUnavailableException(NO_PROVIDER_LIST);
- }
- }
-
- /*
- * now, each element of the bulk request can be added to the cache
- */
for (T test : input.getBulk()) {
test.initDefaults();
neutronCRUD.add(test);
- if (instances != null) {
- for (Object instance : instances) {
- this.created(instance, test);
- }
- }
}
}
return Response.status(HttpURLConnection.HTTP_CREATED).entity(input).build();
}
updateDelta(uuid, delta, original);
- Object[] instances = getInstances();
- if (instances != null) {
- if (instances.length > 0) {
- for (Object instance : instances) {
- int status = canUpdate(instance, delta, original);
- if (status < HTTP_OK_BOTTOM || status > HTTP_OK_TOP) {
- return Response.status(status).build();
- }
- }
- } else {
- throw new ServiceUnavailableException(NO_PROVIDERS);
- }
- } else {
- throw new ServiceUnavailableException(NO_PROVIDER_LIST);
- }
-
/*
* update the object and return it
*/
neutronCRUD.update(uuid, delta);
T updated = neutronCRUD.get(uuid);
- if (instances != null) {
- for (Object instance : instances) {
- updated(instance, updated);
- }
- }
return Response.status(HttpURLConnection.HTTP_OK).entity(newNeutronRequest(neutronCRUD.get(uuid))).build();
}
final I neutronCRUD = getNeutronCRUD();
T singleton = neutronCRUD.get(uuid);
- Object[] instances = getInstances();
- if (instances != null) {
- if (instances.length > 0) {
- for (Object instance : instances) {
- int status = canDelete(instance, singleton);
- if (status < HTTP_OK_BOTTOM || status > HTTP_OK_TOP) {
- return Response.status(status).build();
- }
- }
- } else {
- throw new ServiceUnavailableException(NO_PROVIDERS);
- }
- } else {
- throw new ServiceUnavailableException(NO_PROVIDER_LIST);
- }
/*
* remove it and return 204 status
throw new ResourceNotFoundException(uuidNoExist());
}
- if (instances != null) {
- for (Object instance : instances) {
- deleted(instance, singleton);
- }
- }
return Response.status(HttpURLConnection.HTTP_NO_CONTENT).build();
}
}
--- /dev/null
+/*
+ * Copyright (c) 2015 Intel Corporation and others. 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,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.neutron.northbound.api;
+
+import java.net.HttpURLConnection;
+import java.util.List;
+
+import org.codehaus.enunciate.jaxrs.ResponseCode;
+import org.codehaus.enunciate.jaxrs.StatusCodes;
+import org.opendaylight.neutron.spi.INeutronCRUD;
+import org.opendaylight.neutron.spi.NeutronObject;
+
+import javax.ws.rs.core.Response;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// When INeutron*Aware interfaces are deleted, this class should be deleted for BORON
+@Deprecated
+public abstract class AbstractNeutronNorthboundIAware<T extends NeutronObject, NeutronRequest extends INeutronRequest<T>, I extends INeutronCRUD<T>, INeutronAware>
+ extends AbstractNeutronNorthbound<T, NeutronRequest, I> {
+ private static final Logger LOGGER = LoggerFactory
+ .getLogger(AbstractNeutronNorthboundIAware.class);
+
+ protected static final String NO_PROVIDERS = "No providers registered. Please try again later";
+ protected static final String NO_PROVIDER_LIST = "Couldn't get providers list. Please try again later";
+
+ protected abstract Object[] getInstances();
+ protected abstract int canCreate(Object instance, T singleton);
+ protected abstract void created(Object instance, T singleton);
+ protected abstract int canUpdate(Object instance, T delta, T original);
+ protected abstract void updated(Object instance, T original);
+ protected abstract int canDelete(Object instance, T singleton);
+ protected abstract void deleted(Object instance, T singleton);
+
+ @Override
+ protected Response create(final NeutronRequest input) {
+ I neutronCRUD = getNeutronCRUD();
+ if (input.isSingleton()) {
+ T singleton = input.getSingleton();
+
+ Object[] instances = this.getInstances();
+ if (instances != null) {
+ if (instances.length > 0) {
+ for (Object instance : instances) {
+ int status = this.canCreate(instance, singleton);
+ if (status < HTTP_OK_BOTTOM || status > HTTP_OK_TOP) {
+ return Response.status(status).build();
+ }
+ }
+ } else {
+ throw new ServiceUnavailableException(NO_PROVIDERS);
+ }
+ } else {
+ throw new ServiceUnavailableException(NO_PROVIDER_LIST);
+ }
+ singleton.initDefaults();
+ neutronCRUD.add(singleton);
+ if (instances != null) {
+ for (Object instance : instances) {
+ created(instance, singleton);
+ }
+ }
+ } else {
+ Object[] instances = this.getInstances();
+ for (T test : input.getBulk()) {
+ if (instances != null) {
+ if (instances.length > 0) {
+ for (Object instance : instances) {
+ int status = canCreate(instance, test);
+ if (status < HTTP_OK_BOTTOM || status > HTTP_OK_TOP) {
+ return Response.status(status).build();
+ }
+ }
+ } else {
+ throw new ServiceUnavailableException(NO_PROVIDERS);
+ }
+ } else {
+ throw new ServiceUnavailableException(NO_PROVIDER_LIST);
+ }
+ }
+
+ /*
+ * now, each element of the bulk request can be added to the cache
+ */
+ for (T test : input.getBulk()) {
+ test.initDefaults();
+ neutronCRUD.add(test);
+ if (instances != null) {
+ for (Object instance : instances) {
+ this.created(instance, test);
+ }
+ }
+ }
+ }
+ return Response.status(HttpURLConnection.HTTP_CREATED).entity(input).build();
+ }
+
+ @Override
+ protected Response update(String uuid, final NeutronRequest input) {
+ I neutronCRUD = getNeutronCRUD();
+ if (!input.isSingleton()) {
+ throw new BadRequestException("Only singleton edit supported");
+ }
+ T delta = input.getSingleton();
+ T original = neutronCRUD.get(uuid);
+ if (original == null) {
+ throw new ResourceNotFoundException(getResourceName() + " doesn't Exist");
+ }
+ updateDelta(uuid, delta, original);
+
+ Object[] instances = getInstances();
+ if (instances != null) {
+ if (instances.length > 0) {
+ for (Object instance : instances) {
+ int status = canUpdate(instance, delta, original);
+ if (status < HTTP_OK_BOTTOM || status > HTTP_OK_TOP) {
+ return Response.status(status).build();
+ }
+ }
+ } else {
+ throw new ServiceUnavailableException(NO_PROVIDERS);
+ }
+ } else {
+ throw new ServiceUnavailableException(NO_PROVIDER_LIST);
+ }
+
+ /*
+ * update the object and return it
+ */
+ neutronCRUD.update(uuid, delta);
+ T updated = neutronCRUD.get(uuid);
+ if (instances != null) {
+ for (Object instance : instances) {
+ updated(instance, updated);
+ }
+ }
+ return Response.status(HttpURLConnection.HTTP_OK).entity(newNeutronRequest(neutronCRUD.get(uuid))).build();
+ }
+
+ @Override
+ protected Response delete(String uuid) {
+ final I neutronCRUD = getNeutronCRUD();
+
+ T singleton = neutronCRUD.get(uuid);
+ Object[] instances = getInstances();
+ if (instances != null) {
+ if (instances.length > 0) {
+ for (Object instance : instances) {
+ int status = canDelete(instance, singleton);
+ if (status < HTTP_OK_BOTTOM || status > HTTP_OK_TOP) {
+ return Response.status(status).build();
+ }
+ }
+ } else {
+ throw new ServiceUnavailableException(NO_PROVIDERS);
+ }
+ } else {
+ throw new ServiceUnavailableException(NO_PROVIDER_LIST);
+ }
+
+ /*
+ * remove it and return 204 status
+ */
+ final String resourceName = getResourceName();
+ boolean exist = false;
+ try {
+ exist = neutronCRUD.remove(uuid);
+ } catch (Exception e) {
+ LOGGER.debug("exception during remove {} {} {}",
+ resourceName, uuid, e);
+ throw new InternalServerErrorException("Could not delete " +
+ resourceName);
+ }
+ if (!exist) {
+ throw new ResourceNotFoundException(uuidNoExist());
+ }
+
+ if (instances != null) {
+ for (Object instance : instances) {
+ deleted(instance, singleton);
+ }
+ }
+ return Response.status(HttpURLConnection.HTTP_NO_CONTENT).build();
+ }
+}
*/
@Path("/bgpvpns")
-public class NeutronBgpvpnsNorthbound {
+public class NeutronBgpvpnsNorthbound
+ extends AbstractNeutronNorthbound<NeutronBgpvpn, NeutronBgpvpnRequest, INeutronBgpvpnCRUD> {
@Context
UriInfo uriInfo;
private static final String RESOURCE_NAME = "Bgpvpn";
- private NeutronBgpvpn extractFields(NeutronBgpvpn o, List<String> fields) {
+
+ @Override
+ protected String getResourceName() {
+ return RESOURCE_NAME;
+ }
+
+ @Override
+ protected NeutronBgpvpn extractFields(NeutronBgpvpn o, List<String> fields) {
return o.extractFields(fields);
}
- private NeutronCRUDInterfaces getNeutronInterfaces() {
+ @Override
+ protected NeutronBgpvpnRequest newNeutronRequest(NeutronBgpvpn o) {
+ return new NeutronBgpvpnRequest(o);
+ }
+
+ @Override
+ protected INeutronBgpvpnCRUD getNeutronCRUD() {
NeutronCRUDInterfaces answer = new NeutronCRUDInterfaces().fetchINeutronBgpvpnCRUD(this);
if (answer.getBgpvpnInterface() == null) {
- throw new ServiceUnavailableException("Service is unavailable");
+ throw new ServiceUnavailableException(serviceUnavailable());
}
- return answer;
+ return answer.getBgpvpnInterface();
}
/**
@DefaultValue("false") @QueryParam("page_reverse") Boolean pageReverse
// sorting not supported
) {
- INeutronBgpvpnCRUD bgpvpnInterface = getNeutronInterfaces().getBgpvpnInterface();
+ INeutronBgpvpnCRUD bgpvpnInterface = getNeutronCRUD();
List<NeutronBgpvpn> allBgpvpns = bgpvpnInterface.getAllBgpvpns();
List<NeutronBgpvpn> ans = new ArrayList<NeutronBgpvpn>();
Iterator<NeutronBgpvpn> i = allBgpvpns.iterator();
// return fields
@QueryParam("fields") List<String> fields
) {
- INeutronBgpvpnCRUD bgpvpnInterface = getNeutronInterfaces().getBgpvpnInterface();
+ INeutronBgpvpnCRUD bgpvpnInterface = getNeutronCRUD();
if (!bgpvpnInterface.bgpvpnExists(bgpvpnUUID)) {
- throw new ResourceNotFoundException("UUID does not exist");
+ throw new ResourceNotFoundException(uuidNoExist());
}
if (fields.size() > 0) {
NeutronBgpvpn ans = bgpvpnInterface.getBgpvpn(bgpvpnUUID);
@ResponseCode(code = HttpURLConnection.HTTP_CREATED, condition = "Created"),
@ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
public Response createBgpvpns(final NeutronBgpvpnRequest input) {
- INeutronBgpvpnCRUD bgpvpnInterface = getNeutronInterfaces().getBgpvpnInterface();
+ INeutronBgpvpnCRUD bgpvpnInterface = getNeutronCRUD();
if (input.isSingleton()) {
NeutronBgpvpn singleton = input.getSingleton();
public Response updateBgpvpn(
@PathParam("bgpvpnUUID") String bgpvpnUUID, final NeutronBgpvpnRequest input
) {
- INeutronBgpvpnCRUD bgpvpnInterface = getNeutronInterfaces().getBgpvpnInterface();
+ INeutronBgpvpnCRUD bgpvpnInterface = getNeutronCRUD();
NeutronBgpvpn updatedObject = input.getSingleton();
NeutronBgpvpn original = bgpvpnInterface.getBgpvpn(bgpvpnUUID);
@ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
public Response deleteBgpvpn(
@PathParam("bgpvpnUUID") String bgpvpnUUID) {
- INeutronBgpvpnCRUD bgpvpnInterface = getNeutronInterfaces().getBgpvpnInterface();
+ INeutronBgpvpnCRUD bgpvpnInterface = getNeutronCRUD();
if (!bgpvpnInterface.removeBgpvpn(bgpvpnUUID)) {
throw new InternalServerErrorException("Could not delete bgpvpn");
*/
@Path("/fw/firewalls")
public class NeutronFirewallNorthbound
- extends AbstractNeutronNorthbound<NeutronFirewall, NeutronFirewallRequest, INeutronFirewallCRUD, INeutronFirewallAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronFirewall, NeutronFirewallRequest, INeutronFirewallCRUD, INeutronFirewallAware> {
private static final String RESOURCE_NAME = "Firewall";
*/
@Path("/fw/firewall_policies")
public class NeutronFirewallPolicyNorthbound
- extends AbstractNeutronNorthbound<NeutronFirewallPolicy, NeutronFirewallPolicyRequest, INeutronFirewallPolicyCRUD, INeutronFirewallPolicyAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronFirewallPolicy, NeutronFirewallPolicyRequest, INeutronFirewallPolicyCRUD, INeutronFirewallPolicyAware> {
private static final String RESOURCE_NAME = "Firewall Policy";
@Path("fw/firewall_rules")
public class NeutronFirewallRulesNorthbound
- extends AbstractNeutronNorthbound<NeutronFirewallRule, NeutronFirewallRuleRequest, INeutronFirewallRuleCRUD, INeutronFirewallRuleAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronFirewallRule, NeutronFirewallRuleRequest, INeutronFirewallRuleCRUD, INeutronFirewallRuleAware> {
private static final String RESOURCE_NAME = "Firewall Rule";
@Override
@Path("/floatingips")
public class NeutronFloatingIPsNorthbound
- extends AbstractNeutronNorthbound<NeutronFloatingIP, NeutronFloatingIPRequest, INeutronFloatingIPCRUD, INeutronFloatingIPAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronFloatingIP, NeutronFloatingIPRequest, INeutronFloatingIPCRUD, INeutronFloatingIPAware> {
private static final String RESOURCE_NAME = "Floating IP";
@Override
*/
@Path("/lbaas/healthmonitors")
public class NeutronLoadBalancerHealthMonitorNorthbound
- extends AbstractNeutronNorthbound<NeutronLoadBalancerHealthMonitor, NeutronLoadBalancerHealthMonitorRequest, INeutronLoadBalancerHealthMonitorCRUD, INeutronLoadBalancerHealthMonitorAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronLoadBalancerHealthMonitor, NeutronLoadBalancerHealthMonitorRequest, INeutronLoadBalancerHealthMonitorCRUD, INeutronLoadBalancerHealthMonitorAware> {
private static final String RESOURCE_NAME = "LoadBalancerHealthMonitor";
*/
@Path("/lbaas/listeners")
public class NeutronLoadBalancerListenerNorthbound
- extends AbstractNeutronNorthbound<NeutronLoadBalancerListener, NeutronLoadBalancerListenerRequest, INeutronLoadBalancerListenerCRUD, INeutronLoadBalancerListenerAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronLoadBalancerListener, NeutronLoadBalancerListenerRequest, INeutronLoadBalancerListenerCRUD, INeutronLoadBalancerListenerAware> {
private static final String RESOURCE_NAME = "LoadBalancerListener";
*/
@Path("/lbaas/loadbalancers")
public class NeutronLoadBalancerNorthbound
- extends AbstractNeutronNorthbound<NeutronLoadBalancer, NeutronLoadBalancerRequest, INeutronLoadBalancerCRUD, INeutronLoadBalancerAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronLoadBalancer, NeutronLoadBalancerRequest, INeutronLoadBalancerCRUD, INeutronLoadBalancerAware> {
private static final String RESOURCE_NAME = "LoadBalancer";
@Path("/lbaas/pools")
public class NeutronLoadBalancerPoolNorthbound
- extends AbstractNeutronNorthbound<NeutronLoadBalancerPool, NeutronLoadBalancerPoolRequest, INeutronLoadBalancerPoolCRUD, INeutronLoadBalancerPoolAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronLoadBalancerPool, NeutronLoadBalancerPoolRequest, INeutronLoadBalancerPoolCRUD, INeutronLoadBalancerPoolAware> {
private static final String RESOURCE_NAME = "LoadBalancerPool";
@Path("/metering/metering-label-rules")
public class NeutronMeteringLabelRulesNorthbound
- extends AbstractNeutronNorthbound<NeutronMeteringLabelRule, NeutronMeteringLabelRuleRequest, INeutronMeteringLabelRuleCRUD, INeutronMeteringLabelRuleAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronMeteringLabelRule, NeutronMeteringLabelRuleRequest, INeutronMeteringLabelRuleCRUD, INeutronMeteringLabelRuleAware> {
private static final String RESOURCE_NAME = "Metering Label Rule";
@Override
@Path("/metering/metering-labels")
public class NeutronMeteringLabelsNorthbound
- extends AbstractNeutronNorthbound<NeutronMeteringLabel, NeutronMeteringLabelRequest, INeutronMeteringLabelCRUD, INeutronMeteringLabelAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronMeteringLabel, NeutronMeteringLabelRequest, INeutronMeteringLabelCRUD, INeutronMeteringLabelAware> {
private static final String RESOURCE_NAME = "Metering Label";
@Override
@Path("/networks")
public class NeutronNetworksNorthbound
- extends AbstractNeutronNorthbound<NeutronNetwork, NeutronNetworkRequest, INeutronNetworkCRUD, INeutronNetworkAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronNetwork, NeutronNetworkRequest, INeutronNetworkCRUD, INeutronNetworkAware> {
@Context
UriInfo uriInfo;
@Path("/ports")
public class NeutronPortsNorthbound
- extends AbstractNeutronNorthbound<NeutronPort, NeutronPortRequest, INeutronPortCRUD, INeutronPortAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronPort, NeutronPortRequest, INeutronPortCRUD, INeutronPortAware> {
private static final String RESOURCE_NAME = "Port";
@Path("/routers")
public class NeutronRoutersNorthbound
- extends AbstractNeutronNorthbound<NeutronRouter, NeutronRouterRequest, INeutronRouterCRUD, INeutronRouterAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronRouter, NeutronRouterRequest, INeutronRouterCRUD, INeutronRouterAware> {
static final String ROUTER_INTERFACE_STR = "network:router_interface";
static final String ROUTER_GATEWAY_STR = "network:router_gateway";
private static final String RESOURCE_NAME = "Router";
*/
@Path ("/security-groups")
public class NeutronSecurityGroupsNorthbound
- extends AbstractNeutronNorthbound<NeutronSecurityGroup, NeutronSecurityGroupRequest, INeutronSecurityGroupCRUD, INeutronSecurityGroupAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronSecurityGroup, NeutronSecurityGroupRequest, INeutronSecurityGroupCRUD, INeutronSecurityGroupAware> {
private static final String RESOURCE_NAME = "Security Group";
@Override
@Path ("/security-group-rules")
public class NeutronSecurityRulesNorthbound
- extends AbstractNeutronNorthbound<NeutronSecurityRule, NeutronSecurityRuleRequest, INeutronSecurityRuleCRUD, INeutronSecurityRuleAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronSecurityRule, NeutronSecurityRuleRequest, INeutronSecurityRuleCRUD, INeutronSecurityRuleAware> {
private static final String RESOURCE_NAME = "Security Rule";
@Override
@Path("/subnets")
public class NeutronSubnetsNorthbound
- extends AbstractNeutronNorthbound<NeutronSubnet, NeutronSubnetRequest, INeutronSubnetCRUD, INeutronSubnetAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronSubnet, NeutronSubnetRequest, INeutronSubnetCRUD, INeutronSubnetAware> {
private static final String RESOURCE_NAME = "Subnet";
@Override
@Path("/vpn/ikepolicies")
public class NeutronVPNIKEPoliciesNorthbound
- extends AbstractNeutronNorthbound<NeutronVPNIKEPolicy, NeutronVPNIKEPolicyRequest, INeutronVPNIKEPolicyCRUD, INeutronVPNIKEPolicyAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronVPNIKEPolicy, NeutronVPNIKEPolicyRequest, INeutronVPNIKEPolicyCRUD, INeutronVPNIKEPolicyAware> {
private static final String RESOURCE_NAME = "VPNIKEPolicy";
@Override
@Path("/vpn/ipsecpolicies")
public class NeutronVPNIPSECPoliciesNorthbound
- extends AbstractNeutronNorthbound<NeutronVPNIPSECPolicy, NeutronVPNIPSECPolicyRequest, INeutronVPNIPSECPolicyCRUD, INeutronVPNIPSECPolicyAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronVPNIPSECPolicy, NeutronVPNIPSECPolicyRequest, INeutronVPNIPSECPolicyCRUD, INeutronVPNIPSECPolicyAware> {
private static final String RESOURCE_NAME = "VPNIPSECPolicy";
@Path("/vpn/ipsecsiteconnections")
public class NeutronVPNIPSECSiteConnectionsNorthbound
- extends AbstractNeutronNorthbound<NeutronVPNIPSECSiteConnection, NeutronVPNIPSECSiteConnectionRequest, INeutronVPNIPSECSiteConnectionsCRUD, INeutronVPNIPSECSiteConnectionAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronVPNIPSECSiteConnection, NeutronVPNIPSECSiteConnectionRequest, INeutronVPNIPSECSiteConnectionsCRUD, INeutronVPNIPSECSiteConnectionAware> {
private static final String RESOURCE_NAME = "VPNIPSECSiteConnections";
@Path("/vpn/vpnservices")
public class NeutronVPNServicesNorthbound
- extends AbstractNeutronNorthbound<NeutronVPNService, NeutronVPNServiceRequest, INeutronVPNServiceCRUD, INeutronVPNServiceAware> {
+ extends AbstractNeutronNorthboundIAware<NeutronVPNService, NeutronVPNServiceRequest, INeutronVPNServiceCRUD, INeutronVPNServiceAware> {
private static final String RESOURCE_NAME = "VPNService";