made nullcredentials default and refined usage changing the vcloud api version

This commit is contained in:
Adrian Cole 2010-05-24 14:56:59 -07:00
parent 0684dc2344
commit a5abb14d20
8 changed files with 39 additions and 18 deletions

View File

@ -449,7 +449,7 @@ public class TemplateBuilderImpl implements TemplateBuilder {
size = sizeOrdering.max(Iterables.filter(sizesThatAreCompatibleWithOurImages,
sizePredicate));
} catch (NoSuchElementException exception) {
throw new NoSuchElementException("size didn't match: " + toString() + "\n" + sizes);
throw new NoSuchElementException("size didn't match: " + toString() + "\n" + sizes.get());
}
logger.debug("<< matched size(%s)", size);
return size;
@ -480,7 +480,7 @@ public class TemplateBuilderImpl implements TemplateBuilder {
logger.trace("<< best images(%s)", maxImages);
return maxImages;
} catch (NoSuchElementException exception) {
throw new NoSuchElementException("image didn't match: " + toString() + "\n" + images);
throw new NoSuchElementException("image didn't match: " + toString() + "\n" + images.get());
}
}

View File

@ -18,11 +18,15 @@
*/
package org.jclouds.compute.strategy;
import org.jclouds.compute.strategy.impl.ReturnNullCredentials;
import org.jclouds.domain.Credentials;
import com.google.inject.ImplementedBy;
/**
* @author Oleksiy Yarmula
*/
@ImplementedBy(ReturnNullCredentials.class)
public interface PopulateDefaultLoginCredentialsForImageStrategy {
/**

View File

@ -1,7 +1,5 @@
package org.jclouds.compute.strategy.impl;
import java.util.regex.Pattern;
import javax.inject.Singleton;
import org.jclouds.compute.strategy.PopulateDefaultLoginCredentialsForImageStrategy;
@ -13,9 +11,6 @@ import org.jclouds.domain.Credentials;
@Singleton
public class ReturnNullCredentials implements PopulateDefaultLoginCredentialsForImageStrategy {
public static final Pattern USER_PASSWORD_PATTERN = Pattern
.compile(".*[Uu]sername: ([a-z]+) ?.*\n[Pp]assword: ([^ ]+) ?\n.*");
@Override
public Credentials execute(Object resourceToAuthenticate) {
return null;

View File

@ -75,10 +75,13 @@ public class BlueLockVCloudComputeServiceContextModule extends VCloudComputeServ
private static class BlueLockVCloudImageProvider extends VCloudImageProvider {
@Inject
protected BlueLockVCloudImageProvider(VCloudClient client,
protected BlueLockVCloudImageProvider(
VCloudClient client,
FindLocationForResourceInVDC findLocationForResourceInVDC,
PopulateDefaultLoginCredentialsForImageStrategy populateDefaultLoginCredentialsForImageStrategy,
@Named(Constants.PROPERTY_USER_THREADS) ExecutorService executor) {
super(client, findLocationForResourceInVDC, executor);
super(client, findLocationForResourceInVDC,
populateDefaultLoginCredentialsForImageStrategy, executor);
}
// Extremely important, as otherwise the size encoded into the name will throw off the

View File

@ -22,8 +22,10 @@ package org.jclouds.vcloud.bluelock.compute;
import static org.testng.Assert.assertEquals;
import org.jclouds.compute.domain.Architecture;
import org.jclouds.compute.domain.Image;
import org.jclouds.compute.domain.OsFamily;
import org.jclouds.compute.domain.Template;
import org.jclouds.compute.domain.TemplateBuilder;
import org.jclouds.http.HttpResponseException;
import org.jclouds.vcloud.VCloudClient;
import org.jclouds.vcloud.compute.VCloudComputeServiceLiveTest;
@ -52,6 +54,15 @@ public class BlueLockVCloudComputeServiceLiveTest extends VCloudComputeServiceLi
assertEquals(defaultTemplate.getSize().getCores(), 1.0d);
}
@Override
protected Template buildTemplate(TemplateBuilder templateBuilder) {
Template template = super.buildTemplate(templateBuilder);
Image image = template.getImage();
assert image.getDefaultCredentials().account != null : image;
assert image.getDefaultCredentials().key != null : image;
return template;
}
@Test
public void testErrorWhereAllNetworksReturn403() throws Exception {
VCloudClient bluelockClient = VCloudClient.class.cast(context.getProviderSpecificContext()

View File

@ -46,7 +46,6 @@ public class VCloudPropertiesBuilder extends PropertiesBuilder {
Properties properties = super.defaultProperties();
properties.setProperty(PROPERTY_VCLOUD_VERSION, "0.8");
properties.setProperty(PROPERTY_VCLOUD_SESSIONINTERVAL, 8 * 60 + "");
properties.setProperty(PROPERTY_VCLOUD_XML_NAMESPACE, "http://www.vmware.com/vcloud/v0.8");
properties.setProperty(PROPERTY_VCLOUD_XML_SCHEMA,
"http://vcloud.safesecureweb.com/ns/vcloud.xsd");
properties.setProperty(PROPERTY_VCLOUD_DEFAULT_DHCP_ENABLED, "false");
@ -58,10 +57,18 @@ public class VCloudPropertiesBuilder extends PropertiesBuilder {
public VCloudPropertiesBuilder(Properties properties) {
super(properties);
setNs();
}
private void setNs() {
if (properties.getProperty(PROPERTY_VCLOUD_XML_NAMESPACE) == null)
properties.setProperty(PROPERTY_VCLOUD_XML_NAMESPACE, "http://www.vmware.com/vcloud/v"
+ properties.getProperty(PROPERTY_VCLOUD_VERSION));
}
public VCloudPropertiesBuilder(URI endpoint, String id, String secret) {
super();
setNs();
withCredentials(id, secret);
withEndpoint(endpoint);
}

View File

@ -35,8 +35,8 @@ import org.jclouds.compute.domain.Image;
import org.jclouds.compute.domain.OsFamily;
import org.jclouds.compute.domain.internal.ImageImpl;
import org.jclouds.compute.reference.ComputeServiceConstants;
import org.jclouds.compute.strategy.PopulateDefaultLoginCredentialsForImageStrategy;
import org.jclouds.concurrent.ConcurrentUtils;
import org.jclouds.domain.Credentials;
import org.jclouds.domain.Location;
import org.jclouds.logging.Logger;
import org.jclouds.vcloud.VCloudClient;
@ -61,17 +61,19 @@ public class VCloudImageProvider implements Provider<Set<? extends Image>> {
private final VCloudClient client;
private final FindLocationForResourceInVDC findLocationForResourceInVDC;
private final PopulateDefaultLoginCredentialsForImageStrategy populateDefaultLoginCredentialsForImageStrategy;
private final ExecutorService executor;
@Inject
protected VCloudImageProvider(VCloudClient client,
protected VCloudImageProvider(
VCloudClient client,
FindLocationForResourceInVDC findLocationForResourceInVDC,
PopulateDefaultLoginCredentialsForImageStrategy populateDefaultLoginCredentialsForImageStrategy,
@Named(Constants.PROPERTY_USER_THREADS) ExecutorService executor) {
this.client = client;
this.findLocationForResourceInVDC = findLocationForResourceInVDC;
this.populateDefaultLoginCredentialsForImageStrategy = populateDefaultLoginCredentialsForImageStrategy;
this.executor = executor;
}
@Override
@ -105,7 +107,9 @@ public class VCloudImageProvider implements Provider<Set<? extends Image>> {
images.add(new ImageImpl(resource.getId(), name, resource.getId(),
location, template.getLocation(), ImmutableMap
.<String, String> of(), template.getDescription(),
"", myOs, name, arch, new Credentials("root", null)));
"", myOs, name, arch,
populateDefaultLoginCredentialsForImageStrategy
.execute(template)));
return null;
}
}), executor));

View File

@ -21,8 +21,6 @@ package org.jclouds.vcloud.hostingdotcom.compute.config;
import static org.jclouds.compute.domain.OsFamily.CENTOS;
import org.jclouds.compute.domain.TemplateBuilder;
import org.jclouds.compute.strategy.PopulateDefaultLoginCredentialsForImageStrategy;
import org.jclouds.compute.strategy.impl.ReturnNullCredentials;
import org.jclouds.vcloud.compute.VCloudComputeClient;
import org.jclouds.vcloud.compute.config.VCloudComputeServiceContextModule;
import org.jclouds.vcloud.hostingdotcom.compute.HostingDotComVCloudComputeClient;
@ -44,7 +42,6 @@ public class HostingDotComVCloudComputeServiceContextModule extends
protected void configure() {
super.configure();
bind(VCloudComputeClient.class).to(HostingDotComVCloudComputeClient.class);
bind(PopulateDefaultLoginCredentialsForImageStrategy.class).to(ReturnNullCredentials.class);
}
@Override