You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/08/20 11:36:30 UTC
[44/51] [abbrv] [partial] stratos git commit: Revert "Upgrading to
jclouds 1.9.1"
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java
new file mode 100644
index 0000000..dcb1942
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/DiskApi.java
@@ -0,0 +1,255 @@
+/*
+ * 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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
+
+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 javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.Disk;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.functions.internal.ParseDisks;
+import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+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.SkipEncoding;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.binders.BindToJsonPayload;
+
+/**
+ * Provides access to Disks via their REST API.
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/disks"/>
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+public interface DiskApi {
+
+ /**
+ * Returns the specified persistent disk resource.
+ *
+ * @param zone Name of the zone the disk is in.
+ * @param diskName name of the persistent disk resource to return.
+ * @return a Disk resource.
+ */
+ @Named("Disks:get")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks/{disk}")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Disk getInZone(@PathParam("zone") String zone, @PathParam("disk") String diskName);
+
+ /**
+ * Creates a persistent disk resource in the specified project specifying the size of the disk.
+ *
+ * @param diskName the name of disk.
+ * @param sizeGb the size of the disk
+ * @param zone the name of the zone where the disk is to be created.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Disks:insert")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks")
+ @OAuthScopes({COMPUTE_SCOPE})
+ @MapBinder(BindToJsonPayload.class)
+ Operation createInZone(@PayloadParam("name") String diskName,
+ @PayloadParam("sizeGb") int sizeGb,
+ @PathParam("zone") String zone);
+
+ /**
+ * Creates a persistent disk resource from the specified image, in the specified project,
+ * specifying the size of the disk.
+ *
+ * @param sourceImage fully qualified URL for the image to be copied.
+ * @param diskName the name of disk.
+ * @param sizeGb the size of the disk
+ * @param zone the name of the zone where the disk is to be created.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Disks:insert")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks")
+ @OAuthScopes({COMPUTE_SCOPE})
+ @MapBinder(BindToJsonPayload.class)
+ Operation createFromImageWithSizeInZone(@QueryParam("sourceImage") String sourceImage,
+ @PayloadParam("name") String diskName,
+ @PayloadParam("sizeGb") int sizeGb,
+ @PathParam("zone") String zone);
+
+ /**
+ * Creates a persistent disk resource from the specified image, in the specified project,
+ * with the default disk size.
+ *
+ * @param sourceImage fully qualified URL for the image to be copied.
+ * @param diskName the name of disk.
+ * @param zone the name of the zone where the disk is to be created.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Disks:insert")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks")
+ @OAuthScopes({COMPUTE_SCOPE})
+ @MapBinder(BindToJsonPayload.class)
+ Operation createFromImageInZone(@QueryParam("sourceImage") String sourceImage,
+ @PayloadParam("name") String diskName,
+ @PathParam("zone") String zone);
+
+ /**
+ * Deletes the specified persistent disk resource.
+ *
+ * @param zone the zone the disk is in.
+ * @param diskName name of the persistent disk resource to delete.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Disks:delete")
+ @DELETE
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks/{disk}")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Operation deleteInZone(@PathParam("zone") String zone, @PathParam("disk") String diskName);
+
+ /**
+ * @see DiskApi#listAtMarkerInZone(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Disks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseDisks.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Disk> listFirstPageInZone(@PathParam("zone") String zone);
+
+ /**
+ * @see DiskApi#listAtMarkerInZone(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Disks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseDisks.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Disk> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker);
+
+ /**
+ * Retrieves the listPage of persistent disk resources contained within the specified project and zone.
+ * By default the listPage as a maximum size of 100, if no options are provided or ListOptions#getMaxResults() has
+ * not been set.
+ *
+ * @param zone the zone to search in
+ * @param marker marks the beginning of the next list page
+ * @param listOptions listing options
+ * @return a page of the listPage
+ * @see ListOptions
+ * @see org.jclouds.googlecomputeengine.domain.ListPage
+ */
+ @Named("Disks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseDisks.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Disk> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker, ListOptions listOptions);
+
+ /**
+ * A paged version of DiskApi#listPageInZone(String)
+ *
+ * @param zone the zone to list in
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see PagedIterable
+ * @see DiskApi#listAtMarkerInZone(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Disks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseDisks.class)
+ @Transform(ParseDisks.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Disk> listInZone(@PathParam("zone") String zone);
+
+ @Named("Disks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseDisks.class)
+ @Transform(ParseDisks.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Disk> listInZone(@PathParam("zone") String zone, ListOptions options);
+
+ /**
+ * Create a snapshot of a given disk in a zone.
+ *
+ * @param zone the zone the disk is in.
+ * @param diskName the name of the disk.
+ * @param snapshotName the name for the snapshot to be craeted.
+ *
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Disks:createSnapshot")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/disks/{disk}/createSnapshot")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @MapBinder(BindToJsonPayload.class)
+ @Nullable
+ Operation createSnapshotInZone(@PathParam("zone") String zone,
+ @PathParam("disk") String diskName,
+ @PayloadParam("name") String snapshotName);
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java
new file mode 100644
index 0000000..79b2ec0
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/FirewallApi.java
@@ -0,0 +1,227 @@
+/*
+ * 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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
+
+import java.net.URI;
+
+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.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.Firewall;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.functions.internal.PATCH;
+import org.jclouds.googlecomputeengine.functions.internal.ParseFirewalls;
+import org.jclouds.googlecomputeengine.handlers.FirewallBinder;
+import org.jclouds.googlecomputeengine.options.FirewallOptions;
+import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+import org.jclouds.rest.annotations.BinderParam;
+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.SkipEncoding;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.binders.BindToJsonPayload;
+
+/**
+ * Provides access to Firewalls via their REST API.
+ * <p/>
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/firewalls"/>
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+public interface FirewallApi {
+ /**
+ * Returns the specified image resource.
+ *
+ * @param firewallName name of the firewall resource to return.
+ * @return an Firewall resource
+ */
+ @Named("Firewalls:get")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls/{firewall}")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Firewall get(@PathParam("firewall") String firewallName);
+
+ /**
+ * Creates a firewall resource in the specified project using the data included in the request.
+ *
+ * @param name the name of the firewall to be inserted.
+ * @param network the network to which to add the firewall
+ * @param firewallOptions the options of the firewall to add
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Firewalls:insert")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls")
+ @OAuthScopes({COMPUTE_SCOPE})
+ @MapBinder(FirewallBinder.class)
+ Operation createInNetwork(@PayloadParam("name") String name,
+ @PayloadParam("network") URI network,
+ @PayloadParam("options") FirewallOptions firewallOptions);
+
+ /**
+ * Updates the specified firewall resource with the data included in the request.
+ *
+ * @param firewallName the name firewall to be updated.
+ * @param firewallOptions the new firewall.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Firewalls:update")
+ @PUT
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls/{firewall}")
+ @OAuthScopes({COMPUTE_SCOPE})
+ Operation update(@PathParam("firewall") String firewallName,
+ @BinderParam(BindToJsonPayload.class) FirewallOptions firewallOptions);
+
+ /**
+ * Updates the specified firewall resource, with patch semantics, with the data included in the request.
+ *
+ * @param firewallName the name firewall to be updated.
+ * @param firewallOptions the new firewall.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Firewalls:patch")
+ @PATCH
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls/{firewall}")
+ @OAuthScopes({COMPUTE_SCOPE})
+ Operation patch(@PathParam("firewall") String firewallName,
+ @BinderParam(BindToJsonPayload.class) FirewallOptions firewallOptions);
+
+ /**
+ * Deletes the specified image resource.
+ *
+ * @param firewallName name of the firewall resource to delete.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field. If the image did not exist the result is null.
+ */
+ @Named("Firewalls:delete")
+ @DELETE
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls/{firewall}")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ Operation delete(@PathParam("firewall") String firewallName);
+
+ /**
+ * @see FirewallApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Firewalls:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseFirewalls.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Firewall> listFirstPage();
+
+ /**
+ * @see FirewallApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Firewalls:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseFirewalls.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Firewall> listAtMarker(@QueryParam("pageToken") @Nullable String marker);
+
+ /**
+ * Retrieves the list of firewall resources available to the specified project.
+ * By default the list as a maximum size of 100, if no options are provided or ListOptions#getMaxResults() has not
+ * been set.
+ *
+ * @param marker marks the beginning of the next list page
+ * @param listOptions listing options
+ * @return a page of the list
+ * @see ListOptions
+ * @see org.jclouds.googlecomputeengine.domain.ListPage
+ */
+ @Named("Firewalls:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseFirewalls.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Firewall> listAtMarker(@QueryParam("pageToken") @Nullable String marker, ListOptions options);
+
+ /**
+ * @see FirewallApi#list(org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Firewalls:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseFirewalls.class)
+ @Transform(ParseFirewalls.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Firewall> list();
+
+ /**
+ * A paged version of FirewallApi#list()
+ *
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see PagedIterable
+ * @see FirewallApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Firewalls:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/firewalls")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseFirewalls.class)
+ @Transform(ParseFirewalls.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Firewall> list(ListOptions options);
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java
new file mode 100644
index 0000000..818ae86
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/GlobalOperationApi.java
@@ -0,0 +1,158 @@
+/*
+ * 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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.functions.internal.ParseGlobalOperations;
+import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SkipEncoding;
+import org.jclouds.rest.annotations.Transform;
+
+/**
+ * Provides access to Global Operations via their REST API.
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/globalOperations"/>
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+public interface GlobalOperationApi {
+
+ /**
+ * Retrieves the specified operation resource.
+ *
+ * @param operationName name of the operation resource to return.
+ * @return If successful, this method returns an Operation resource
+ */
+ @Named("GlobalOperations:get")
+ @GET
+ @Path("/global/operations/{operation}")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Fallback(NullOnNotFoundOr404.class)
+ Operation get(@PathParam("operation") String operationName);
+
+ /**
+ * Deletes the specified operation resource.
+ *
+ * @param operationName name of the operation resource to delete.
+ */
+ @Named("GlobalOperations:delete")
+ @DELETE
+ @Path("/global/operations/{operation}")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ void delete(@PathParam("operation") String operationName);
+
+ /**
+ * @see org.jclouds.googlecomputeengine.features.GlobalOperationApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("GlobalOperations:list")
+ @GET
+ @Path("/global/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseGlobalOperations.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Operation> listFirstPage();
+
+ /**
+ * @see org.jclouds.googlecomputeengine.features.GlobalOperationApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("GlobalOperations:list")
+ @GET
+ @Path("/global/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseGlobalOperations.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Operation> listAtMarker(@QueryParam("pageToken") @Nullable String marker);
+
+ /**
+ * Retrieves the listFirstPage of operation resources contained within the specified project.
+ * By default the listFirstPage as a maximum size of 100, if no options are provided or ListOptions#getMaxResults()
+ * has not been set.
+ *
+ * @param marker marks the beginning of the next list page
+ * @param listOptions listing options
+ * @return a page of the list, starting at marker
+ * @see org.jclouds.googlecomputeengine.options.ListOptions
+ * @see org.jclouds.googlecomputeengine.domain.ListPage
+ */
+ @Named("GlobalOperations:list")
+ @GET
+ @Path("/global/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseGlobalOperations.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Operation> listAtMarker(@QueryParam("pageToken") @Nullable String marker,
+ ListOptions listOptions);
+
+ /**
+ * @see org.jclouds.googlecomputeengine.features.GlobalOperationApi#list(org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("GlobalOperations:list")
+ @GET
+ @Path("/global/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseGlobalOperations.class)
+ @Transform(ParseGlobalOperations.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Operation> list();
+
+ /**
+ * A paged version of GlobalOperationApi#listFirstPage()
+ *
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see org.jclouds.collect.PagedIterable
+ * @see org.jclouds.googlecomputeengine.features.GlobalOperationApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("GlobalOperations:list")
+ @GET
+ @Path("/global/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseGlobalOperations.class)
+ @Transform(ParseGlobalOperations.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Operation> list(ListOptions listOptions);
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java
new file mode 100644
index 0000000..d5755f2
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/ImageApi.java
@@ -0,0 +1,167 @@
+/*
+ * 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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.Image;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.functions.internal.ParseImages;
+import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SkipEncoding;
+import org.jclouds.rest.annotations.Transform;
+
+/**
+ * Provides access to Images via their REST API.
+ * <p/>
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/images"/>
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+public interface ImageApi {
+ /**
+ * Returns the specified image resource.
+ *
+ * @param imageName name of the image resource to return.
+ * @return an Image resource
+ */
+ @Named("Images:get")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/images/{image}")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Image get(@PathParam("image") String imageName);
+
+ /**
+ * Deletes the specified image resource.
+ *
+ * @param imageName name of the image resource to delete.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field. If the image did not exist the result is null.
+ */
+ @Named("Images:delete")
+ @DELETE
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/images/{image}")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Operation delete(@PathParam("image") String imageName);
+
+ /**
+ * @see ImageApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Images:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/images")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseImages.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Image> listFirstPage();
+
+ /**
+ * @see ImageApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Images:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/images")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseImages.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Image> listAtMarker(@QueryParam("pageToken") @Nullable String marker);
+
+ /**
+ * Retrieves the list of image resources available to the specified project.
+ * By default the list as a maximum size of 100, if no options are provided or ListOptions#getMaxResults() has not
+ * been set.
+ *
+ * @param marker marks the beginning of the next list page
+ * @param listOptions listing options
+ * @return a page of the list
+ * @see ListOptions
+ * @see org.jclouds.googlecomputeengine.domain.ListPage
+ */
+ @Named("Images:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/images")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseImages.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Image> listAtMarker(@QueryParam("pageToken") @Nullable String marker, ListOptions listOptions);
+
+ /**
+ * A paged version of ImageApi#list()
+ *
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see PagedIterable
+ * @see ImageApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Images:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/images")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseImages.class)
+ @Transform(ParseImages.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Image> list();
+
+ /**
+ * A paged version of ImageApi#list()
+ *
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see PagedIterable
+ * @see ImageApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Images:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/images")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseImages.class)
+ @Transform(ParseImages.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Image> list(ListOptions options);
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
new file mode 100644
index 0000000..2a88a79
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/InstanceApi.java
@@ -0,0 +1,381 @@
+/*
+ * 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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
+
+import java.util.Map;
+import java.util.Set;
+
+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 javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.Instance;
+import org.jclouds.googlecomputeengine.domain.InstanceTemplate;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.functions.internal.ParseInstances;
+import org.jclouds.googlecomputeengine.handlers.InstanceBinder;
+import org.jclouds.googlecomputeengine.handlers.MetadataBinder;
+import org.jclouds.googlecomputeengine.options.AttachDiskOptions;
+import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+import org.jclouds.rest.annotations.BinderParam;
+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.SkipEncoding;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.binders.BindToJsonPayload;
+
+/**
+ * Provides access to Instances via their REST API.
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/instances"/>
+ * @see InstanceApi
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+public interface InstanceApi {
+
+ /**
+ * Returns the specified instance resource.
+ *
+ * @param zone zone the instance is in.
+ * @param instanceName name of the instance resource to return.
+ * @return an Instance resource
+ */
+ @Named("Instances:get")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances/{instance}")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Instance getInZone(@PathParam("zone") String zone, @PathParam("instance") String instanceName);
+
+ /**
+ * Creates a instance resource in the specified project using the data included in the request.
+ *
+ *
+ * @param instanceName this name of the instance to be created
+ * @param zone the name of the zone where the instance will be created
+ * @param template the instance template
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Instances:insert")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances")
+ @OAuthScopes({COMPUTE_SCOPE})
+ @MapBinder(InstanceBinder.class)
+ Operation createInZone(@PayloadParam("name") String instanceName, @PathParam("zone") String zone,
+ @PayloadParam("template") InstanceTemplate template);
+
+
+ /**
+ * Deletes the specified instance resource.
+ *
+ * @param zone the instance is in.
+ * @param instanceName name of the instance resource to delete.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field. If the instance did not exist the result is null.
+ */
+ @Named("Instances:delete")
+ @DELETE
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances/{instance}")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Operation deleteInZone(@PathParam("zone") String zone, @PathParam("instance") String instanceName);
+
+ /**
+ * A paged version of InstanceApi#listInZone()
+ *
+ * @param zone zone instances are in
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see PagedIterable
+ * @see InstanceApi#listAtMarkerInZone(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Instances:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseInstances.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Instance> listFirstPageInZone(@PathParam("zone") String zone);
+
+ /**
+ * Retrieves the list of instance resources available to the specified project.
+ * By default the list as a maximum size of 100, if no options are provided or ListOptions#getMaxResults() has not
+ * been set.
+ *
+ * @param zone zone instances are in
+ * @param marker marks the beginning of the next list page
+ * @param listOptions listing options
+ * @return a page of the list
+ * @see ListOptions
+ * @see org.jclouds.googlecomputeengine.domain.ListPage
+ */
+ @Named("Instances:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseInstances.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Instance> listAtMarkerInZone(@PathParam("zone") String zone, @Nullable String marker,
+ ListOptions listOptions);
+
+ /**
+ * @see InstanceApi#listAtMarkerInZone(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Instances:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseInstances.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Instance> listAtMarkerInZone(@PathParam("zone") String zone,
+ @Nullable String marker);
+
+ /**
+ * @see InstanceApi#listInZone(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Instances:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseInstances.class)
+ @Transform(ParseInstances.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Instance> listInZone(@PathParam("zone") String zone);
+
+ /**
+ * @see InstanceApi#listInZone(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Instances:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseInstances.class)
+ @Transform(ParseInstances.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Instance> listInZone(@PathParam("zone") String zone, ListOptions options);
+
+ /**
+ * Adds an access config to an instance's network interface.
+ *
+ * @param zone zone instance is in
+ * @param instanceName the instance name.
+ * @param accessConfig the AccessConfig to add.
+ * @param networkInterfaceName network interface name.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Instances:addAccessConfig")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances/{instance}/addAccessConfig")
+ @OAuthScopes({COMPUTE_SCOPE})
+ Operation addAccessConfigToNicInZone(@PathParam("zone") String zone,
+ @PathParam("instance") String instanceName,
+ @BinderParam(BindToJsonPayload.class)
+ Instance.NetworkInterface.AccessConfig accessConfig,
+ @QueryParam("network_interface") String networkInterfaceName);
+
+ /**
+ * Deletes an access config from an instance's network interface.
+ *
+ * @param zone zone instance is in
+ * @param instanceName the instance name.
+ * @param accessConfigName the name of the access config to delete
+ * @param networkInterfaceName network interface name.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Instances:deleteAccessConfig")
+ @DELETE
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances/{instance}/deleteAccessConfig")
+ @OAuthScopes(COMPUTE_SCOPE)
+ Operation deleteAccessConfigFromNicInZone(@PathParam("zone") String zone,
+ @PathParam("instance") String instanceName,
+ @QueryParam("access_config") String accessConfigName,
+ @QueryParam("network_interface") String networkInterfaceName);
+
+ /**
+ * Returns the specified instance's serial port output.
+ *
+ * @param zone zone instance is in
+ * @param instanceName the instance name.
+ * @return if successful, this method returns a SerialPortOutput containing the instance's serial output.
+ */
+ @Named("Instances:serialPort")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances/{instance}/serialPort")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ Instance.SerialPortOutput getSerialPortOutputInZone(@PathParam("zone") String zone,
+ @PathParam("instance") String instanceName);
+
+ /**
+ * Hard-resets the instance.
+ *
+ * @param zone the zone the instance is in
+ * @param instanceName the instance name
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field. If the instance did not exist the result is null.
+ */
+ @Named("Instances:reset")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances/{instance}/reset")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Operation resetInZone(@PathParam("zone") String zone,
+ @PathParam("instance") String instanceName);
+
+ /**
+ * Attaches a disk to an instance
+ *
+ * @param zone The zone the instance is in.
+ * @param instanceName The instance name to attach to
+ * @param attachDiskOptions The options for attaching the disk.
+ *
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Instances:attachDisk")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances/{instance}/attachDisk")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Operation attachDiskInZone(@PathParam("zone") String zone,
+ @PathParam("instance") String instanceName,
+ @BinderParam(BindToJsonPayload.class) AttachDiskOptions attachDiskOptions);
+
+ /**
+ * Detaches an attached disk from an instance
+ *
+ * @param zone The zone the instance is in.
+ * @param instanceName The instance name to attach to
+ * @param deviceName The device name of the disk to detach.
+ *
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Instances:detachDisk")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/zones/{zone}/instances/{instance}/detachDisk")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Nullable
+ Operation detachDiskInZone(@PathParam("zone") String zone,
+ @PathParam("instance") String instanceName,
+ @QueryParam("deviceName") String deviceName);
+
+ /**
+ * Sets metadata for an instance using the data included in the request.
+ * <p/>
+ * NOTE: This *sets* metadata items on the project (vs *adding* items to metadata),
+ * if there are pre-existing metadata items that must be kept these must be fetched first and then re-set on the
+ * new Metadata, e.g.
+ * <pre><tt>
+ * Metadata.Builder current = instanceApi.getInZone("us-central1-a", "myInstance").getMetadata().toBuilder();
+ * current.addItem("newItem","newItemValue");
+ * instanceApi.setMetadataInZone("us-central1-a", "myInstance", current.build());
+ * </tt></pre>
+ *
+ * @param zone The zone the instance is in
+ * @param instanceName The name of the instance
+ * @param metadata the metadata to set
+ * @param fingerprint The current fingerprint for the items
+ *
+ * @return an Operations resource. To check on the status of an operation, poll the Operations resource returned
+ * to you, and look for the status field.
+ */
+ @Named("Instances:setMetadata")
+ @POST
+ @Path("/zones/{zone}/instances/{instance}/setMetadata")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Fallback(NullOnNotFoundOr404.class)
+ @MapBinder(MetadataBinder.class)
+ @Nullable
+ Operation setMetadataInZone(@PathParam("zone") String zone,
+ @PathParam("instance") String instanceName,
+ @PayloadParam("items") Map<String, String> metadata,
+ @PayloadParam("fingerprint") String fingerprint);
+
+ /**
+ * Sets items for an instance
+ *
+ * @param zone The zone the instance is in
+ * @param instanceName the name of the instance
+ * @param items A set of items
+ * @param fingerprint The current fingerprint for the items
+ * @return an Operations resource. To check on the status of an operation, poll the Operations resource returned
+ * to you, and look for the status field.
+ */
+ @Named("Instances:setTags")
+ @POST
+ @Path("/zones/{zone}/instances/{instance}/setTags")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Fallback(NullOnNotFoundOr404.class)
+ @MapBinder(BindToJsonPayload.class)
+ @Nullable
+ Operation setTagsInZone(@PathParam("zone") String zone,
+ @PathParam("instance") String instanceName,
+ @PayloadParam("items") Set<String> items,
+ @PayloadParam("fingerprint") String fingerprint);
+
+}
+
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.java
new file mode 100644
index 0000000..9c0e411
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/MachineTypeApi.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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.MachineType;
+import org.jclouds.googlecomputeengine.functions.internal.ParseMachineTypes;
+import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SkipEncoding;
+import org.jclouds.rest.annotations.Transform;
+
+/**
+ * Provides access to MachineTypes via their REST API.
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/machineTypes"/>
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+@Consumes(MediaType.APPLICATION_JSON)
+public interface MachineTypeApi {
+
+ /**
+ * Returns the specified machine type resource
+ *
+ * @param zone the name of the zone the machine type is in
+ * @param machineTypeName name of the machine type resource to return.
+ * @return If successful, this method returns a MachineType resource
+ */
+ @Named("MachineTypes:get")
+ @GET
+ @Path("/zones/{zone}/machineTypes/{machineType}")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ MachineType getInZone(@PathParam("zone") String zone, @PathParam("machineType") String machineTypeName);
+
+ /**
+ * @see MachineTypeApi#listAtMarkerInZone(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("MachineTypes:list")
+ @GET
+ @Path("/zones/{zone}/machineTypes")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseMachineTypes.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<MachineType> listFirstPageInZone(@PathParam("zone") String zone);
+
+ /**
+ * @see MachineTypeApi#listAtMarkerInZone(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("MachineTypes:list")
+ @GET
+ @Path("/zones/{zone}/machineTypes")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseMachineTypes.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<MachineType> listAtMarkerInZone(@PathParam("zone") String zone, @QueryParam("pageToken") @Nullable String marker);
+
+ /**
+ * Retrieves the list of machine type resources available to the specified project.
+ * By default the list as a maximum size of 100, if no options are provided or ListOptions#getMaxResults() has not
+ * been set.
+ *
+ * @param zone The name of the zone to list in.
+ * @param marker marks the beginning of the next list page
+ * @param listOptions listing options
+ * @return a page of the list
+ * @see ListOptions
+ * @see org.jclouds.googlecomputeengine.domain.ListPage
+ */
+ @Named("MachineTypes:list")
+ @GET
+ @Path("/zones/{zone}/machineTypes")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseMachineTypes.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<MachineType> listAtMarkerInZone(@PathParam("zone") String zone,
+ @QueryParam("pageToken") @Nullable String marker,
+ ListOptions listOptions);
+
+ /**
+ * @see MachineTypeApi#listInZone(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("MachineTypes:list")
+ @GET
+ @Path("/zones/{zone}/machineTypes")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseMachineTypes.class)
+ @Transform(ParseMachineTypes.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<MachineType> listInZone(@PathParam("zone") String zone);
+
+ /**
+ * A paged version of MachineTypeApi#listInZone(String)
+ *
+ * @param zone the zone to list in
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see PagedIterable
+ * @see MachineTypeApi#listAtMarkerInZone(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("MachineTypes:list")
+ @GET
+ @Path("/zones/{zone}/machineTypes")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseMachineTypes.class)
+ @Transform(ParseMachineTypes.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<MachineType> listInZone(@PathParam("zone") String zone, ListOptions listOptions);
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java
new file mode 100644
index 0000000..8f21287
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/NetworkApi.java
@@ -0,0 +1,204 @@
+/*
+ * 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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
+
+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 javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Network;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.functions.internal.ParseNetworks;
+import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+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.SkipEncoding;
+import org.jclouds.rest.annotations.Transform;
+import org.jclouds.rest.binders.BindToJsonPayload;
+
+/**
+ * Provides access to Networks via their REST API.
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/networks"/>
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+public interface NetworkApi {
+
+ /**
+ * Returns the specified persistent network resource.
+ *
+ * @param networkName name of the persistent network resource to return.
+ * @return a Network resource.
+ */
+ @Named("Networks:get")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/networks/{network}")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ Network get(@PathParam("network") String networkName);
+
+ /**
+ * Creates a persistent network resource in the specified project with the specified range.
+ *
+ * @param networkName the network name
+ * @param IPv4Range the range of the network to be inserted.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Networks:insert")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/global/networks")
+ @OAuthScopes({COMPUTE_SCOPE})
+ @MapBinder(BindToJsonPayload.class)
+ Operation createInIPv4Range(@PayloadParam("name") String networkName,
+ @PayloadParam("IPv4Range") String IPv4Range);
+
+ /**
+ * Creates a persistent network resource in the specified project with the specified range and specified gateway.
+ *
+ * @param networkName the network name
+ * @param IPv4Range the range of the network to be inserted.
+ * @param gatewayIPv4 the range of the network to be inserted.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Networks:insert")
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/global/networks")
+ @OAuthScopes({COMPUTE_SCOPE})
+ @MapBinder(BindToJsonPayload.class)
+ Operation createInIPv4RangeWithGateway(@PayloadParam("name") String networkName,
+ @PayloadParam("IPv4Range") String IPv4Range,
+ @PayloadParam("gatewayIPv4") String gatewayIPv4);
+
+ /**
+ * Deletes the specified persistent network resource.
+ *
+ * @param networkName name of the persistent network resource to delete.
+ * @return an Operation resource. To check on the status of an operation, poll the Operations resource returned to
+ * you, and look for the status field.
+ */
+ @Named("Networks:delete")
+ @DELETE
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/networks/{network}")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ Operation delete(@PathParam("network") String networkName);
+
+ /**
+ * @see NetworkApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Networks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/networks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseNetworks.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Network> listFirstPage();
+
+ /**
+ * @see NetworkApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Networks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/networks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseNetworks.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Network> listAtMarker(@QueryParam("pageToken") @Nullable String marker);
+
+ /**
+ * Retrieves the list of persistent network resources contained within the specified project.
+ * By default the list as a maximum size of 100, if no options are provided or ListOptions#getMaxResults() has not
+ * been set.
+ *
+ * @param marker marks the beginning of the next list page
+ * @param listOptions listing options
+ * @return a page of the list
+ * @see ListOptions
+ * @see org.jclouds.googlecomputeengine.domain.ListPage
+ */
+ @Named("Networks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/networks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseNetworks.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Network> listAtMarker(@QueryParam("pageToken") @Nullable String marker,
+ ListOptions options);
+
+ /**
+ * @see NetworkApi#list(org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Networks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/networks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseNetworks.class)
+ @Transform(ParseNetworks.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Network> list();
+
+ /**
+ * A paged version of NetworkApi#list()
+ *
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see PagedIterable
+ * @see NetworkApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Networks:list")
+ @GET
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Path("/global/networks")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseNetworks.class)
+ @Transform(ParseNetworks.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Network> list(ListOptions options);
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java
new file mode 100644
index 0000000..8871593
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/ProjectApi.java
@@ -0,0 +1,96 @@
+/*
+ * 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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
+
+import java.util.Map;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+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 javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.domain.Project;
+import org.jclouds.googlecomputeengine.handlers.MetadataBinder;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+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.SkipEncoding;
+
+/**
+ * Provides access to Projects via their REST API.
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/projects"/>
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+public interface ProjectApi {
+
+ /**
+ * Returns the specified project resource.
+ *
+ * @param projectName name of the project to return
+ * @return if successful, this method returns a Project resource
+ */
+ @Named("Projects:get")
+ @GET
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Fallback(NullOnNotFoundOr404.class)
+ @Path("/projects/{project}")
+ Project get(@PathParam("project") String projectName);
+
+ /**
+ * Sets metadata common to all instances within the specified project using the data included in the request.
+ * <p/>
+ * NOTE: This *sets* metadata items on the project (vs *adding* items to metadata),
+ * if there are pre-existing metadata items that must be kept these must be fetched first and then re-set on the
+ * new Metadata, e.g.
+ * <pre><tt>
+ * Metadata.Builder current = projectApi.get("myProject").getCommonInstanceMetadata().toBuilder();
+ * current.addItem("newItem","newItemValue");
+ * projectApi.setCommonInstanceMetadata(current.build());
+ * </tt></pre>
+ *
+ * @param projectName name of the project to return
+ * @param metadata the metadata to set
+ * @param fingerprint The current fingerprint for the metadata
+ * @return an Operations resource. To check on the status of an operation, poll the Operations resource returned
+ * to you, and look for the status field.
+ */
+ @Named("Projects:setCommonInstanceMetadata")
+ @POST
+ @Path("/projects/{project}/setCommonInstanceMetadata")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @MapBinder(MetadataBinder.class)
+ Operation setCommonInstanceMetadata(@PathParam("project") String projectName,
+ @PayloadParam("items") Map<String, String> metadata,
+ @PayloadParam("fingerprint") String fingerprint);
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.java
new file mode 100644
index 0000000..608a614
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/RegionApi.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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Region;
+import org.jclouds.googlecomputeengine.functions.internal.ParseRegions;
+import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SkipEncoding;
+import org.jclouds.rest.annotations.Transform;
+
+/**
+ * Provides access to Regions via their REST API.
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/regions"/>
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+@Consumes(MediaType.APPLICATION_JSON)
+public interface RegionApi {
+
+ /**
+ * Returns the specified region resource
+ *
+ * @param regionName name of the region resource to return.
+ * @return If successful, this method returns a Region resource
+ */
+ @Named("Regions:get")
+ @GET
+ @Path("/regions/{region}")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ Region get(@PathParam("region") String regionName);
+
+ /**
+ * @see org.jclouds.googlecomputeengine.features.RegionApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Regions:list")
+ @GET
+ @Path("/regions")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseRegions.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Region> listFirstPage();
+
+ /**
+ * @see org.jclouds.googlecomputeengine.features.RegionApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Regions:list")
+ @GET
+ @Path("/regions")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseRegions.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Region> listAtMarker(String marker);
+
+ /**
+ * Retrieves the listFirstPage of region resources available to the specified project.
+ * By default the listFirstPage as a maximum size of 100, if no options are provided or ListOptions#getMaxResults()
+ * has not been set.
+ *
+ * @param marker marks the beginning of the next list page
+ * @param listOptions listing options
+ * @return a page of the listFirstPage
+ * @see org.jclouds.googlecomputeengine.options.ListOptions
+ * @see org.jclouds.googlecomputeengine.domain.ListPage
+ */
+ @Named("Regions:list")
+ @GET
+ @Path("/regions")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseRegions.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Region> listAtMarker(String marker, ListOptions listOptions);
+
+ /**
+ * @see org.jclouds.googlecomputeengine.features.RegionApi#list(org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("Regions:list")
+ @GET
+ @Path("/regions")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseRegions.class)
+ @Transform(ParseRegions.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Region> list();
+
+ /**
+ * A paged version of RegionApi#listFirstPage()
+ *
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see org.jclouds.googlecomputeengine.features.RegionApi#listAtMarker(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ * @see org.jclouds.collect.PagedIterable
+ */
+ @Named("Regions:list")
+ @GET
+ @Path("/regions")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @ResponseParser(ParseRegions.class)
+ @Transform(ParseRegions.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Region> list(ListOptions listOptions);
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b45ae00e/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java
new file mode 100644
index 0000000..4afab63
--- /dev/null
+++ b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/features/RegionOperationApi.java
@@ -0,0 +1,163 @@
+/*
+ * 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.googlecomputeengine.features;
+
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_READONLY_SCOPE;
+import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.COMPUTE_SCOPE;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptyIterableWithMarkerOnNotFoundOr404;
+import org.jclouds.Fallbacks.EmptyPagedIterableOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.collect.PagedIterable;
+import org.jclouds.googlecomputeengine.domain.ListPage;
+import org.jclouds.googlecomputeengine.domain.Operation;
+import org.jclouds.googlecomputeengine.functions.internal.ParseRegionOperations;
+import org.jclouds.googlecomputeengine.options.ListOptions;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.oauth.v2.config.OAuthScopes;
+import org.jclouds.oauth.v2.filters.OAuthAuthenticationFilter;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SkipEncoding;
+import org.jclouds.rest.annotations.Transform;
+
+/**
+ * Provides access to Operations via their REST API.
+ *
+ * @see <a href="https://developers.google.com/compute/docs/reference/v1/operations"/>
+ */
+@SkipEncoding({'/', '='})
+@RequestFilters(OAuthAuthenticationFilter.class)
+public interface RegionOperationApi {
+
+ /**
+ * Retrieves the specified operation resource.
+ *
+ * @param region the region the operation is in
+ * @param operationName name of the operation resource to return.
+ * @return If successful, this method returns an Operation resource
+ */
+ @Named("RegionOperations:get")
+ @GET
+ @Path("/regions/{region}/operations/{operation}")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Fallback(NullOnNotFoundOr404.class)
+ Operation getInRegion(@PathParam("region") String region, @PathParam("operation") String operationName);
+
+ /**
+ * Deletes the specified operation resource.
+ *
+ * @param region the region the operation is in
+ * @param operationName name of the operation resource to delete.
+ */
+ @Named("RegionOperations:delete")
+ @DELETE
+ @Path("/regions/{region}/operations/{operation}")
+ @OAuthScopes(COMPUTE_SCOPE)
+ @Fallback(NullOnNotFoundOr404.class)
+ void deleteInRegion(@PathParam("region") String region, @PathParam("operation") String operationName);
+
+ /**
+ * @see org.jclouds.googlecomputeengine.features.RegionOperationApi#listAtMarkerInRegion(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("RegionOperations:list")
+ @GET
+ @Path("/regions/{region}/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseRegionOperations.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Operation> listFirstPageInRegion(@PathParam("region") String region);
+
+ /**
+ * @see org.jclouds.googlecomputeengine.features.RegionOperationApi#listAtMarkerInRegion(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("RegionOperations:list")
+ @GET
+ @Path("/regions/{region}/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseRegionOperations.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Operation> listAtMarkerInRegion(@PathParam("region") String region,
+ @QueryParam("pageToken") @Nullable String marker);
+
+ /**
+ * Retrieves the listFirstPage of operation resources contained within the specified project.
+ * By default the listFirstPage as a maximum size of 100, if no options are provided or ListOptions#getMaxResults()
+ * has not been set.
+ *
+ * @param region the region to list in
+ * @param marker marks the beginning of the next list page
+ * @param listOptions listing options
+ * @return a page of the list, starting at marker
+ * @see org.jclouds.googlecomputeengine.options.ListOptions
+ * @see org.jclouds.googlecomputeengine.domain.ListPage
+ */
+ @Named("RegionOperations:list")
+ @GET
+ @Path("/regions/{region}/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseRegionOperations.class)
+ @Fallback(EmptyIterableWithMarkerOnNotFoundOr404.class)
+ ListPage<Operation> listAtMarkerInRegion(@PathParam("region") String region,
+ @QueryParam("pageToken") @Nullable String marker,
+ ListOptions listOptions);
+
+ /**
+ * @see org.jclouds.googlecomputeengine.features.RegionOperationApi#listInRegion(String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("RegionOperations:list")
+ @GET
+ @Path("/regions/{region}/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseRegionOperations.class)
+ @Transform(ParseRegionOperations.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Operation> listInRegion(@PathParam("region") String region);
+
+ /**
+ * A paged version of RegionOperationApi#listFirstPageInRegion(String)
+ *
+ * @return a Paged, Fluent Iterable that is able to fetch additional pages when required
+ * @see org.jclouds.collect.PagedIterable
+ * @see org.jclouds.googlecomputeengine.features.RegionOperationApi#listAtMarkerInRegion(String, String, org.jclouds.googlecomputeengine.options.ListOptions)
+ */
+ @Named("RegionOperations:list")
+ @GET
+ @Path("/regions/{region}/operations")
+ @OAuthScopes(COMPUTE_READONLY_SCOPE)
+ @Consumes(MediaType.APPLICATION_JSON)
+ @ResponseParser(ParseRegionOperations.class)
+ @Transform(ParseRegionOperations.ToPagedIterable.class)
+ @Fallback(EmptyPagedIterableOnNotFoundOr404.class)
+ PagedIterable<Operation> listInRegion(@PathParam("region") String region, ListOptions listOptions);
+
+}