NeutronLoadBalancerTests.runTests(base);
NeutronLBListenerTests.runTests(base);
NeutronLBPoolTests.runTests(base);
+ NeutronLBPoolMembersTests.runTests(base);
NeutronLBHealthMonitorTests.runTests(base);
-// TODO: add LoadBalancerPoolMembers testing
NeutronMeteringLabelTests.runTests(base);
NeutronMeteringRuleTests.runTests(base);
NeutronVPNServicesTests.runTests(base);
ITNeutronE2E.test_fetch(url, "LB Health Monitor Collection GET failed");
}
+ public void singleton_lb_healthMonitor_create_test() {
+ String url = base + "/lbaas/healthmonitors";
+ String content = " { \"healthmonitor\": { \"admin_state_up\": true," +
+ "\"delay\": 1, \"expected_codes\": \"200,201,202\"," +
+ "\"http_method\": \"GET\"," +
+ "\"id\": \"0a9ac99d-0a09-4b18-8499-a0796850279a\"," +
+ "\"max_retries\": 5," +
+ "\"pools\": [ { \"id\": \"74aa2010-a59f-4d35-a436-60a6da882819\" } ]," +
+ "\"tenant_id\": \"6f3584d5754048a18e30685362b88411\"," +
+ "\"timeout\": 1, \"type\": \"HTTP\"," +
+ "\"url_path\": \"/index.html\" } }";
+ ITNeutronE2E.test_create(url, content, "Singleton LB Health Monitor Post Failed NB");
+ }
+
+ public void healthMonitor_update_test() {
+ String url = base + "/lbaas/healthmonitors/0a9ac99d-0a09-4b18-8499-a0796850279a";
+ String content = " { \"healthmonitor\": { \"admin_state_up\": false," +
+ "\"delay\": 2, \"expected_codes\": \"200\"," +
+ "\"http_method\": \"POST\"," +
+ "\"id\": \"0a9ac99d-0a09-4b18-8499-a0796850279a\"," +
+ "\"max_retries\": 2," +
+ "\"pools\": [ { \"id\": \"74aa2010-a59f-4d35-a436-60a6da882819\" } ]," +
+ "\"tenant_id\": \"6f3584d5754048a18e30685362b88411\"," +
+ "\"timeout\": 2, \"type\": \"HTTP\"," +
+ "\"url_path\": \"/page.html\" } }";
+ ITNeutronE2E.test_modify(url, content,"LB Health Monitor Put Failed");
+ }
+
+ public void healthMonitor_element_get_test() {
+ String url = base + "/lbaas/healthmonitors/0a9ac99d-0a09-4b18-8499-a0796850279a";
+ ITNeutronE2E.test_fetch(url, true ,"LB Health Monitor Element Get Failed");
+ }
+
+ public void healthMonitor_element_negative_get_test() {
+ String url = base + "/lbaas/healthmonitors/0a9ac99d-0a09-4b18-8499-a0796850279a";
+ ITNeutronE2E.test_fetch(url, false ,"LB Health Monitor Element Negative Get Failed");
+ }
+
+ public void healthMonitor_delete_test() {
+ String url = base + "/lbaas/healthmonitors/0a9ac99d-0a09-4b18-8499-a0796850279a";
+ ITNeutronE2E.test_delete(url, "LB Health Monitor Element Delete Failed");
+ }
+
public static void runTests(String base) {
NeutronLBHealthMonitorTests healthMonitor_tester = new NeutronLBHealthMonitorTests(base);
healthMonitor_tester.healthMonitor_collection_get_test();
+ healthMonitor_tester.singleton_lb_healthMonitor_create_test();
+ healthMonitor_tester.healthMonitor_update_test();
+ healthMonitor_tester.healthMonitor_element_get_test();
+ healthMonitor_tester.healthMonitor_delete_test();
+ healthMonitor_tester.healthMonitor_element_negative_get_test();
}
}
ITNeutronE2E.test_create(url, content, "Singleton LB Listener Post Failed NB");
}
+ public void listener_update_test() {
+ String url = base + "/lbaas/listeners/39de4d56-d663-46e5-85a1-5b9d5fa17829";
+ String content = " { \"listener\": { \"admin_state_up\": false," +
+ "\"connection_limit\": 200," +
+ "\"default_pool_id\": null," +
+ "\"description\": \"listener two\"," +
+ "\"id\": \"39de4d56-d663-46e5-85a1-5b9d5fa17829\"," +
+ "\"loadbalancers\": [ {" +
+ "\"id\": \"a36c20d0-18e9-42ce-88fd-82a35977ee8c\" } ]," +
+ "\"name\": \"listener2\"," +
+ "\"protocol\": \"HTTP\"," +
+ "\"protocol_port\": 80," +
+ "\"tenant_id\": \"1a3e005cf9ce40308c900bcb08e5320c\" } }";
+ ITNeutronE2E.test_modify(url, content,"LB Listener Put Failed");
+ }
+
+ public void listener_element_get_test() {
+ String url = base + "/lbaas/listeners/39de4d56-d663-46e5-85a1-5b9d5fa17829";
+ ITNeutronE2E.test_fetch(url, true ,"LB Listener Element Get Failed");
+ }
+
+ public void listener_element_negative_get_test() {
+ String url = base + "/lbaas/listeners/39de4d56-d663-46e5-85a1-5b9d5fa17829";
+ ITNeutronE2E.test_fetch(url, false ,"LB Listener Element Negative Get Failed");
+ }
+
+ public void listener_delete_test() {
+ String url = base + "/lbaas/listeners/39de4d56-d663-46e5-85a1-5b9d5fa17829";
+ ITNeutronE2E.test_delete(url, "LB Listener Element Delete Failed");
+ }
+
public static void runTests(String base) {
NeutronLBListenerTests listener_tester = new NeutronLBListenerTests(base);
listener_tester.listener_collection_get_test();
listener_tester.singleton_lb_listener_create_test();
+ listener_tester.listener_update_test();
+ listener_tester.listener_element_get_test();
+ listener_tester.listener_delete_test();
+ listener_tester.listener_element_negative_get_test();
}
}
this.base = base;
}
-// TODO: have to be careful here as the pool id is included
-
-/* public void pool_collection_get_test() {
- String url_s = base + "/pools";
- try {
- URL url = new URL(url_s);
- HttpURLConnection httpConn = ITNeutronE2E.HttpURLConnectionFactoryGet(url);
- Assert.assertEquals("LB Pool Collection GET failed",
- 200, httpConn.getResponseCode());
- } catch (Exception e) {
- Assert.assertFalse("E2E Tests Failed", true);
- }
- } */
+ public void pool_member_collection_get_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe/members";
+ ITNeutronE2E.test_fetch(url, "LB Pool Member Collection GET failed");
+ }
+
+ //TODO handle SB check
+ public void singleton_lb_pool_member_create_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe/members";
+ String content = " { \"member\": { \"address\": \"10.0.0.8\"," +
+ "\"admin_state_up\": true," +
+ "\"id\": \"9a7aff27-fd41-4ec1-ba4c-3eb92c629313\"," +
+ "\"protocol_port\": 80," +
+ "\"subnet_id\": \"013d3059-87a4-45a5-91e9-d721068ae0b2\"," +
+ "\"tenant_id\": \"1a3e005cf9ce40308c900bcb08e5320c\"," +
+ "\"weight\": 1 } }";
+ ITNeutronE2E.test_create(url, content, "Singleton LB Pool Member Post Failed NB");
+ }
+
+ public void pool_member_update_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe/members/9a7aff27-fd41-4ec1-ba4c-3eb92c629313";
+ String content = " { \"member\": { \"address\": \"10.0.0.8\"," +
+ "\"admin_state_up\": false," +
+ "\"id\": \"9a7aff27-fd41-4ec1-ba4c-3eb92c629313\"," +
+ "\"protocol_port\": 80," +
+ "\"subnet_id\": \"013d3059-87a4-45a5-91e9-d721068ae0b2\"," +
+ "\"tenant_id\": \"1a3e005cf9ce40308c900bcb08e5320c\"," +
+ "\"weight\": 5 } }";
+ ITNeutronE2E.test_modify(url, content,"LB Pool Member Put Failed");
+ }
+
+ public void pool_member_element_get_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe/members/9a7aff27-fd41-4ec1-ba4c-3eb92c629313";
+ ITNeutronE2E.test_fetch(url, true ,"LB Pool Member Element Get Failed");
+ }
+
+ public void pool_member_element_negative_get_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe/members/9a7aff27-fd41-4ec1-ba4c-3eb92c629313";
+ ITNeutronE2E.test_fetch(url, false ,"LB Pool Member Element Negative Get Failed");
+ }
+
+ public void pool_member_delete_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe/members/9a7aff27-fd41-4ec1-ba4c-3eb92c629313";
+ ITNeutronE2E.test_delete(url, "LB Pool Member Element Delete Failed");
+ }
+
+ public static void runTests(String base) {
+ NeutronLBPoolMembersTests pool_member_tester = new NeutronLBPoolMembersTests(base);
+ pool_member_tester.pool_member_collection_get_test();
+ pool_member_tester.singleton_lb_pool_member_create_test();
+ pool_member_tester.pool_member_update_test();
+ pool_member_tester.pool_member_element_get_test();
+ pool_member_tester.pool_member_delete_test();
+ pool_member_tester.pool_member_element_negative_get_test();
+ }
}
ITNeutronE2E.test_create(url, content, "Singleton LB Pool Post Failed NB");
}
+ public void pool_update_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe";
+ String content = " { \"pool\": { \"admin_state_up\": false," +
+ "\"description\": \"pool two\"," +
+ "\"healthmonitor_id\": null," +
+ "\"id\": \"12ff63af-4127-4074-a251-bcb2ecc53ebe\"," +
+ "\"lb_algorithm\": \"LEAST_CONNECTIONS\"," +
+ "\"listeners\": [ {" +
+ "\"id\": \"39de4d56-d663-46e5-85a1-5b9d5fa17829\" } ]," +
+ "\"members\": []," +
+ "\"name\": \"pool2\"," +
+ "\"protocol\": \"HTTP\"," +
+ "\"session_persistence\": { \"cookie_name\": null," +
+ "\"type\": \"HTTP_COOKIE\" }," +
+ "\"tenant_id\": \"1a3e005cf9ce40308c900bcb08e5320c\" } }";
+ ITNeutronE2E.test_modify(url, content,"LB Pool Put Failed");
+ }
+
+ public void pool_element_get_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe";
+ ITNeutronE2E.test_fetch(url, true ,"LB Pool Element Get Failed");
+ }
+
+ public void pool_element_negative_get_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe";
+ ITNeutronE2E.test_fetch(url, false ,"LB Pool Element Negative Get Failed");
+ }
+
+ public void pool_delete_test() {
+ String url = base + "/lbaas/pools/12ff63af-4127-4074-a251-bcb2ecc53ebe";
+ ITNeutronE2E.test_delete(url, "LB Pool Element Delete Failed");
+ }
+
public static void runTests(String base) {
NeutronLBPoolTests pool_tester = new NeutronLBPoolTests(base);
pool_tester.pool_collection_get_test();
pool_tester.singleton_lb_pool_create_test();
+ pool_tester.pool_update_test();
+ pool_tester.pool_element_get_test();
+ pool_tester.pool_delete_test();
+ pool_tester.pool_element_negative_get_test();
+ // needed for pool member testing
+ pool_tester.singleton_lb_pool_create_test();
}
}
ITNeutronE2E.test_create(url, content, "Singleton Load Balancer Post Failed NB");
}
+ public void loadBalancer_update_test() {
+ String url = base + "/lbaas/loadbalancers/a36c20d0-18e9-42ce-88fd-82a35977ee8c";
+ String content = " { \"loadbalancer\": { \"admin_state_up\": false," +
+ "\"description\": \"simple lb2\"," +
+ "\"id\": \"a36c20d0-18e9-42ce-88fd-82a35977ee8c\"," +
+ "\"listeners\": []," +
+ "\"name\": \"loadbalancer2\"," +
+ "\"operating_status\": \"ONLINE\"," +
+ "\"provisioning_status\": \"PENDING_UPDATE\"," +
+ "\"tenant_id\": \"b7c1a69e88bf4b21a8148f787aef2081\"," +
+ "\"vip_address\": \"10.0.0.4\"," +
+ "\"vip_subnet_id\": \"013d3059-87a4-45a5-91e9-d721068ae0b2\" } }";
+ ITNeutronE2E.test_modify(url, content,"Load Balancer Put Failed");
+ }
+
+ public void loadBalancer_element_get_test() {
+ String url = base + "/lbaas/loadbalancers/a36c20d0-18e9-42ce-88fd-82a35977ee8c";
+ ITNeutronE2E.test_fetch(url, true ,"Load Balancer Element Get Failed");
+ }
+
+ public void loadBalancer_element_negative_get_test() {
+ String url = base + "/lbaas/loadbalancers/a36c20d0-18e9-42ce-88fd-82a35977ee8c";
+ ITNeutronE2E.test_fetch(url, false ,"Load Balancer Element Negative Get Failed");
+ }
+
+ public void loadBalancer_delete_test() {
+ String url = base + "/lbaas/loadbalancers/a36c20d0-18e9-42ce-88fd-82a35977ee8c";
+ ITNeutronE2E.test_delete(url, "Load Balancer Element Delete Failed");
+ }
+
public static void runTests(String base) {
NeutronLoadBalancerTests loadBalancer_tester = new NeutronLoadBalancerTests(base);
loadBalancer_tester.loadBalancer_collection_get_test();
loadBalancer_tester.singleton_loadbalancer_create_test();
+ loadBalancer_tester.loadBalancer_update_test();
+ loadBalancer_tester.loadBalancer_element_get_test();
+ loadBalancer_tester.loadBalancer_delete_test();
+ loadBalancer_tester.loadBalancer_element_negative_get_test();
}
}
+++ /dev/null
-/*
- * Copyright (c) 2014, 2015 SDN Hub, LLC. 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.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.codehaus.enunciate.jaxrs.ResponseCode;
-import org.codehaus.enunciate.jaxrs.StatusCodes;
-import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolCRUD;
-import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolMemberAware;
-import org.opendaylight.neutron.spi.NeutronCRUDInterfaces;
-import org.opendaylight.neutron.spi.NeutronLoadBalancerPool;
-import org.opendaylight.neutron.spi.NeutronLoadBalancerPoolMember;
-
-@Path("/lbaas/pools/{loadBalancerPoolUUID}/members")
-public class NeutronLoadBalancerPoolMembersNorthbound {
- private static final int HTTP_OK_BOTTOM = 200;
- private static final int HTTP_OK_TOP = 299;
- private static final String INTERFACE_NAME = "LoadBalancerPool CRUD Interface";
- private static final String UUID_NO_EXIST = "LoadBalancerPool UUID does not exist.";
- private static final String NO_PROVIDERS = "No providers registered. Please try again later";
- private static final String NO_PROVIDER_LIST = "Couldn't get providers list. Please try again later";
-
- private NeutronLoadBalancerPoolMember extractFields(NeutronLoadBalancerPoolMember o, List<String> fields) {
- return o.extractFields(fields);
- }
-
- private NeutronCRUDInterfaces getNeutronInterfaces() {
- NeutronCRUDInterfaces answer = new NeutronCRUDInterfaces().fetchINeutronLoadBalancerPoolCRUD(this);
- if (answer.getLoadBalancerPoolInterface() == null) {
- throw new ServiceUnavailableException(INTERFACE_NAME
- + RestMessages.SERVICEUNAVAILABLE.toString());
- }
- return answer;
- }
-
-/**
- * Returns a list of all LoadBalancerPoolMembers in specified pool
- */
-@GET
-@Produces({MediaType.APPLICATION_JSON})
-@StatusCodes({
- @ResponseCode(code = HttpURLConnection.HTTP_OK, condition = "Operation successful"),
- @ResponseCode(code = HttpURLConnection.HTTP_UNAUTHORIZED, condition = "Unauthorized"),
- @ResponseCode(code = HttpURLConnection.HTTP_NOT_IMPLEMENTED, condition = "Not Implemented"),
- @ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
-
-public Response listMembers(
- //Path param
- @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
-
- // return fields
- @QueryParam("fields") List<String> fields,
-
- // OpenStack LoadBalancerPool attributes
- @QueryParam("id") String queryLoadBalancerPoolMemberID,
- @QueryParam("tenant_id") String queryLoadBalancerPoolMemberTenantID,
- @QueryParam("address") String queryLoadBalancerPoolMemberAddress,
- @QueryParam("protocol_port") String queryLoadBalancerPoolMemberProtoPort,
- @QueryParam("admin_state_up") String queryLoadBalancerPoolMemberAdminStateUp,
- @QueryParam("weight") String queryLoadBalancerPoolMemberWeight,
- @QueryParam("subnet_id") String queryLoadBalancerPoolMemberSubnetID,
-
- // pagination
- @QueryParam("limit") String limit,
- @QueryParam("marker") String marker,
- @QueryParam("page_reverse") String pageReverse
- // sorting not supported
-) {
- INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = getNeutronInterfaces().getLoadBalancerPoolInterface();
- if (!loadBalancerPoolInterface.neutronLoadBalancerPoolExists(loadBalancerPoolUUID)) {
- throw new ResourceNotFoundException(UUID_NO_EXIST);
- }
- List<NeutronLoadBalancerPoolMember> members =
- loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID).getLoadBalancerPoolMembers();
- List<NeutronLoadBalancerPoolMember> ans = new ArrayList<NeutronLoadBalancerPoolMember>();
- Iterator<NeutronLoadBalancerPoolMember> i = members.iterator();
- while (i.hasNext()) {
- NeutronLoadBalancerPoolMember nsg = i.next();
- if ((queryLoadBalancerPoolMemberID == null ||
- queryLoadBalancerPoolMemberID.equals(nsg.getID())) &&
- loadBalancerPoolUUID.equals(nsg.getPoolID()) &&
- (queryLoadBalancerPoolMemberTenantID == null ||
- queryLoadBalancerPoolMemberTenantID.equals(nsg.getPoolMemberTenantID())) &&
- (queryLoadBalancerPoolMemberAddress == null ||
- queryLoadBalancerPoolMemberAddress.equals(nsg.getPoolMemberAddress())) &&
- (queryLoadBalancerPoolMemberAdminStateUp == null ||
- queryLoadBalancerPoolMemberAdminStateUp.equals(nsg.getPoolMemberAdminStateIsUp())) &&
- (queryLoadBalancerPoolMemberWeight == null ||
- queryLoadBalancerPoolMemberWeight.equals(nsg.getPoolMemberWeight())) &&
- (queryLoadBalancerPoolMemberSubnetID == null ||
- queryLoadBalancerPoolMemberSubnetID.equals(nsg.getPoolMemberSubnetID()))) {
- if (fields.size() > 0) {
- ans.add(extractFields(nsg, fields));
- } else {
- ans.add(nsg);
- }
- }
- }
- return Response.status(HttpURLConnection.HTTP_OK).entity(
- new NeutronLoadBalancerPoolMemberRequest(ans)).build();
-}
-
-/**
- * Returns a specific LoadBalancerPoolMember
- */
-
-@Path("{loadBalancerPoolMemberUUID}")
-@GET
-@Produces({ MediaType.APPLICATION_JSON })
-//@TypeHint(OpenStackLoadBalancerPoolMembers.class)
-@StatusCodes({
- @ResponseCode(code = HttpURLConnection.HTTP_OK, condition = "Operation successful"),
- @ResponseCode(code = HttpURLConnection.HTTP_UNAUTHORIZED, condition = "Unauthorized"),
- @ResponseCode(code = HttpURLConnection.HTTP_NOT_FOUND, condition = "Not Found"),
- @ResponseCode(code = HttpURLConnection.HTTP_NOT_IMPLEMENTED, condition = "Not Implemented"),
- @ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
-public Response showLoadBalancerPoolMember(
- @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
- @PathParam("loadBalancerPoolMemberUUID") String loadBalancerPoolMemberUUID,
- // return fields
- @QueryParam("fields") List<String> fields ) {
-
- INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = getNeutronInterfaces().getLoadBalancerPoolInterface();
- if (!loadBalancerPoolInterface.neutronLoadBalancerPoolExists(loadBalancerPoolUUID)) {
- throw new ResourceNotFoundException(UUID_NO_EXIST);
- }
- List<NeutronLoadBalancerPoolMember> members =
- loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID).getLoadBalancerPoolMembers();
- for (NeutronLoadBalancerPoolMember ans: members) {
- if (!ans.getID().equals(loadBalancerPoolMemberUUID)) {
- continue;
- }
-
- if (fields.size() > 0) {
- return Response.status(HttpURLConnection.HTTP_OK).entity(
- new NeutronLoadBalancerPoolMemberRequest(extractFields(ans, fields))).build();
- } else {
- return Response.status(HttpURLConnection.HTTP_OK).entity(
- new NeutronLoadBalancerPoolMemberRequest(ans)).build();
- }
- }
- return Response.status(HttpURLConnection.HTTP_NO_CONTENT).build();
-}
-
-/**
- * Adds a Member to an LBaaS Pool member
- */
-@POST
-@Produces({MediaType.APPLICATION_JSON})
-@Consumes({MediaType.APPLICATION_JSON})
-@StatusCodes({
- @ResponseCode(code = HttpURLConnection.HTTP_OK, condition = "Operation successful"),
- @ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
-public Response createLoadBalancerPoolMember(
- @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
- final NeutronLoadBalancerPoolMemberRequest input) {
-
- INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = getNeutronInterfaces().getLoadBalancerPoolInterface();
- NeutronLoadBalancerPool singletonPool = loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID);
-
- if (input.isSingleton()) {
- NeutronLoadBalancerPoolMember singleton = input.getSingleton();
- singleton.setPoolID(loadBalancerPoolUUID);
-
- Object[] instances = NeutronUtil.getInstances(INeutronLoadBalancerPoolMemberAware.class, this);
- if (instances != null) {
- if (instances.length > 0) {
- for (Object instance : instances) {
- INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
- int status = service.canCreateNeutronLoadBalancerPoolMember(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);
- }
-
- if (instances != null) {
- for (Object instance : instances) {
- INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
- service.neutronLoadBalancerPoolMemberCreated(singleton);
- }
- }
-
- /**
- * Add the member from the neutron load balancer pool as well
- */
- singletonPool.addLoadBalancerPoolMember(singleton);
-
- } else {
- Object[] instances = NeutronUtil.getInstances(INeutronLoadBalancerPoolMemberAware.class, this);
- for (NeutronLoadBalancerPoolMember test : input.getBulk()) {
-
- if (instances != null) {
- if (instances.length > 0) {
- for (Object instance : instances) {
- INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
- int status = service.canCreateNeutronLoadBalancerPoolMember(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 (NeutronLoadBalancerPoolMember test : input.getBulk()) {
- if (instances != null) {
- for (Object instance : instances) {
- INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
- service.neutronLoadBalancerPoolMemberCreated(test);
- }
- }
- singletonPool.addLoadBalancerPoolMember(test);
- }
- }
- return Response.status(HttpURLConnection.HTTP_CREATED).entity(input).build();
-}
-
-/**
- * Updates a LB member pool
- */
-
-@Path("{loadBalancerPoolMemberUUID}")
-@PUT
-@Produces({ MediaType.APPLICATION_JSON })
-@Consumes({ MediaType.APPLICATION_JSON })
-@StatusCodes({
- @ResponseCode(code = HttpURLConnection.HTTP_OK, condition = "Operation successful"),
- @ResponseCode(code = HttpURLConnection.HTTP_NOT_IMPLEMENTED, condition = "Not Implemented") })
-public Response updateLoadBalancerPoolMember(
- @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
- @PathParam("loadBalancerPoolMemberUUID") String loadBalancerPoolMemberUUID,
- final NeutronLoadBalancerPoolMemberRequest input) {
-
- //TODO: Implement update LB member pool
- return Response.status(HttpURLConnection.HTTP_NOT_IMPLEMENTED).entity(input).build();
-}
-
-/**
- * Deletes a LoadBalancerPoolMember
- */
-
-@Path("{loadBalancerPoolMemberUUID}")
-@DELETE
-@StatusCodes({
- @ResponseCode(code = HttpURLConnection.HTTP_NO_CONTENT, condition = "No Content"),
- @ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
-public Response deleteLoadBalancerPoolMember(
- @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
- @PathParam("loadBalancerPoolMemberUUID") String loadBalancerPoolMemberUUID) {
- INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = getNeutronInterfaces().getLoadBalancerPoolInterface();
-
- //Verify that the LB pool member exists
- NeutronLoadBalancerPoolMember singleton = null;
- List<NeutronLoadBalancerPoolMember> members =
- loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID).getLoadBalancerPoolMembers();
- for (NeutronLoadBalancerPoolMember member: members) {
- if (member.getID().equals(loadBalancerPoolMemberUUID)) {
- singleton = member;
- break;
- }
- }
- if (singleton == null) {
- throw new BadRequestException("LoadBalancerPoolMember UUID does not exist.");
- }
-
- Object[] instances = NeutronUtil.getInstances(INeutronLoadBalancerPoolMemberAware.class, this);
- if (instances != null) {
- if (instances.length > 0) {
- for (Object instance : instances) {
- INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
- int status = service.canDeleteNeutronLoadBalancerPoolMember(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);
- }
-
- if (instances != null) {
- for (Object instance : instances) {
- INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
- service.neutronLoadBalancerPoolMemberDeleted(singleton);
- }
- }
-
- /**
- * Remove the member from the neutron load balancer pool
- */
- NeutronLoadBalancerPool singletonPool = loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID);
- singletonPool.removeLoadBalancerPoolMember(singleton);
-
- return Response.status(HttpURLConnection.HTTP_NO_CONTENT).build();
-}
-}
import org.codehaus.enunciate.jaxrs.StatusCodes;
import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolAware;
import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolMemberAware;
+import org.opendaylight.neutron.spi.INeutronLoadBalancerPoolMemberCRUD;
import org.opendaylight.neutron.spi.NeutronCRUDInterfaces;
import org.opendaylight.neutron.spi.NeutronLoadBalancerPool;
import org.opendaylight.neutron.spi.NeutronLoadBalancerPoolMember;
}
private NeutronCRUDInterfaces getNeutronInterfaces() {
- NeutronCRUDInterfaces answer = new NeutronCRUDInterfaces().fetchINeutronLoadBalancerPoolCRUD(this);
+ NeutronCRUDInterfaces answer = new NeutronCRUDInterfaces().
+ fetchINeutronLoadBalancerPoolCRUD(this).
+ fetchINeutronLoadBalancerPoolMemberCRUD(this);
if (answer.getLoadBalancerPoolInterface() == null) {
throw new ServiceUnavailableException(INTERFACE_NAME
+ RestMessages.SERVICEUNAVAILABLE.toString());
}
+ if (answer.getLoadBalancerPoolMemberInterface() == null) {
+ throw new ServiceUnavailableException(INTERFACE_NAME
+ + RestMessages.SERVICEUNAVAILABLE.toString());
+ }
return answer;
}
+
/**
* Returns a list of all LoadBalancerPool
* */
}
return Response.status(HttpURLConnection.HTTP_NO_CONTENT).build();
}
+
+ private NeutronLoadBalancerPoolMember extractFields(NeutronLoadBalancerPoolMember o, List<String> fields) {
+ return o.extractFields(fields);
+ }
+
+ /**
+ * Returns a list of all LoadBalancerPoolMembers in specified pool
+ */
+ @Path("{loadBalancerPoolUUID}/members")
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @StatusCodes({
+ @ResponseCode(code = HttpURLConnection.HTTP_OK, condition = "Operation successful"),
+ @ResponseCode(code = HttpURLConnection.HTTP_UNAUTHORIZED, condition = "Unauthorized"),
+ @ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
+ public Response listMembers(
+ //Path param
+ @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
+
+ // return fields
+ @QueryParam("fields") List<String> fields,
+
+ // OpenStack LoadBalancerPool attributes
+ @QueryParam("id") String queryLoadBalancerPoolMemberID,
+ @QueryParam("tenant_id") String queryLoadBalancerPoolMemberTenantID,
+ @QueryParam("address") String queryLoadBalancerPoolMemberAddress,
+ @QueryParam("protocol_port") String queryLoadBalancerPoolMemberProtoPort,
+ @QueryParam("admin_state_up") String queryLoadBalancerPoolMemberAdminStateUp,
+ @QueryParam("weight") String queryLoadBalancerPoolMemberWeight,
+ @QueryParam("subnet_id") String queryLoadBalancerPoolMemberSubnetID,
+
+ // pagination
+ @QueryParam("limit") String limit,
+ @QueryParam("marker") String marker,
+ @QueryParam("page_reverse") String pageReverse
+ // sorting not supported
+ ) {
+ INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = getNeutronInterfaces().getLoadBalancerPoolInterface();
+ if (!loadBalancerPoolInterface.neutronLoadBalancerPoolExists(loadBalancerPoolUUID)) {
+ throw new ResourceNotFoundException(UUID_NO_EXIST);
+ }
+ List<NeutronLoadBalancerPoolMember> members =
+ loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID).getLoadBalancerPoolMembers();
+ List<NeutronLoadBalancerPoolMember> ans = new ArrayList<NeutronLoadBalancerPoolMember>();
+ Iterator<NeutronLoadBalancerPoolMember> i = members.iterator();
+ while (i.hasNext()) {
+ NeutronLoadBalancerPoolMember nsg = i.next();
+ if ((queryLoadBalancerPoolMemberID == null ||
+ queryLoadBalancerPoolMemberID.equals(nsg.getID())) &&
+ loadBalancerPoolUUID.equals(nsg.getPoolID()) &&
+ (queryLoadBalancerPoolMemberTenantID == null ||
+ queryLoadBalancerPoolMemberTenantID.equals(nsg.getPoolMemberTenantID())) &&
+ (queryLoadBalancerPoolMemberAddress == null ||
+ queryLoadBalancerPoolMemberAddress.equals(nsg.getPoolMemberAddress())) &&
+ (queryLoadBalancerPoolMemberAdminStateUp == null ||
+ queryLoadBalancerPoolMemberAdminStateUp.equals(nsg.getPoolMemberAdminStateIsUp())) &&
+ (queryLoadBalancerPoolMemberWeight == null ||
+ queryLoadBalancerPoolMemberWeight.equals(nsg.getPoolMemberWeight())) &&
+ (queryLoadBalancerPoolMemberSubnetID == null ||
+ queryLoadBalancerPoolMemberSubnetID.equals(nsg.getPoolMemberSubnetID()))) {
+ if (fields.size() > 0) {
+ ans.add(extractFields(nsg, fields));
+ } else {
+ ans.add(nsg);
+ }
+ }
+ }
+ return Response.status(HttpURLConnection.HTTP_OK).entity(
+ new NeutronLoadBalancerPoolMemberRequest(ans)).build();
+ }
+
+ /**
+ * Returns a specific LoadBalancerPoolMember
+ */
+ @Path("{loadBalancerPoolUUID}/members/{loadBalancerPoolMemberUUID}")
+ @GET
+ @Produces({ MediaType.APPLICATION_JSON })
+ //@TypeHint(OpenStackLoadBalancerPoolMembers.class)
+ @StatusCodes({
+ @ResponseCode(code = HttpURLConnection.HTTP_OK, condition = "Operation successful"),
+ @ResponseCode(code = HttpURLConnection.HTTP_UNAUTHORIZED, condition = "Unauthorized"),
+ @ResponseCode(code = HttpURLConnection.HTTP_NOT_FOUND, condition = "Not Found"),
+ @ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
+ public Response showLoadBalancerPoolMember(
+ @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
+ @PathParam("loadBalancerPoolMemberUUID") String loadBalancerPoolMemberUUID,
+ // return fields
+ @QueryParam("fields") List<String> fields ) {
+
+ INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = getNeutronInterfaces().getLoadBalancerPoolInterface();
+ if (!loadBalancerPoolInterface.neutronLoadBalancerPoolExists(loadBalancerPoolUUID)) {
+ throw new ResourceNotFoundException(UUID_NO_EXIST);
+ }
+ List<NeutronLoadBalancerPoolMember> members =
+ loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID).getLoadBalancerPoolMembers();
+ for (NeutronLoadBalancerPoolMember ans: members) {
+ if (!ans.getID().equals(loadBalancerPoolMemberUUID)) {
+ continue;
+ }
+
+ if (fields.size() > 0) {
+ return Response.status(HttpURLConnection.HTTP_OK).entity(
+ new NeutronLoadBalancerPoolMemberRequest(extractFields(ans, fields))).build();
+ } else {
+ return Response.status(HttpURLConnection.HTTP_OK).entity(
+ new NeutronLoadBalancerPoolMemberRequest(ans)).build();
+ }
+ }
+ throw new ResourceNotFoundException(UUID_NO_EXIST);
+ }
+
+ /**
+ * Adds a Member to an LBaaS Pool member
+ */
+ @Path("{loadBalancerPoolUUID}/members")
+ @POST
+ @Produces({MediaType.APPLICATION_JSON})
+ @Consumes({MediaType.APPLICATION_JSON})
+ @StatusCodes({
+ @ResponseCode(code = HttpURLConnection.HTTP_OK, condition = "Operation successful"),
+ @ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
+ public Response createLoadBalancerPoolMember(
+ @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
+ final NeutronLoadBalancerPoolMemberRequest input) {
+
+ INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = getNeutronInterfaces().getLoadBalancerPoolInterface();
+ NeutronLoadBalancerPool singletonPool = loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID);
+
+ if (input.isSingleton()) {
+ NeutronLoadBalancerPoolMember singleton = input.getSingleton();
+ singleton.setPoolID(loadBalancerPoolUUID);
+
+ Object[] instances = NeutronUtil.getInstances(INeutronLoadBalancerPoolMemberAware.class, this);
+ if (instances != null) {
+ if (instances.length > 0) {
+ for (Object instance : instances) {
+ INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
+ int status = service.canCreateNeutronLoadBalancerPoolMember(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);
+ }
+
+ if (instances != null) {
+ for (Object instance : instances) {
+ INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
+ service.neutronLoadBalancerPoolMemberCreated(singleton);
+ }
+ }
+
+ /**
+ * Add the member from the neutron load balancer pool as well
+ */
+ singletonPool.addLoadBalancerPoolMember(singleton);
+
+ } else {
+ Object[] instances = NeutronUtil.getInstances(INeutronLoadBalancerPoolMemberAware.class, this);
+ for (NeutronLoadBalancerPoolMember test : input.getBulk()) {
+
+ if (instances != null) {
+ if (instances.length > 0) {
+ for (Object instance : instances) {
+ INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
+ int status = service.canCreateNeutronLoadBalancerPoolMember(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 (NeutronLoadBalancerPoolMember test : input.getBulk()) {
+ if (instances != null) {
+ for (Object instance : instances) {
+ INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
+ service.neutronLoadBalancerPoolMemberCreated(test);
+ }
+ }
+ singletonPool.addLoadBalancerPoolMember(test);
+ }
+ }
+ return Response.status(HttpURLConnection.HTTP_CREATED).entity(input).build();
+ }
+
+ /**
+ * Updates a LB member pool
+ */
+
+ @Path("{loadBalancerPoolUUID}/members/{loadBalancerPoolMemberUUID}")
+ @PUT
+ @Produces({ MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_JSON })
+ @StatusCodes({
+ @ResponseCode(code = HttpURLConnection.HTTP_OK, condition = "Operation successful") })
+ public Response updateLoadBalancerPoolMember(
+ @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
+ @PathParam("loadBalancerPoolMemberUUID") String loadBalancerPoolMemberUUID,
+ final NeutronLoadBalancerPoolMemberRequest input) {
+ INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = getNeutronInterfaces().getLoadBalancerPoolInterface();
+ INeutronLoadBalancerPoolMemberCRUD loadBalancerPoolMemberInterface = getNeutronInterfaces().getLoadBalancerPoolMemberInterface();
+ NeutronLoadBalancerPool singletonPool = loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID);
+
+ NeutronLoadBalancerPoolMember singleton = input.getSingleton();
+ singleton.setPoolID(loadBalancerPoolUUID);
+ NeutronLoadBalancerPoolMember original = loadBalancerPoolMemberInterface.getNeutronLoadBalancerPoolMember(loadBalancerPoolMemberUUID);
+
+ Object[] instances = NeutronUtil.getInstances(INeutronLoadBalancerPoolMemberAware.class, this);
+ if (instances != null) {
+ if (instances.length > 0) {
+ for (Object instance : instances) {
+ INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
+ int status = service.canUpdateNeutronLoadBalancerPoolMember(singleton, 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);
+ }
+
+ loadBalancerPoolMemberInterface.updateNeutronLoadBalancerPoolMember(loadBalancerPoolMemberUUID, singleton);
+
+ if (instances != null) {
+ for (Object instance : instances) {
+ INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
+ service.neutronLoadBalancerPoolMemberUpdated(singleton);
+ }
+ }
+ return Response.status(HttpURLConnection.HTTP_OK).entity(input).build();
+ }
+
+ /**
+ * Deletes a LoadBalancerPoolMember
+ */
+
+ @Path("{loadBalancerPoolUUID}/members/{loadBalancerPoolMemberUUID}")
+ @DELETE
+ @StatusCodes({
+ @ResponseCode(code = HttpURLConnection.HTTP_NO_CONTENT, condition = "No Content"),
+ @ResponseCode(code = HttpURLConnection.HTTP_UNAVAILABLE, condition = "No providers available") })
+ public Response deleteLoadBalancerPoolMember(
+ @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID,
+ @PathParam("loadBalancerPoolMemberUUID") String loadBalancerPoolMemberUUID) {
+ INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = getNeutronInterfaces().getLoadBalancerPoolInterface();
+
+ //Verify that the LB pool member exists
+ NeutronLoadBalancerPoolMember singleton = null;
+ List<NeutronLoadBalancerPoolMember> members =
+ loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID).getLoadBalancerPoolMembers();
+ for (NeutronLoadBalancerPoolMember member: members) {
+ if (member.getID().equals(loadBalancerPoolMemberUUID)) {
+ singleton = member;
+ break;
+ }
+ }
+ if (singleton == null) {
+ throw new BadRequestException("LoadBalancerPoolMember UUID does not exist.");
+ }
+
+ Object[] instances = NeutronUtil.getInstances(INeutronLoadBalancerPoolMemberAware.class, this);
+ if (instances != null) {
+ if (instances.length > 0) {
+ for (Object instance : instances) {
+ INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
+ int status = service.canDeleteNeutronLoadBalancerPoolMember(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);
+ }
+
+ if (instances != null) {
+ for (Object instance : instances) {
+ INeutronLoadBalancerPoolMemberAware service = (INeutronLoadBalancerPoolMemberAware) instance;
+ service.neutronLoadBalancerPoolMemberDeleted(singleton);
+ }
+ }
+
+ /**
+ * Remove the member from the neutron load balancer pool
+ */
+ NeutronLoadBalancerPool singletonPool = loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID);
+ singletonPool.removeLoadBalancerPoolMember(singleton);
+
+ return Response.status(HttpURLConnection.HTTP_NO_CONTENT).build();
+ }
}
classes.add(NeutronLoadBalancerListenerNorthbound.class);
classes.add(NeutronLoadBalancerPoolNorthbound.class);
classes.add(NeutronLoadBalancerHealthMonitorNorthbound.class);
- classes.add(NeutronLoadBalancerPoolMembersNorthbound.class);
classes.add(NeutronMeteringLabelsNorthbound.class);
classes.add(NeutronMeteringLabelRulesNorthbound.class);
classes.add(NeutronVPNServicesNorthbound.class);
return false;
}
loadBalancerPoolDB.remove(uuid);
- //TODO: add code to find INeutronLoadBalancerPoolAware services and call newtorkDeleted on them
return true;
}
if (!neutronLoadBalancerPoolExists(uuid)) {
return false;
}
- NeutronLoadBalancerPool target = loadBalancerPoolDB.get(uuid);
- return overwrite(target, delta);
+ loadBalancerPoolDB.putIfAbsent(uuid, delta);
+ return true;
}
@Override