You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2017/02/06 09:37:06 UTC
[2/3] jclouds-labs git commit: Add Load Balancer APIs to Azure ARM
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/LoadBalancingRuleProperties.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/LoadBalancingRuleProperties.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/LoadBalancingRuleProperties.java
new file mode 100644
index 0000000..ca90a15
--- /dev/null
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/LoadBalancingRuleProperties.java
@@ -0,0 +1,135 @@
+/*
+ * 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.arm.domain;
+
+import org.jclouds.azurecompute.arm.util.GetEnumValue;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+@AutoValue
+public abstract class LoadBalancingRuleProperties {
+
+ public enum Protocol {
+ Tcp("Tcp"), Udp("Udp"), UNRECOGNIZED("Unrecognized");
+
+ private final String label;
+
+ private Protocol(final String label) {
+ this.label = label;
+ }
+
+ public static Protocol fromValue(final String text) {
+ return (Protocol) GetEnumValue.fromValueOrDefault(text, Protocol.UNRECOGNIZED);
+ }
+
+ @Override
+ public String toString() {
+ return label;
+ }
+ }
+
+ public enum LoadDistribution {
+ Default("Default"), SourceIp("SourceIP"), SourceIPProtocol("SourceIPProtocol"), UNRECOGNIZED("Unrecognized");
+
+ private final String label;
+
+ private LoadDistribution(final String label) {
+ this.label = label;
+ }
+
+ public static LoadDistribution fromValue(final String text) {
+ return (LoadDistribution) GetEnumValue.fromValueOrDefault(text, LoadDistribution.UNRECOGNIZED);
+ }
+
+ @Override
+ public String toString() {
+ return label;
+ }
+ }
+
+ @Nullable
+ public abstract IdReference frontendIPConfiguration();
+
+ @Nullable
+ public abstract IdReference backendAddressPool();
+
+ public abstract Protocol protocol();
+
+ public abstract int frontendPort();
+
+ public abstract int backendPort();
+
+ @Nullable
+ public abstract IdReference probe();
+
+ @Nullable
+ public abstract Boolean enableFloatingIP();
+
+ @Nullable
+ public abstract Integer idleTimeoutInMinutes();
+
+ @Nullable
+ public abstract LoadDistribution loadDistribution();
+
+ @Nullable
+ public abstract String provisioningState();
+
+ @SerializedNames({ "frontendIPConfiguration", "backendAddressPool", "protocol", "frontendPort", "backendPort",
+ "probe", "enableFloatingIP", "idleTimeoutInMinutes", "loadDistribution", "provisioningState" })
+ public static LoadBalancingRuleProperties create(final IdReference frontendIPConfiguration,
+ final IdReference backendAddressPool, final Protocol protocol, final int frontendPort, final int backendPort,
+ final IdReference probe, final Boolean enableFloatingIP, final Integer idleTimeoutInMinutes,
+ final LoadDistribution loadDistribution, final String provisioningState) {
+ return builder().frontendIPConfiguration(frontendIPConfiguration).backendAddressPool(backendAddressPool)
+ .protocol(protocol).frontendPort(frontendPort).backendPort(backendPort).probe(probe)
+ .enableFloatingIP(enableFloatingIP).idleTimeoutInMinutes(idleTimeoutInMinutes)
+ .loadDistribution(loadDistribution).build();
+ }
+
+ public abstract Builder toBuilder();
+
+ public static Builder builder() {
+ return new AutoValue_LoadBalancingRuleProperties.Builder();
+ }
+
+ @AutoValue.Builder
+ public abstract static class Builder {
+ public abstract Builder frontendIPConfiguration(IdReference frontendIPConfiguration);
+
+ public abstract Builder backendAddressPool(IdReference backendAddressPool);
+
+ public abstract Builder protocol(Protocol protocol);
+
+ public abstract Builder frontendPort(int frontendPort);
+
+ public abstract Builder backendPort(int backendPort);
+
+ public abstract Builder probe(IdReference probe);
+
+ public abstract Builder enableFloatingIP(Boolean enableFloatingIP);
+
+ public abstract Builder idleTimeoutInMinutes(Integer idleTimeoutInMinutes);
+
+ public abstract Builder loadDistribution(LoadDistribution loadDistribution);
+
+ public abstract Builder provisioningState(String provisioningState);
+
+ public abstract LoadBalancingRuleProperties build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java
index 8b19493..d1976f1 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkInterfaceCardProperties.java
@@ -24,7 +24,7 @@ import org.jclouds.json.SerializedNames;
import java.util.List;
@AutoValue
-public abstract class NetworkInterfaceCardProperties {
+public abstract class NetworkInterfaceCardProperties implements Provisionable {
@Nullable
public abstract String provisioningState();
@@ -52,6 +52,8 @@ public abstract class NetworkInterfaceCardProperties {
return builder.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkProfile.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkProfile.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkProfile.java
index ffcf9ee..b26305f 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkProfile.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkProfile.java
@@ -18,6 +18,7 @@ package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
+
import org.jclouds.json.SerializedNames;
import java.util.List;
@@ -34,6 +35,8 @@ public abstract class NetworkProfile {
public static NetworkProfile create(final List<IdReference> networkInterfaces) {
return builder().networkInterfaces(networkInterfaces).build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_NetworkProfile.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java
index f81ab0f..bbc2746 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityGroupProperties.java
@@ -17,6 +17,7 @@
package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
+
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
import com.google.common.collect.ImmutableList;
@@ -24,7 +25,7 @@ import com.google.common.collect.ImmutableList;
import java.util.List;
@AutoValue
-public abstract class NetworkSecurityGroupProperties {
+public abstract class NetworkSecurityGroupProperties implements Provisionable {
@Nullable
public abstract List<NetworkSecurityRule> securityRules();
@@ -60,6 +61,8 @@ public abstract class NetworkSecurityGroupProperties {
.provisioningState(provisioningState)
.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_NetworkSecurityGroupProperties.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityRuleProperties.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityRuleProperties.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityRuleProperties.java
index 0710503..e93107e 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityRuleProperties.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/NetworkSecurityRuleProperties.java
@@ -17,6 +17,7 @@
package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
+
import org.jclouds.azurecompute.arm.util.GetEnumValue;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
@@ -112,6 +113,8 @@ public abstract class NetworkSecurityRuleProperties {
.direction(direction)
.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_NetworkSecurityRuleProperties.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSDisk.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSDisk.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSDisk.java
index 0be43bf..9cdee44 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSDisk.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSDisk.java
@@ -17,6 +17,7 @@
package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
+
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
@@ -70,6 +71,8 @@ public abstract class OSDisk {
.image(image)
.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_OSDisk.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSProfile.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSProfile.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSProfile.java
index 9240824..5592b4c 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSProfile.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/OSProfile.java
@@ -18,6 +18,7 @@ package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
+
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
@@ -212,6 +213,8 @@ public abstract class OSProfile {
.windowsConfiguration(windowsConfiguration)
.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_OSProfile.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Probe.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Probe.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Probe.java
new file mode 100644
index 0000000..e523984
--- /dev/null
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Probe.java
@@ -0,0 +1,42 @@
+/*
+ * 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.arm.domain;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+@AutoValue
+public abstract class Probe {
+ @Nullable
+ public abstract String name();
+
+ @Nullable
+ public abstract String id();
+
+ @Nullable
+ public abstract ProbeProperties properties();
+
+ @Nullable
+ public abstract String etag();
+
+ @SerializedNames({ "name", "id", "properties", "etag" })
+ public static Probe create(final String name, final String id, final ProbeProperties properties, final String etag) {
+ return new AutoValue_Probe(name, id, properties, etag);
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ProbeProperties.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ProbeProperties.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ProbeProperties.java
new file mode 100644
index 0000000..6fe273e
--- /dev/null
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ProbeProperties.java
@@ -0,0 +1,91 @@
+/*
+ * 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.arm.domain;
+
+import org.jclouds.azurecompute.arm.util.GetEnumValue;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+@AutoValue
+public abstract class ProbeProperties implements Provisionable {
+ public enum Protocol {
+ Tcp("Tcp"), Http("Http"), UNRECOGNIZED("Unrecognized");
+
+ private final String label;
+
+ private Protocol(final String label) {
+ this.label = label;
+ }
+
+ public static Protocol fromValue(final String text) {
+ return (Protocol) GetEnumValue.fromValueOrDefault(text, Protocol.UNRECOGNIZED);
+ }
+
+ @Override
+ public String toString() {
+ return label;
+ }
+ }
+
+ @Nullable
+ public abstract Protocol protocol();
+
+ public abstract int port();
+
+ @Nullable
+ public abstract String requestPath();
+
+ public abstract int intervalInSeconds();
+
+ public abstract int numberOfProbes();
+
+ @Nullable
+ public abstract String provisioningState();
+
+ @SerializedNames({ "protocol", "port", "requestPath", "intervalInSeconds", "numberOfProbes", "provisioningState" })
+ public static ProbeProperties create(final Protocol protocol, final int port, final String requestPath,
+ final int intervalInSeconds, final int numberOfProbes, final String provisioningState) {
+ return builder().protocol(protocol).port(port).requestPath(requestPath).intervalInSeconds(intervalInSeconds)
+ .numberOfProbes(numberOfProbes).provisioningState(provisioningState).build();
+ }
+
+ public abstract Builder toBuilder();
+
+ public static Builder builder() {
+ return new AutoValue_ProbeProperties.Builder();
+ }
+
+ @AutoValue.Builder
+ public abstract static class Builder {
+
+ public abstract Builder protocol(Protocol protocol);
+
+ public abstract Builder port(int port);
+
+ public abstract Builder requestPath(String requestPath);
+
+ public abstract Builder intervalInSeconds(int intervalInSeconds);
+
+ public abstract Builder numberOfProbes(int numberOfProbes);
+
+ public abstract Builder provisioningState(String provisioningState);
+
+ public abstract ProbeProperties build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Provisionable.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Provisionable.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Provisionable.java
new file mode 100644
index 0000000..f400e93
--- /dev/null
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Provisionable.java
@@ -0,0 +1,22 @@
+/*
+ * 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.arm.domain;
+
+public interface Provisionable {
+
+ String provisioningState();
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/PublicIPAddressProperties.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/PublicIPAddressProperties.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/PublicIPAddressProperties.java
index 2fc7fb5..af7da0d 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/PublicIPAddressProperties.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/PublicIPAddressProperties.java
@@ -17,11 +17,12 @@
package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
+
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
@AutoValue
-public abstract class PublicIPAddressProperties {
+public abstract class PublicIPAddressProperties implements Provisionable {
@Nullable // needs to be nullable to create the payload for create request
public abstract String provisioningState();
@@ -58,6 +59,8 @@ public abstract class PublicIPAddressProperties {
.dnsSettings(dnsSettings)
.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_PublicIPAddressProperties.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceDefinition.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceDefinition.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceDefinition.java
index 7c68e80..1b51375 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceDefinition.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceDefinition.java
@@ -20,6 +20,7 @@ package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
@@ -67,6 +68,8 @@ public abstract class ResourceDefinition {
return builder.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_ResourceDefinition.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceGroup.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceGroup.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceGroup.java
index 936b813..51bea9e 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceGroup.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceGroup.java
@@ -27,7 +27,7 @@ import com.google.common.collect.ImmutableMap;
public abstract class ResourceGroup {
@AutoValue
- public abstract static class ResourceGroupProperties{
+ public abstract static class ResourceGroupProperties implements Provisionable {
@Nullable
public abstract String provisioningState();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceProviderMetaData.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceProviderMetaData.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceProviderMetaData.java
index 84526b9..e919f02 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceProviderMetaData.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/ResourceProviderMetaData.java
@@ -18,6 +18,7 @@ package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
+
import org.jclouds.json.SerializedNames;
import java.util.List;
@@ -40,6 +41,8 @@ public abstract class ResourceProviderMetaData {
return builder.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_ResourceProviderMetaData.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Status.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Status.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Status.java
new file mode 100644
index 0000000..780877b
--- /dev/null
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Status.java
@@ -0,0 +1,49 @@
+/*
+ * 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.arm.domain;
+
+import java.util.Date;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.json.SerializedNames;
+
+import com.google.auto.value.AutoValue;
+
+@AutoValue
+public abstract class Status {
+
+ @Nullable
+ public abstract String code();
+
+ @Nullable
+ public abstract String level();
+
+ @Nullable
+ public abstract String displayStatus();
+
+ @Nullable
+ public abstract String message();
+
+ @Nullable
+ public abstract Date time();
+
+ @SerializedNames({ "code", "level", "displayStatus", "message", "time" })
+ public static Status create(final String code, final String level, final String displayStatus, final String message,
+ final Date time) {
+ return new AutoValue_Status(code, level, displayStatus, message, time);
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageProfile.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageProfile.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageProfile.java
index bcb62ee..a65ffd7 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageProfile.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageProfile.java
@@ -18,6 +18,7 @@ package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
+
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
@@ -53,6 +54,8 @@ public abstract class StorageProfile {
return builder.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_StorageProfile.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageService.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageService.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageService.java
index a97117f..0f5dbe5 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageService.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/StorageService.java
@@ -22,7 +22,6 @@ import java.util.Map;
import com.google.common.collect.ImmutableMap;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
-
import org.jclouds.azurecompute.arm.util.GetEnumValue;
@AutoValue
@@ -150,6 +149,9 @@ public abstract class StorageService {
return builder.build();
}
+
+ public abstract Builder toBuilder();
+
public static Builder builder() {
return new AutoValue_StorageService_StorageServiceProperties.Builder();
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Subnet.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Subnet.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Subnet.java
index e4024df..6830438 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Subnet.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/Subnet.java
@@ -21,6 +21,7 @@ import static com.google.common.collect.ImmutableList.copyOf;
import java.util.List;
import com.google.common.collect.ImmutableList;
+
import org.jclouds.javax.annotation.Nullable;
import com.google.auto.value.AutoValue;
import org.jclouds.json.SerializedNames;
@@ -40,7 +41,7 @@ public abstract class Subnet {
}
@AutoValue
- public abstract static class SubnetProperties {
+ public abstract static class SubnetProperties implements Provisionable {
@Nullable
public abstract String provisioningState();
@@ -59,6 +60,8 @@ public abstract class Subnet {
.ipConfigurations(ipConfigurations != null ? copyOf(ipConfigurations) : null)
.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_Subnet_SubnetProperties.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VHD.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VHD.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VHD.java
index 3b1421a..7e6b387 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VHD.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VHD.java
@@ -17,6 +17,7 @@
package org.jclouds.azurecompute.arm.domain;
import com.google.auto.value.AutoValue;
+
import org.jclouds.json.SerializedNames;
@AutoValue
@@ -31,6 +32,8 @@ public abstract class VHD {
public static VHD create(final String uri) {
return builder().uri(uri).build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_VHD.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMImage.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMImage.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMImage.java
index b08355e..04863ad 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMImage.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VMImage.java
@@ -111,6 +111,8 @@ public abstract class VMImage {
return new AutoValue_VMImage.Builder().globallyAvailable(false).custom(true);
}
+ public abstract Builder toBuilder();
+
@AutoValue.Builder
public abstract static class Builder {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java
index 65a389c..86810e5 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachine.java
@@ -74,6 +74,8 @@ public abstract class VirtualMachine {
.build();
}
+ public abstract Builder toBuilder();
+
public static Builder builder() {
return new AutoValue_VirtualMachine.Builder();
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineInstance.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineInstance.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineInstance.java
index 1c11e4d..66ef283 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineInstance.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineInstance.java
@@ -21,10 +21,8 @@ import static com.google.common.collect.Iterables.getFirst;
import static com.google.common.collect.Iterables.transform;
import static org.jclouds.util.Predicates2.startsWith;
-import java.util.Date;
import java.util.List;
-import org.jclouds.azurecompute.arm.domain.VirtualMachineInstance.VirtualMachineStatus.PowerState;
import org.jclouds.azurecompute.arm.domain.VirtualMachineProperties.ProvisioningState;
import org.jclouds.azurecompute.arm.util.GetEnumValue;
import org.jclouds.javax.annotation.Nullable;
@@ -40,42 +38,19 @@ import com.google.common.collect.ImmutableList;
@AutoValue
public abstract class VirtualMachineInstance {
- @com.google.auto.value.AutoValue
- public abstract static class VirtualMachineStatus {
-
- public static final String PROVISIONING_STATE_PREFIX = "ProvisioningState/";
- public static final String POWER_STATE_PREFIX = "PowerState/";
-
- public enum PowerState {
- RUNNING,
- STOPPED,
- UNRECOGNIZED;
-
- public static PowerState fromValue(final String text) {
- return (PowerState) GetEnumValue.fromValueOrDefault(text, PowerState.UNRECOGNIZED);
- }
- }
-
- @Nullable
- public abstract String code();
-
- @Nullable
- public abstract String level();
-
- @Nullable
- public abstract String displayStatus();
-
- @Nullable
- public abstract Date time();
-
- @SerializedNames({"code", "level", "displayStatus", "time"})
- public static VirtualMachineStatus create(final String code, final String level, final String displayStatus,
- final Date time) {
+ public static final String PROVISIONING_STATE_PREFIX = "ProvisioningState/";
+ public static final String POWER_STATE_PREFIX = "PowerState/";
+
+ public enum PowerState {
+ RUNNING,
+ STOPPED,
+ UNRECOGNIZED;
- return new AutoValue_VirtualMachineInstance_VirtualMachineStatus(code, level, displayStatus, time);
+ public static PowerState fromValue(final String text) {
+ return (PowerState) GetEnumValue.fromValueOrDefault(text, PowerState.UNRECOGNIZED);
}
}
-
+
@Nullable
public abstract String platformUpdateDomain();
@@ -83,19 +58,19 @@ public abstract class VirtualMachineInstance {
public abstract String platformFaultDomain();
@Nullable
- public abstract List<VirtualMachineStatus> statuses();
+ public abstract List<Status> statuses();
public ProvisioningState provisioningState() {
- return ProvisioningState.fromValue(firstStatus(VirtualMachineStatus.PROVISIONING_STATE_PREFIX));
+ return ProvisioningState.fromValue(firstStatus(PROVISIONING_STATE_PREFIX));
}
public PowerState powerState() {
- return PowerState.fromValue(firstStatus(VirtualMachineStatus.POWER_STATE_PREFIX));
+ return PowerState.fromValue(firstStatus(POWER_STATE_PREFIX));
}
private String firstStatus(final String type) {
- return getFirst(transform(filter(transform(statuses(), new Function<VirtualMachineStatus, String>() {
- @Override public String apply(VirtualMachineStatus input) {
+ return getFirst(transform(filter(transform(statuses(), new Function<Status, String>() {
+ @Override public String apply(Status input) {
return input.code();
}
}), startsWith(type)), new Function<String, String>() {
@@ -108,7 +83,7 @@ public abstract class VirtualMachineInstance {
@SerializedNames({"platformUpdateDomain", "platformFaultDomain", "statuses"})
public static VirtualMachineInstance create(final String platformUpdateDomain, final String platformFaultDomain,
- final List<VirtualMachineStatus> statuses) {
+ final List<Status> statuses) {
return new AutoValue_VirtualMachineInstance(platformUpdateDomain, platformFaultDomain, statuses == null ? null : ImmutableList.copyOf(statuses));
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineProperties.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineProperties.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineProperties.java
index eb9520a..732da5c 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineProperties.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualMachineProperties.java
@@ -61,7 +61,7 @@ public abstract class VirtualMachineProperties {
* The availability set of the virtual machine
*/
@Nullable
- public abstract AvailabilitySet availabilitySet();
+ public abstract IdReference availabilitySet();
/**
* The hardware Profile of the virtual machine .
@@ -103,7 +103,7 @@ public abstract class VirtualMachineProperties {
"networkProfile", "diagnosticsProfile", "provisioningState"})
public static VirtualMachineProperties create(final String vmId,
final String licenseType,
- final AvailabilitySet availabilitySet,
+ final IdReference availabilitySet,
final HardwareProfile hardwareProfile,
final StorageProfile storageProfile,
final OSProfile osProfile,
@@ -122,6 +122,8 @@ public abstract class VirtualMachineProperties {
.provisioningState(provisioningState)
.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_VirtualMachineProperties.Builder();
@@ -133,7 +135,7 @@ public abstract class VirtualMachineProperties {
public abstract Builder licenseType(String licenseType);
- public abstract Builder availabilitySet(AvailabilitySet availabilitySet);
+ public abstract Builder availabilitySet(IdReference availabilitySet);
public abstract Builder hardwareProfile(HardwareProfile hardwareProfile);
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualNetwork.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualNetwork.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualNetwork.java
index d5eddf0..a0f5c3e 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualNetwork.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/domain/VirtualNetwork.java
@@ -24,6 +24,7 @@ import com.google.common.collect.ImmutableList;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableMap;
+
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
@@ -42,7 +43,7 @@ public abstract class VirtualNetwork {
}
@AutoValue
- public abstract static class VirtualNetworkProperties {
+ public abstract static class VirtualNetworkProperties implements Provisionable {
@Nullable
public abstract String provisioningState();
@@ -65,6 +66,8 @@ public abstract class VirtualNetwork {
.subnets(subnets != null ? copyOf(subnets) : null)
.build();
}
+
+ public abstract Builder toBuilder();
public static Builder builder() {
return new AutoValue_VirtualNetwork_VirtualNetworkProperties.Builder();
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApi.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApi.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApi.java
new file mode 100644
index 0000000..30456d4
--- /dev/null
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApi.java
@@ -0,0 +1,83 @@
+/*
+ * 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.arm.features;
+
+import java.io.Closeable;
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.azurecompute.arm.domain.AvailabilitySet;
+import org.jclouds.azurecompute.arm.domain.AvailabilitySet.AvailabilitySetProperties;
+import org.jclouds.azurecompute.arm.filters.ApiVersionFilter;
+import org.jclouds.azurecompute.arm.functions.URIParser;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.filters.OAuthFilter;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.MapBinder;
+import org.jclouds.rest.annotations.PayloadParam;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.binders.BindToJsonPayload;
+
+@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.Compute/availabilitySets")
+@RequestFilters({ OAuthFilter.class, ApiVersionFilter.class })
+@Consumes(MediaType.APPLICATION_JSON)
+public interface AvailabilitySetApi extends Closeable {
+
+ @Named("availabilityset:list")
+ @GET
+ @SelectJson("value")
+ @Fallback(EmptyListOnNotFoundOr404.class)
+ List<AvailabilitySet> list();
+
+ @Named("availabilityset:get")
+ @Path("/{name}")
+ @GET
+ @Fallback(NullOnNotFoundOr404.class)
+ AvailabilitySet get(@PathParam("name") String name);
+
+ @Named("availabilityset:createOrUpdate")
+ @Path("/{name}")
+ @PUT
+ @MapBinder(BindToJsonPayload.class)
+ @Produces(MediaType.APPLICATION_JSON)
+ AvailabilitySet createOrUpdate(@PathParam("name") String name,
+ @PayloadParam("location") String location, @Nullable @PayloadParam("tags") Map<String, String> tags,
+ @PayloadParam("properties") AvailabilitySetProperties properties);
+
+ @Named("availabilityset:delete")
+ @Path("/{name}")
+ @DELETE
+ @ResponseParser(URIParser.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ URI delete(@PathParam("name") String name);
+
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/LoadBalancerApi.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/LoadBalancerApi.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/LoadBalancerApi.java
new file mode 100644
index 0000000..f0ea900
--- /dev/null
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/LoadBalancerApi.java
@@ -0,0 +1,82 @@
+/*
+ * 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.arm.features;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.azurecompute.arm.domain.LoadBalancer;
+import org.jclouds.azurecompute.arm.domain.LoadBalancerProperties;
+import org.jclouds.azurecompute.arm.filters.ApiVersionFilter;
+import org.jclouds.azurecompute.arm.functions.URIParser;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.filters.OAuthFilter;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.MapBinder;
+import org.jclouds.rest.annotations.PayloadParam;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.binders.BindToJsonPayload;
+
+@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.Network/loadBalancers")
+@RequestFilters({ OAuthFilter.class, ApiVersionFilter.class })
+@Consumes(MediaType.APPLICATION_JSON)
+public interface LoadBalancerApi {
+
+ @Named("loadbalancer:list")
+ @GET
+ @SelectJson("value")
+ @Fallback(EmptyListOnNotFoundOr404.class)
+ List<LoadBalancer> list();
+
+ @Named("loadbalancer:get")
+ @Path("/{loadbalancername}")
+ @GET
+ @Fallback(NullOnNotFoundOr404.class)
+ LoadBalancer get(@PathParam("loadbalancername") String lbName);
+
+ @Named("loadbalancer:createOrUpdate")
+ @Path("/{loadbalancername}")
+ @PUT
+ @MapBinder(BindToJsonPayload.class)
+ @Produces(MediaType.APPLICATION_JSON)
+ LoadBalancer createOrUpdate(@PathParam("loadbalancername") String lbName,
+ @PayloadParam("location") String location, @Nullable @PayloadParam("tags") Map<String, String> tags,
+ @PayloadParam("properties") LoadBalancerProperties properties);
+
+ @Named("loadbalancer:delete")
+ @Path("/{loadbalancername}")
+ @DELETE
+ @ResponseParser(URIParser.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ URI delete(@PathParam("loadbalancername") String lbName);
+
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/NetworkInterfaceCardApi.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/NetworkInterfaceCardApi.java b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/NetworkInterfaceCardApi.java
index c135e9e..5d2773f 100644
--- a/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/NetworkInterfaceCardApi.java
+++ b/azurecompute-arm/src/main/java/org/jclouds/azurecompute/arm/features/NetworkInterfaceCardApi.java
@@ -35,6 +35,7 @@ import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCard;
import org.jclouds.azurecompute.arm.domain.NetworkInterfaceCardProperties;
import org.jclouds.azurecompute.arm.filters.ApiVersionFilter;
import org.jclouds.azurecompute.arm.functions.URIParser;
+import org.jclouds.javax.annotation.Nullable;
import org.jclouds.oauth.v2.filters.OAuthFilter;
import org.jclouds.rest.annotations.Fallback;
import org.jclouds.rest.annotations.MapBinder;
@@ -60,9 +61,9 @@ public interface NetworkInterfaceCardApi {
@MapBinder(BindToJsonPayload.class)
@PUT
NetworkInterfaceCard createOrUpdate(@PathParam("networkinterfacecardname") String networkinterfacecardname,
- @PayloadParam("location") String location,
- @PayloadParam("properties") NetworkInterfaceCardProperties properties,
- @PayloadParam("tags") Map<String, String> tags);
+ @PayloadParam("location") String location,
+ @PayloadParam("properties") NetworkInterfaceCardProperties properties,
+ @Nullable @PayloadParam("tags") Map<String, String> tags);
@Named("networkinterfacecard:get")
@Path("/{networkinterfacecardname}")
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java
index 784f007..9c2427c 100644
--- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java
+++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/AzureComputeServiceLiveTest.java
@@ -20,7 +20,9 @@ import static org.jclouds.compute.options.TemplateOptions.Builder.authorizePubli
import java.util.Properties;
+import org.jclouds.azurecompute.arm.AzureComputeApi;
import org.jclouds.azurecompute.arm.AzureComputeProviderMetadata;
+import org.jclouds.azurecompute.arm.domain.ResourceGroup;
import org.jclouds.azurecompute.arm.internal.AzureLiveTestUtils;
import org.jclouds.compute.domain.Template;
import org.jclouds.compute.domain.TemplateBuilder;
@@ -33,9 +35,13 @@ import org.jclouds.scriptbuilder.domain.Statements;
import org.jclouds.scriptbuilder.statements.java.InstallJDK;
import org.jclouds.scriptbuilder.statements.login.AdminAccess;
import org.jclouds.sshj.config.SshjSshClientModule;
+import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;
+import com.google.common.cache.LoadingCache;
+import com.google.inject.Key;
import com.google.inject.Module;
+import com.google.inject.TypeLiteral;
/**
* Live tests for the {@link org.jclouds.compute.ComputeService} integration.
@@ -43,11 +49,37 @@ import com.google.inject.Module;
@Test(groups = "live", singleThreaded = true, testName = "AzureComputeServiceLiveTest")
public class AzureComputeServiceLiveTest extends BaseComputeServiceLiveTest {
+ private LoadingCache<String, ResourceGroup> resourceGroupMap;
+
public AzureComputeServiceLiveTest() {
provider = "azurecompute-arm";
}
@Override
+ public void initializeContext() {
+ super.initializeContext();
+ resourceGroupMap = context.utils().injector()
+ .getInstance(Key.get(new TypeLiteral<LoadingCache<String, ResourceGroup>>() {
+ }));
+ }
+
+ @Override
+ @AfterClass(groups = "live", alwaysRun = true)
+ protected void tearDownContext() {
+ try {
+ if (template != null) {
+ ResourceGroup rg = resourceGroupMap.getIfPresent(template.getLocation().getId());
+ if (rg != null) {
+ AzureComputeApi api = view.unwrapApi(AzureComputeApi.class);
+ api.getResourceGroupApi().delete(rg.name());
+ }
+ }
+ } finally {
+ super.tearDownContext();
+ }
+ }
+
+ @Override
protected LoggingModule getLoggingModule() {
return new SLF4JLoggingModule();
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeImageExtensionLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeImageExtensionLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeImageExtensionLiveTest.java
index 8939eb1..a6d19fa 100644
--- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeImageExtensionLiveTest.java
+++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeImageExtensionLiveTest.java
@@ -21,16 +21,23 @@ import static org.jclouds.compute.options.TemplateOptions.Builder.authorizePubli
import java.util.Map;
import java.util.Properties;
+import org.jclouds.azurecompute.arm.AzureComputeApi;
import org.jclouds.azurecompute.arm.AzureComputeProviderMetadata;
+import org.jclouds.azurecompute.arm.domain.ResourceGroup;
import org.jclouds.azurecompute.arm.internal.AzureLiveTestUtils;
import org.jclouds.compute.ComputeTestUtils;
import org.jclouds.compute.domain.TemplateBuilder;
import org.jclouds.compute.extensions.internal.BaseImageExtensionLiveTest;
+import org.jclouds.domain.Location;
import org.jclouds.providers.ProviderMetadata;
import org.jclouds.sshj.config.SshjSshClientModule;
+import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;
+import com.google.common.cache.LoadingCache;
+import com.google.inject.Key;
import com.google.inject.Module;
+import com.google.inject.TypeLiteral;
/**
* Live tests for the {@link org.jclouds.compute.extensions.ImageExtension}
@@ -38,12 +45,37 @@ import com.google.inject.Module;
*/
@Test(groups = "live", singleThreaded = true, testName = "AzureComputeImageExtensionLiveTest")
public class AzureComputeImageExtensionLiveTest extends BaseImageExtensionLiveTest {
+
+ public static final String NAME_PREFIX = "%s";
+
+ private LoadingCache<String, ResourceGroup> resourceGroupMap;
public AzureComputeImageExtensionLiveTest() {
provider = "azurecompute-arm";
}
- public static String NAME_PREFIX = "%s";
+ @Override
+ public void initializeContext() {
+ super.initializeContext();
+ resourceGroupMap = context.utils().injector()
+ .getInstance(Key.get(new TypeLiteral<LoadingCache<String, ResourceGroup>>() {
+ }));
+ }
+
+ @Override
+ @AfterClass(groups = "live", alwaysRun = true)
+ protected void tearDownContext() {
+ try {
+ Location location = getNodeTemplate().build().getLocation();
+ ResourceGroup rg = resourceGroupMap.getIfPresent(location.getId());
+ if (rg != null) {
+ AzureComputeApi api = view.unwrapApi(AzureComputeApi.class);
+ api.getResourceGroupApi().delete(rg.name());
+ }
+ } finally {
+ super.tearDownContext();
+ }
+ }
@Override
protected Module getSshModule() {
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeSecurityGroupExtensionLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeSecurityGroupExtensionLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeSecurityGroupExtensionLiveTest.java
index cb13c7b..2aa012a 100644
--- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeSecurityGroupExtensionLiveTest.java
+++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/compute/extensions/AzureComputeSecurityGroupExtensionLiveTest.java
@@ -29,8 +29,8 @@ import java.util.Properties;
import java.util.Set;
import java.util.concurrent.ExecutionException;
+import org.jclouds.azurecompute.arm.AzureComputeApi;
import org.jclouds.azurecompute.arm.AzureComputeProviderMetadata;
-import org.jclouds.azurecompute.arm.compute.strategy.CleanupResources;
import org.jclouds.azurecompute.arm.domain.ResourceGroup;
import org.jclouds.azurecompute.arm.internal.AzureLiveTestUtils;
import org.jclouds.compute.ComputeService;
@@ -60,7 +60,6 @@ public class AzureComputeSecurityGroupExtensionLiveTest extends BaseSecurityGrou
private LoadingCache<String, ResourceGroup> resourceGroupMap;
private ResourceGroup testResourceGroup;
- private CleanupResources cleanupResources;
public AzureComputeSecurityGroupExtensionLiveTest() {
provider = "azurecompute-arm";
@@ -72,8 +71,7 @@ public class AzureComputeSecurityGroupExtensionLiveTest extends BaseSecurityGrou
resourceGroupMap = context.utils().injector()
.getInstance(Key.get(new TypeLiteral<LoadingCache<String, ResourceGroup>>() {
}));
- cleanupResources = context.utils().injector().getInstance(CleanupResources.class);
- createResourceGroupIfMissing();
+ createResourceGroup();
}
@Test(groups = { "integration", "live" }, dependsOnMethods = "testCreateSecurityGroup")
@@ -118,8 +116,11 @@ public class AzureComputeSecurityGroupExtensionLiveTest extends BaseSecurityGrou
@AfterClass(groups = { "integration", "live" })
@Override
protected void tearDownContext() {
- super.tearDownContext();
- cleanupResources.deleteResourceGroupIfEmpty(testResourceGroup.name());
+ try {
+ view.unwrapApi(AzureComputeApi.class).getResourceGroupApi().delete(testResourceGroup.name());
+ } finally {
+ super.tearDownContext();
+ }
}
@Override
@@ -135,7 +136,7 @@ public class AzureComputeSecurityGroupExtensionLiveTest extends BaseSecurityGrou
return AzureComputeProviderMetadata.builder().build();
}
- private void createResourceGroupIfMissing() {
+ private void createResourceGroup() {
Location location = getNodeTemplate().getLocation();
testResourceGroup = resourceGroupMap.getUnchecked(location.getId());
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApiLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApiLiveTest.java
new file mode 100644
index 0000000..6e9e1e7
--- /dev/null
+++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApiLiveTest.java
@@ -0,0 +1,100 @@
+/*
+ * 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.arm.features;
+
+import static com.google.common.collect.Iterables.any;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+import java.net.URI;
+import java.util.UUID;
+
+import org.jclouds.azurecompute.arm.domain.AvailabilitySet;
+import org.jclouds.azurecompute.arm.domain.AvailabilitySet.AvailabilitySetProperties;
+import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableMap;
+
+@Test(groups = "live", testName = "AvailabilitySetApiLiveTest", singleThreaded = true)
+public class AvailabilitySetApiLiveTest extends BaseAzureComputeApiLiveTest {
+
+ private String asName;
+
+ @BeforeClass
+ @Override
+ public void setup() {
+ super.setup();
+ createTestResourceGroup();
+ asName = "jclouds-" + RAND;
+ }
+
+ @Test
+ public void deleteAvailabilitySetDoesNotExist() {
+ assertNull(api().delete(UUID.randomUUID().toString()));
+ }
+
+ @Test
+ public void createAvailabilitySet() {
+ AvailabilitySetProperties props = AvailabilitySetProperties.builder().platformUpdateDomainCount(2)
+ .platformFaultDomainCount(3).build();
+ AvailabilitySet as = api().createOrUpdate(asName, LOCATION, null, props);
+
+ assertNotNull(as);
+ assertEquals(as.name(), asName);
+ }
+
+ @Test(dependsOnMethods = "createAvailabilitySet")
+ public void getAvailabilitySet() {
+ assertNotNull(api().get(asName));
+ }
+
+ @Test(dependsOnMethods = "createAvailabilitySet")
+ public void listAvailabilitySet() {
+ assertTrue(any(api().list(), new Predicate<AvailabilitySet>() {
+ @Override
+ public boolean apply(AvailabilitySet input) {
+ return asName.equals(input.name());
+ }
+ }));
+ }
+
+ @Test(dependsOnMethods = "createAvailabilitySet")
+ public void updateAvailabilitySet() {
+ AvailabilitySet as = api().get(asName);
+ as = api().createOrUpdate(asName, LOCATION, ImmutableMap.of("foo", "bar"), as.properties());
+
+ assertNotNull(as);
+ assertTrue(as.tags().containsKey("foo"));
+ assertEquals(as.tags().get("foo"), "bar");
+ }
+
+ @Test(dependsOnMethods = { "getAvailabilitySet", "listAvailabilitySet", "updateAvailabilitySet" })
+ public void deleteAvailabilitySet() {
+ URI uri = api().delete(asName);
+ assertResourceDeleted(uri);
+ }
+
+ private AvailabilitySetApi api() {
+ return api.getAvailabilitySetApi(resourceGroupName);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApiMockTest.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApiMockTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApiMockTest.java
new file mode 100644
index 0000000..db9a7ed
--- /dev/null
+++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/AvailabilitySetApiMockTest.java
@@ -0,0 +1,153 @@
+/*
+ * 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.arm.features;
+
+import static com.google.common.collect.Iterables.isEmpty;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+import java.net.URI;
+import java.util.List;
+
+import org.jclouds.azurecompute.arm.domain.AvailabilitySet;
+import org.jclouds.azurecompute.arm.domain.AvailabilitySet.AvailabilitySetProperties;
+import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiMockTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", testName = "AvailabilitySetApiMockTest", singleThreaded = true)
+public class AvailabilitySetApiMockTest extends BaseAzureComputeApiMockTest {
+
+ private final String subscriptionid = "SUBSCRIPTIONID";
+ private final String resourcegroup = "myresourcegroup";
+ private final String asName = "myas";
+ private final String apiVersion = "api-version=2016-03-30";
+
+ public void createAvailabilitySet() throws InterruptedException {
+
+ server.enqueue(jsonResponse("/availabilitysetcreate.json").setResponseCode(200));
+
+ AvailabilitySetApi asApi = api.getAvailabilitySetApi(resourcegroup);
+
+ AvailabilitySetProperties props = AvailabilitySetProperties.builder().platformUpdateDomainCount(2)
+ .platformFaultDomainCount(3).build();
+ AvailabilitySet as = asApi.createOrUpdate(asName, "westeurope", null, props);
+
+ String path = String.format(
+ "/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/availabilitySets/%s?%s", subscriptionid,
+ resourcegroup, asName, apiVersion);
+ String json = "{\"location\":\"westeurope\",\"properties\":{\"platformUpdateDomainCount\":2,\"platformFaultDomainCount\":3}}";
+ assertSent(server, "PUT", path, json);
+
+ assertEquals(as.name(), asName);
+ assertEquals(as.properties().platformUpdateDomainCount(), 2);
+ assertEquals(as.properties().platformFaultDomainCount(), 3);
+ }
+
+ public void getAvailabilitySet() throws InterruptedException {
+
+ server.enqueue(jsonResponse("/availabilitysetget.json").setResponseCode(200));
+
+ AvailabilitySetApi asApi = api.getAvailabilitySetApi(resourcegroup);
+
+ AvailabilitySet as = asApi.get(asName);
+
+ String path = String.format(
+ "/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/availabilitySets/%s?%s", subscriptionid,
+ resourcegroup, asName, apiVersion);
+ assertSent(server, "GET", path);
+
+ assertEquals(as.name(), asName);
+ }
+
+ public void getAvailabilitySet404() throws InterruptedException {
+ server.enqueue(response404());
+
+ AvailabilitySetApi asApi = api.getAvailabilitySetApi(resourcegroup);
+
+ AvailabilitySet as = asApi.get(asName);
+
+ String path = String.format(
+ "/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/availabilitySets/%s?%s", subscriptionid,
+ resourcegroup, asName, apiVersion);
+ assertSent(server, "GET", path);
+
+ assertNull(as);
+ }
+
+ public void listAvailabilitySets() throws InterruptedException {
+
+ server.enqueue(jsonResponse("/availabilitysetlist.json").setResponseCode(200));
+
+ AvailabilitySetApi asApi = api.getAvailabilitySetApi(resourcegroup);
+
+ List<AvailabilitySet> asList = asApi.list();
+
+ String path = String.format(
+ "/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/availabilitySets?%s", subscriptionid,
+ resourcegroup, apiVersion);
+ assertSent(server, "GET", path);
+
+ assertTrue(asList.size() > 0);
+ }
+
+ public void listAvailabilitySets404() throws InterruptedException {
+ server.enqueue(response404());
+
+ AvailabilitySetApi asApi = api.getAvailabilitySetApi(resourcegroup);
+
+ List<AvailabilitySet> asList = asApi.list();
+
+ String path = String.format(
+ "/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/availabilitySets?%s", subscriptionid,
+ resourcegroup, apiVersion);
+ assertSent(server, "GET", path);
+
+ assertTrue(isEmpty(asList));
+ }
+
+ public void deleteAvailabilitySet() throws InterruptedException {
+
+ server.enqueue(response202WithHeader());
+
+ AvailabilitySetApi asApi = api.getAvailabilitySetApi(resourcegroup);
+
+ URI uri = asApi.delete(asName);
+ assertNotNull(uri);
+
+ String path = String.format(
+ "/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/availabilitySets/%s?%s", subscriptionid,
+ resourcegroup, asName, apiVersion);
+ assertSent(server, "DELETE", path);
+ }
+
+ public void deleteSubnetResourceDoesNotExist() throws InterruptedException {
+
+ server.enqueue(response204());
+
+ AvailabilitySetApi asApi = api.getAvailabilitySetApi(resourcegroup);
+
+ URI uri = asApi.delete(asName);
+ assertNull(uri);
+
+ String path = String.format(
+ "/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Compute/availabilitySets/%s?%s", subscriptionid,
+ resourcegroup, asName, apiVersion);
+ assertSent(server, "DELETE", path);
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/9f582565/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentApiLiveTest.java b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentApiLiveTest.java
index 42116c2..b485dc2 100644
--- a/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentApiLiveTest.java
+++ b/azurecompute-arm/src/test/java/org/jclouds/azurecompute/arm/features/DeploymentApiLiveTest.java
@@ -31,7 +31,6 @@ import org.jclouds.azurecompute.arm.domain.VirtualNetwork;
import org.jclouds.azurecompute.arm.internal.BaseAzureComputeApiLiveTest;
import org.jclouds.util.Predicates2;
import org.testng.Assert;
-import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -41,7 +40,6 @@ import com.google.common.net.UrlEscapers;
@Test(testName = "DeploymentApiLiveTest", singleThreaded = true)
public class DeploymentApiLiveTest extends BaseAzureComputeApiLiveTest {
- private String resourceGroupName;
private String deploymentName;
private String subnetId;
@@ -52,8 +50,7 @@ public class DeploymentApiLiveTest extends BaseAzureComputeApiLiveTest {
@Override
public void setup() {
super.setup();
- resourceGroupName = String.format("rg-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name"));
- assertNotNull(createResourceGroup(resourceGroupName));
+ createTestResourceGroup();
deploymentName = "jc" + System.currentTimeMillis();
String virtualNetworkName = String.format("vn-%s-%s", this.getClass().getSimpleName().toLowerCase(), System.getProperty("user.name"));
String storageAccountName = String.format("st%s%s", System.getProperty("user.name"), RAND);
@@ -77,14 +74,6 @@ public class DeploymentApiLiveTest extends BaseAzureComputeApiLiveTest {
subnetId = subnet.id();
}
- @AfterClass
- @Override
- protected void tearDown() {
- super.tearDown();
- URI uri = api.getResourceGroupApi().delete(resourceGroupName);
- assertResourceDeleted(uri);
- }
-
private String getPutBody(String template, String mode, String parameters) {
String body = "{ " +
"\"properties\" : " +