You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/23 02:13:00 UTC
[2/5] git commit: Rename Azure HostedService -> CloudService to match
documentation.
Rename Azure HostedService -> CloudService to match documentation.
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/1f907d2a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/1f907d2a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/1f907d2a
Branch: refs/heads/master
Commit: 1f907d2a748c038a70b5e8317217ae1880c62b30
Parents: a53689f
Author: Adrian Cole <ac...@twitter.com>
Authored: Tue Oct 21 21:55:20 2014 -0700
Committer: Adrian Cole <ad...@apache.org>
Committed: Wed Oct 22 17:11:19 2014 -0700
----------------------------------------------------------------------
.../jclouds/azurecompute/AzureComputeApi.java | 9 +-
.../azurecompute/domain/CloudService.java | 178 +++++++++++++++++++
.../jclouds/azurecompute/domain/Deployment.java | 2 +-
.../org/jclouds/azurecompute/domain/Disk.java | 2 +-
.../azurecompute/domain/HostedService.java | 178 -------------------
.../azurecompute/features/CloudServiceApi.java | 130 ++++++++++++++
.../azurecompute/features/HostedServiceApi.java | 130 --------------
.../jclouds/azurecompute/features/ImageApi.java | 4 +-
.../azurecompute/features/LocationApi.java | 2 +-
.../azurecompute/xml/CloudServiceHandler.java | 127 +++++++++++++
.../azurecompute/xml/HostedServiceHandler.java | 127 -------------
.../xml/ListCloudServicesHandler.java | 69 +++++++
.../xml/ListHostedServicesHandler.java | 69 -------
.../features/CloudServiceApiLiveTest.java | 143 +++++++++++++++
.../features/CloudServiceApiMockTest.java | 138 ++++++++++++++
.../features/HostedServiceApiLiveTest.java | 145 ---------------
.../features/HostedServiceApiMockTest.java | 138 --------------
.../xml/CloudServiceHandlerTest.java | 55 ++++++
.../xml/HostedServiceHandlerTest.java | 55 ------
.../xml/ListCloudServicesHandlerTest.java | 71 ++++++++
.../xml/ListHostedServicesHandlerTest.java | 71 --------
.../src/test/resources/hostedservice.xml | 2 +-
.../src/test/resources/hostedservices.xml | 2 +-
23 files changed, 923 insertions(+), 924 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeApi.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeApi.java b/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeApi.java
index 7dc946b..ec037a3 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeApi.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/AzureComputeApi.java
@@ -18,9 +18,10 @@ package org.jclouds.azurecompute;
import java.io.Closeable;
import javax.ws.rs.PathParam;
+
+import org.jclouds.azurecompute.features.CloudServiceApi;
import org.jclouds.azurecompute.features.DeploymentApi;
import org.jclouds.azurecompute.features.DiskApi;
-import org.jclouds.azurecompute.features.HostedServiceApi;
import org.jclouds.azurecompute.features.ImageApi;
import org.jclouds.azurecompute.features.LocationApi;
import org.jclouds.azurecompute.features.OperationApi;
@@ -37,7 +38,7 @@ import org.jclouds.rest.annotations.Delegate;
public interface AzureComputeApi extends Closeable {
/**
* The Service Management API includes operations for listing the available data center locations
- * for a hosted service in your subscription.
+ * for a cloud service in your subscription.
*
* @see <a href="http://msdn.microsoft.com/en-us/library/gg441299">docs</a>
*/
@@ -45,13 +46,13 @@ public interface AzureComputeApi extends Closeable {
LocationApi getLocationApi();
/**
- * The Service Management API includes operations for managing the hosted services beneath your
+ * The Service Management API includes operations for managing the cloud services beneath your
* subscription.
*
* @see <a href="http://msdn.microsoft.com/en-us/library/ee460812">docs</a>
*/
@Delegate
- HostedServiceApi getHostedServiceApi();
+ CloudServiceApi getCloudServiceApi();
/**
* The Service Management API includes operations for managing the virtual machines in your
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/CloudService.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/CloudService.java b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/CloudService.java
new file mode 100644
index 0000000..bc29be7
--- /dev/null
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/CloudService.java
@@ -0,0 +1,178 @@
+/*
+ * 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.domain;
+
+import static com.google.common.base.Objects.equal;
+import static com.google.common.base.Objects.toStringHelper;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.util.Date;
+import java.util.Map;
+
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects;
+
+/**
+ * System properties for the specified cloud service. These properties include the service name and
+ * service type; the name of the affinity group to which the service belongs, or its location if it
+ * is not part of an affinity group.
+ *
+ * @see <a href="http://msdn.microsoft.com/en-us/library/gg441293" >api</a>
+ */
+public final class CloudService {
+ public enum Status {
+ CREATING, CREATED, DELETING, DELETED, CHANGING, RESOLVING_DNS,
+ UNRECOGNIZED;
+ }
+
+ /**
+ * The name of the cloud service. This name is the DNS prefix name and can be used to access the
+ * cloud service.
+ *
+ * <p/>For example, if the service name is MyService you could access the access the service by
+ * calling: http://MyService.cloudapp.net
+ */
+ public String name() {
+ return name;
+ }
+
+ /**
+ * The geo-location of the cloud service in Windows Azure, if the cloud service is not
+ * associated with an affinity group. If a location has been specified, the AffinityGroup element
+ * is not returned.
+ */
+ @Nullable public String location() {
+ return location;
+ }
+
+ /**
+ * The affinity group with which this cloud service is associated, if any. If the service is
+ * associated with an affinity group, the Location element is not returned.
+ */
+ @Nullable public String affinityGroup() {
+ return affinityGroup;
+ }
+
+ /**
+ * The name can be up to 100 characters in length. The name can be used identify the storage account for your
+ * tracking purposes.
+ */
+ public String label() {
+ return label;
+ }
+
+ @Nullable public String description() {
+ return description;
+ }
+
+ public Status status() {
+ return status;
+ }
+
+ public Date created() {
+ return created;
+ }
+
+ public Date lastModified() {
+ return lastModified;
+ }
+
+ /**
+ * Represents the name of an extended cloud service property. Each extended property must have
+ * both a defined name and value. You can have a maximum of 50 extended property name/value
+ * pairs.
+ *
+ * <p/>The maximum length of the Name element is 64 characters, only alphanumeric characters and
+ * underscores are valid in the Name, and the name must start with a letter. Each extended
+ * property value has a maximum length of 255 characters.
+ */
+ public Map<String, String> extendedProperties() {
+ return extendedProperties;
+ }
+
+ public static CloudService create(String name, String location, String affinityGroup, String label,
+ String description, Status status, Date created, Date lastModified, Map<String, String> extendedProperties) {
+ return new CloudService(name, location, affinityGroup, label, description, status, created, lastModified,
+ extendedProperties);
+ }
+
+ // TODO: Remove from here down with @AutoValue.
+ private CloudService(String name, String location, String affinityGroup, String label, String description,
+ Status status, Date created, Date lastModified, Map<String, String> extendedProperties) {
+ this.name = checkNotNull(name, "name");
+ this.location = location;
+ this.affinityGroup = affinityGroup;
+ this.label = checkNotNull(label, "label");
+ this.description = description;
+ this.status = checkNotNull(status, "status");
+ this.created = checkNotNull(created, "created");
+ this.lastModified = checkNotNull(lastModified, "lastModified");
+ this.extendedProperties = checkNotNull(extendedProperties, "extendedProperties");
+ }
+
+ private final String name;
+ private final String location;
+ private final String affinityGroup;
+ private final String label;
+ private final String description;
+ private final Status status;
+ private final Date created;
+ private final Date lastModified;
+ private final Map<String, String> extendedProperties;
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object) {
+ return true;
+ }
+ if (object instanceof CloudService) {
+ CloudService that = CloudService.class.cast(object);
+ return equal(name, that.name)
+ && equal(location, that.location)
+ && equal(affinityGroup, that.affinityGroup)
+ && equal(label, that.label)
+ && equal(description, that.description)
+ && equal(status, that.status)
+ && equal(created, that.created)
+ && equal(lastModified, that.lastModified)
+ && equal(extendedProperties, that.extendedProperties);
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(name, location, affinityGroup, label, description, status, created, lastModified,
+ extendedProperties);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this)
+ .add("name", name)
+ .add("location", location)
+ .add("affinityGroup", affinityGroup)
+ .add("label", label)
+ .add("description", description)
+ .add("status", status)
+ .add("created", created)
+ .add("lastModified", lastModified)
+ .add("extendedProperties", extendedProperties).toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/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 7a6986f..580c59d 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Deployment.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Deployment.java
@@ -51,7 +51,7 @@ public final class Deployment {
return name;
}
- /** The environment to which the hosted service is deployed. */
+ /** The environment to which the cloud service is deployed. */
public Slot slot() {
return slot;
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Disk.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Disk.java b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Disk.java
index 26a16b6..07ebf56 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Disk.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/Disk.java
@@ -39,7 +39,7 @@ public final class Disk {
return deployment;
}
- /** The hosted service in which the disk is being used. */
+ /** The cloud service in which the disk is being used. */
public String hostedService() {
return hostedService;
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/HostedService.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/HostedService.java b/azurecompute/src/main/java/org/jclouds/azurecompute/domain/HostedService.java
deleted file mode 100644
index 6ef400b..0000000
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/domain/HostedService.java
+++ /dev/null
@@ -1,178 +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.domain;
-
-import static com.google.common.base.Objects.equal;
-import static com.google.common.base.Objects.toStringHelper;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Date;
-import java.util.Map;
-
-import org.jclouds.javax.annotation.Nullable;
-
-import com.google.common.base.Objects;
-
-/**
- * System properties for the specified hosted service. These properties include the service name and
- * service type; the name of the affinity group to which the service belongs, or its location if it
- * is not part of an affinity group.
- *
- * @see <a href="http://msdn.microsoft.com/en-us/library/gg441293" >api</a>
- */
-public final class HostedService {
- public enum Status {
- CREATING, CREATED, DELETING, DELETED, CHANGING, RESOLVING_DNS,
- UNRECOGNIZED;
- }
-
- /**
- * The name of the hosted service. This name is the DNS prefix name and can be used to access the
- * hosted service.
- *
- * <p/>For example, if the service name is MyService you could access the access the service by
- * calling: http://MyService.cloudapp.net
- */
- public String name() {
- return name;
- }
-
- /**
- * The geo-location of the hosted service in Windows Azure, if the hosted service is not
- * associated with an affinity group. If a location has been specified, the AffinityGroup element
- * is not returned.
- */
- @Nullable public String location() {
- return location;
- }
-
- /**
- * The affinity group with which this hosted service is associated, if any. If the service is
- * associated with an affinity group, the Location element is not returned.
- */
- @Nullable public String affinityGroup() {
- return affinityGroup;
- }
-
- /**
- * The name can be up to 100 characters in length. The name can be used identify the storage account for your
- * tracking purposes.
- */
- public String label() {
- return label;
- }
-
- @Nullable public String description() {
- return description;
- }
-
- public Status status() {
- return status;
- }
-
- public Date created() {
- return created;
- }
-
- public Date lastModified() {
- return lastModified;
- }
-
- /**
- * Represents the name of an extended hosted service property. Each extended property must have
- * both a defined name and value. You can have a maximum of 50 extended property name/value
- * pairs.
- *
- * <p/>The maximum length of the Name element is 64 characters, only alphanumeric characters and
- * underscores are valid in the Name, and the name must start with a letter. Each extended
- * property value has a maximum length of 255 characters.
- */
- public Map<String, String> extendedProperties() {
- return extendedProperties;
- }
-
- public static HostedService create(String name, String location, String affinityGroup, String label,
- String description, Status status, Date created, Date lastModified, Map<String, String> extendedProperties) {
- return new HostedService(name, location, affinityGroup, label, description, status, created, lastModified,
- extendedProperties);
- }
-
- // TODO: Remove from here down with @AutoValue.
- private HostedService(String name, String location, String affinityGroup, String label, String description,
- Status status, Date created, Date lastModified, Map<String, String> extendedProperties) {
- this.name = checkNotNull(name, "name");
- this.location = location;
- this.affinityGroup = affinityGroup;
- this.label = checkNotNull(label, "label");
- this.description = description;
- this.status = checkNotNull(status, "status");
- this.created = checkNotNull(created, "created");
- this.lastModified = checkNotNull(lastModified, "lastModified");
- this.extendedProperties = checkNotNull(extendedProperties, "extendedProperties");
- }
-
- private final String name;
- private final String location;
- private final String affinityGroup;
- private final String label;
- private final String description;
- private final Status status;
- private final Date created;
- private final Date lastModified;
- private final Map<String, String> extendedProperties;
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof HostedService) {
- HostedService that = HostedService.class.cast(object);
- return equal(name, that.name)
- && equal(location, that.location)
- && equal(affinityGroup, that.affinityGroup)
- && equal(label, that.label)
- && equal(description, that.description)
- && equal(status, that.status)
- && equal(created, that.created)
- && equal(lastModified, that.lastModified)
- && equal(extendedProperties, that.extendedProperties);
- } else {
- return false;
- }
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(name, location, affinityGroup, label, description, status, created, lastModified,
- extendedProperties);
- }
-
- @Override
- public String toString() {
- return toStringHelper(this)
- .add("name", name)
- .add("location", location)
- .add("affinityGroup", affinityGroup)
- .add("label", label)
- .add("description", description)
- .add("status", status)
- .add("created", created)
- .add("lastModified", lastModified)
- .add("extendedProperties", extendedProperties).toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/features/CloudServiceApi.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/features/CloudServiceApi.java b/azurecompute/src/main/java/org/jclouds/azurecompute/features/CloudServiceApi.java
new file mode 100644
index 0000000..9cc8b5e
--- /dev/null
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/features/CloudServiceApi.java
@@ -0,0 +1,130 @@
+/*
+ * 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.features;
+
+import static javax.ws.rs.core.MediaType.APPLICATION_XML;
+import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
+import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
+
+import java.util.List;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+
+import org.jclouds.azurecompute.domain.CloudService;
+import org.jclouds.azurecompute.functions.Base64EncodeLabel;
+import org.jclouds.azurecompute.functions.ParseRequestIdHeader;
+import org.jclouds.azurecompute.xml.CloudServiceHandler;
+import org.jclouds.azurecompute.xml.ListCloudServicesHandler;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.Headers;
+import org.jclouds.rest.annotations.ParamParser;
+import org.jclouds.rest.annotations.Payload;
+import org.jclouds.rest.annotations.PayloadParam;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * The Service Management API includes operations for managing the cloud services beneath your
+ * subscription.
+ *
+ * @see <a href="http://msdn.microsoft.com/en-us/library/ee460812">docs</a>
+ */
+@Path("/services/hostedservices")
+@Headers(keys = "x-ms-version", values = "{jclouds.api-version}")
+@Consumes(APPLICATION_XML)
+public interface CloudServiceApi {
+
+ /**
+ * The List Cloud Services operation lists the cloud services available under the current
+ * subscription.
+ *
+ * @return the response object
+ */
+ @Named("ListCloudServices")
+ @GET
+ @QueryParams(keys = "embed-detail", values = "true")
+ @XMLResponseParser(ListCloudServicesHandler.class)
+ @Fallback(EmptyListOnNotFoundOr404.class)
+ List<CloudService> list();
+
+ /**
+ * The Create Cloud Service operation creates a new cloud service in Windows Azure.
+ *
+ * @param name
+ * A name for the cloud service that is unique within Windows Azure. This name is the
+ * DNS prefix name and can be used to access the cloud service.
+ *
+ * For example: http://name.cloudapp.net//
+ * @param label
+ * The name can be used identify the storage account for your tracking purposes. The
+ * name can be up to 100 characters in length.
+ * @param location
+ * The location where the cloud service will be created.
+ * @return the requestId to track this async request progress
+ *
+ * @see <a href="http://msdn.microsoft.com/en-us/library/ee460812">docs</a>
+ */
+ @Named("CreateCloudService")
+ @POST
+ @Produces(APPLICATION_XML)
+ @ResponseParser(ParseRequestIdHeader.class)
+ @Payload("<CreateHostedService xmlns=\"http://schemas.microsoft.com/windowsazure\"><ServiceName>{name}</ServiceName><Label>{label}</Label><Location>{location}</Location></CreateHostedService>")
+ String createWithLabelInLocation(@PayloadParam("name") String name,
+ @PayloadParam("label") @ParamParser(Base64EncodeLabel.class) String label,
+ @PayloadParam("location") String location);
+
+ /**
+ * The Get Cloud Service Properties operation retrieves system properties for the specified
+ * cloud service. These properties include the service name and service type; the name of the
+ * affinity group to which the service belongs, or its location if it is not part of an affinity
+ * group.
+ *
+ * @param name
+ * the unique DNS Prefix value in the Windows Azure Management Portal
+ */
+ @Named("GetCloudServiceProperties")
+ @GET
+ @Path("/{name}")
+ @QueryParams(keys = "embed-detail", values = "true")
+ @XMLResponseParser(CloudServiceHandler.class)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable CloudService get(@PathParam("name") String name);
+
+ /**
+ * The Delete Cloud Service operation deletes the specified cloud service from Windows Azure.
+ *
+ * @param name
+ * the unique DNS Prefix value in the Windows Azure Management Portal
+ *
+ * @return request id or null, if not found
+ */
+ @Named("DeleteCloudService")
+ @DELETE
+ @Path("/{name}")
+ @Fallback(NullOnNotFoundOr404.class)
+ @ResponseParser(ParseRequestIdHeader.class)
+ String delete(@PathParam("name") String name);
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/features/HostedServiceApi.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/features/HostedServiceApi.java b/azurecompute/src/main/java/org/jclouds/azurecompute/features/HostedServiceApi.java
deleted file mode 100644
index f8d1502..0000000
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/features/HostedServiceApi.java
+++ /dev/null
@@ -1,130 +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.features;
-
-import static javax.ws.rs.core.MediaType.APPLICATION_XML;
-import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
-import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
-
-import java.util.List;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-
-import org.jclouds.azurecompute.domain.HostedService;
-import org.jclouds.azurecompute.functions.Base64EncodeLabel;
-import org.jclouds.azurecompute.functions.ParseRequestIdHeader;
-import org.jclouds.azurecompute.xml.HostedServiceHandler;
-import org.jclouds.azurecompute.xml.ListHostedServicesHandler;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.Headers;
-import org.jclouds.rest.annotations.ParamParser;
-import org.jclouds.rest.annotations.Payload;
-import org.jclouds.rest.annotations.PayloadParam;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.ResponseParser;
-import org.jclouds.rest.annotations.XMLResponseParser;
-
-/**
- * The Service Management API includes operations for managing the hosted services beneath your
- * subscription.
- *
- * @see <a href="http://msdn.microsoft.com/en-us/library/ee460812">docs</a>
- */
-@Path("/services/hostedservices")
-@Headers(keys = "x-ms-version", values = "{jclouds.api-version}")
-@Consumes(APPLICATION_XML)
-public interface HostedServiceApi {
-
- /**
- * The List Hosted Services operation lists the hosted services available under the current
- * subscription.
- *
- * @return the response object
- */
- @Named("ListHostedServices")
- @GET
- @QueryParams(keys = "embed-detail", values = "true")
- @XMLResponseParser(ListHostedServicesHandler.class)
- @Fallback(EmptyListOnNotFoundOr404.class)
- List<HostedService> list();
-
- /**
- * The Create Hosted Service operation creates a new hosted service in Windows Azure.
- *
- * @param name
- * A name for the hosted service that is unique within Windows Azure. This name is the
- * DNS prefix name and can be used to access the hosted service.
- *
- * For example: http://name.cloudapp.net//
- * @param label
- * The name can be used identify the storage account for your tracking purposes. The
- * name can be up to 100 characters in length.
- * @param location
- * The location where the hosted service will be created.
- * @return the requestId to track this async request progress
- *
- * @see <a href="http://msdn.microsoft.com/en-us/library/ee460812">docs</a>
- */
- @Named("CreateHostedService")
- @POST
- @Produces(APPLICATION_XML)
- @ResponseParser(ParseRequestIdHeader.class)
- @Payload("<CreateHostedService xmlns=\"http://schemas.microsoft.com/windowsazure\"><ServiceName>{name}</ServiceName><Label>{label}</Label><Location>{location}</Location></CreateHostedService>")
- String createWithLabelInLocation(@PayloadParam("name") String name,
- @PayloadParam("label") @ParamParser(Base64EncodeLabel.class) String label,
- @PayloadParam("location") String location);
-
- /**
- * The Get Hosted Service Properties operation retrieves system properties for the specified
- * hosted service. These properties include the service name and service type; the name of the
- * affinity group to which the service belongs, or its location if it is not part of an affinity
- * group.
- *
- * @param name
- * the unique DNS Prefix value in the Windows Azure Management Portal
- */
- @Named("GetHostedServiceProperties")
- @GET
- @Path("/{name}")
- @QueryParams(keys = "embed-detail", values = "true")
- @XMLResponseParser(HostedServiceHandler.class)
- @Fallback(NullOnNotFoundOr404.class)
- @Nullable HostedService get(@PathParam("name") String name);
-
- /**
- * The Delete Hosted Service operation deletes the specified hosted service from Windows Azure.
- *
- * @param name
- * the unique DNS Prefix value in the Windows Azure Management Portal
- *
- * @return request id or null, if not found
- */
- @Named("DeleteHostedService")
- @DELETE
- @Path("/{name}")
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(ParseRequestIdHeader.class)
- String delete(@PathParam("name") String name);
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java b/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java
index 7ccad03..3ca54c3 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/features/ImageApi.java
@@ -56,7 +56,7 @@ import org.jclouds.rest.annotations.XMLResponseParser;
public interface ImageApi {
/**
- * The List Hosted Services operation lists the hosted services available under the current
+ * The List Cloud Services operation lists the cloud services available under the current
* subscription.
*/
@Named("ListImages")
@@ -87,7 +87,7 @@ public interface ImageApi {
@BinderParam(ImageParamsToXML.class) ImageParams params);
/**
- * The Delete Hosted Service operation deletes the specified hosted service from Windows Azure.
+ * The Delete Cloud Service operation deletes the specified cloud service from Windows Azure.
*
* @param imageName
* the unique DNS Prefix value in the Windows Azure Management Portal
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/features/LocationApi.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/features/LocationApi.java b/azurecompute/src/main/java/org/jclouds/azurecompute/features/LocationApi.java
index 1621139..2a77e68 100644
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/features/LocationApi.java
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/features/LocationApi.java
@@ -32,7 +32,7 @@ import static org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
/**
* The Service Management API includes operations for listing the available data center locations
- * for a hosted service in your subscription.
+ * for a cloud service in your subscription.
* <p/>
*
* @see <a href="http://msdn.microsoft.com/en-us/library/gg441299" />
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/CloudServiceHandler.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/CloudServiceHandler.java b/azurecompute/src/main/java/org/jclouds/azurecompute/xml/CloudServiceHandler.java
new file mode 100644
index 0000000..f7e1833
--- /dev/null
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/xml/CloudServiceHandler.java
@@ -0,0 +1,127 @@
+/*
+ * 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.xml;
+
+import static com.google.common.base.CaseFormat.UPPER_CAMEL;
+import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE;
+import static com.google.common.base.Charsets.UTF_8;
+import static com.google.common.io.BaseEncoding.base64;
+import static org.jclouds.util.SaxUtils.currentOrNull;
+
+import java.util.Date;
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import org.jclouds.azurecompute.domain.CloudService;
+import org.jclouds.date.DateService;
+import org.jclouds.http.functions.ParseSax;
+import org.xml.sax.Attributes;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+
+/**
+ * @see <a href="http://msdn.microsoft.com/en-us/library/gg441293" >Response body description</a>
+ */
+public final class CloudServiceHandler extends ParseSax.HandlerForGeneratedRequestWithResult<CloudService> {
+ private String name;
+ private String location;
+ private String affinityGroup;
+ private String label;
+ private String description;
+ private CloudService.Status status;
+ private Date created;
+ private Date lastModified;
+ private Map<String, String> extendedProperties = Maps.newLinkedHashMap();
+
+ private boolean inHostedServiceProperties;
+ private String propertyName;
+ private StringBuilder currentText = new StringBuilder();
+ private final DateService dateService;
+
+ @Inject CloudServiceHandler(DateService dateService) {
+ this.dateService = dateService;
+ }
+
+ @Override public CloudService getResult() {
+ CloudService result = CloudService.create(name, location, affinityGroup, label, description, status, created, //
+ lastModified, ImmutableMap.copyOf(extendedProperties));
+ resetState(); // handler is called in a loop.
+ return result;
+ }
+
+ private void resetState() {
+ name = description = location = affinityGroup = label = null;
+ status = null;
+ created = lastModified = null;
+ extendedProperties.clear();
+ inHostedServiceProperties = false;
+ propertyName = null;
+ }
+
+ @Override public void startElement(String ignoredUri, String ignoredLocalName, String qName, Attributes ignoredAttributes) {
+ if (qName.equals("HostedServiceProperties")) {
+ inHostedServiceProperties = true;
+ }
+ }
+
+ @Override public void endElement(String ignoredUri, String ignoredName, String qName) {
+ if (qName.equals("HostedServiceProperties")) {
+ inHostedServiceProperties = false;
+ } else if (inHostedServiceProperties) {
+ if (qName.equals("DateCreated")) {
+ created = dateService.iso8601SecondsDateParse(currentOrNull(currentText));
+ } else if (qName.equals("DateLastModified")) {
+ lastModified = dateService.iso8601SecondsDateParse(currentOrNull(currentText));
+ } else if (qName.equals("Status")) {
+ String statusText = currentOrNull(currentText);
+ if (statusText != null) {
+ status = status(statusText);
+ }
+ } else if (qName.equals("Name")) {
+ propertyName = currentOrNull(currentText);
+ } else if (qName.equals("Value")) {
+ extendedProperties.put(propertyName, currentOrNull(currentText));
+ propertyName = null;
+ } else if (qName.equals("Description")) {
+ description = currentOrNull(currentText);
+ } else if (qName.equals("Location")) {
+ location = currentOrNull(currentText);
+ } else if (qName.equals("AffinityGroup")) {
+ affinityGroup = currentOrNull(currentText);
+ } else if (qName.equals("Label")) {
+ label = new String(base64().decode(currentOrNull(currentText)), UTF_8);
+ }
+ } else if (qName.equals("ServiceName")) {
+ name = currentOrNull(currentText);
+ }
+ currentText.setLength(0);
+ }
+
+ @Override public void characters(char ch[], int start, int length) {
+ currentText.append(ch, start, length);
+ }
+
+ private static CloudService.Status status(String status) {
+ try {
+ return CloudService.Status.valueOf(UPPER_CAMEL.to(UPPER_UNDERSCORE, status));
+ } catch (IllegalArgumentException e) {
+ return CloudService.Status.UNRECOGNIZED;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/HostedServiceHandler.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/HostedServiceHandler.java b/azurecompute/src/main/java/org/jclouds/azurecompute/xml/HostedServiceHandler.java
deleted file mode 100644
index 6bbe403..0000000
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/HostedServiceHandler.java
+++ /dev/null
@@ -1,127 +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.xml;
-
-import static com.google.common.base.CaseFormat.UPPER_CAMEL;
-import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE;
-import static com.google.common.base.Charsets.UTF_8;
-import static com.google.common.io.BaseEncoding.base64;
-import static org.jclouds.util.SaxUtils.currentOrNull;
-
-import java.util.Date;
-import java.util.Map;
-
-import javax.inject.Inject;
-
-import org.jclouds.azurecompute.domain.HostedService;
-import org.jclouds.date.DateService;
-import org.jclouds.http.functions.ParseSax;
-import org.xml.sax.Attributes;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-
-/**
- * @see <a href="http://msdn.microsoft.com/en-us/library/gg441293" >Response body description</a>
- */
-public final class HostedServiceHandler extends ParseSax.HandlerForGeneratedRequestWithResult<HostedService> {
- private String name;
- private String location;
- private String affinityGroup;
- private String label;
- private String description;
- private HostedService.Status status;
- private Date created;
- private Date lastModified;
- private Map<String, String> extendedProperties = Maps.newLinkedHashMap();
-
- private boolean inHostedServiceProperties;
- private String propertyName;
- private StringBuilder currentText = new StringBuilder();
- private final DateService dateService;
-
- @Inject HostedServiceHandler(DateService dateService) {
- this.dateService = dateService;
- }
-
- @Override public HostedService getResult() {
- HostedService result = HostedService.create(name, location, affinityGroup, label, description, status, created, //
- lastModified, ImmutableMap.copyOf(extendedProperties));
- resetState(); // handler is called in a loop.
- return result;
- }
-
- private void resetState() {
- name = description = location = affinityGroup = label = null;
- status = null;
- created = lastModified = null;
- extendedProperties.clear();
- inHostedServiceProperties = false;
- propertyName = null;
- }
-
- @Override public void startElement(String ignoredUri, String ignoredLocalName, String qName, Attributes ignoredAttributes) {
- if (qName.equals("HostedServiceProperties")) {
- inHostedServiceProperties = true;
- }
- }
-
- @Override public void endElement(String ignoredUri, String ignoredName, String qName) {
- if (qName.equals("HostedServiceProperties")) {
- inHostedServiceProperties = false;
- } else if (inHostedServiceProperties) {
- if (qName.equals("DateCreated")) {
- created = dateService.iso8601SecondsDateParse(currentOrNull(currentText));
- } else if (qName.equals("DateLastModified")) {
- lastModified = dateService.iso8601SecondsDateParse(currentOrNull(currentText));
- } else if (qName.equals("Status")) {
- String statusText = currentOrNull(currentText);
- if (statusText != null) {
- status = status(statusText);
- }
- } else if (qName.equals("Name")) {
- propertyName = currentOrNull(currentText);
- } else if (qName.equals("Value")) {
- extendedProperties.put(propertyName, currentOrNull(currentText));
- propertyName = null;
- } else if (qName.equals("Description")) {
- description = currentOrNull(currentText);
- } else if (qName.equals("Location")) {
- location = currentOrNull(currentText);
- } else if (qName.equals("AffinityGroup")) {
- affinityGroup = currentOrNull(currentText);
- } else if (qName.equals("Label")) {
- label = new String(base64().decode(currentOrNull(currentText)), UTF_8);
- }
- } else if (qName.equals("ServiceName")) {
- name = currentOrNull(currentText);
- }
- currentText.setLength(0);
- }
-
- @Override public void characters(char ch[], int start, int length) {
- currentText.append(ch, start, length);
- }
-
- private static HostedService.Status status(String status) {
- try {
- return HostedService.Status.valueOf(UPPER_CAMEL.to(UPPER_UNDERSCORE, status));
- } catch (IllegalArgumentException e) {
- return HostedService.Status.UNRECOGNIZED;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/ListCloudServicesHandler.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/ListCloudServicesHandler.java b/azurecompute/src/main/java/org/jclouds/azurecompute/xml/ListCloudServicesHandler.java
new file mode 100644
index 0000000..48152d7
--- /dev/null
+++ b/azurecompute/src/main/java/org/jclouds/azurecompute/xml/ListCloudServicesHandler.java
@@ -0,0 +1,69 @@
+/*
+ * 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.xml;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.jclouds.azurecompute.domain.CloudService;
+import org.jclouds.http.functions.ParseSax;
+import org.xml.sax.Attributes;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableList.Builder;
+
+/**
+ * @see <a href="http://msdn.microsoft.com/en-us/library/ee460781">Response body description</a>
+ */
+public final class ListCloudServicesHandler extends ParseSax.HandlerForGeneratedRequestWithResult<List<CloudService>> {
+ private boolean inHostedService;
+ private final CloudServiceHandler cloudServiceHandler;
+ private final Builder<CloudService> hostedServices = ImmutableList.builder();
+
+ @Inject ListCloudServicesHandler(CloudServiceHandler cloudServiceHandler) {
+ this.cloudServiceHandler = cloudServiceHandler;
+ }
+
+ @Override public List<CloudService> getResult() {
+ return hostedServices.build();
+ }
+
+ @Override public void startElement(String url, String name, String qName, Attributes attributes) {
+ if (qName.equals("HostedService")) {
+ inHostedService = true;
+ }
+ if (inHostedService) {
+ cloudServiceHandler.startElement(url, name, qName, attributes);
+ }
+ }
+
+ @Override public void endElement(String uri, String name, String qName) {
+ if (qName.equals("HostedService")) {
+ inHostedService = false;
+ hostedServices.add(cloudServiceHandler.getResult());
+ } else if (inHostedService) {
+ cloudServiceHandler.endElement(uri, name, qName);
+ }
+ }
+
+ @Override public void characters(char ch[], int start, int length) {
+ if (inHostedService) {
+ cloudServiceHandler.characters(ch, start, length);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/ListHostedServicesHandler.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/ListHostedServicesHandler.java b/azurecompute/src/main/java/org/jclouds/azurecompute/xml/ListHostedServicesHandler.java
deleted file mode 100644
index 15bb5b2..0000000
--- a/azurecompute/src/main/java/org/jclouds/azurecompute/xml/ListHostedServicesHandler.java
+++ /dev/null
@@ -1,69 +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.xml;
-
-import java.util.List;
-
-import javax.inject.Inject;
-
-import org.jclouds.azurecompute.domain.HostedService;
-import org.jclouds.http.functions.ParseSax;
-import org.xml.sax.Attributes;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableList.Builder;
-
-/**
- * @see <a href="http://msdn.microsoft.com/en-us/library/ee460781">Response body description</a>
- */
-public final class ListHostedServicesHandler extends ParseSax.HandlerForGeneratedRequestWithResult<List<HostedService>> {
- private boolean inHostedService;
- private final HostedServiceHandler hostedServiceHandler;
- private final Builder<HostedService> hostedServices = ImmutableList.builder();
-
- @Inject ListHostedServicesHandler(HostedServiceHandler hostedServiceHandler) {
- this.hostedServiceHandler = hostedServiceHandler;
- }
-
- @Override public List<HostedService> getResult() {
- return hostedServices.build();
- }
-
- @Override public void startElement(String url, String name, String qName, Attributes attributes) {
- if (qName.equals("HostedService")) {
- inHostedService = true;
- }
- if (inHostedService) {
- hostedServiceHandler.startElement(url, name, qName, attributes);
- }
- }
-
- @Override public void endElement(String uri, String name, String qName) {
- if (qName.equals("HostedService")) {
- inHostedService = false;
- hostedServices.add(hostedServiceHandler.getResult());
- } else if (inHostedService) {
- hostedServiceHandler.endElement(uri, name, qName);
- }
- }
-
- @Override public void characters(char ch[], int start, int length) {
- if (inHostedService) {
- hostedServiceHandler.characters(ch, start, length);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/test/java/org/jclouds/azurecompute/features/CloudServiceApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/CloudServiceApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/CloudServiceApiLiveTest.java
new file mode 100644
index 0000000..fb0e915
--- /dev/null
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/CloudServiceApiLiveTest.java
@@ -0,0 +1,143 @@
+/*
+ * 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.features;
+
+import static java.util.concurrent.TimeUnit.SECONDS;
+import static org.jclouds.azurecompute.domain.CloudService.Status.UNRECOGNIZED;
+import static org.jclouds.util.Predicates2.retry;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+import java.util.List;
+import java.util.logging.Logger;
+
+import org.jclouds.azurecompute.domain.CloudService;
+import org.jclouds.azurecompute.domain.CloudService.Status;
+import org.jclouds.azurecompute.domain.Operation;
+import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
+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;
+
+@Test(groups = "live", testName = "CloudServiceApiLiveTest")
+public class CloudServiceApiLiveTest extends BaseAzureComputeApiLiveTest {
+
+ public static final String CLOUD_SERVICE = (System.getProperty("user.name") + "-jclouds-cloudService").toLowerCase();
+
+ private Predicate<String> operationSucceeded;
+ private Predicate<CloudService> cloudServiceCreated;
+ private Predicate<CloudService> cloudServiceGone;
+
+ private String location;
+
+ @BeforeClass(groups = { "integration", "live" })
+ public void setup() {
+ super.setup();
+ // TODO: filter locations on those who have compute
+ location = Iterables.get(api.getLocationApi().list(), 0).name();
+ operationSucceeded = retry(new Predicate<String>() {
+ public boolean apply(String input) {
+ return api.getOperationApi().get(input).status() == Operation.Status.SUCCEEDED;
+ }
+ }, 600, 5, 5, SECONDS);
+ cloudServiceCreated = retry(new Predicate<CloudService>() {
+ public boolean apply(CloudService input) {
+ return api().get(input.name()).status() == Status.CREATED;
+ }
+ }, 600, 5, 5, SECONDS);
+ cloudServiceGone = retry(new Predicate<CloudService>() {
+ public boolean apply(CloudService input) {
+ return api().get(input.name()) == null;
+ }
+ }, 600, 5, 5, SECONDS);
+ }
+
+ private CloudService cloudService;
+
+ public void testCreate() {
+
+ String requestId = api().createWithLabelInLocation(CLOUD_SERVICE, CLOUD_SERVICE, location);
+ assertTrue(operationSucceeded.apply(requestId), requestId);
+ Logger.getAnonymousLogger().info("operation succeeded: " + requestId);
+
+ cloudService = api().get(CLOUD_SERVICE);
+ Logger.getAnonymousLogger().info("created cloudService: " + cloudService);
+
+ assertEquals(cloudService.name(), CLOUD_SERVICE);
+
+ checkHostedService(cloudService);
+
+ assertTrue(cloudServiceCreated.apply(cloudService), cloudService.toString());
+ cloudService = api().get(cloudService.name());
+ Logger.getAnonymousLogger().info("cloudService available: " + cloudService);
+
+ }
+
+ @Test(dependsOnMethods = "testCreate")
+ public void testDelete() {
+ String requestId = api().delete(cloudService.name());
+ assertTrue(operationSucceeded.apply(requestId), requestId);
+ Logger.getAnonymousLogger().info("operation succeeded: " + requestId);
+
+ assertTrue(cloudServiceGone.apply(cloudService), cloudService.toString());
+ Logger.getAnonymousLogger().info("cloudService deleted: " + cloudService);
+ }
+
+ @Override @AfterClass(groups = "live")
+ protected void tearDown() {
+ String requestId = api().delete(CLOUD_SERVICE);
+ if (requestId != null) {
+ operationSucceeded.apply(requestId);
+ }
+
+ super.tearDown();
+ }
+
+ public void testList() {
+ List<CloudService> response = api().list();
+
+ for (CloudService cloudService : response) {
+ checkHostedService(cloudService);
+ }
+
+ if (!response.isEmpty()) {
+ CloudService cloudService = response.iterator().next();
+ assertEquals(api().get(cloudService.name()), cloudService);
+ }
+ }
+
+ private void checkHostedService(CloudService cloudService) {
+ assertNotNull(cloudService.name(), "ServiceName cannot be null for " + cloudService);
+ assertTrue(cloudService.location() != null || cloudService.affinityGroup() != null,
+ "Location or AffinityGroup must be present for " + cloudService);
+ assertNotNull(cloudService.label(), "Label cannot be null for " + cloudService);
+ assertNotNull(cloudService.status(), "Status cannot be null for " + cloudService);
+ assertNotEquals(cloudService.status(), UNRECOGNIZED, "Status cannot be UNRECOGNIZED for " + cloudService);
+ assertNotNull(cloudService.created(), "Created cannot be null for " + cloudService);
+ assertNotNull(cloudService.lastModified(), "LastModified cannot be null for " + cloudService);
+ assertNotNull(cloudService.extendedProperties(), "ExtendedProperties cannot be null for " + cloudService);
+ }
+
+ private CloudServiceApi api() {
+ return api.getCloudServiceApi();
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/test/java/org/jclouds/azurecompute/features/CloudServiceApiMockTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/CloudServiceApiMockTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/CloudServiceApiMockTest.java
new file mode 100644
index 0000000..a929fff
--- /dev/null
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/features/CloudServiceApiMockTest.java
@@ -0,0 +1,138 @@
+/*
+ * 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.features;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
+import org.jclouds.azurecompute.internal.BaseAzureComputeApiMockTest;
+import org.jclouds.azurecompute.xml.CloudServiceHandlerTest;
+import org.jclouds.azurecompute.xml.ListCloudServicesHandlerTest;
+import org.testng.annotations.Test;
+
+import com.squareup.okhttp.mockwebserver.MockResponse;
+import com.squareup.okhttp.mockwebserver.MockWebServer;
+
+@Test(groups = "unit", testName = "CloudServiceApiMockTest")
+public class CloudServiceApiMockTest extends BaseAzureComputeApiMockTest {
+
+ public void listWhenFound() throws Exception {
+ MockWebServer server = mockAzureManagementServer();
+ server.enqueue(xmlResponse("/hostedservices.xml"));
+
+ try {
+ CloudServiceApi api = api(server.getUrl("/")).getCloudServiceApi();
+
+ assertEquals(api.list(), ListCloudServicesHandlerTest.expected());
+
+ assertSent(server, "GET", "/services/hostedservices?embed-detail=true");
+ } finally {
+ server.shutdown();
+ }
+ }
+
+ public void listWhenNotFound() throws Exception {
+ MockWebServer server = mockAzureManagementServer();
+ server.enqueue(new MockResponse().setResponseCode(404));
+
+ try {
+ CloudServiceApi api = api(server.getUrl("/")).getCloudServiceApi();
+
+ assertTrue(api.list().isEmpty());
+
+ assertSent(server, "GET", "/services/hostedservices?embed-detail=true");
+ } finally {
+ server.shutdown();
+ }
+ }
+
+ public void getWhenFound() throws Exception {
+ MockWebServer server = mockAzureManagementServer();
+ server.enqueue(xmlResponse("/hostedservice.xml"));
+
+ try {
+ CloudServiceApi api = api(server.getUrl("/")).getCloudServiceApi();
+
+ assertEquals(api.get("myservice"), CloudServiceHandlerTest.expected());
+
+ assertSent(server, "GET", "/services/hostedservices/myservice?embed-detail=true");
+ } finally {
+ server.shutdown();
+ }
+ }
+
+ public void getWhenNotFound() throws Exception {
+ MockWebServer server = mockAzureManagementServer();
+ server.enqueue(new MockResponse().setResponseCode(404));
+
+ try {
+ CloudServiceApi api = api(server.getUrl("/")).getCloudServiceApi();
+
+ assertNull(api.get("myservice"));
+
+ assertSent(server, "GET", "/services/hostedservices/myservice?embed-detail=true");
+ } finally {
+ server.shutdown();
+ }
+ }
+
+ public void createWithLabelInLocation() throws Exception {
+ MockWebServer server = mockAzureManagementServer();
+ server.enqueue(requestIdResponse("request-1"));
+
+ try {
+ CloudServiceApi api = api(server.getUrl("/")).getCloudServiceApi();
+
+ assertEquals(api.createWithLabelInLocation("myservice", "service mine", "West US"), "request-1");
+
+ assertSent(server, "POST", "/services/hostedservices", "/create_hostedservice_location.xml");
+ } finally {
+ server.shutdown();
+ }
+ }
+
+ public void deleteWhenFound() throws Exception {
+ MockWebServer server = mockAzureManagementServer();
+ server.enqueue(requestIdResponse("request-1"));
+
+ try {
+ CloudServiceApi api = api(server.getUrl("/")).getCloudServiceApi();
+
+ assertEquals(api.delete("myservice"), "request-1");
+
+ assertSent(server, "DELETE", "/services/hostedservices/myservice");
+ } finally {
+ server.shutdown();
+ }
+ }
+
+ public void deleteWhenNotFound() throws Exception {
+ MockWebServer server = mockAzureManagementServer();
+ server.enqueue(new MockResponse().setResponseCode(404));
+
+ try {
+ CloudServiceApi api = api(server.getUrl("/")).getCloudServiceApi();
+
+ assertNull(api.delete("myservice"));
+
+ assertSent(server, "DELETE", "/services/hostedservices/myservice");
+ } finally {
+ server.shutdown();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/test/java/org/jclouds/azurecompute/features/HostedServiceApiLiveTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/HostedServiceApiLiveTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/HostedServiceApiLiveTest.java
deleted file mode 100644
index 08f53b4..0000000
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/HostedServiceApiLiveTest.java
+++ /dev/null
@@ -1,145 +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.features;
-
-import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.jclouds.azurecompute.domain.HostedService.Status.UNRECOGNIZED;
-import static org.jclouds.util.Predicates2.retry;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import java.util.List;
-import java.util.logging.Logger;
-
-import org.jclouds.azurecompute.domain.HostedService;
-import org.jclouds.azurecompute.domain.HostedService.Status;
-import org.jclouds.azurecompute.domain.Operation;
-import org.jclouds.azurecompute.internal.BaseAzureComputeApiLiveTest;
-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;
-
-@Test(groups = "live", testName = "HostedServiceApiLiveTest")
-public class HostedServiceApiLiveTest extends BaseAzureComputeApiLiveTest {
-
- public static final String HOSTED_SERVICE = (System.getProperty("user.name") + "-jclouds-hostedService")
- .toLowerCase();
-
- private Predicate<String> operationSucceeded;
- private Predicate<HostedService> hostedServiceCreated;
- private Predicate<HostedService> hostedServiceGone;
-
- private String location;
-
- @BeforeClass(groups = { "integration", "live" })
- public void setup() {
- super.setup();
- // TODO: filter locations on those who have compute
- location = Iterables.get(api.getLocationApi().list(), 0).name();
- operationSucceeded = retry(new Predicate<String>() {
- public boolean apply(String input) {
- return api.getOperationApi().get(input).status() == Operation.Status.SUCCEEDED;
- }
- }, 600, 5, 5, SECONDS);
- hostedServiceCreated = retry(new Predicate<HostedService>() {
- public boolean apply(HostedService input) {
- return api().get(input.name()).status() == Status.CREATED;
- }
- }, 600, 5, 5, SECONDS);
- hostedServiceGone = retry(new Predicate<HostedService>() {
- public boolean apply(HostedService input) {
- return api().get(input.name()) == null;
- }
- }, 600, 5, 5, SECONDS);
- }
-
- private HostedService hostedService;
-
- public void testCreateHostedService() {
-
- String requestId = api().createWithLabelInLocation(HOSTED_SERVICE, HOSTED_SERVICE, location);
- assertTrue(operationSucceeded.apply(requestId), requestId);
- Logger.getAnonymousLogger().info("operation succeeded: " + requestId);
-
- hostedService = api().get(HOSTED_SERVICE);
- Logger.getAnonymousLogger().info("created hostedService: " + hostedService);
-
- assertEquals(hostedService.name(), HOSTED_SERVICE);
-
- checkHostedService(hostedService);
-
- assertTrue(hostedServiceCreated.apply(hostedService), hostedService.toString());
- hostedService = api().get(hostedService.name());
- Logger.getAnonymousLogger().info("hostedService available: " + hostedService);
-
- }
-
- @Test(dependsOnMethods = "testCreateHostedService")
- public void testDeleteHostedService() {
- String requestId = api().delete(hostedService.name());
- assertTrue(operationSucceeded.apply(requestId), requestId);
- Logger.getAnonymousLogger().info("operation succeeded: " + requestId);
-
- assertTrue(hostedServiceGone.apply(hostedService), hostedService.toString());
- Logger.getAnonymousLogger().info("hostedService deleted: " + hostedService);
- }
-
- @Override @AfterClass(groups = "live")
- protected void tearDown() {
- String requestId = api().delete(HOSTED_SERVICE);
- if (requestId != null) {
- operationSucceeded.apply(requestId);
- }
-
- super.tearDown();
- }
-
- @Test
- protected void testList() {
- List<HostedService> response = api().list();
-
- for (HostedService hostedService : api().list()) {
- checkHostedService(hostedService);
- }
-
- if (response.size() > 0) {
- HostedService hostedService = response.iterator().next();
- assertEquals(api().get(hostedService.name()), hostedService);
- }
- }
-
- private void checkHostedService(HostedService hostedService) {
- assertNotNull(hostedService.name(), "ServiceName cannot be null for " + hostedService);
- assertTrue(hostedService.location() != null || hostedService.affinityGroup() != null,
- "Location or AffinityGroup must be present for " + hostedService);
- assertNotNull(hostedService.label(), "Label cannot be null for " + hostedService);
- assertNotNull(hostedService.status(), "Status cannot be null for " + hostedService);
- assertNotEquals(hostedService.status(), UNRECOGNIZED, "Status cannot be UNRECOGNIZED for " + hostedService);
- assertNotNull(hostedService.created(), "Created cannot be null for " + hostedService);
- assertNotNull(hostedService.lastModified(), "LastModified cannot be null for " + hostedService);
- assertNotNull(hostedService.extendedProperties(), "ExtendedProperties cannot be null for " + hostedService);
- }
-
- private HostedServiceApi api() {
- return api.getHostedServiceApi();
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/test/java/org/jclouds/azurecompute/features/HostedServiceApiMockTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/features/HostedServiceApiMockTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/features/HostedServiceApiMockTest.java
deleted file mode 100644
index 9d0cf80..0000000
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/features/HostedServiceApiMockTest.java
+++ /dev/null
@@ -1,138 +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.features;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
-import org.jclouds.azurecompute.internal.BaseAzureComputeApiMockTest;
-import org.jclouds.azurecompute.xml.HostedServiceHandlerTest;
-import org.jclouds.azurecompute.xml.ListHostedServicesHandlerTest;
-import org.testng.annotations.Test;
-
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
-
-@Test(groups = "unit", testName = "HostedServiceApiMockTest")
-public class HostedServiceApiMockTest extends BaseAzureComputeApiMockTest {
-
- public void listWhenFound() throws Exception {
- MockWebServer server = mockAzureManagementServer();
- server.enqueue(xmlResponse("/hostedservices.xml"));
-
- try {
- HostedServiceApi api = api(server.getUrl("/")).getHostedServiceApi();
-
- assertEquals(api.list(), ListHostedServicesHandlerTest.expected());
-
- assertSent(server, "GET", "/services/hostedservices?embed-detail=true");
- } finally {
- server.shutdown();
- }
- }
-
- public void listWhenNotFound() throws Exception {
- MockWebServer server = mockAzureManagementServer();
- server.enqueue(new MockResponse().setResponseCode(404));
-
- try {
- HostedServiceApi api = api(server.getUrl("/")).getHostedServiceApi();
-
- assertTrue(api.list().isEmpty());
-
- assertSent(server, "GET", "/services/hostedservices?embed-detail=true");
- } finally {
- server.shutdown();
- }
- }
-
- public void getWhenFound() throws Exception {
- MockWebServer server = mockAzureManagementServer();
- server.enqueue(xmlResponse("/hostedservice.xml"));
-
- try {
- HostedServiceApi api = api(server.getUrl("/")).getHostedServiceApi();
-
- assertEquals(api.get("myservice"), HostedServiceHandlerTest.expected());
-
- assertSent(server, "GET", "/services/hostedservices/myservice?embed-detail=true");
- } finally {
- server.shutdown();
- }
- }
-
- public void getWhenNotFound() throws Exception {
- MockWebServer server = mockAzureManagementServer();
- server.enqueue(new MockResponse().setResponseCode(404));
-
- try {
- HostedServiceApi api = api(server.getUrl("/")).getHostedServiceApi();
-
- assertNull(api.get("myservice"));
-
- assertSent(server, "GET", "/services/hostedservices/myservice?embed-detail=true");
- } finally {
- server.shutdown();
- }
- }
-
- public void createWithLabelInLocation() throws Exception {
- MockWebServer server = mockAzureManagementServer();
- server.enqueue(requestIdResponse("request-1"));
-
- try {
- HostedServiceApi api = api(server.getUrl("/")).getHostedServiceApi();
-
- assertEquals(api.createWithLabelInLocation("myservice", "service mine", "West US"), "request-1");
-
- assertSent(server, "POST", "/services/hostedservices", "/create_hostedservice_location.xml");
- } finally {
- server.shutdown();
- }
- }
-
- public void deleteWhenFound() throws Exception {
- MockWebServer server = mockAzureManagementServer();
- server.enqueue(requestIdResponse("request-1"));
-
- try {
- HostedServiceApi api = api(server.getUrl("/")).getHostedServiceApi();
-
- assertEquals(api.delete("myservice"), "request-1");
-
- assertSent(server, "DELETE", "/services/hostedservices/myservice");
- } finally {
- server.shutdown();
- }
- }
-
- public void deleteWhenNotFound() throws Exception {
- MockWebServer server = mockAzureManagementServer();
- server.enqueue(new MockResponse().setResponseCode(404));
-
- try {
- HostedServiceApi api = api(server.getUrl("/")).getHostedServiceApi();
-
- assertNull(api.delete("myservice"));
-
- assertSent(server, "DELETE", "/services/hostedservices/myservice");
- } finally {
- server.shutdown();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/test/java/org/jclouds/azurecompute/xml/CloudServiceHandlerTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/xml/CloudServiceHandlerTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/xml/CloudServiceHandlerTest.java
new file mode 100644
index 0000000..5a71396
--- /dev/null
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/xml/CloudServiceHandlerTest.java
@@ -0,0 +1,55 @@
+/*
+ * 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.xml;
+
+import static org.testng.Assert.assertEquals;
+
+import java.io.InputStream;
+import java.util.Collections;
+
+import org.jclouds.azurecompute.domain.CloudService;
+import org.jclouds.azurecompute.domain.CloudService.Status;
+import org.jclouds.date.DateService;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.http.functions.BaseHandlerTest;
+import org.testng.annotations.Test;
+
+@Test(groups = "unit", testName = "HostedServiceHandlerTest")
+public class CloudServiceHandlerTest extends BaseHandlerTest {
+ private static final DateService DATE_SERVICE = new SimpleDateFormatDateService();
+
+ public void test() {
+ InputStream is = getClass().getResourceAsStream("/hostedservice.xml");
+ CloudService result = factory.create(new CloudServiceHandler(DATE_SERVICE)).parse(is);
+
+ assertEquals(result, expected());
+ }
+
+ public static CloudService expected() {
+ return CloudService.create( //
+ "neotys", // name
+ "West Europe", // location
+ null, // affinityGroup
+ "neotys", // label
+ "Implicitly created cloud service2012-08-06 14:55", // description
+ Status.CREATED, // status
+ DATE_SERVICE.iso8601SecondsDateParse("2012-08-06T14:55:17Z"), // created
+ DATE_SERVICE.iso8601SecondsDateParse("2012-08-06T15:50:34Z"), // lastModified
+ Collections.<String, String>emptyMap() // extendedProperties
+ );
+ }
+}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/test/java/org/jclouds/azurecompute/xml/HostedServiceHandlerTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/xml/HostedServiceHandlerTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/xml/HostedServiceHandlerTest.java
deleted file mode 100644
index aefdca4..0000000
--- a/azurecompute/src/test/java/org/jclouds/azurecompute/xml/HostedServiceHandlerTest.java
+++ /dev/null
@@ -1,55 +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.xml;
-
-import static org.testng.Assert.assertEquals;
-
-import java.io.InputStream;
-import java.util.Collections;
-
-import org.jclouds.azurecompute.domain.HostedService;
-import org.jclouds.azurecompute.domain.HostedService.Status;
-import org.jclouds.date.DateService;
-import org.jclouds.date.internal.SimpleDateFormatDateService;
-import org.jclouds.http.functions.BaseHandlerTest;
-import org.testng.annotations.Test;
-
-@Test(groups = "unit", testName = "HostedServiceHandlerTest")
-public class HostedServiceHandlerTest extends BaseHandlerTest {
- private static final DateService DATE_SERVICE = new SimpleDateFormatDateService();
-
- public void test() {
- InputStream is = getClass().getResourceAsStream("/hostedservice.xml");
- HostedService result = factory.create(new HostedServiceHandler(DATE_SERVICE)).parse(is);
-
- assertEquals(result, expected());
- }
-
- public static HostedService expected() {
- return HostedService.create( //
- "neotys", // name
- "West Europe", // location
- null, // affinityGroup
- "neotys", // label
- "Implicitly created hosted service2012-08-06 14:55", // description
- Status.CREATED, // status
- DATE_SERVICE.iso8601SecondsDateParse("2012-08-06T14:55:17Z"), // created
- DATE_SERVICE.iso8601SecondsDateParse("2012-08-06T15:50:34Z"), // lastModified
- Collections.<String, String>emptyMap() // extendedProperties
- );
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/1f907d2a/azurecompute/src/test/java/org/jclouds/azurecompute/xml/ListCloudServicesHandlerTest.java
----------------------------------------------------------------------
diff --git a/azurecompute/src/test/java/org/jclouds/azurecompute/xml/ListCloudServicesHandlerTest.java b/azurecompute/src/test/java/org/jclouds/azurecompute/xml/ListCloudServicesHandlerTest.java
new file mode 100644
index 0000000..1a99c06
--- /dev/null
+++ b/azurecompute/src/test/java/org/jclouds/azurecompute/xml/ListCloudServicesHandlerTest.java
@@ -0,0 +1,71 @@
+/*
+ * 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.xml;
+
+import static org.testng.Assert.assertEquals;
+
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.List;
+
+import org.jclouds.azurecompute.domain.CloudService;
+import org.jclouds.azurecompute.domain.CloudService.Status;
+import org.jclouds.date.DateService;
+import org.jclouds.date.internal.SimpleDateFormatDateService;
+import org.jclouds.http.functions.BaseHandlerTest;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+
+@Test(groups = "unit", testName = "ListHostedServicesHandlerTest")
+public class ListCloudServicesHandlerTest extends BaseHandlerTest {
+ private static final DateService DATE_SERVICE = new SimpleDateFormatDateService();
+
+ public void test() {
+ InputStream is = getClass().getResourceAsStream("/hostedservices.xml");
+ ListCloudServicesHandler handler = new ListCloudServicesHandler(new CloudServiceHandler(DATE_SERVICE));
+ List<CloudService> result = factory.create(handler).parse(is);
+
+ assertEquals(result, expected());
+ }
+
+ public static List<CloudService> expected() {
+ return ImmutableList.of( //
+ CloudService.create( //
+ "neotys", // name
+ "West Europe", // location
+ null, // affinityGroup
+ "neotys", // label
+ "Implicitly created cloud service2012-08-06 14:55", // description
+ Status.CREATED, // status
+ DATE_SERVICE.iso8601SecondsDateParse("2012-08-06T14:55:17Z"), // created
+ DATE_SERVICE.iso8601SecondsDateParse("2012-08-06T15:50:34Z"), // lastModified
+ Collections.<String, String>emptyMap() // extendedProperties
+ ), //
+ CloudService.create( //
+ "neotys3", // name
+ "West Europe", // location
+ null, // affinityGroup
+ "neotys3", // label
+ null, // description
+ Status.CREATED, // status
+ DATE_SERVICE.iso8601SecondsDateParse("2012-08-07T09:00:02Z"), // created
+ DATE_SERVICE.iso8601SecondsDateParse("2012-08-07T09:00:02Z"), // lastModified
+ Collections.<String, String>emptyMap() // extendedProperties
+ ));
+ }
+}