You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2016/07/12 10:34:29 UTC

jclouds-labs git commit: [JCLOUDS-1135] improve performance of AzureComputeServiceAdapter.getNode

Repository: jclouds-labs
Updated Branches:
  refs/heads/master 7df28d259 -> 7dd02a010


[JCLOUDS-1135] improve performance of AzureComputeServiceAdapter.getNode

If the deployment name is the same as cloud service name, which it is
for all nodes created by the JClouds Azure provider, the getNode(id)
method will no longer list all existing cloud services.


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/7dd02a01
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/7dd02a01
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/7dd02a01

Branch: refs/heads/master
Commit: 7dd02a010a8275aea2c3953aac71c5dec22eeeeb
Parents: 7df28d2
Author: Ladislav Thon <lt...@redhat.com>
Authored: Fri Jul 1 16:13:19 2016 +0200
Committer: Ignasi Barrera <na...@apache.org>
Committed: Tue Jul 12 12:29:15 2016 +0200

----------------------------------------------------------------------
 .../compute/AzureComputeServiceAdapter.java     | 33 +++++++++++++-------
 1 file changed, 22 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/7dd02a01/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java
index ecf6c0d..7a65e6d 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapter.java
@@ -265,24 +265,35 @@ public class AzureComputeServiceAdapter implements ComputeServiceAdapter<Deploym
       return api.getLocationApi().list();
    }
 
+   /** Returns the {@code deployment} argument itself if already settled, otherwise {@code null}. */
+   private Deployment isSettled(Deployment deployment) {
+      return deployment == null || deployment.roleInstanceList().isEmpty()
+              ? null
+              : FluentIterable.from(deployment.roleInstanceList()).allMatch(
+                      new Predicate<RoleInstance>() {
+                         @Override
+                         public boolean apply(final RoleInstance input) {
+                            return input != null && !input.instanceStatus().isTransient();
+                         }
+                      })
+                      ? deployment
+                      : null;
+   }
+
    @Override
    public Deployment getNode(final String id) {
+      // all nodes created by this provider will always have a cloud service name equal to deployment name
+      final Deployment deployment = api.getDeploymentApiForService(id).get(id);
+      if (deployment != null) {
+         return isSettled(deployment);
+      }
+
       return FluentIterable.from(api.getCloudServiceApi().list()).
               transform(new Function<CloudService, Deployment>() {
                  @Override
                  public Deployment apply(final CloudService input) {
                     final Deployment deployment = api.getDeploymentApiForService(input.name()).get(id);
-                    return deployment == null || deployment.roleInstanceList().isEmpty()
-                            ? null
-                            : FluentIterable.from(deployment.roleInstanceList()).allMatch(
-                                    new Predicate<RoleInstance>() {
-                                       @Override
-                                       public boolean apply(final RoleInstance input) {
-                                          return input != null && !input.instanceStatus().isTransient();
-                                       }
-                                    })
-                                    ? deployment
-                                    : null;
+                    return isSettled(deployment);
                  }
               }).
               firstMatch(notNull()).