This is an automated email from the ASF dual-hosted git repository.
nacx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jclouds.git
The following commit(s) were added to refs/heads/master by this push:
new 32c7732 Implements listAll method for LoadBalancersAPI (#32)
32c7732 is described below
commit 32c773279f89891ff3d34e5e9ebdf90e01ff5f8f
Author: Daniel Estévez <[email protected]>
AuthorDate: Tue May 21 05:49:11 2019 -0400
Implements listAll method for LoadBalancersAPI (#32)
---
.../jclouds/azurecompute/arm/AzureComputeApi.java | 2 +-
.../azurecompute/arm/features/LoadBalancerApi.java | 24 +++++---
.../arm/features/LoadBalancerApiLiveTest.java | 19 ++++++-
.../arm/features/LoadBalancerApiMockTest.java | 13 +++++
.../src/test/resources/loadbalancerlistall.json | 66 ++++++++++++++++++++++
5 files changed, 115 insertions(+), 9 deletions(-)
diff --git
a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java
b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java
index f62daa5..5a5a858 100644
---
a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java
+++
b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/AzureComputeApi.java
@@ -192,7 +192,7 @@ public interface AzureComputeApi extends Closeable {
* </a>
*/
@Delegate
- LoadBalancerApi getLoadBalancerApi(@PathParam("resourcegroup") String
resourcegroup);
+ LoadBalancerApi getLoadBalancerApi(@Nullable @PathParam("resourcegroup")
String resourcegroup);
/**
* The AvailabilitySet API includes operations for managing availability
sets
diff --git
a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/LoadBalancerApi.java
b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/LoadBalancerApi.java
index f8b65dc..b1673ce 100644
---
a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/LoadBalancerApi.java
+++
b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/LoadBalancerApi.java
@@ -45,34 +45,44 @@ import org.jclouds.rest.annotations.ResponseParser;
import org.jclouds.rest.annotations.SelectJson;
import org.jclouds.rest.binders.BindToJsonPayload;
-@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.Network/loadBalancers")
+/**
+ * The Load Balancer API includes operations for managing the load balancers
in your subscription.
+ *
+ * @see <a
href="https://docs.microsoft.com/en-us/rest/api/load-balancer/loadbalancers">docs</a>
+ */
@RequestFilters({ OAuthFilter.class, ApiVersionFilter.class })
@Consumes(MediaType.APPLICATION_JSON)
public interface LoadBalancerApi {
@Named("loadbalancer:list")
@GET
+
@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.Network/loadBalancers")
@SelectJson("value")
@Fallback(EmptyListOnNotFoundOr404.class)
List<LoadBalancer> list();
+ @Named("loadbalancer:listall")
+ @GET
+ @Path("/providers/Microsoft.Network/loadBalancers")
+ @SelectJson("value")
+ @Fallback(EmptyListOnNotFoundOr404.class)
+ List<LoadBalancer> listAll();
+
@Named("loadbalancer:get")
- @Path("/{loadbalancername}")
+
@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.Network/loadBalancers/{loadbalancername}")
@GET
@Fallback(NullOnNotFoundOr404.class)
LoadBalancer get(@PathParam("loadbalancername") String lbName);
@Named("loadbalancer:createOrUpdate")
- @Path("/{loadbalancername}")
+
@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.Network/loadBalancers/{loadbalancername}")
@PUT
@MapBinder(BindToJsonPayload.class)
- LoadBalancer createOrUpdate(@PathParam("loadbalancername") String lbName,
- @PayloadParam("location") String location, @Nullable
@PayloadParam("tags") Map<String, String> tags,
- @Nullable @PayloadParam("sku") SKU sku,
+ LoadBalancer createOrUpdate(@PathParam("loadbalancername") String lbName,
@PayloadParam("location") String location, @Nullable @PayloadParam("tags")
Map<String, String> tags, @Nullable @PayloadParam("sku") SKU sku,
@PayloadParam("properties") LoadBalancerProperties properties);
@Named("loadbalancer:delete")
- @Path("/{loadbalancername}")
+
@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.Network/loadBalancers/{loadbalancername}")
@DELETE
@ResponseParser(URIParser.class)
@Fallback(NullOnNotFoundOr404.class)
diff --git
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiLiveTest.java
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiLiveTest.java
index 0dde775..1e9b660 100644
---
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiLiveTest.java
+++
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiLiveTest.java
@@ -219,6 +219,23 @@ public class LoadBalancerApiLiveTest extends
BaseComputeServiceContextLiveTest {
}
@Test(dependsOnMethods = "testCreateLoadBalancer")
+ public void testListAllLoadBalancers() {
+ List<LoadBalancer> result = lbApi.listAll();
+
+ // Verify we have something
+ assertNotNull(result);
+ assertTrue(result.size() > 0);
+
+ // Check that the load balancer matches the one we originally passed in
+ assertTrue(any(result, new Predicate<LoadBalancer>() {
+ @Override
+ public boolean apply(LoadBalancer input) {
+ return lb.name().equals(input.name());
+ }
+ }));
+ }
+
+ @Test(dependsOnMethods = "testCreateLoadBalancer")
public void testGetLoadBalancer() {
lb = lbApi.get(lbName);
assertNotNull(lb);
@@ -324,7 +341,7 @@ public class LoadBalancerApiLiveTest extends
BaseComputeServiceContextLiveTest {
}
- @Test(dependsOnMethods = { "testCreateLoadBalancer",
"testListLoadBalancers", "testGetLoadBalancer", "testAddProbe",
+ @Test(dependsOnMethods = { "testCreateLoadBalancer",
"testListLoadBalancers", "testListAllLoadBalancers", "testGetLoadBalancer",
"testAddProbe",
"testAddLoadBalancingRule", "testAddBackendPool",
"testAttachNodesToBackendPool", "testAddInboundNatRule" }, alwaysRun = true)
public void deleteLoadBalancer() {
URI uri = lbApi.delete(lbName);
diff --git
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiMockTest.java
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiMockTest.java
index a0a5a42..5813223 100644
---
a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiMockTest.java
+++
b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/LoadBalancerApiMockTest.java
@@ -109,6 +109,19 @@ public class LoadBalancerApiMockTest extends
BaseAzureComputeApiMockTest {
assertTrue(result.size() > 0);
}
+ public void listAllLoadBalancers() throws InterruptedException {
+
server.enqueue(jsonResponse("/loadbalancerlistall.json").setResponseCode(200));
+
+ final LoadBalancerApi nsgApi = api.getLoadBalancerApi(resourcegroup);
+ List<LoadBalancer> result = nsgApi.listAll();
+
+ String path =
String.format("/subscriptions/%s/providers/Microsoft.Network/loadBalancers?%s",
subscriptionid, apiVersion);
+ assertSent(server, "GET", path);
+
+ assertNotNull(result);
+ assertTrue(result.size() > 0);
+ }
+
public void listLoadBalancersReturns404() throws InterruptedException {
server.enqueue(response404());
diff --git
a/providers/azurecompute-arm/src/test/resources/loadbalancerlistall.json
b/providers/azurecompute-arm/src/test/resources/loadbalancerlistall.json
new file mode 100644
index 0000000..9e51f06
--- /dev/null
+++ b/providers/azurecompute-arm/src/test/resources/loadbalancerlistall.json
@@ -0,0 +1,66 @@
+{
+ "value": [
+ {
+ "name": "testLoadBalancer",
+ "id":
"/subscriptions/SUBSCRIPTIONID/resourceGroups/rg-loadbalancerapilivetest-nacx/providers/Microsoft.Network/loadBalancers/testLoadBalancer",
+ "etag": "W/\"1107154b-8717-486b-80c1-af99ec62897b\"",
+ "type": "Microsoft.Network/loadBalancers",
+ "location": "westeurope",
+ "properties": {
+ "provisioningState": "Succeeded",
+ "resourceGuid": "383708b3-8d4e-474c-8908-9c4e311ac0bf",
+ "frontendIPConfigurations": [
+ {
+ "name": "ipConfigs",
+ "id":
"/subscriptions/SUBSCRIPTIONID/resourceGroups/rg-loadbalancerapilivetest-nacx/providers/Microsoft.Network/loadBalancers/testLoadBalancer/frontendIPConfigurations/ipConfigs",
+ "etag": "W/\"1107154b-8717-486b-80c1-af99ec62897b\"",
+ "properties": {
+ "provisioningState": "Succeeded",
+ "privateIPAllocationMethod": "Dynamic",
+ "publicIPAddress": {
+ "id":
"/subscriptions/SUBSCRIPTIONID/resourceGroups/rg-loadbalancerapilivetest-nacx/providers/Microsoft.Network/publicIPAddresses/Ip4LoadBalancer"
+ }
+ }
+ }
+ ],
+ "backendAddressPools": [],
+ "loadBalancingRules": [],
+ "probes": [],
+ "inboundNatRules": [],
+ "outboundNatRules": [],
+ "inboundNatPools": []
+ }
+ },
+ {
+ "name": "testLoadBalancer",
+ "id":
"/subscriptions/SUBSCRIPTIONID/resourceGroups/other-rg/providers/Microsoft.Network/loadBalancers/testLoadBalancer",
+ "etag": "W/\"1107154b-8717-486b-80c1-af99ec62897b\"",
+ "type": "Microsoft.Network/loadBalancers",
+ "location": "westeurope",
+ "properties": {
+ "provisioningState": "Succeeded",
+ "resourceGuid": "383708b3-8d4e-474c-8908-9c4e311ac0bf",
+ "frontendIPConfigurations": [
+ {
+ "name": "ipConfigs",
+ "id":
"/subscriptions/SUBSCRIPTIONID/resourceGroups/other-rg/providers/Microsoft.Network/loadBalancers/testLoadBalancer/frontendIPConfigurations/ipConfigs",
+ "etag": "W/\"1107154b-8717-486b-80c1-af99ec62897b\"",
+ "properties": {
+ "provisioningState": "Succeeded",
+ "privateIPAllocationMethod": "Dynamic",
+ "publicIPAddress": {
+ "id":
"/subscriptions/SUBSCRIPTIONID/resourceGroups/other-rg/providers/Microsoft.Network/publicIPAddresses/Ip4LoadBalancer"
+ }
+ }
+ }
+ ],
+ "backendAddressPools": [],
+ "loadBalancingRules": [],
+ "probes": [],
+ "inboundNatRules": [],
+ "outboundNatRules": [],
+ "inboundNatPools": []
+ }
+ }
+ ]
+}