You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2016/01/20 23:37:04 UTC
[2/3] jclouds-labs git commit: [JCLOUDS-981,
JCLOUDS-982] remove Optional from AzureComputeTemplateOptions
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/main/java/org/jclouds/azurecompute/compute/strategy/impl/AzureAdaptingComputeServiceStrategies.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/strategy/impl/AzureAdaptingComputeServiceStrategies.java b/azurecompute/src/main/java/org/jclouds/azurecompute/compute/strategy/impl/AzureAdaptingComputeServiceStrategies.java
deleted file mode 100644
index c99f3a4..0000000
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/compute/strategy/impl/AzureAdaptingComputeServiceStrategies.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.azurecompute.compute.strategy.impl;
-
-import com.google.common.base.Function;
-import java.util.Map;
-import javax.inject.Inject;
-import org.jclouds.azurecompute.compute.AzureComputeServiceAdapter;
-import org.jclouds.azurecompute.domain.Deployment;
-import org.jclouds.azurecompute.domain.Location;
-import org.jclouds.azurecompute.domain.OSImage;
-import org.jclouds.azurecompute.domain.RoleSize;
-import org.jclouds.compute.ComputeServiceAdapter;
-import org.jclouds.compute.config.ComputeServiceAdapterContextModule.AddDefaultCredentialsToImage;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.strategy.PrioritizeCredentialsFromTemplate;
-import org.jclouds.compute.strategy.impl.AdaptingComputeServiceStrategies;
-import org.jclouds.domain.Credentials;
-
-public class AzureAdaptingComputeServiceStrategies
- extends AdaptingComputeServiceStrategies<Deployment, RoleSize, OSImage, Location> {
-
- private final AzureComputeServiceAdapter client;
-
- private final Function<Deployment, NodeMetadata> nodeMetadataAdapter;
-
- @Inject
- public AzureAdaptingComputeServiceStrategies(
- final Map<String, Credentials> credentialStore,
- final PrioritizeCredentialsFromTemplate prioritizeCredentialsFromTemplate,
- final ComputeServiceAdapter<Deployment, RoleSize, OSImage, Location> client,
- final Function<Deployment, NodeMetadata> nodeMetadataAdapter,
- final Function<OSImage, Image> imageAdapter,
- final AddDefaultCredentialsToImage addDefaultCredentialsToImage) {
-
- super(credentialStore,
- prioritizeCredentialsFromTemplate,
- client,
- nodeMetadataAdapter,
- imageAdapter,
- addDefaultCredentialsToImage);
-
- this.client = (AzureComputeServiceAdapter) client;
- this.nodeMetadataAdapter = nodeMetadataAdapter;
- }
-
- @Override
- public NodeMetadata destroyNode(final String id) {
- final Deployment node = client.internalDestroyNode(id);
- return node == null
- ? null
- : nodeMetadataAdapter.apply(node);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Deployment.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Deployment.java b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Deployment.java
index 617d3df..a1db92f 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Deployment.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Deployment.java
@@ -96,6 +96,7 @@ public abstract class Deployment {
FAILED_STARTING_VM("FailedStartingVM", false),
UNRESPONSIVE_ROLE("UnresponsiveRole"),
PROVISIONING("Provisioning"),
+ PROVISIONING_FAILED("ProvisioningFailed", false),
/**
* Not parsable into one of the above.
*/
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java
index 86419dc..2cf93ad 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/DeploymentParams.java
@@ -16,18 +16,16 @@
*/
package org.jclouds.azurecompute.domain;
-import static com.google.common.collect.ImmutableList.copyOf;
-
import java.net.URI;
-import java.util.Collection;
import java.util.List;
+import java.util.Set;
import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.SinceApiVersion;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-import org.jclouds.rest.annotations.SinceApiVersion;
+import com.google.common.collect.ImmutableSet;
/**
* To create a new deployment/role
@@ -106,7 +104,7 @@ public abstract class DeploymentParams {
*/
public abstract OSImage.Type os();
- public abstract List<ExternalEndpoint> externalEndpoints();
+ public abstract Set<ExternalEndpoint> externalEndpoints();
/**
* {@link org.jclouds.azurecompute.domain.NetworkConfiguration.VirtualNetworkSite#name}
@@ -128,138 +126,49 @@ public abstract class DeploymentParams {
public abstract List<String> subnetNames();
- public Builder toBuilder() {
- return builder().fromDeploymentParams(this);
- }
-
public static Builder builder() {
- return new Builder();
+ return new AutoValue_DeploymentParams.Builder()
+ .externalEndpoints(ImmutableSet.<ExternalEndpoint> of())
+ .subnetNames(ImmutableList.<String> of());
}
- public static final class Builder {
-
- private String name;
-
- private RoleSize.Type size;
-
- private String username;
-
- private String password;
-
- private String sourceImageName;
-
- private URI mediaLink;
-
- private OSImage.Type os;
-
- private List<ExternalEndpoint> externalEndpoints = Lists.newArrayList();
-
- private String virtualNetworkName;
-
- private String reservedIPName;
-
- private List<String> subnetNames = Lists.newArrayList();
-
- public Builder name(final String name) {
- this.name = name;
- return this;
- }
-
- public Builder size(final RoleSize.Type size) {
- this.size = size;
- return this;
- }
-
- public Builder username(final String username) {
- this.username = username;
- return this;
- }
-
- public Builder password(final String password) {
- this.password = password;
- return this;
- }
+ abstract Builder toBuilder();
- public Builder sourceImageName(final String sourceImageName) {
- this.sourceImageName = sourceImageName;
- return this;
- }
+ @AutoValue.Builder
+ public abstract static class Builder {
+ public abstract Builder name(String name);
+ public abstract Builder size(RoleSize.Type roleSize);
+ public abstract Builder username(String username);
+ public abstract Builder password(String password);
+ public abstract Builder sourceImageName(String sourceImageName);
+ public abstract Builder mediaLink(URI mediaLink);
+ public abstract Builder os(OSImage.Type os);
+ public abstract Builder externalEndpoints(Set<ExternalEndpoint> externalEndpoints);
+ public abstract Builder virtualNetworkName(String virtualNetworkName);
+ public abstract Builder reservedIPName(String reservedIPName);
+ public abstract Builder subnetNames(List<String> subnetNames);
- public Builder mediaLink(final URI mediaLink) {
- this.mediaLink = mediaLink;
- return this;
- }
+ abstract Set<ExternalEndpoint> externalEndpoints();
+ abstract List<String> subnetNames();
- public Builder os(final OSImage.Type os) {
- this.os = os;
- return this;
- }
-
- public Builder externalEndpoint(final ExternalEndpoint endpoint) {
- externalEndpoints.add(endpoint);
- return this;
- }
-
- public Builder externalEndpoints(final Collection<ExternalEndpoint> externalEndpoints) {
- this.externalEndpoints.addAll(externalEndpoints);
- return this;
- }
-
- public Builder virtualNetworkName(final String virtualNetworkName) {
- this.virtualNetworkName = virtualNetworkName;
- return this;
- }
-
- public Builder reservedIPName(final String reservedIPName) {
- this.reservedIPName = reservedIPName;
- return this;
- }
-
- public Builder subnetName(final String subnetName) {
- subnetNames.add(subnetName);
- return this;
- }
-
- public Builder subnetNames(final Collection<String> subnetNames) {
- this.subnetNames.addAll(subnetNames);
- return this;
- }
+ abstract DeploymentParams autoBuild();
public DeploymentParams build() {
- return DeploymentParams.create(
- name,
- size,
- username,
- password,
- sourceImageName,
- mediaLink,
- os,
- ImmutableList.copyOf(externalEndpoints),
- virtualNetworkName,
- reservedIPName,
- ImmutableList.copyOf(subnetNames));
- }
-
- public Builder fromDeploymentParams(final DeploymentParams deploymentParams) {
- return name(deploymentParams.name())
- .size(deploymentParams.size())
- .username(deploymentParams.username())
- .password(deploymentParams.password())
- .sourceImageName(deploymentParams.sourceImageName())
- .mediaLink(deploymentParams.mediaLink())
- .os(deploymentParams.os())
- .externalEndpoints(deploymentParams.externalEndpoints())
- .subnetNames(deploymentParams.subnetNames())
- .reservedIPName(reservedIPName);
+ externalEndpoints(externalEndpoints() != null ? ImmutableSet.copyOf(externalEndpoints()) : null);
+ subnetNames(subnetNames() != null ? ImmutableList.copyOf(subnetNames()) : null);
+ return autoBuild();
}
}
- private static DeploymentParams create(final String name, final RoleSize.Type size,
- final String username, final String password, final String sourceImageName,
- final URI mediaLink, final OSImage.Type os, final List<ExternalEndpoint> externalEndpoints,
- final String virtualNetworkName, final String reservedIPName, final List<String> subnetNames) {
-
- return new AutoValue_DeploymentParams(name, size, username, password, sourceImageName, mediaLink, os,
- copyOf(externalEndpoints), virtualNetworkName, reservedIPName, copyOf(subnetNames));
+ public static DeploymentParams create(String name, RoleSize.Type size, String username,
+ String password, String sourceImageName, URI mediaLink,
+ OSImage.Type os, Set<ExternalEndpoint> externalEndpoints,
+ String virtualNetworkName, String reservedIPName,
+ List<String> subnetNames) {
+ return builder().name(name).size(size).username(username).password(password)
+ .sourceImageName(sourceImageName).mediaLink(mediaLink).os(os)
+ .externalEndpoints(externalEndpoints).virtualNetworkName(virtualNetworkName)
+ .reservedIPName(reservedIPName).subnetNames(subnetNames)
+ .build();
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/main/java/org/jclouds/azurecompute/features/VirtualMachineApi.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/features/VirtualMachineApi.java b/azurecompute/src/main/java/org/jclouds/azurecompute/features/VirtualMachineApi.java
index 968b406..2285a9d 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/features/VirtualMachineApi.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/features/VirtualMachineApi.java
@@ -90,6 +90,19 @@ public interface VirtualMachineApi {
@Produces(MediaType.APPLICATION_XML)
@ResponseParser(ParseRequestIdHeader.class)
@Payload(value = "<ShutdownRoleOperation xmlns=\"http://schemas.microsoft.com/windowsazure\">"
+ + "<OperationType>ShutdownRoleOperation</OperationType>" +
+ "<PostShutdownAction>{postShutdownAction}</PostShutdownAction></ShutdownRoleOperation>")
+ String shutdown(@PathParam("name") String name, @PayloadParam("postShutdownAction") String postShutdownAction);
+
+ /**
+ * http://msdn.microsoft.com/en-us/library/jj157195
+ */
+ @Named("ShutdownRole")
+ @POST
+ @Path("/roleinstances/{name}/Operations")
+ @Produces(MediaType.APPLICATION_XML)
+ @ResponseParser(ParseRequestIdHeader.class)
+ @Payload(value = "<ShutdownRoleOperation xmlns=\"http://schemas.microsoft.com/windowsazure\">"
+ "<OperationType>ShutdownRoleOperation</OperationType></ShutdownRoleOperation>")
String shutdown(@PathParam("name") String name);
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/main/java/org/jclouds/azurecompute/options/AzureComputeTemplateOptions.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/options/AzureComputeTemplateOptions.java b/azurecompute/src/main/java/org/jclouds/azurecompute/options/AzureComputeTemplateOptions.java
deleted file mode 100644
index 7ffdd19..0000000
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/options/AzureComputeTemplateOptions.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.azurecompute.options;
-
-import java.util.Map;
-
-import org.jclouds.compute.options.TemplateOptions;
-
-import com.google.common.base.Optional;
-
-/**
- * Contains options supported by the {@link org.jclouds.compute.ComputeService#createNodesInGroup(
- * String, int, org.jclouds.compute.options.TemplateOptions)} operation.
- *
- * <h2>Usage</h2> The recommended way to instantiate a {@link AzureComputeTemplateOptions} object is to statically
- * import {@code AzureComputeTemplateOptions.*} and invoke a static creation method followed by an instance mutator (if
- * needed):
- * <p>
- *
- * <pre>
- * import static org.jclouds.compute.options.AzureComputeTemplateOptions.Builder.*;
- * ComputeService client = // get connection
- * templateBuilder.options(inboundPorts(22, 80, 8080, 443));
- * Set<? extends NodeMetadata> set = client.createNodesInGroup(tag, 2, templateBuilder.build());
- * </pre>
- *
- */
-public class AzureComputeTemplateOptions extends TemplateOptions implements Cloneable {
-
- private Optional<String> virtualNetworkName = Optional.absent();
-
- private Optional<String> addressSpaceAddressPrefix = Optional.absent();
-
- private Optional<String> subnetName = Optional.absent();
-
- private Optional<String> subnetAddressPrefix = Optional.absent();
-
- private Optional<String> storageAccountName = Optional.absent();
-
- private Optional<String> storageAccountType = Optional.absent();
-
- private Optional<String> networkSecurityGroupName = Optional.absent();
-
- private Optional<String> reservedIPName = Optional.absent();
-
- @Override
- public AzureComputeTemplateOptions clone() {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- copyTo(options);
- return options;
- }
-
- @Override
- public void copyTo(final TemplateOptions to) {
- super.copyTo(to);
- if (to instanceof AzureComputeTemplateOptions) {
- final AzureComputeTemplateOptions eTo = AzureComputeTemplateOptions.class.cast(to);
- if (virtualNetworkName.isPresent()) {
- eTo.virtualNetworkName(virtualNetworkName.get());
- }
- if (addressSpaceAddressPrefix.isPresent()) {
- eTo.addressSpaceAddressPrefix(addressSpaceAddressPrefix.get());
- }
- if (subnetName.isPresent()) {
- eTo.subnetName(subnetName.get());
- }
- if (networkSecurityGroupName.isPresent()) {
- eTo.subnetName(networkSecurityGroupName.get());
- }
- if (subnetAddressPrefix.isPresent()) {
- eTo.subnetAddressPrefix(subnetAddressPrefix.get());
- }
- if (storageAccountName.isPresent()) {
- eTo.storageAccountName(storageAccountName.get());
- }
- if (storageAccountType.isPresent()) {
- eTo.storageAccountType(storageAccountType.get());
- }
- if (reservedIPName.isPresent()) {
- eTo.reservedIPName(reservedIPName.get());
- }
- }
- }
-
- public TemplateOptions virtualNetworkName(final String virtualNetworkName) {
- this.virtualNetworkName = Optional.of(virtualNetworkName);
- return this;
- }
-
- public TemplateOptions addressSpaceAddressPrefix(final String addressSpaceAddressPrefix) {
- this.addressSpaceAddressPrefix = Optional.of(addressSpaceAddressPrefix);
- return this;
- }
-
- public TemplateOptions subnetName(final String subnetName) {
- this.subnetName = Optional.of(subnetName);
- return this;
- }
-
- public TemplateOptions networkSecurityGroupName(final String networkSecurityGroupName) {
- this.networkSecurityGroupName = Optional.of(networkSecurityGroupName);
- return this;
- }
-
- public TemplateOptions subnetAddressPrefix(final String subnetAddressPrefix) {
- this.subnetAddressPrefix = Optional.of(subnetAddressPrefix);
- return this;
- }
-
- public TemplateOptions storageAccountName(final String storageAccountName) {
- this.storageAccountName = Optional.of(storageAccountName);
- return this;
- }
-
- public TemplateOptions storageAccountType(final String storageAccountType) {
- this.storageAccountType = Optional.of(storageAccountType);
- return this;
- }
-
- public TemplateOptions reservedIPName(final String reservedIPName) {
- this.reservedIPName = Optional.of(reservedIPName);
- return this;
- }
-
- public Optional<String> getVirtualNetworkName() {
- return virtualNetworkName;
- }
-
- public Optional<String> getAddressSpaceAddressPrefix() {
- return addressSpaceAddressPrefix;
- }
-
- public Optional<String> getSubnetName() {
- return subnetName;
- }
-
- public Optional<String> getSubnetAddressPrefix() {
- return subnetAddressPrefix;
- }
-
- public Optional<String> getStorageAccountName() {
- return storageAccountName;
- }
-
- public Optional<String> getStorageAccountType() {
- return storageAccountType;
- }
-
- public Optional<String> getNetworkSecurityGroupName() {
- return networkSecurityGroupName;
- }
-
- public Optional<String> getReservedIPName() {
- return reservedIPName;
- }
-
- public static class Builder {
-
- /**
- * @see #virtualNetworkName
- */
- public static AzureComputeTemplateOptions virtualNetworkName(final String virtualNetworkName) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.virtualNetworkName(virtualNetworkName));
- }
-
- /**
- * @see #addressSpaceAddressPrefix
- */
- public static AzureComputeTemplateOptions addressSpaceAddressPrefix(final String addressSpaceAddressPrefix) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.addressSpaceAddressPrefix(addressSpaceAddressPrefix));
- }
-
- /**
- * @see #subnetName
- */
- public static AzureComputeTemplateOptions subnetName(final String subnetName) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.subnetName(subnetName));
- }
-
- /**
- * @see #networkSecurityGroupName
- */
- public static AzureComputeTemplateOptions networkSecurityGroupName(final String networkSecurityGroupName) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.subnetName(networkSecurityGroupName));
- }
-
- /**
- * @see #subnetAddressPrefix
- */
- public static AzureComputeTemplateOptions subnetAddressPrefix(final String subnetAddressPrefix) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.subnetAddressPrefix(subnetAddressPrefix));
- }
-
- /**
- * @see #storageAccountName
- */
- public static AzureComputeTemplateOptions storageAccountName(final String storageAccountName) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.storageAccountName(storageAccountName));
- }
-
- /**
- * @see #storageAccountType
- */
- public static AzureComputeTemplateOptions storageAccountType(final String storageAccountType) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.storageAccountType(storageAccountType));
- }
-
- // methods that only facilitate returning the correct object type
- /**
- * @see org.jclouds.compute.options.TemplateOptions#inboundPorts(int...)
- */
- public static AzureComputeTemplateOptions inboundPorts(final int... ports) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.inboundPorts(ports));
- }
-
- /**
- * @see org.jclouds.compute.options.TemplateOptions#blockOnPort(int, int)
- */
- public static AzureComputeTemplateOptions blockOnPort(final int port, final int seconds) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.blockOnPort(port, seconds));
- }
-
- /**
- * @see org.jclouds.compute.options.TemplateOptions#userMetadata(java.util.Map)
- */
- public static AzureComputeTemplateOptions userMetadata(final Map<String, String> userMetadata) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.userMetadata(userMetadata));
- }
-
- /**
- * @see org.jclouds.compute.options.TemplateOptions#userMetadata(String, String)
- */
- public static AzureComputeTemplateOptions userMetadata(final String key, final String value) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.userMetadata(key, value));
- }
-
- /**
- * @see org.jclouds.compute.options.TemplateOptions#nodeNames(Iterable)
- */
- public static AzureComputeTemplateOptions nodeNames(final Iterable<String> nodeNames) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.nodeNames(nodeNames));
- }
-
- /**
- * @see org.jclouds.compute.options.TemplateOptions#networks(Iterable)
- */
- public static AzureComputeTemplateOptions networks(final Iterable<String> networks) {
- final AzureComputeTemplateOptions options = new AzureComputeTemplateOptions();
- return AzureComputeTemplateOptions.class.cast(options.networks(networks));
- }
- }
-
- // methods that only facilitate returning the correct object type
- /**
- * @see org.jclouds.compute.options.TemplateOptions#blockOnPort(int, int)
- */
- @Override
- public AzureComputeTemplateOptions blockOnPort(final int port, final int seconds) {
- return AzureComputeTemplateOptions.class.cast(super.blockOnPort(port, seconds));
- }
-
- /**
- * @see org.jclouds.compute.options.TemplateOptions#inboundPorts(int...)
- */
- @Override
- public AzureComputeTemplateOptions inboundPorts(final int... ports) {
- return AzureComputeTemplateOptions.class.cast(super.inboundPorts(ports));
- }
-
- /**
- * @see org.jclouds.compute.options.TemplateOptions#authorizePublicKey(String)
- */
- @Override
- public AzureComputeTemplateOptions authorizePublicKey(final String publicKey) {
- return AzureComputeTemplateOptions.class.cast(super.authorizePublicKey(publicKey));
- }
-
- /**
- * @see org.jclouds.compute.options.TemplateOptions#installPrivateKey(String)
- */
- @Override
- public AzureComputeTemplateOptions installPrivateKey(final String privateKey) {
- return AzureComputeTemplateOptions.class.cast(super.installPrivateKey(privateKey));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public AzureComputeTemplateOptions userMetadata(final Map<String, String> userMetadata) {
- return AzureComputeTemplateOptions.class.cast(super.userMetadata(userMetadata));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public AzureComputeTemplateOptions userMetadata(final String key, final String value) {
- return AzureComputeTemplateOptions.class.cast(super.userMetadata(key, value));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public AzureComputeTemplateOptions nodeNames(final Iterable<String> nodeNames) {
- return AzureComputeTemplateOptions.class.cast(super.nodeNames(nodeNames));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public AzureComputeTemplateOptions networks(final Iterable<String> networks) {
- return AzureComputeTemplateOptions.class.cast(super.networks(networks));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/main/java/org/jclouds/azurecompute/util/ConflictManagementPredicate.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/util/ConflictManagementPredicate.java b/azurecompute/src/main/java/org/jclouds/azurecompute/util/ConflictManagementPredicate.java
index c859c50..1f940bf 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/util/ConflictManagementPredicate.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/util/ConflictManagementPredicate.java
@@ -19,9 +19,6 @@ package org.jclouds.azurecompute.util;
import static com.google.common.base.Preconditions.checkNotNull;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.jclouds.azurecompute.domain.Operation.Status.FAILED;
-
-import com.google.common.base.Predicate;
-
import java.util.concurrent.CancellationException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -37,6 +34,8 @@ import org.jclouds.http.HttpResponseException;
import org.jclouds.logging.Logger;
import org.jclouds.util.Predicates2;
+import com.google.common.base.Predicate;
+
/**
* Conflict errors (409 response status code) management predicate.
*/
@@ -103,7 +102,7 @@ public class ConflictManagementPredicate implements Predicate<String> {
/**
* {@inheritDoc }
*
- * @param input interested object/operaton descripton or requestId.
+ * @param input interested object/operation description or requestId.
* @return predicate evaluation.
*/
@Override
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/AzureComputeProviderMetadataLive.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/AzureComputeProviderMetadataLive.java b/azurecompute/src/test/java/org/jclouds/azurecompute/AzureComputeProviderMetadataLive.java
deleted file mode 100644
index c09f0d0..0000000
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/AzureComputeProviderMetadataLive.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.azurecompute;
-
-import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_POLL_INITIAL_PERIOD;
-import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_POLL_MAX_PERIOD;
-import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_TIMEOUT;
-import static org.jclouds.azurecompute.config.AzureComputeProperties.TCP_RULE_FORMAT;
-import static org.jclouds.azurecompute.config.AzureComputeProperties.TCP_RULE_REGEXP;
-import static org.jclouds.compute.config.ComputeServiceProperties.TEMPLATE;
-
-import com.google.auto.service.AutoService;
-import java.net.URI;
-import java.util.Properties;
-import org.jclouds.azurecompute.domain.Region;
-import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
-import org.jclouds.providers.ProviderMetadata;
-
-@AutoService(ProviderMetadata.class)
-public class AzureComputeProviderMetadataLive extends AzureComputeProviderMetadata {
-
- @Override
- public Builder toBuilder() {
- return new Builder().fromProviderMetadata(this);
- }
-
- public AzureComputeProviderMetadataLive() {
- super(new Builder());
- }
-
- public static Properties defaultProperties() {
- final Properties properties = AzureManagementApiMetadata.defaultProperties();
- properties.setProperty(TEMPLATE, "osFamily=UBUNTU,osVersionMatches=.*14\\.10,loginUser=jclouds,"
- + "locationId=" + BaseAzureComputeApiLiveTest.LOCATION);
- properties.setProperty(OPERATION_TIMEOUT, "600000");
- properties.setProperty(OPERATION_POLL_INITIAL_PERIOD, "5");
- properties.setProperty(OPERATION_POLL_MAX_PERIOD, "15");
- properties.setProperty(TCP_RULE_FORMAT, "tcp_%s-%s");
- properties.setProperty(TCP_RULE_REGEXP, "tcp_\\d{1,5}-\\d{1,5}");
- return properties;
- }
-
- public AzureComputeProviderMetadataLive(final Builder builder) {
- super(builder);
- }
-
- public static class Builder extends AzureComputeProviderMetadata.Builder {
-
- protected Builder() {
- id("azurecompute")
- .name("Microsoft Azure Service Management Service")
- .apiMetadata(new AzureManagementApiMetadata())
- .endpoint("https://management.core.windows.net/SUBSCRIPTION_ID")
- .homepage(URI.create("https://www.windowsazure.com/"))
- .console(URI.create("https://windows.azure.com/default.aspx"))
- .linkedServices("azureblob", "azurequeue", "azuretable")
- .iso3166Codes(Region.iso3166Codes())
- .defaultProperties(AzureComputeProviderMetadataLive.defaultProperties());
- }
-
- @Override
- public AzureComputeProviderMetadataLive build() {
- return new AzureComputeProviderMetadataLive(this);
- }
-
- @Override
- public Builder fromProviderMetadata(final ProviderMetadata providerMetadata) {
- super.fromProviderMetadata(providerMetadata);
- return this;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/binders/DeploymentParamsToXMLTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/binders/DeploymentParamsToXMLTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/binders/DeploymentParamsToXMLTest.java
new file mode 100644
index 0000000..cc21a98
--- /dev/null
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/binders/DeploymentParamsToXMLTest.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.azurecompute.binders;
+
+import static org.testng.Assert.assertEquals;
+import java.net.URI;
+
+import org.jclouds.azurecompute.domain.DeploymentParams;
+import org.jclouds.azurecompute.domain.OSImage;
+import org.jclouds.azurecompute.domain.RoleSize;
+import org.jclouds.http.HttpRequest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Tests behavior of {@code DeploymentParamsToXML}
+ */
+@Test(groups = "unit")
+public class DeploymentParamsToXMLTest {
+ Injector injector = Guice.createInjector();
+ DeploymentParamsToXML binder = injector
+ .getInstance(DeploymentParamsToXML.class);
+
+ public void testDeploymentParamsToXmlString() {
+ DeploymentParams.Builder paramsBuilder = DeploymentParams.builder()
+ .name("name")
+ .os(OSImage.Type.LINUX)
+ .username("loginUser")
+ .password("loginPassword")
+ .sourceImageName("sourceImageName")
+ .mediaLink(URI.create("http://medialink"))
+ .size(RoleSize.Type.BASIC_A0)
+ .externalEndpoints(ImmutableSet.of(DeploymentParams.ExternalEndpoint.inboundTcpToLocalPort(22, 22)))
+ .virtualNetworkName("virtualNetworkName")
+ .reservedIPName("reservedIPName")
+ .subnetNames(ImmutableList.of("subnetName"));
+
+ HttpRequest request = HttpRequest.builder().method("POST").endpoint("http://localhost")
+ .addFormParam("InstanceId", "i-foo").build();
+ request = binder.bindToRequest(request, paramsBuilder.build());
+ assertEquals(
+ request.getPayload().getRawContent(),
+ "<Deployment xmlns=\"http://schemas.microsoft.com/windowsazure\"><Name>name</Name><DeploymentSlot>Production</DeploymentSlot><Label>name</Label><RoleList><Role><RoleName>name</RoleName><RoleType>PersistentVMRole</RoleType><ConfigurationSets><ConfigurationSet><ConfigurationSetType>LinuxProvisioningConfiguration</ConfigurationSetType><HostName>name</HostName><UserName>loginUser</UserName><UserPassword>loginPassword</UserPassword><DisableSshPasswordAuthentication>false</DisableSshPasswordAuthentication><SSH><PublicKeys/><KeyPairs/></SSH></ConfigurationSet><ConfigurationSet><ConfigurationSetType>NetworkConfiguration</ConfigurationSetType><InputEndpoints><InputEndpoint><LocalPort>22</LocalPort><Name>tcp_22-22</Name><Port>22</Port><Protocol>tcp</Protocol></InputEndpoint></InputEndpoints><SubnetNames><SubnetName>subnetName</SubnetName></SubnetNames></ConfigurationSet></ConfigurationSets><DataVirtualHardDisks/><OSVirtualHardDisk><HostCaching>ReadWrite</HostCaching><MediaLink>htt
p://medialink</MediaLink><SourceImageName>sourceImageName</SourceImageName><OS>Linux</OS></OSVirtualHardDisk><RoleSize>Basic_A0</RoleSize></Role></RoleList><VirtualNetworkName>virtualNetworkName</VirtualNetworkName><ReservedIPName>reservedIPName</ReservedIPName></Deployment>");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapterLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapterLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapterLiveTest.java
deleted file mode 100644
index f4b6f56..0000000
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceAdapterLiveTest.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.azurecompute.compute;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.Sets;
-import java.util.Properties;
-import java.util.Random;
-import java.util.Set;
-
-import org.jclouds.azurecompute.AzureComputeApi;
-import org.jclouds.azurecompute.domain.Deployment;
-import org.jclouds.azurecompute.domain.RoleSize;
-import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
-import org.jclouds.azurecompute.options.AzureComputeTemplateOptions;
-import org.jclouds.compute.ComputeServiceAdapter.NodeAndInitialCredentials;
-import org.jclouds.compute.domain.ExecResponse;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.compute.domain.TemplateBuilder;
-import org.jclouds.ssh.SshClient;
-import org.jclouds.ssh.SshClient.Factory;
-import org.jclouds.sshj.config.SshjSshClientModule;
-
-import org.testng.annotations.Test;
-import org.testng.annotations.AfterGroups;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.net.HostAndPort;
-import com.google.common.net.InetAddresses;
-import com.google.inject.Injector;
-import com.google.inject.Module;
-import java.util.Arrays;
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.jclouds.util.Predicates2.retry;
-
-@Test(groups = "live", singleThreaded = true, testName = "AzureComputeServiceAdapterLiveTest")
-public class AzureComputeServiceAdapterLiveTest extends BaseAzureComputeApiLiveTest {
-
- private AzureComputeServiceAdapter adapter;
-
- private TemplateBuilder templateBuilder;
-
- private Factory sshFactory;
-
- private String storageServiceName = null;
-
- @Override
- protected String getStorageServiceName() {
- if (storageServiceName == null) {
- storageServiceName = String.format("%3.20sacsa", System.getProperty("user.name") + RAND).toLowerCase();
- }
- return storageServiceName;
- }
-
- @Override
- protected AzureComputeApi create(final Properties props, final Iterable<Module> modules) {
- final Injector injector = newBuilder().modules(modules).overrides(props).buildInjector();
- adapter = injector.getInstance(AzureComputeServiceAdapter.class);
- templateBuilder = injector.getInstance(TemplateBuilder.class);
- sshFactory = injector.getInstance(SshClient.Factory.class);
- return injector.getInstance(AzureComputeApi.class);
- }
-
- @Test
- public void testListLocations() {
- assertFalse(Iterables.isEmpty(adapter.listLocations()), "locations must not be empty");
- }
-
- @Test
- public void testListImages() {
- assertFalse(Iterables.isEmpty(adapter.listImages()), "images must not be empty");
- }
-
- /**
- * Functionally equivalent to {@link AzureComputeServiceContextLiveTest#testLaunchNode()}.
- */
- @Test
- public void testCreateNodeWithGroupEncodedIntoNameThenStoreCredentials() {
- final String groupName = String.format("%s%d-group-acsalt",
- System.getProperty("user.name"),
- new Random(999).nextLong());
-
- final String name = String.format("%1.5s%dacsalt", System.getProperty("user.name"), new Random(999).nextInt());
-
- templateBuilder.imageId(BaseAzureComputeApiLiveTest.IMAGE_NAME);
- templateBuilder.hardwareId("BASIC_A0");
- templateBuilder.locationId(BaseAzureComputeApiLiveTest.LOCATION);
- final Template template = templateBuilder.build();
-
- // test passing custom options
- final AzureComputeTemplateOptions options = template.getOptions().as(AzureComputeTemplateOptions.class);
- options.inboundPorts(22);
- options.storageAccountName(getStorageServiceName());
- options.virtualNetworkName(VIRTUAL_NETWORK_NAME);
- options.subnetName(DEFAULT_SUBNET_NAME);
- options.addressSpaceAddressPrefix(DEFAULT_ADDRESS_SPACE);
- options.subnetAddressPrefix(DEFAULT_SUBNET_ADDRESS_SPACE);
- options.nodeNames(Arrays.asList(name));
-
- NodeAndInitialCredentials<Deployment> deployment = null;
- try {
- deployment = adapter.createNodeWithGroupEncodedIntoName(groupName, name, template);
- assertEquals(deployment.getNode().name(), name);
- assertEquals(deployment.getNodeId(), deployment.getNode().name());
-
- // wait for node to start...
- final Set<Deployment> nodes = Sets.newHashSet();
- retry(new Predicate<String>() {
-
- @Override
- public boolean apply(final String input) {
- final Deployment node = adapter.getNode(input);
- if (node != null) {
- nodes.add(node);
- }
- return !nodes.isEmpty();
- }
- }, 600, 30, 30, SECONDS).apply(name);
-
- assertFalse(nodes.isEmpty());
- final Deployment node = nodes.iterator().next();
- assert InetAddresses.isInetAddress(node.virtualIPs().get(0).address()) : deployment;
-
- final SshClient client = sshFactory.create(
- HostAndPort.fromParts(node.virtualIPs().get(0).address(), 22),
- deployment.getCredentials());
- client.connect();
- final ExecResponse hello = client.exec("echo hello");
- assertEquals(hello.getOutput().trim(), "hello");
- } finally {
- if (deployment != null) {
- adapter.destroyNode(deployment.getNodeId());
- }
- }
- }
-
- @Test
- public void testListHardwareProfiles() {
- final Iterable<RoleSize> roleSizes = adapter.listHardwareProfiles();
- assertFalse(Iterables.isEmpty(roleSizes));
-
- for (RoleSize roleSize : roleSizes) {
- assertNotNull(roleSize);
- }
- }
-
- @AfterGroups(groups = "live", alwaysRun = true)
- @Override
- protected void tearDown() {
- super.tearDown();
- }
-
- @Override
- protected Iterable<Module> setupModules() {
- return ImmutableSet.<Module>of(getLoggingModule(), new SshjSshClientModule());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceContextLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceContextLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceContextLiveTest.java
index 925f8a8..dbcfd38 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceContextLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceContextLiveTest.java
@@ -17,69 +17,31 @@
package org.jclouds.azurecompute.compute;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.testng.Assert.assertTrue;
-import java.util.Arrays;
+import static org.jclouds.compute.predicates.NodePredicates.inGroup;
+import static org.jclouds.compute.predicates.NodePredicates.runningInGroup;
+import java.util.Map;
import java.util.Random;
import java.util.Set;
-import org.jclouds.azurecompute.AzureComputeApi;
+import org.jclouds.azurecompute.compute.options.AzureComputeTemplateOptions;
import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
-import org.jclouds.azurecompute.options.AzureComputeTemplateOptions;
-import org.jclouds.azurecompute.util.ConflictManagementPredicate;
import org.jclouds.compute.RunNodesException;
+import org.jclouds.compute.RunScriptOnNodesException;
import org.jclouds.compute.domain.ExecResponse;
import org.jclouds.compute.domain.NodeMetadata;
import org.jclouds.compute.domain.Template;
import org.jclouds.compute.domain.TemplateBuilder;
import org.jclouds.compute.internal.BaseComputeServiceContextLiveTest;
-import org.jclouds.ssh.SshClient;
import org.jclouds.sshj.config.SshjSshClientModule;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
+import org.testng.Assert;
import org.testng.annotations.Test;
-import com.google.common.collect.Iterables;
-import com.google.common.reflect.TypeToken;
import com.google.inject.Module;
@Test(groups = "live", testName = "AzureComputeServiceContextLiveTest")
public class AzureComputeServiceContextLiveTest extends BaseComputeServiceContextLiveTest {
- private static final int RAND = new Random().nextInt(999);
-
- private AzureComputeApi api;
-
- private String storageServiceName = null;
-
- protected String getStorageServiceName() {
- if (storageServiceName == null) {
- storageServiceName = String.format("%3.20sacsc", System.getProperty("user.name") + RAND).toLowerCase();
- }
- return storageServiceName;
- }
-
- @BeforeClass
- public void setup() {
- api = newBuilder().
- modules(setupModules()).
- overrides(setupProperties()).
- buildApi(new TypeToken<AzureComputeApi>(getClass()) {
-
- private static final long serialVersionUID = 309104475566522958L;
-
- });
- }
-
- @AfterClass(alwaysRun = true)
- public void tearDown() {
- assertTrue(new ConflictManagementPredicate(api) {
-
- @Override
- protected String operation() {
- return api.getStorageAccountApi().delete(getStorageServiceName());
- }
- }.apply(getStorageServiceName()));
- }
+ private static final int COUNT = 2;
@Override
protected Module getSshModule() {
@@ -87,56 +49,79 @@ public class AzureComputeServiceContextLiveTest extends BaseComputeServiceContex
}
public AzureComputeServiceContextLiveTest() {
- super();
-
provider = "azurecompute";
}
- /**
- * Functionally equivalent to
- * {@link AzureComputeServiceAdapterLiveTest#testCreateNodeWithGroupEncodedIntoNameThenStoreCredentials}.
- *
- * @throws RunNodesException
- */
+
@Test
- public void testLaunchNode() throws RunNodesException {
+ public void testWindowsNode() throws RunNodesException {
+ final String groupName = String.format("win-%s", System.getProperty("user.name"));
+
+ final TemplateBuilder templateBuilder = view.getComputeService().templateBuilder();
+ //templateBuilder.imageId("3a50f22b388a4ff7ab41029918570fa6__Windows-Server-2012-Essentials-20141204-enus");
+ templateBuilder.imageId("a699494373c04fc0bc8f2bb1389d6106__Nano_TP4_Azure_20151118_8GB.vhd");
+ templateBuilder.hardwareId("BASIC_A2");
+ templateBuilder.locationId(BaseAzureComputeApiLiveTest.LOCATION);
+ final Template template = templateBuilder.build();
- final String groupName = String.format("%s%d-group-acsclt",
- System.getProperty("user.name"),
- new Random(999).nextInt());
+ // test passing custom options
+ final AzureComputeTemplateOptions options = template.getOptions().as(AzureComputeTemplateOptions.class);
+ options.inboundPorts(5985);
- final String name = String.format("%1.5s%dacsclt", System.getProperty("user.name"), new Random(999).nextInt());
+ try {
+ Set<? extends NodeMetadata> nodes = view.getComputeService().createNodesInGroup(groupName, 1, template);
+ assertThat(nodes).hasSize(1);
+ } finally {
+ view.getComputeService().destroyNodesMatching(inGroup(groupName));
+ }
+ }
+
+ @Test
+ public void testLaunchNodes() throws RunNodesException {
+ final int rand = new Random().nextInt(999);
+ final String groupName = String.format("%s%d-group-acsclt", System.getProperty("user.name"), rand);
final TemplateBuilder templateBuilder = view.getComputeService().templateBuilder();
templateBuilder.imageId(BaseAzureComputeApiLiveTest.IMAGE_NAME);
templateBuilder.hardwareId("BASIC_A0");
templateBuilder.locationId(BaseAzureComputeApiLiveTest.LOCATION);
- final Template tmp = templateBuilder.build();
+ final Template template = templateBuilder.build();
// test passing custom options
- final AzureComputeTemplateOptions options = tmp.getOptions().as(AzureComputeTemplateOptions.class);
+ final AzureComputeTemplateOptions options = template.getOptions().as(AzureComputeTemplateOptions.class);
options.inboundPorts(22);
- options.storageAccountName(getStorageServiceName());
- options.virtualNetworkName(BaseAzureComputeApiLiveTest.VIRTUAL_NETWORK_NAME);
- options.subnetName(BaseAzureComputeApiLiveTest.DEFAULT_SUBNET_NAME);
- options.addressSpaceAddressPrefix(BaseAzureComputeApiLiveTest.DEFAULT_ADDRESS_SPACE);
- options.subnetAddressPrefix(BaseAzureComputeApiLiveTest.DEFAULT_SUBNET_ADDRESS_SPACE);
- options.nodeNames(Arrays.asList(name));
-
- NodeMetadata node = null;
+
try {
- final Set<? extends NodeMetadata> nodes = view.getComputeService().createNodesInGroup(groupName, 1, tmp);
- node = Iterables.getOnlyElement(nodes);
+ Set<? extends NodeMetadata> nodes = view.getComputeService().createNodesInGroup(groupName, COUNT, template);
+ assertThat(nodes).hasSize(COUNT);
- final SshClient client = view.utils().sshForNode().apply(node);
- client.connect();
- final ExecResponse hello = client.exec("echo hello");
- assertThat(hello.getOutput().trim()).isEqualTo("hello");
- } finally {
- if (node != null) {
- view.getComputeService().destroyNode(node.getId());
+ Map<? extends NodeMetadata, ExecResponse> responses = view.getComputeService().runScriptOnNodesMatching(runningInGroup(groupName), "echo hello");
+ assertThat(responses).hasSize(COUNT);
+
+ for (ExecResponse execResponse : responses.values()) {
+ assertThat(execResponse.getOutput().trim()).isEqualTo("hello");
}
+ } catch (RunScriptOnNodesException e) {
+ Assert.fail();
+ } finally {
+ view.getComputeService().destroyNodesMatching(inGroup(groupName));
}
}
+ @Test(expectedExceptions = { IllegalStateException.class })
+ public void testNotExistingStorageAccount() throws RunNodesException {
+ final int rand = new Random().nextInt(999);
+ final String groupName = String.format("%s%d-group-acsclt", System.getProperty("user.name"), rand);
+
+ final String storageServiceName = "not3x1st1ng";
+
+ final Template template = view.getComputeService().templateBuilder().build();
+
+ // test passing custom options
+ final AzureComputeTemplateOptions options = template.getOptions().as(AzureComputeTemplateOptions.class);
+ options.storageAccountName(storageServiceName);
+
+ Set<? extends NodeMetadata> nodes = view.getComputeService().createNodesInGroup(groupName, 1, template);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceLiveTest.java
index e9b4f29..6eb0220 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/compute/AzureComputeServiceLiveTest.java
@@ -16,20 +16,27 @@
*/
package org.jclouds.azurecompute.compute;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
+import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
import org.jclouds.compute.domain.NodeMetadata;
+import org.jclouds.compute.domain.Template;
+import org.jclouds.compute.domain.TemplateBuilder;
import org.jclouds.compute.internal.BaseComputeServiceLiveTest;
import org.jclouds.sshj.config.SshjSshClientModule;
import org.testng.annotations.Test;
-@Test(groups = {"integration", "live"}, singleThreaded = true, testName = "AzureComputeServiceLiveTest")
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.Module;
+
+@Test(groups = {"integration", "live"}, singleThreaded = true, testName = "AzureComputeServiceLiveTest", alwaysRun = false)
public class AzureComputeServiceLiveTest extends BaseComputeServiceLiveTest {
public AzureComputeServiceLiveTest() {
super();
provider = "azurecompute";
+ // this is 30 seconds by default, but Azure will take anyway longer because we need to wait for a non-null
+ // Deployment object to be returned: see the end of AzureComputeServiceAdapter#createNodeWithGroupEncodedIntoName
+ nonBlockDurationSeconds = 600;
}
@Override
@@ -43,15 +50,14 @@ public class AzureComputeServiceLiveTest extends BaseComputeServiceLiveTest {
}
@Override
- public void testOptionToNotBlock() throws Exception {
- // this is 30 seconds by default, but Azure will take anyway longer because we need to wait for a non-null
- // Deployment object to be returned: see the end of AzureComputeServiceAdapter#createNodeWithGroupEncodedIntoName
- nonBlockDurationSeconds = 120;
- super.testOptionToNotBlock();
- }
-
- @Override
protected Module getSshModule() {
return new SshjSshClientModule();
}
+
+ protected Template buildTemplate(TemplateBuilder templateBuilder) {
+ return templateBuilder.imageId(BaseAzureComputeApiLiveTest.IMAGE_NAME)
+ .hardwareId("BASIC_A1")
+ .locationId(BaseAzureComputeApiLiveTest.LOCATION)
+ .build();
+ }
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiLiveTest.java
index 17e5f3a..6982300 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiLiveTest.java
@@ -19,30 +19,29 @@ package org.jclouds.azurecompute.features;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.assertj.core.api.Assertions.assertThat;
import static org.jclouds.util.Predicates2.retry;
+import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.assertEquals;
-
+import java.util.List;
+import java.util.logging.Level;
import java.util.logging.Logger;
import org.jclouds.azurecompute.compute.AzureComputeServiceAdapter;
import org.jclouds.azurecompute.domain.CloudService;
+import org.jclouds.azurecompute.domain.CloudServiceProperties;
import org.jclouds.azurecompute.domain.Deployment;
import org.jclouds.azurecompute.domain.DeploymentParams;
import org.jclouds.azurecompute.domain.OSImage;
+import org.jclouds.azurecompute.domain.Role;
import org.jclouds.azurecompute.domain.RoleSize;
-import org.jclouds.azurecompute.domain.CloudServiceProperties;
import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
+import org.jclouds.azurecompute.util.ConflictManagementPredicate;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import java.util.List;
-import java.util.logging.Level;
-import org.jclouds.azurecompute.domain.Role;
-import org.jclouds.azurecompute.util.ConflictManagementPredicate;
+import com.google.common.collect.ImmutableSet;
@Test(groups = "live", testName = "DeploymentApiLiveTest", singleThreaded = true)
public class DeploymentApiLiveTest extends BaseAzureComputeApiLiveTest {
@@ -93,10 +92,8 @@ public class DeploymentApiLiveTest extends BaseAzureComputeApiLiveTest {
.mediaLink(AzureComputeServiceAdapter.createMediaLink(storageService.serviceName(), DEPLOYMENT))
.username("test")
.password("supersecurePassword1!")
- .size(RoleSize.Type.BASIC_A2)
- .subnetName(Iterables.get(virtualNetworkSite.subnets(), 0).name())
- .virtualNetworkName(virtualNetworkSite.name())
- .externalEndpoint(DeploymentParams.ExternalEndpoint.inboundTcpToLocalPort(22, 22))
+ .size(RoleSize.Type.BASIC_A0)
+ .externalEndpoints(ImmutableSet.of(DeploymentParams.ExternalEndpoint.inboundTcpToLocalPort(22, 22)))
.build();
final String requestId = api().create(params);
assertTrue(operationSucceeded.apply(requestId), requestId);
@@ -110,7 +107,6 @@ public class DeploymentApiLiveTest extends BaseAzureComputeApiLiveTest {
assertThat(deployment.slot()).isEqualTo(Deployment.Slot.PRODUCTION);
assertThat(deployment.roleList().size()).isEqualTo(1);
assertThat(deployment.roleInstanceList().size()).isEqualTo(1);
- assertThat(deployment.virtualNetworkName()).isEqualTo(virtualNetworkSite.name());
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiMockTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiMockTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiMockTest.java
index 8fecadc..7d35311 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiMockTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/DeploymentApiMockTest.java
@@ -19,7 +19,6 @@ package org.jclouds.azurecompute.features;
import static org.jclouds.azurecompute.domain.DeploymentParams.ExternalEndpoint.inboundTcpToLocalPort;
import static org.jclouds.azurecompute.domain.DeploymentParams.ExternalEndpoint.inboundUdpToLocalPort;
import static org.testng.Assert.assertEquals;
-
import java.net.URI;
import org.jclouds.azurecompute.domain.DeploymentParams;
@@ -30,6 +29,7 @@ import org.jclouds.azurecompute.xml.DeploymentHandlerTest;
import org.jclouds.azurecompute.xml.ListOSImagesHandlerTest;
import org.testng.annotations.Test;
+import com.google.common.collect.ImmutableSet;
import com.squareup.okhttp.mockwebserver.MockWebServer;
@Test(groups = "unit", testName = "DeploymentApiMockTest")
@@ -51,8 +51,8 @@ public class DeploymentApiMockTest extends BaseAzureComputeApiMockTest {
.username("username").password("testpwd")
.virtualNetworkName("my-virtualNetworkName")
.reservedIPName("myreservedip")
- .externalEndpoint(inboundTcpToLocalPort(80, 8080))
- .externalEndpoint(inboundUdpToLocalPort(53, 53)).build();
+ .externalEndpoints(ImmutableSet.of(inboundTcpToLocalPort(80, 8080), inboundUdpToLocalPort(53, 53)))
+ .build();
assertEquals(api.create(params), "request-1");
@@ -77,8 +77,8 @@ public class DeploymentApiMockTest extends BaseAzureComputeApiMockTest {
.sourceImageName(OSImage.name()).mediaLink(OSImage.mediaLink()).os(OSImage.os())
.username("username").password("testpwd")
.virtualNetworkName("my-virtualNetworkName")
- .externalEndpoint(inboundTcpToLocalPort(80, 8080))
- .externalEndpoint(inboundUdpToLocalPort(53, 53)).build();
+ .externalEndpoints(ImmutableSet.of(inboundTcpToLocalPort(80, 8080), inboundUdpToLocalPort(53, 53)))
+ .build();
assertEquals(api.create(params), "request-1");
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/features/DiskApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/DiskApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/DiskApiLiveTest.java
index 1943077..1847f1f 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/DiskApiLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/DiskApiLiveTest.java
@@ -98,7 +98,8 @@ public class DiskApiLiveTest extends AbstractAzureComputeApiLiveTest {
}
if (disk.sourceImage() != null) {
- assertTrue(images.contains(disk.sourceImage()), "SourceImage not in " + images + " :" + disk);
+ //TODO disk can be generated from a `VM Image` that listDisk doesn't consider
+ // assertTrue(images.contains(disk.sourceImage()), "SourceImage not in " + images + " :" + disk);
}
if (disk.affinityGroup() != null) {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/features/NetworkSecurityGroupApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/NetworkSecurityGroupApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/NetworkSecurityGroupApiLiveTest.java
index 763e1ce..7e41eb7 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/NetworkSecurityGroupApiLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/NetworkSecurityGroupApiLiveTest.java
@@ -28,9 +28,6 @@ import org.jclouds.azurecompute.domain.NetworkSecurityGroup;
import org.jclouds.azurecompute.domain.Rule;
import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
-import static org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest.DEFAULT_SUBNET_NAME;
-import static org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest.LOCATION;
-import static org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest.VIRTUAL_NETWORK_NAME;
import org.jclouds.azurecompute.util.ConflictManagementPredicate;
import org.testng.annotations.AfterClass;
@@ -44,14 +41,6 @@ public class NetworkSecurityGroupApiLiveTest extends BaseAzureComputeApiLiveTest
private static final String GROUP2 = System.getProperty("user.name") + RAND + "-2";
- public static final String ADDRESS_SPACE = "10.10.0.0/20";
-
- public static final String SUBNET_ADDRESS_SPACE = "10.10.0.0/23";
-
- public static final String NETWORK_NAME = "secgrp-vnetsite";
-
- public static final String SUBNET_NAME = "secgrp-subnet";
-
@BeforeClass
public void groupSetup() {
// ----------------------------
@@ -108,7 +97,7 @@ public class NetworkSecurityGroupApiLiveTest extends BaseAzureComputeApiLiveTest
assertEquals(group.name(), GROUP1);
assertEquals(group.label(), GROUP1 + " security group");
assertEquals(group.location(), LOCATION);
- assertNull(group.state());
+ assertTrue(group.state() == NetworkSecurityGroup.State.CREATED);
assertTrue(group.rules().isEmpty());
}
@@ -118,7 +107,7 @@ public class NetworkSecurityGroupApiLiveTest extends BaseAzureComputeApiLiveTest
assertEquals(group.name(), GROUP2);
assertEquals(group.label(), GROUP2 + " security group");
assertEquals(group.location(), LOCATION);
- assertNull(group.state());
+ assertTrue(group.state() == NetworkSecurityGroup.State.CREATED);
assertFalse(group.rules().isEmpty());
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/features/OSImageApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/OSImageApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/OSImageApiLiveTest.java
index ab1f8df..edff894 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/OSImageApiLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/OSImageApiLiveTest.java
@@ -22,26 +22,20 @@ import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
-import org.jclouds.azurecompute.domain.AffinityGroup;
import org.jclouds.azurecompute.domain.Location;
import org.jclouds.azurecompute.domain.OSImage;
import org.jclouds.azurecompute.internal.AbstractAzureComputeApiLiveTest;
-
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.google.common.base.Function;
-import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
@Test(groups = "live", testName = "OSImageApiLiveTest")
public class OSImageApiLiveTest extends AbstractAzureComputeApiLiveTest {
private ImmutableSet<String> locations;
- private ImmutableSet<String> groups;
-
@BeforeClass(groups = {"integration", "live"})
@Override
public void setup() {
@@ -54,13 +48,6 @@ public class OSImageApiLiveTest extends AbstractAzureComputeApiLiveTest {
return location.name();
}
}));
- groups = ImmutableSet.copyOf(transform(api.getAffinityGroupApi().list(), new Function<AffinityGroup, String>() {
-
- @Override
- public String apply(final AffinityGroup group) {
- return group.name();
- }
- }));
}
public void testList() {
@@ -84,10 +71,6 @@ public class OSImageApiLiveTest extends AbstractAzureComputeApiLiveTest {
"MediaLink should be an http(s) url" + osImage);
}
- ImmutableSet<String> osImageLocations = ImmutableSet.copyOf(Splitter.on(';').splitToList(osImage.location()));
- assertFalse(Sets.intersection(osImageLocations, locations).isEmpty(),
- "No shared locations between " + locations + " and " + osImageLocations);
-
// Ex. Dirty data in RightScale eula field comes out as an empty string.
assertFalse(osImage.eula().contains(""));
if (osImage.affinityGroup() != null) {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/features/VMImageApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VMImageApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VMImageApiLiveTest.java
index 2b074fd..556e73f 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VMImageApiLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VMImageApiLiveTest.java
@@ -22,19 +22,19 @@ import static org.jclouds.util.Predicates2.retry;
import static org.testng.Assert.assertNotEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
+import java.net.URI;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableSet;
-
-import com.google.common.collect.Iterables;
import org.jclouds.azurecompute.compute.AzureComputeServiceAdapter;
+import org.jclouds.azurecompute.domain.CaptureVMImageParams;
+import org.jclouds.azurecompute.domain.CloudService;
import org.jclouds.azurecompute.domain.Deployment;
import org.jclouds.azurecompute.domain.DeploymentParams;
-import org.jclouds.azurecompute.domain.VMImage;
-import org.jclouds.azurecompute.domain.RoleSize;
import org.jclouds.azurecompute.domain.OSImage;
-import org.jclouds.azurecompute.domain.CloudService;
-import org.jclouds.azurecompute.domain.CaptureVMImageParams;
+import org.jclouds.azurecompute.domain.RoleSize;
+import org.jclouds.azurecompute.domain.VMImage;
import org.jclouds.azurecompute.domain.VMImageParams;
import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
import org.jclouds.azurecompute.util.ConflictManagementPredicate;
@@ -42,10 +42,9 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-import java.net.URI;
-import java.util.List;
-import java.util.Date;
-import java.text.SimpleDateFormat;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
@Test(groups = "live", testName = "VMImageApiLiveTest")
public class VMImageApiLiveTest extends BaseAzureComputeApiLiveTest {
@@ -91,9 +90,7 @@ public class VMImageApiLiveTest extends BaseAzureComputeApiLiveTest {
.username("test")
.password("supersecurePassword1!")
.size(RoleSize.Type.BASIC_A2)
- .subnetName(Iterables.get(virtualNetworkSite.subnets(), 0).name())
- .virtualNetworkName(virtualNetworkSite.name())
- .externalEndpoint(DeploymentParams.ExternalEndpoint.inboundTcpToLocalPort(22, 22))
+ .externalEndpoints(ImmutableSet.of(DeploymentParams.ExternalEndpoint.inboundTcpToLocalPort(22, 22)))
.build();
Deployment deployment = getOrCreateDeployment(cloudService.name(), params);
Deployment.RoleInstance roleInstance = getFirstRoleInstanceInDeployment(DEPLOYMENT);
@@ -201,6 +198,12 @@ public class VMImageApiLiveTest extends BaseAzureComputeApiLiveTest {
return api.getDiskApi().delete(diskName);
}
}.apply(diskName));
+ assertTrue(new ConflictManagementPredicate(api) {
+ @Override
+ protected String operation() {
+ return api.getCloudServiceApi().delete(cloudService.name());
+ }
+ }.apply(cloudService.name()));
super.tearDown();
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiLiveTest.java
index 7b67b85..22d50e6 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualMachineApiLiveTest.java
@@ -20,10 +20,6 @@ import static java.util.concurrent.TimeUnit.SECONDS;
import static org.jclouds.azurecompute.domain.Deployment.InstanceStatus.READY_ROLE;
import static org.jclouds.util.Predicates2.retry;
import static org.testng.Assert.assertTrue;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -42,6 +38,10 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+
/*
* Note: Live test for CaptureVMImage method is in VMImageApiLiveTest class
*/
@@ -75,7 +75,7 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest {
RoleInstance roleInstance = getFirstRoleInstanceInDeployment(input);
return roleInstance != null && roleInstance.instanceStatus() == READY_ROLE;
}
- }, 600, 5, 5, SECONDS);
+ }, 600, 5, 15, SECONDS);
roleInstanceStopped = retry(new Predicate<String>() {
@@ -84,7 +84,7 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest {
RoleInstance roleInstance = getFirstRoleInstanceInDeployment(input);
return roleInstance != null && roleInstance.instanceStatus() == Deployment.InstanceStatus.STOPPED_VM;
}
- }, 600, 5, 5, SECONDS);
+ }, 600, 5, 15, SECONDS);
final DeploymentParams params = DeploymentParams.builder()
.name(DEPLOYMENT)
@@ -93,10 +93,8 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest {
.mediaLink(AzureComputeServiceAdapter.createMediaLink(storageService.serviceName(), DEPLOYMENT))
.username("test")
.password("supersecurePassword1!")
- .size(RoleSize.Type.BASIC_A2)
- .subnetName(Iterables.get(virtualNetworkSite.subnets(), 0).name())
- .virtualNetworkName(virtualNetworkSite.name())
- .externalEndpoint(DeploymentParams.ExternalEndpoint.inboundTcpToLocalPort(22, 22))
+ .size(RoleSize.Type.BASIC_A0)
+ .externalEndpoints(ImmutableSet.of(DeploymentParams.ExternalEndpoint.inboundTcpToLocalPort(22, 22)))
.build();
getOrCreateDeployment(cloudService.name(), params);
RoleInstance roleInstance = getFirstRoleInstanceInDeployment(DEPLOYMENT);
@@ -173,8 +171,9 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest {
Logger.getAnonymousLogger().log(Level.INFO, "roleInstance restarted: {0}", roleInstance);
}
- @AfterClass(alwaysRun = true)
- public void cleanup() {
+ @AfterClass
+ @Override
+ protected void tearDown() {
if (cloudService != null && api.getDeploymentApiForService(cloudService.name()).get(DEPLOYMENT) != null) {
final List<Role> roles = api.getDeploymentApiForService(cloudService.name()).get(DEPLOYMENT).roleList();
@@ -186,14 +185,6 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest {
}
}.apply(DEPLOYMENT));
- assertTrue(new ConflictManagementPredicate(api) {
-
- @Override
- protected String operation() {
- return api.getCloudServiceApi().delete(cloudService.name());
- }
- }.apply(cloudService.name()));
-
for (Role r : roles) {
final Role.OSVirtualHardDisk disk = r.osVirtualHardDisk();
if (disk != null) {
@@ -206,6 +197,16 @@ public class VirtualMachineApiLiveTest extends BaseAzureComputeApiLiveTest {
}.apply(disk.diskName()));
}
}
+
+ assertTrue(new ConflictManagementPredicate(api) {
+
+ @Override
+ protected String operation() {
+ return api.getCloudServiceApi().delete(cloudService.name());
+ }
+ }.apply(cloudService.name()));
+
+ super.tearDown();
}
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualNetworkApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualNetworkApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualNetworkApiLiveTest.java
index 0994f66..705a377 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualNetworkApiLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/VirtualNetworkApiLiveTest.java
@@ -19,35 +19,37 @@ package org.jclouds.azurecompute.features;
import static org.assertj.core.api.Assertions.assertThat;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
-import static org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest.VIRTUAL_NETWORK_NAME;
-
-import com.google.common.base.Predicates;
+import java.util.List;
+import org.jclouds.azurecompute.AzureTestUtils;
import org.jclouds.azurecompute.domain.NetworkConfiguration;
import org.jclouds.azurecompute.domain.NetworkConfiguration.VirtualNetworkSite;
import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
-
+import org.jclouds.azurecompute.util.ConflictManagementPredicate;
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import org.jclouds.azurecompute.AzureTestUtils;
-import org.jclouds.azurecompute.util.ConflictManagementPredicate;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-
-import java.util.List;
-
@Test(groups = "live", testName = "VirtualNetworkApiLiveTest", singleThreaded = true)
public class VirtualNetworkApiLiveTest extends BaseAzureComputeApiLiveTest {
+ private static final String DEFAULT_ADDRESS_SPACE = "10.0.0.0/20";
+ private static final String DEFAULT_SUBNET_ADDRESS_SPACE = "10.0.0.0/23";
+ private List<VirtualNetworkSite> initialVirtualNetworkSite;
+
@BeforeSuite
@Override
public void setup() {
super.setup();
+ initialVirtualNetworkSite = AzureTestUtils.getVirtualNetworkSite(api);
+
+ virtualNetworkSite = getOrCreateVirtualNetworkSite(VIRTUAL_NETWORK_NAME, LOCATION);
+
final List<VirtualNetworkSite> virtualNetworkSites = Lists.newArrayList(Iterables.filter(
AzureTestUtils.getVirtualNetworkSite(api),
new AzureTestUtils.SameVirtualNetworkSiteNamePredicate(VIRTUAL_NETWORK_NAME)));
@@ -74,18 +76,13 @@ public class VirtualNetworkApiLiveTest extends BaseAzureComputeApiLiveTest {
protected void tearDown() {
super.tearDown();
- final List<VirtualNetworkSite> virtualNetworkSites = Lists.newArrayList(Iterables.filter(api.
- getVirtualNetworkApi().list(),
- Predicates.not(new AzureTestUtils.SameVirtualNetworkSiteNamePredicate(VIRTUAL_NETWORK_NAME))));
-
+ final NetworkConfiguration networkConfiguration = NetworkConfiguration.create(NetworkConfiguration.VirtualNetworkConfiguration.create(null, initialVirtualNetworkSite));
assertTrue(new ConflictManagementPredicate(api) {
-
@Override
protected String operation() {
- return api.getVirtualNetworkApi().set(NetworkConfiguration.create(
- NetworkConfiguration.VirtualNetworkConfiguration.create(null, virtualNetworkSites)));
+ return api.getVirtualNetworkApi().set(networkConfiguration);
}
- }.apply(VIRTUAL_NETWORK_NAME));
+ }.apply("Revert VirtualNetworkConfiguration"));
}
@Test
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/internal/AbstractAzureComputeApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/internal/AbstractAzureComputeApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/internal/AbstractAzureComputeApiLiveTest.java
index 155549e..47bfb5a 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/internal/AbstractAzureComputeApiLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/internal/AbstractAzureComputeApiLiveTest.java
@@ -16,14 +16,22 @@
*/
package org.jclouds.azurecompute.internal;
-import com.google.common.base.Predicate;
-import java.util.Random;
import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_POLL_INITIAL_PERIOD;
+import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_POLL_MAX_PERIOD;
+import static org.jclouds.azurecompute.config.AzureComputeProperties.OPERATION_TIMEOUT;
+import static org.jclouds.azurecompute.config.AzureComputeProperties.TCP_RULE_FORMAT;
+import static org.jclouds.azurecompute.config.AzureComputeProperties.TCP_RULE_REGEXP;
+import java.util.Properties;
+import java.util.Random;
+
import org.jclouds.apis.BaseApiLiveTest;
import org.jclouds.azurecompute.AzureComputeApi;
+import org.jclouds.azurecompute.util.ConflictManagementPredicate;
+import org.jclouds.compute.config.ComputeServiceProperties;
import org.testng.annotations.BeforeClass;
-import org.jclouds.azurecompute.util.ConflictManagementPredicate;
+import com.google.common.base.Predicate;
public abstract class AbstractAzureComputeApiLiveTest extends BaseApiLiveTest<AzureComputeApi> {
@@ -35,6 +43,18 @@ public abstract class AbstractAzureComputeApiLiveTest extends BaseApiLiveTest<Az
provider = "azurecompute";
}
+ @Override protected Properties setupProperties() {
+ Properties properties = super.setupProperties();
+ properties.put(ComputeServiceProperties.POLL_INITIAL_PERIOD, 1000);
+ properties.put(ComputeServiceProperties.POLL_MAX_PERIOD, 10000);
+ properties.setProperty(OPERATION_TIMEOUT, "60000");
+ properties.setProperty(OPERATION_POLL_INITIAL_PERIOD, "5");
+ properties.setProperty(OPERATION_POLL_MAX_PERIOD, "15");
+ properties.setProperty(TCP_RULE_FORMAT, "tcp_%s-%s");
+ properties.setProperty(TCP_RULE_REGEXP, "tcp_\\d{1,5}-\\d{1,5}");
+ return properties;
+ }
+
@BeforeClass
@Override
public void setup() {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/f9b393de/azurecompute/src/test/java/org/jclouds/azurecompute/internal/BaseAzureComputeApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/internal/BaseAzureComputeApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/internal/BaseAzureComputeApiLiveTest.java
index adf716d..f32f943 100644
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/internal/BaseAzureComputeApiLiveTest.java
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/internal/BaseAzureComputeApiLiveTest.java
@@ -79,7 +79,6 @@ public class BaseAzureComputeApiLiveTest extends AbstractAzureComputeApiLiveTest
super.setup();
operationSucceeded = new ConflictManagementPredicate(api, 600, 5, 5, SECONDS);
- virtualNetworkSite = getOrCreateVirtualNetworkSite(VIRTUAL_NETWORK_NAME, LOCATION);
final CreateStorageServiceParams params = CreateStorageServiceParams.builder().
serviceName(getStorageServiceName()).
@@ -96,12 +95,14 @@ public class BaseAzureComputeApiLiveTest extends AbstractAzureComputeApiLiveTest
super.tearDown();
assertTrue(new ConflictManagementPredicate(api) {
-
@Override
protected String operation() {
return api.getStorageAccountApi().delete(getStorageServiceName());
}
}.apply(getStorageServiceName()));
+
+
+
}
protected CloudService getOrCreateCloudService(final String cloudServiceName, final String location) {