@Override
  @Nullable
  public LoginCredentials get() {
    if (credentialStore.containsKey("image")) {
      return LoginCredentials.builder(credentialStore.get("image")).build();
    }
    Builder builder = LoginCredentials.builder();

    String loginUser = config.apply(provider + ".image.login-user");
    if (loginUser == null) loginUser = config.apply("jclouds.image.login-user");
    if (loginUser != null) {
      int pos = loginUser.indexOf(':');
      if (pos != -1) {
        builder.user(loginUser.substring(0, pos)).password(loginUser.substring(pos + 1));
      } else builder.user(loginUser);
    }

    String authenticateSudo = config.apply(provider + ".image.authenticate-sudo");
    if (authenticateSudo == null)
      authenticateSudo = config.apply("jclouds.image.authenticate-sudo");
    if (authenticateSudo != null) {
      builder.authenticateSudo(Boolean.valueOf(authenticateSudo));
    }

    LoginCredentials creds = builder.build();
    if (creds != null) credentialStore.put("image", creds);
    return creds;
  }
 @Provides
 @Singleton
 @ImageQuery
 protected Map<String, String> imageQuery(ValueOfConfigurationKeyOrNull config) {
   String amiQuery = Strings.emptyToNull(config.apply(PROPERTY_EC2_AMI_QUERY));
   String owners = config.apply(PROPERTY_EC2_AMI_OWNERS);
   if ("".equals(owners)) {
     amiQuery = null;
   } else if (owners != null) {
     StringBuilder query = new StringBuilder();
     if ("*".equals(owners)) query.append("state=available;image-type=machine");
     else query.append("owner-id=").append(owners).append(";state=available;image-type=machine");
     Logger.getAnonymousLogger()
         .warning(
             String.format(
                 "Property %s is deprecated, please use new syntax: %s=%s",
                 PROPERTY_EC2_AMI_OWNERS, PROPERTY_EC2_AMI_QUERY, query.toString()));
     amiQuery = query.toString();
   }
   Builder<String, String> builder = ImmutableMap.<String, String>builder();
   if (amiQuery != null) builder.put(PROPERTY_EC2_AMI_QUERY, amiQuery);
   String ccQuery = Strings.emptyToNull(config.apply(PROPERTY_EC2_CC_AMI_QUERY));
   if (ccQuery != null) builder.put(PROPERTY_EC2_CC_AMI_QUERY, ccQuery);
   return builder.build();
 }
 /** The default template if none is provided. */
 @Provides
 @Named("DEFAULT")
 protected TemplateBuilder provideTemplateOptionallyFromProperties(
     Injector injector,
     TemplateBuilder template,
     @Provider String provider,
     ValueOfConfigurationKeyOrNull config) {
   template = provideTemplate(injector, template);
   String imageId = config.apply(provider + ".image-id");
   if (imageId == null) imageId = config.apply(ComputeServiceConstants.PROPERTY_IMAGE_ID);
   if (imageId != null) template.imageId(imageId);
   return template;
 }
 /** The default template if none is provided. */
 @Provides
 @Named("DEFAULT")
 protected TemplateBuilder provideTemplateOptionallyFromProperties(
     Injector injector,
     TemplateBuilder template,
     @Provider String provider,
     ValueOfConfigurationKeyOrNull config) {
   String templateString = config.apply(provider + ".template");
   if (templateString == null) templateString = config.apply(TEMPLATE);
   if (templateString != null) {
     template.from(templateString);
   } else {
     template.osFamily(UBUNTU).osVersionMatches("1[012].[01][04]").os64Bit(true);
   }
   String imageId = config.apply(provider + ".image-id");
   if (imageId == null) imageId = config.apply(IMAGE_ID);
   if (imageId != null) template.imageId(imageId);
   return template;
 }