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 2018/01/08 14:53:09 UTC

[48/50] [abbrv] jclouds git commit: JCLOUDS-1362: Proper password generation with custom constraints for each cloud

JCLOUDS-1362: Proper password generation with custom constraints for each cloud


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

Branch: refs/heads/master
Commit: eebcc0017fbf7b1f1d0d2920cd8f891e1ec36e38
Parents: a2dee2f
Author: Ignasi Barrera <na...@apache.org>
Authored: Thu Jan 4 01:44:14 2018 +0100
Committer: Ignasi Barrera <na...@apache.org>
Committed: Mon Jan 8 08:48:37 2018 +0100

----------------------------------------------------------------------
 .../config/AzureComputeServiceContextModule.java    | 16 ++++++++++++++++
 .../strategy/CreateResourcesThenCreateNodes.java    |  9 ++++++---
 .../CreateResourcesThenCreateNodesTest.java         |  3 ++-
 3 files changed, 24 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/eebcc001/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/config/AzureComputeServiceContextModule.java
----------------------------------------------------------------------
diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/config/AzureComputeServiceContextModule.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/config/AzureComputeServiceContextModule.java
index de33fdf..0a81ecb 100644
--- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/config/AzureComputeServiceContextModule.java
+++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/config/AzureComputeServiceContextModule.java
@@ -53,6 +53,7 @@ import org.jclouds.compute.functions.NodeAndTemplateOptionsToStatementWithoutPub
 import org.jclouds.compute.options.TemplateOptions;
 import org.jclouds.compute.strategy.CreateNodesInGroupThenAddToSet;
 import org.jclouds.net.domain.IpPermission;
+import org.jclouds.util.PasswordGenerator;
 
 import com.google.common.base.Function;
 import com.google.common.cache.CacheBuilder;
@@ -102,6 +103,21 @@ public class AzureComputeServiceContextModule extends
       bind(new TypeLiteral<SecurityGroupExtension>() {
       }).to(AzureComputeSecurityGroupExtension.class);
    }
+   
+   @Provides
+   @Singleton
+   protected PasswordGenerator.Config providePasswordGenerator() {
+      // Guest passwords must be between 6-72 characters long.
+      // Must contain an upper case character.
+      // Must contain a lower case character.
+      // Must contain a numeric digit.
+      // Must contain a special character. Control characters are not allowed.
+      return new PasswordGenerator()
+            .lower().min(2).max(10)
+            .upper().min(2).max(10)
+            .numbers().min(2).max(10)
+            .symbols().min(2).max(10);
+   }
 
    @Provides
    @Singleton

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eebcc001/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodes.java
----------------------------------------------------------------------
diff --git a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodes.java b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodes.java
index e5d38fb..511d531 100644
--- a/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodes.java
+++ b/providers/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodes.java
@@ -52,7 +52,7 @@ import org.jclouds.compute.strategy.ListNodesStrategy;
 import org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet;
 import org.jclouds.domain.Location;
 import org.jclouds.logging.Logger;
-import org.jclouds.util.Passwords;
+import org.jclouds.util.PasswordGenerator;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Optional;
@@ -84,6 +84,7 @@ public class CreateResourcesThenCreateNodes extends CreateNodesWithGroupEncodedI
    private final String defaultVnetAddressPrefix;
    private final String defaultSubnetAddressPrefix;
    private final TemplateToAvailabilitySet templateToAvailabilitySet;
+   private final PasswordGenerator.Config passwordGenerator;
 
    @Inject
    protected CreateResourcesThenCreateNodes(
@@ -95,7 +96,8 @@ public class CreateResourcesThenCreateNodes extends CreateNodesWithGroupEncodedI
          AzureComputeApi api, @Named(DEFAULT_VNET_ADDRESS_SPACE_PREFIX) String defaultVnetAddressPrefix,
          @Named(DEFAULT_SUBNET_ADDRESS_PREFIX) String defaultSubnetAddressPrefix,
          LoadingCache<ResourceGroupAndNameAndIngressRules, String> securityGroupMap,
-         TemplateToAvailabilitySet templateToAvailabilitySet) {
+         TemplateToAvailabilitySet templateToAvailabilitySet,
+         PasswordGenerator.Config passwordGenerator) {
       super(addNodeWithGroupStrategy, listNodesStrategy, namingConvention, userExecutor,
             customizeNodeAndAddToGoodMapOrPutExceptionIntoBadMapFactory);
       this.api = api;
@@ -103,6 +105,7 @@ public class CreateResourcesThenCreateNodes extends CreateNodesWithGroupEncodedI
       this.defaultVnetAddressPrefix = defaultVnetAddressPrefix;
       this.defaultSubnetAddressPrefix = defaultSubnetAddressPrefix;
       this.templateToAvailabilitySet = templateToAvailabilitySet;
+      this.passwordGenerator = passwordGenerator;
    }
 
    @Override
@@ -141,7 +144,7 @@ public class CreateResourcesThenCreateNodes extends CreateNodesWithGroupEncodedI
       TemplateOptions options = template.getOptions();
       if (options.getLoginPassword() == null) {
          Optional<String> passwordOptional = template.getImage().getDefaultCredentials().getOptionalPassword();
-         options.overrideLoginPassword(passwordOptional.or(Passwords.generate()));
+         options.overrideLoginPassword(passwordOptional.or(passwordGenerator.generate()));
       }
    }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/eebcc001/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodesTest.java
----------------------------------------------------------------------
diff --git a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodesTest.java b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodesTest.java
index 51a45af..45c56a3 100644
--- a/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodesTest.java
+++ b/providers/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/strategy/CreateResourcesThenCreateNodesTest.java
@@ -24,6 +24,7 @@ import org.jclouds.azurecompute.arm.domain.PublicIPAddressProperties;
 import org.jclouds.azurecompute.arm.domain.Subnet;
 import org.jclouds.azurecompute.arm.features.PublicIPAddressApi;
 import org.jclouds.azurecompute.arm.features.SubnetApi;
+import org.jclouds.util.PasswordGenerator;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
@@ -101,7 +102,7 @@ public class CreateResourcesThenCreateNodesTest {
    }
 
    private static CreateResourcesThenCreateNodes strategy(AzureComputeApi api) {
-      return new CreateResourcesThenCreateNodes(null, null, null, null, null, api, null, null, null, null);
+      return new CreateResourcesThenCreateNodes(null, null, null, null, null, api, null, null, null, null, new PasswordGenerator().lower());
    }
 
    private static String netResource(String resource) {