mirror of https://github.com/apache/jclouds.git
added message to NPE when vdc isn't found
This commit is contained in:
parent
69a1b7a6aa
commit
281109dfc4
|
@ -18,15 +18,16 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.vcloud.terremark.compute;
|
package org.jclouds.vcloud.terremark.compute;
|
||||||
|
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
import static com.google.common.collect.Iterables.filter;
|
import static com.google.common.collect.Iterables.filter;
|
||||||
import static com.google.common.collect.Iterables.getLast;
|
import static com.google.common.collect.Iterables.getLast;
|
||||||
import static org.jclouds.vcloud.terremark.options.AddInternetServiceOptions.Builder.withDescription;
|
import static org.jclouds.vcloud.terremark.options.AddInternetServiceOptions.Builder.withDescription;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
@ -71,10 +72,10 @@ public class TerremarkVCloudComputeClient extends VCloudExpressComputeClientImpl
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
protected TerremarkVCloudComputeClient(TerremarkVCloudClient client,
|
protected TerremarkVCloudComputeClient(TerremarkVCloudClient client,
|
||||||
PopulateDefaultLoginCredentialsForImageStrategy credentialsProvider,
|
PopulateDefaultLoginCredentialsForImageStrategy credentialsProvider,
|
||||||
@Named("PASSWORD") Provider<String> passwordGenerator, Predicate<URI> successTester,
|
@Named("PASSWORD") Provider<String> passwordGenerator, Predicate<URI> successTester,
|
||||||
Map<Status, NodeState> vAppStatusToNodeState, Map<String, Credentials> credentialStore,
|
Map<Status, NodeState> vAppStatusToNodeState, Map<String, Credentials> credentialStore,
|
||||||
InternetServiceAndPublicIpAddressSupplier internetServiceAndPublicIpAddressSupplier) {
|
InternetServiceAndPublicIpAddressSupplier internetServiceAndPublicIpAddressSupplier) {
|
||||||
super(client, successTester, vAppStatusToNodeState);
|
super(client, successTester, vAppStatusToNodeState);
|
||||||
this.client = client;
|
this.client = client;
|
||||||
this.credentialsProvider = credentialsProvider;
|
this.credentialsProvider = credentialsProvider;
|
||||||
|
@ -85,7 +86,7 @@ public class TerremarkVCloudComputeClient extends VCloudExpressComputeClientImpl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VCloudExpressVApp start(@Nullable URI VDC, URI templateId, String name,
|
public VCloudExpressVApp start(@Nullable URI VDC, URI templateId, String name,
|
||||||
InstantiateVAppTemplateOptions options, int... portsToOpen) {
|
InstantiateVAppTemplateOptions options, int... portsToOpen) {
|
||||||
if (options.getDiskSizeKilobytes() != null) {
|
if (options.getDiskSizeKilobytes() != null) {
|
||||||
logger.warn("trmk does not support resizing the primary disk; unsetting disk size");
|
logger.warn("trmk does not support resizing the primary disk; unsetting disk size");
|
||||||
}
|
}
|
||||||
|
@ -95,7 +96,7 @@ public class TerremarkVCloudComputeClient extends VCloudExpressComputeClientImpl
|
||||||
String password = null;
|
String password = null;
|
||||||
VCloudExpressVAppTemplate template = client.getVAppTemplate(templateId);
|
VCloudExpressVAppTemplate template = client.getVAppTemplate(templateId);
|
||||||
if (template.getDescription().indexOf("Windows") != -1
|
if (template.getDescription().indexOf("Windows") != -1
|
||||||
&& options instanceof TerremarkInstantiateVAppTemplateOptions) {
|
&& options instanceof TerremarkInstantiateVAppTemplateOptions) {
|
||||||
password = passwordGenerator.get();
|
password = passwordGenerator.get();
|
||||||
TerremarkInstantiateVAppTemplateOptions.class.cast(options).getProperties().put("password", password);
|
TerremarkInstantiateVAppTemplateOptions.class.cast(options).getProperties().put("password", password);
|
||||||
}
|
}
|
||||||
|
@ -104,7 +105,7 @@ public class TerremarkVCloudComputeClient extends VCloudExpressComputeClientImpl
|
||||||
VCloudExpressVApp vAppResponse = super.start(VDC, templateId, name, options, portsToOpen);
|
VCloudExpressVApp vAppResponse = super.start(VDC, templateId, name, options, portsToOpen);
|
||||||
if (password != null) {
|
if (password != null) {
|
||||||
credentialStore.put("node#" + vAppResponse.getHref().toASCIIString(), new Credentials(
|
credentialStore.put("node#" + vAppResponse.getHref().toASCIIString(), new Credentials(
|
||||||
defaultCredentials.identity, password));
|
defaultCredentials.identity, password));
|
||||||
}
|
}
|
||||||
if (portsToOpen.length > 0)
|
if (portsToOpen.length > 0)
|
||||||
createPublicAddressMappedToPorts(vAppResponse.getHref(), portsToOpen);
|
createPublicAddressMappedToPorts(vAppResponse.getHref(), portsToOpen);
|
||||||
|
@ -119,41 +120,37 @@ public class TerremarkVCloudComputeClient extends VCloudExpressComputeClientImpl
|
||||||
InternetService is = null;
|
InternetService is = null;
|
||||||
Protocol protocol;
|
Protocol protocol;
|
||||||
switch (port) {
|
switch (port) {
|
||||||
case 22:
|
case 22:
|
||||||
protocol = Protocol.TCP;
|
protocol = Protocol.TCP;
|
||||||
break;
|
break;
|
||||||
case 80:
|
case 80:
|
||||||
case 8080:
|
case 8080:
|
||||||
protocol = Protocol.HTTP;
|
protocol = Protocol.HTTP;
|
||||||
break;
|
break;
|
||||||
case 443:
|
case 443:
|
||||||
protocol = Protocol.HTTPS;
|
protocol = Protocol.HTTPS;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
protocol = Protocol.HTTP;
|
protocol = Protocol.HTTP;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (ip == null) {
|
if (ip == null) {
|
||||||
|
|
||||||
Entry<InternetService, PublicIpAddress> entry = internetServiceAndPublicIpAddressSupplier
|
Entry<InternetService, PublicIpAddress> entry = internetServiceAndPublicIpAddressSupplier
|
||||||
.getNewInternetServiceAndIp(vApp, port, protocol);
|
.getNewInternetServiceAndIp(vApp, port, protocol);
|
||||||
is = entry.getKey();
|
is = entry.getKey();
|
||||||
ip = entry.getValue();
|
ip = entry.getValue();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
logger.debug(">> adding InternetService %s:%s:%d", ip.getAddress(), protocol, port);
|
logger.debug(">> adding InternetService %s:%s:%d", ip.getAddress(), protocol, port);
|
||||||
is = client.addInternetServiceToExistingIp(
|
is = client.addInternetServiceToExistingIp(ip.getId(), vApp.getName() + "-" + port, protocol, port,
|
||||||
ip.getId(),
|
withDescription(String.format("port %d access to serverId: %s name: %s", port, vApp.getName(),
|
||||||
vApp.getName() + "-" + port,
|
vApp.getName())));
|
||||||
protocol,
|
|
||||||
port,
|
|
||||||
withDescription(String.format("port %d access to serverId: %s name: %s", port, vApp.getName(),
|
|
||||||
vApp.getName())));
|
|
||||||
}
|
}
|
||||||
logger.debug("<< created InternetService(%s) %s:%s:%d", is.getName(), is.getPublicIpAddress().getAddress(),
|
logger.debug("<< created InternetService(%s) %s:%s:%d", is.getName(), is.getPublicIpAddress().getAddress(), is
|
||||||
is.getProtocol(), is.getPort());
|
.getProtocol(), is.getPort());
|
||||||
logger.debug(">> adding Node %s:%d -> %s:%d", is.getPublicIpAddress().getAddress(), is.getPort(),
|
logger.debug(">> adding Node %s:%d -> %s:%d", is.getPublicIpAddress().getAddress(), is.getPort(),
|
||||||
privateAddress, port);
|
privateAddress, port);
|
||||||
Node node = client.addNode(is.getId(), privateAddress, vApp.getName() + "-" + port, port);
|
Node node = client.addNode(is.getId(), privateAddress, vApp.getName() + "-" + port, port);
|
||||||
logger.debug("<< added Node(%s)", node.getName());
|
logger.debug("<< added Node(%s)", node.getName());
|
||||||
}
|
}
|
||||||
|
@ -161,19 +158,20 @@ public class TerremarkVCloudComputeClient extends VCloudExpressComputeClientImpl
|
||||||
}
|
}
|
||||||
|
|
||||||
private Set<PublicIpAddress> deleteInternetServicesAndNodesAssociatedWithVApp(VCloudExpressVApp vApp) {
|
private Set<PublicIpAddress> deleteInternetServicesAndNodesAssociatedWithVApp(VCloudExpressVApp vApp) {
|
||||||
|
checkNotNull(vApp.getVDC(), "VDC reference missing for vApp(%s)", vApp.getName());
|
||||||
Set<PublicIpAddress> ipAddresses = Sets.newHashSet();
|
Set<PublicIpAddress> ipAddresses = Sets.newHashSet();
|
||||||
SERVICE: for (InternetService service : client.getAllInternetServicesInVDC(vApp.getVDC().getHref())) {
|
SERVICE: for (InternetService service : client.getAllInternetServicesInVDC(vApp.getVDC().getHref())) {
|
||||||
for (Node node : client.getNodes(service.getId())) {
|
for (Node node : client.getNodes(service.getId())) {
|
||||||
if (vApp.getNetworkToAddresses().containsValue(node.getIpAddress())) {
|
if (vApp.getNetworkToAddresses().containsValue(node.getIpAddress())) {
|
||||||
ipAddresses.add(service.getPublicIpAddress());
|
ipAddresses.add(service.getPublicIpAddress());
|
||||||
logger.debug(">> deleting Node(%s) %s:%d -> %s:%d", node.getName(), service.getPublicIpAddress()
|
logger.debug(">> deleting Node(%s) %s:%d -> %s:%d", node.getName(), service.getPublicIpAddress()
|
||||||
.getAddress(), service.getPort(), node.getIpAddress(), node.getPort());
|
.getAddress(), service.getPort(), node.getIpAddress(), node.getPort());
|
||||||
client.deleteNode(node.getId());
|
client.deleteNode(node.getId());
|
||||||
logger.debug("<< deleted Node(%s)", node.getName());
|
logger.debug("<< deleted Node(%s)", node.getName());
|
||||||
Set<Node> nodes = client.getNodes(service.getId());
|
Set<Node> nodes = client.getNodes(service.getId());
|
||||||
if (nodes.size() == 0) {
|
if (nodes.size() == 0) {
|
||||||
logger.debug(">> deleting InternetService(%s) %s:%d", service.getName(), service.getPublicIpAddress()
|
logger.debug(">> deleting InternetService(%s) %s:%d", service.getName(), service.getPublicIpAddress()
|
||||||
.getAddress(), service.getPort());
|
.getAddress(), service.getPort());
|
||||||
client.deleteInternetService(service.getId());
|
client.deleteInternetService(service.getId());
|
||||||
logger.debug("<< deleted InternetService(%s)", service.getName());
|
logger.debug("<< deleted InternetService(%s)", service.getName());
|
||||||
continue SERVICE;
|
continue SERVICE;
|
||||||
|
|
Loading…
Reference in New Issue