This is an automated email from the ASF dual-hosted git repository.

nacx pushed a commit to branch 2.1.x
in repository https://gitbox.apache.org/repos/asf/jclouds.git

commit 757d288ae0e3db046ef0b10540d333e002ca0698
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": []
+      }
+    }
+  ]
+}

Reply via email to