http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalAccountApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalAccountApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalAccountApi.java
new file mode 100644
index 0000000..7612b73
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalAccountApi.java
@@ -0,0 +1,103 @@
+/*
+ * 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.cloudstack.features;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.Account;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.CreateAccountOptions;
+import org.jclouds.cloudstack.options.UpdateAccountOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack Account features available to 
Global
+ * Admin users.
+ *
+ * @see <a href=
+ *      
"http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
+ *      />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalAccountApi extends DomainAccountApi {
+
+   /**
+    * Create a new Cloudstack account
+    *
+    * @param userName unique username.
+    * @param accountType type of account
+    * @param email
+    * @param firstName
+    * @param lastName
+    * @param hashedPassword
+    *          Hashed password (Default is MD5). If you wish to use any other
+    *          hashing algorithm, you would need to write a custom 
authentication adapter See Docs section.
+    * @param options
+    *          optional parameters
+    * @return
+    */
+   @Named("createAccount")
+   @GET
+   @QueryParams(keys = "command", values = "createAccount")
+   @SelectJson("account")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Account createAccount(@QueryParam("username") String userName,
+      @QueryParam("accounttype") Account.Type accountType, 
@QueryParam("email") String email,
+      @QueryParam("firstname") String firstName, @QueryParam("lastname") 
String lastName,
+      @QueryParam("password") String hashedPassword, CreateAccountOptions... 
options);
+
+   /**
+    * Update an existing account
+    *
+    * @param accountName the current account name
+    * @param domainId the ID of the domain were the account exists
+    * @param newName new name for the account
+    * @param options optional arguments
+    * @return
+    */
+   @Named("updateAccount")
+   @GET
+   @QueryParams(keys = "command", values = "updateAccount")
+   @SelectJson("account")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Account updateAccount(@QueryParam("account") String accountName,
+      @QueryParam("domainid") String domainId, @QueryParam("newname") String 
newName, UpdateAccountOptions... options);
+   
+   /**
+    * Delete an account with the specified ID
+    *
+    * @param accountId
+    * @return
+    */
+   @Named("deleteAccount")
+   @GET
+   @QueryParams(keys = "command", values = "deleteAccount")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   void deleteAccount(@QueryParam("id") String id);
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalAlertApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalAlertApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalAlertApi.java
new file mode 100644
index 0000000..c71ef17
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalAlertApi.java
@@ -0,0 +1,60 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.Alert;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.ListAlertsOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack Account features available to 
Global
+ * Admin users.
+ * 
+ * @see <a href=
+ *      
"http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
+ *      />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalAlertApi {
+   
+   /**
+    * List Alerts
+    *
+    * @return alert list or null if not found
+    */
+   @Named("listAlerts")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listAlerts", 
"true" })
+   @SelectJson("alert")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<Alert> listAlerts(ListAlertsOptions...options);
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalCapacityApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalCapacityApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalCapacityApi.java
new file mode 100644
index 0000000..eb0d0fa
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalCapacityApi.java
@@ -0,0 +1,60 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.Capacity;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.ListCapacityOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack Account features available to 
Global
+ * Admin users.
+ * 
+ * @see <a href=
+ *      
"http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
+ *      />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalCapacityApi {
+
+   /**
+    * List Capacities
+    *
+    * @return alert list or null if not found
+    */
+   @Named("listCapacity")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listCapacity", 
"true" })
+   @SelectJson("capacity")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<Capacity> listCapacity(ListCapacityOptions...options);
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalConfigurationApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalConfigurationApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalConfigurationApi.java
new file mode 100644
index 0000000..1d9b5b8
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalConfigurationApi.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jclouds.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.ConfigurationEntry;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.ListConfigurationEntriesOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack Configuration features available 
to Global
+ * Admin users.
+ *
+ * @see <a href=
+ *      
"http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
+ *      />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalConfigurationApi extends ConfigurationApi {
+
+   /**
+    * List all configuration entries
+    *
+    * @param options
+    *          result set filtering options
+    * @return
+    *          a set of entries or empty
+    */
+   @Named("listConfigurations")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { 
"listConfigurations", "true" })
+   @SelectJson("configuration")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<ConfigurationEntry> 
listConfigurationEntries(ListConfigurationEntriesOptions... options);
+
+   /**
+    * Update a configuration entry
+    *
+    * @param name
+    *          the name of the configuration
+    * @param value
+    *          the value of the configuration
+    * @return
+    *          the updated configuration value
+    */
+   @Named("updateConfiguration")
+   @GET
+   @QueryParams(keys = "command", values = "updateConfiguration")
+   @SelectJson("configuration")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   ConfigurationEntry updateConfigurationEntry(
+      @QueryParam("name") String name, @QueryParam("value") String value);
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalDomainApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalDomainApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalDomainApi.java
new file mode 100644
index 0000000..fabfc41
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalDomainApi.java
@@ -0,0 +1,108 @@
+/*
+ * 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.cloudstack.features;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.Domain;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.CreateDomainOptions;
+import org.jclouds.cloudstack.options.UpdateDomainOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack Domain features available to 
Global
+ * Admin users.
+ *
+ * @see <a href=
+ *      
"http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
+ *      />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalDomainApi extends DomainDomainApi {
+
+   /**
+    * Create new Domain
+    *
+    * @param name
+    *       domain name
+    * @param options
+    *       optional arguments
+    * @return
+    *       domain instance
+    */
+   @Named("createDomain")
+   @GET
+   @QueryParams(keys = "command", values = "createDomain")
+   @SelectJson("domain")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Domain createDomain(@QueryParam("name") String name, CreateDomainOptions... 
options);
+
+   /**
+    * Update a domain
+    *
+    * @param domainId
+    *       the ID of the domain
+    * @param options
+    *       optional arguments
+    * @return
+    *       domain instance
+    */
+   @Named("updateDomain")
+   @GET
+   @QueryParams(keys = "command", values = "updateDomain")
+   @SelectJson("domain")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Domain updateDomain(@QueryParam("id") String domainId, 
UpdateDomainOptions... options);
+
+   /**
+    * Delete domain (without deleting attached resources)
+    *
+    * @param id
+    *    the domain ID
+    */
+   @Named("deleteDomain")
+   @GET
+   @QueryParams(keys = {"command", "cleanup"}, values = {"deleteDomain", 
"false"})
+   @Fallback(VoidOnNotFoundOr404.class)
+   void deleteOnlyDomain(@QueryParam("id") String id);
+
+   /**
+    * Delete domain and cleanup all attached resources
+    *
+    * @param id
+    *    the domain ID
+    */
+   @Named("deleteDomain")
+   @GET
+   @QueryParams(keys = {"command", "cleanup"}, values = {"deleteDomain", 
"true"})
+   @Fallback(VoidOnNotFoundOr404.class)
+   void deleteDomainAndAttachedResources(@QueryParam("id") String id);
+}
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalHostApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalHostApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalHostApi.java
new file mode 100644
index 0000000..2255d71
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalHostApi.java
@@ -0,0 +1,247 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.Cluster;
+import org.jclouds.cloudstack.domain.Host;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.AddClusterOptions;
+import org.jclouds.cloudstack.options.AddHostOptions;
+import org.jclouds.cloudstack.options.AddSecondaryStorageOptions;
+import org.jclouds.cloudstack.options.DeleteHostOptions;
+import org.jclouds.cloudstack.options.ListClustersOptions;
+import org.jclouds.cloudstack.options.ListHostsOptions;
+import org.jclouds.cloudstack.options.UpdateClusterOptions;
+import org.jclouds.cloudstack.options.UpdateHostOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to cloudstack via their REST API.
+ * <p/>
+ *
+ * @see <a 
href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
 />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalHostApi {
+
+   /**
+    * Lists hosts
+    *
+    * @param options
+    *           if present, how to constrain the list.
+    * @return hosts matching query, or empty set, if no service
+    *         offerings are found
+    */
+   @Named("listHosts")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listHosts", 
"true" })
+   @SelectJson("host")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<Host> listHosts(ListHostsOptions... options);
+
+   /**
+    * Adds a new host.
+    *
+    * @param zoneId the Zone ID for the host
+    * @param url the host URL
+    * @param hypervisor hypervisor type of the host
+    * @param username the username for the host
+    * @param password the password for the host
+    * @param options optional arguments
+    * @return the new host.
+    */
+   @Named("addHost")
+   @GET
+   @QueryParams(keys = "command", values = "addHost")
+   @SelectJson("host")
+   @Consumes(MediaType.APPLICATION_JSON)
+   Host addHost(@QueryParam("zoneid") String zoneId, @QueryParam("url") String 
url, @QueryParam("hypervisor") String hypervisor, @QueryParam("username") 
String username, @QueryParam("password") String password, AddHostOptions... 
options);
+
+   /**
+    * Updates a host.
+    *
+    * @param hostId the ID of the host to update
+    * @param options optional arguments
+    * @return the modified host.
+    */
+   @Named("updateHost")
+   @GET
+   @QueryParams(keys = "command", values = "updateHost")
+   @SelectJson("host")
+   @Consumes(MediaType.APPLICATION_JSON)
+   Host updateHost(@QueryParam("id") String hostId, UpdateHostOptions... 
options);
+
+   /**
+    * Update password of a host on management server.
+    *
+    * @param hostId the host ID
+    * @param username the username for the host
+    * @param password the password for the host
+    */
+   @Named("updateHostPassword")
+   @GET
+   @QueryParams(keys = "command", values = "updateHostPassword")
+   @Consumes(MediaType.APPLICATION_JSON)
+   void updateHostPassword(@QueryParam("hostid") String hostId, 
@QueryParam("username") String username, @QueryParam("password") String 
password);
+
+   /**
+    * Deletes a host.
+    *
+    * @param hostId the host ID
+    * @param options optional arguments
+    */
+   @Named("deleteHost")
+   @GET
+   @QueryParams(keys = "command", values = "deleteHost")
+   @Consumes(MediaType.APPLICATION_JSON)
+   void deleteHost(@QueryParam("id") String hostId, DeleteHostOptions... 
options);
+
+   /**
+    * Prepares a host for maintenance.
+    *
+    * @param hostId the host ID
+    * @return a job reference number for tracking this asynchronous job.
+    */
+   @Named("prepareHostForMaintenance")
+   @GET
+   @QueryParams(keys = "command", values = "prepareHostForMaintenance")
+   @SelectJson("jobid")
+   @Consumes(MediaType.APPLICATION_JSON)
+   String prepareHostForMaintenance(@QueryParam("id") String hostId);
+
+   /**
+    * Cancels host maintenance.
+    *
+    * @param hostId the host ID
+    * @return a job reference number for tracking this asynchronous job.
+    */
+   @Named("cancelHostMaintenance")
+   @GET
+   @QueryParams(keys = "command", values = "cancelHostMaintenance")
+   @SelectJson("jobid")
+   @Consumes(MediaType.APPLICATION_JSON)
+   String cancelHostMaintenance(@QueryParam("id") String hostId);
+
+   /**
+    * Reconnects a host.
+    *
+    * @param hostId
+    * @return a job reference number for tracking this asynchronous job.
+    */
+   @Named("reconnectHost")
+   @GET
+   @QueryParams(keys = "command", values = "reconnectHost")
+   @SelectJson("jobid")
+   @Consumes(MediaType.APPLICATION_JSON)
+   String reconnectHost(@QueryParam("id") String hostId);
+
+   /**
+    * Adds secondary storage.
+    *
+    * @param url the URL for the secondary storage
+    * @param options optional arguments
+    * @return the host of the storage.
+    */
+   @Named("addSecondaryStorage")
+   @GET
+   @QueryParams(keys = "command", values = "addSecondaryStorage")
+   @SelectJson("host")
+   @Consumes(MediaType.APPLICATION_JSON)
+   Host addSecondaryStorage(@QueryParam("url") String url, 
AddSecondaryStorageOptions... options);
+
+   /**
+    * @see GlobalHostApi#listClusters
+    */
+   @Named("listClusters")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listClusters", 
"true" })
+   @SelectJson("cluster")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<Cluster> listClusters(ListClustersOptions... options);
+
+   /**
+    * Adds a new cluster.
+    *
+    * @param zoneId the Zone ID for the cluster
+    * @param clusterName the cluster name
+    * @param clusterType type of the cluster
+    * @param hypervisor hypervisor type of the cluster
+    * @param options optional arguments
+    * @return the new cluster.
+    */
+   @Named("addCluster")
+   @GET
+   @QueryParams(keys = "command", values = "addCluster")
+   @SelectJson("cluster")
+   @Consumes(MediaType.APPLICATION_JSON)
+   Cluster addCluster(@QueryParam("zoneid") String zoneId, 
@QueryParam("clustername") String clusterName, @QueryParam("clustertype") 
Host.ClusterType clusterType, @QueryParam("hypervisor") String hypervisor, 
AddClusterOptions... options);
+
+   /**
+    * Updates an existing cluster.
+    *
+    * @param clusterId the ID of the cluster
+    * @param options optional arguments
+    * @return the modified cluster
+    */
+   @Named("updateCluster")
+   @GET
+   @QueryParams(keys = "command", values = "updateCluster")
+   @SelectJson("cluster")
+   @Consumes(MediaType.APPLICATION_JSON)
+   Cluster updateCluster(@QueryParam("id") String clusterId, 
UpdateClusterOptions... options);
+
+   /**
+    * Update password of a cluster on management server.
+    *
+    * @param clusterId the cluster ID
+    * @param username the username for the cluster
+    * @param password the password for the cluster
+    */
+   @Named("updateHostPassword")
+   @GET
+   @QueryParams(keys = "command", values = "updateHostPassword")
+   @SelectJson("cluster")
+   @Consumes(MediaType.APPLICATION_JSON)
+   void updateClusterPassword(@QueryParam("clusterid") String clusterId, 
@QueryParam("username") String username, @QueryParam("password") String 
password);
+
+   /**
+    * Deletes a cluster.
+    *
+    * @param clusterId the cluster ID
+    */
+   @Named("deleteCluster")
+   @GET
+   @QueryParams(keys = "command", values = "deleteCluster")
+   @Consumes(MediaType.APPLICATION_JSON)
+   void deleteCluster(@QueryParam("id") String clusterId);
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalOfferingApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalOfferingApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalOfferingApi.java
new file mode 100644
index 0000000..793f277
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalOfferingApi.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.cloudstack.features;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.DiskOffering;
+import org.jclouds.cloudstack.domain.NetworkOffering;
+import org.jclouds.cloudstack.domain.ServiceOffering;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.CreateDiskOfferingOptions;
+import org.jclouds.cloudstack.options.CreateServiceOfferingOptions;
+import org.jclouds.cloudstack.options.UpdateDiskOfferingOptions;
+import org.jclouds.cloudstack.options.UpdateNetworkOfferingOptions;
+import org.jclouds.cloudstack.options.UpdateServiceOfferingOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to cloudstack via their REST API.
+ * <p/>
+ * 
+ * @see <a 
href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
 />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalOfferingApi extends OfferingApi {
+
+   /**
+    * Create a new service offering
+    *
+    * @param name
+    *          name of the service offering
+    * @param displayText
+    *          display name
+    * @param cpuNumber
+    *          number of CPUs
+    * @param cpuSpeedInMHz
+    *          CPU speed in MHz
+    * @param memoryInMB
+    *          the total memory of the service offering in MB
+    * @param options
+    *          optional arguments
+    * @return
+    *          service offering instance
+    */
+   @Named("createServiceOffering")
+   @GET
+   @QueryParams(keys = "command", values = "createServiceOffering")
+   @SelectJson("serviceoffering")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   ServiceOffering createServiceOffering(@QueryParam("name") String name, 
@QueryParam("displaytext") String displayText,
+         @QueryParam("cpunumber") int cpuNumber, @QueryParam("cpuspeed") int 
cpuSpeedInMHz, @QueryParam("memory") int memoryInMB, 
CreateServiceOfferingOptions... options);
+
+
+   /**
+    * Update an existing service offering
+    *
+    * @param id
+    *          service offering ID
+    * @param options
+    *          optional arguments
+    * @return
+    *          service offering instance
+    */
+   @Named("updateServiceOffering")
+   @GET
+   @QueryParams(keys = "command", values = "updateServiceOffering")
+   @SelectJson("serviceoffering")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   ServiceOffering updateServiceOffering(@QueryParam("id") String id, 
UpdateServiceOfferingOptions... options);
+
+   /**
+    * Delete service offering
+    *
+    * @param id
+    *       the ID of the service offering
+    */
+   @Named("deleteServiceOffering")
+   @GET
+   @QueryParams(keys = "command", values = "deleteServiceOffering")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   void deleteServiceOffering(@QueryParam("id") String id);
+
+   /**
+    * Create a new disk offering
+    *
+    * @param name
+    *          name of the disk offering
+    * @param displayText
+    *          display text for disk offering
+    * @param options
+    *          optional arguments
+    * @return
+    *          disk offering instance
+    */
+   @Named("createDiskOffering")
+   @GET
+   @QueryParams(keys = "command", values = "createDiskOffering")
+   @SelectJson("diskoffering")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   DiskOffering createDiskOffering(@QueryParam("name") String name,
+         @QueryParam("displaytext") String displayText, 
CreateDiskOfferingOptions... options);
+
+   /**
+    * Update a disk offering
+    *
+    * @param id
+    *          disk offering ID
+    * @param options
+    *          optional arguments
+    * @return
+    *          disk offering instance
+    */
+   @Named("updateDiskOffering")
+   @GET
+   @QueryParams(keys = "command", values = "updateDiskOffering")
+   @SelectJson("diskoffering")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   DiskOffering updateDiskOffering(@QueryParam("id") String id, 
UpdateDiskOfferingOptions... options);
+
+   /**
+    * Delete disk offering
+    *
+    * @param id
+    *       the ID of the disk offering
+    */
+   @Named("deleteDiskOffering")
+   @GET
+   @QueryParams(keys = "command", values = "deleteDiskOffering")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   void deleteDiskOffering(@QueryParam("id") String id);
+
+   /**
+    * Update network offering
+    *
+    * @param id
+    *       the id of the network offering
+    * @param options
+    *       optional arguments
+    * @return
+    *       network offering instance
+    */
+   @Named("updateNetworkOffering")
+   @GET
+   @QueryParams(keys = "command", values = "updateNetworkOffering")
+   @SelectJson("networkoffering")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   NetworkOffering updateNetworkOffering(@QueryParam("id") String id, 
UpdateNetworkOfferingOptions... options);
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalPodApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalPodApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalPodApi.java
new file mode 100644
index 0000000..d76abaa
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalPodApi.java
@@ -0,0 +1,148 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.Pod;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.CreatePodOptions;
+import org.jclouds.cloudstack.options.ListPodsOptions;
+import org.jclouds.cloudstack.options.UpdatePodOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.OnlyElement;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack Pod features available to Global
+ * Admin users.
+ *
+ * @see <a href=
+ *      
"http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
+ *      />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalPodApi {
+
+   /**
+    * Lists pods
+    *
+    * @param options
+    *           if present, how to constrain the list.
+    * @return pods matching query, or empty set, if no pods are found
+    */
+   @Named("listPods")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listPods", "true" 
})
+   @SelectJson("pod")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<Pod> listPods(ListPodsOptions... options);
+
+   /**
+    * get a specific pod by id
+    *
+    * @param id
+    *           pod to get
+    * @return pod or null if not found
+    */
+   @Named("listPods")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listPods", "true" 
})
+   @SelectJson("pod")
+   @OnlyElement
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Pod getPod(@QueryParam("id") String id);
+
+   /**
+    * Creates a new Pod.
+    *
+    * @param name the name of the Pod
+    * @param zoneId the Zone ID in which the Pod will be created
+    * @param startIp the starting IP address for the Pod
+    * @param endIp the ending IP address for the Pod
+    * @param gateway the gateway for the Pod
+    * @param netmask the netmask for the Pod
+    * @param createPodOptions optional arguments
+    * @return the new Pod
+    */
+   @Named("createPod")
+   @GET
+   @QueryParams(keys = "command", values = "createPod")
+   @SelectJson("pod")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Pod createPod(@QueryParam("name") String name, @QueryParam("zoneid") String 
zoneId, @QueryParam("startip") String startIp, @QueryParam("endip") String 
endIp, @QueryParam("gateway") String gateway, @QueryParam("netmask") String 
netmask, CreatePodOptions... createPodOptions);
+
+   /**
+    * Creates a new Pod.
+    *
+    * @param name the name of the Pod
+    * @param zoneId the Zone ID in which the Pod will be created
+    * @param startIp the starting IP address for the Pod
+    * @param gateway the gateway for the Pod
+    * @param netmask the netmask for the Pod
+    * @param createPodOptions optional arguments
+    * @return the new Pod
+    */
+   @Named("createPod")
+   @GET
+   @QueryParams(keys = "command", values = "createPod")
+   @SelectJson("pod")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Pod createPod(@QueryParam("name") String name, @QueryParam("zoneid") String 
zoneId, @QueryParam("startip") String startIp, @QueryParam("gateway") String 
gateway, @QueryParam("netmask") String netmask, CreatePodOptions... 
createPodOptions);
+
+   /**
+    * Deletes a Pod.
+    * @param id the ID of the Pod
+    */
+   @Named("deletePod")
+   @GET
+   @QueryParams(keys = "command", values = "deletePod")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(VoidOnNotFoundOr404.class)
+   void deletePod(@QueryParam("id") String id);
+
+   /**
+    * Updates a Pod.
+    * @param id the ID of the Pod
+    * @param updatePodOptions optional arguments
+    * @return the updated pod
+    */
+   @Named("updatePod")
+   @GET
+   @QueryParams(keys = "command", values = "updatePod")
+   @SelectJson("pod")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Pod updatePod(@QueryParam("id") String id, UpdatePodOptions... 
updatePodOptions);
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalStoragePoolApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalStoragePoolApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalStoragePoolApi.java
new file mode 100644
index 0000000..6fa00ea
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalStoragePoolApi.java
@@ -0,0 +1,50 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.cloudstack.domain.StoragePool;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.ListStoragePoolsOptions;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack storage pool features.
+ * <p/>
+ *
+ * @see <a 
href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
 />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalStoragePoolApi {
+
+   @Named("listStoragePools")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { 
"listStoragePools", "true" })
+   @SelectJson("storagepool")
+   @Consumes(MediaType.APPLICATION_JSON)
+   Set<StoragePool> listStoragePools(ListStoragePoolsOptions... options);
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalUsageApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalUsageApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalUsageApi.java
new file mode 100644
index 0000000..acc8d91
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalUsageApi.java
@@ -0,0 +1,63 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Date;
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.cloudstack.domain.JobResult;
+import org.jclouds.cloudstack.domain.UsageRecord;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.functions.DateToYyyyMmDd;
+import org.jclouds.cloudstack.options.GenerateUsageRecordsOptions;
+import org.jclouds.cloudstack.options.ListUsageRecordsOptions;
+import org.jclouds.rest.annotations.ParamParser;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack usage features.
+ * <p/>
+ *
+ * @see <a 
href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
 />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalUsageApi {
+
+   @Named("generateUsageRecords")
+   @GET
+   @QueryParams(keys = "command", values = "generateUsageRecords")
+   @SelectJson("generateusagerecordsresponse")
+   @Consumes(MediaType.APPLICATION_JSON)
+   JobResult generateUsageRecords(@QueryParam("startdate") 
@ParamParser(DateToYyyyMmDd.class) Date start, @QueryParam("enddate") 
@ParamParser(DateToYyyyMmDd.class) Date end, GenerateUsageRecordsOptions... 
options);
+
+   @Named("listUsageRecords")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { 
"listUsageRecords", "true" })
+   @SelectJson("usagerecord")
+   @Consumes(MediaType.APPLICATION_JSON)
+   Set<UsageRecord> listUsageRecords(@QueryParam("startdate") 
@ParamParser(DateToYyyyMmDd.class) Date start, @QueryParam("enddate") 
@ParamParser(DateToYyyyMmDd.class) Date end, ListUsageRecordsOptions... 
options);
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalUserApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalUserApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalUserApi.java
new file mode 100644
index 0000000..430b292
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalUserApi.java
@@ -0,0 +1,114 @@
+/*
+ * 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.cloudstack.features;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.ApiKeyPair;
+import org.jclouds.cloudstack.domain.User;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.CreateUserOptions;
+import org.jclouds.cloudstack.options.UpdateUserOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack User features available to Global
+ * Admin users.
+ *
+ * @see <a href=
+ *      
"http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
+ *      />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalUserApi extends DomainUserApi {
+
+   /**
+    * Create an user for an account that already exists
+    *
+    * @param userName unique user name
+    * @param accountName Creates the user under the specified account. If no
+    *    account is specified, the username will be used as the account name.
+    * @param email
+    * @param hashedPassword Hashed password (Default is MD5). If you wish to 
use
+    *    any other hashing algorithm, you would need to write a custom 
authentication
+    *    adapter See Docs section.
+    * @param firstName
+    * @param lastName
+    * @param options optional arguments
+    * @return
+    */
+   @Named("createUser")
+   @GET
+   @QueryParams(keys = "command", values = "createUser")
+   @SelectJson("user")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   User createUser(@QueryParam("username") String userName, 
@QueryParam("account") String accountName,
+      @QueryParam("email") String email, @QueryParam("password") String 
hashedPassword,
+      @QueryParam("firstname") String firstName, @QueryParam("lastname") 
String lastName, CreateUserOptions... options);
+
+   /**
+    * This command allows a user to register for the developer API, returning a
+    * secret key and an API key
+    *
+    * @param userId the ID of the user
+    * @return
+    */
+   @Named("registerUserKeys")
+   @GET
+   @QueryParams(keys = "command", values = "registerUserKeys")
+   @SelectJson("userkeys")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   ApiKeyPair registerUserKeys(@QueryParam("id") String userId);
+
+   /**
+    * Update an user
+    *
+    * @param id the user ID
+    * @param options optional arguments
+    * @return
+    */
+   @Named("updateUser")
+   @GET
+   @QueryParams(keys = "command", values = "updateUser")
+   @SelectJson("user")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   User updateUser(@QueryParam("id") String id, UpdateUserOptions... options);
+
+   /**
+    * Delete an user with the specified ID
+    *
+    * @param id  user ID
+    */
+   @Named("deleteUser")
+   @GET
+   @QueryParams(keys = "command", values = "deleteUser")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   void deleteUser(@QueryParam("id") String id);
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalVlanApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalVlanApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalVlanApi.java
new file mode 100644
index 0000000..f5b0b87
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalVlanApi.java
@@ -0,0 +1,105 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.VlanIPRange;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.CreateVlanIPRangeOptions;
+import org.jclouds.cloudstack.options.ListVlanIPRangesOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.OnlyElement;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to cloudstack via their REST API.
+ * <p/>
+ *
+ * @see <a 
href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
 />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalVlanApi {
+
+   /**
+    * Get the details of an IP range by its id.
+    * @param id the required IP range.
+    * @return the requested IP range.
+    */
+   @Named("listVlanIpRanges")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { 
"listVlanIpRanges", "true" })
+   @SelectJson("vlaniprange")
+   @OnlyElement
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   VlanIPRange getVlanIPRange(@QueryParam("id") String id);
+
+   /**
+    * Lists all VLAN IP ranges.
+    *
+    * @param options optional arguments.
+    * @return the list of IP ranges that match the criteria.
+    */
+   @Named("listVlanIpRanges")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { 
"listVlanIpRanges", "true" })
+   @SelectJson("vlaniprange")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<VlanIPRange> listVlanIPRanges(ListVlanIPRangesOptions... options);
+
+   /**
+    * Creates a VLAN IP range.
+    *
+    * @param startIP the beginning IP address in the VLAN IP range
+    * @param endIP the ending IP address in the VLAN IP range
+    * @param options optional arguments
+    * @return the newly-create IP range.
+    */
+   @Named("createVlanIpRange")
+   @GET
+   @QueryParams(keys = "command", values = "createVlanIpRange")
+   @SelectJson("vlaniprange")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   VlanIPRange createVlanIPRange(@QueryParam("startip") String startIP, 
@QueryParam("endip") String endIP, CreateVlanIPRangeOptions... options);
+
+   /**
+    * Deletes a VLAN IP range.
+    * @param rangeId the id of the VLAN IP range
+    * @return void
+    */
+   @Named("deleteVlanIpRange")
+   @GET
+   @QueryParams(keys = "command", values = "deleteVlanIpRange")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(VoidOnNotFoundOr404.class)
+   void deleteVlanIPRange(@QueryParam("id") String rangeId);
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalZoneApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalZoneApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalZoneApi.java
new file mode 100644
index 0000000..37f1805
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GlobalZoneApi.java
@@ -0,0 +1,103 @@
+/*
+ * 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.cloudstack.features;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.NetworkType;
+import org.jclouds.cloudstack.domain.Zone;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.CreateZoneOptions;
+import org.jclouds.cloudstack.options.UpdateZoneOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack Account features available to 
Global
+ * Admin users.
+ *
+ * @see <a href=
+ *      
"http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_Global_Admin.html";
+ *      />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GlobalZoneApi extends ZoneApi {
+
+   /**
+    * Create a new Zone
+    *
+    * @param name
+    *          the name of the Zone
+    * @param networkType
+    *          network type of the zone, can be Basic or Advanced
+    * @param dns1
+    *          the first DNS for the Zone
+    * @param internalDns1
+    *          the first internal DNS for the Zone
+    * @param options
+    *          optional arguments
+    * @return
+    *          zone instance or null
+    */
+   @Named("createZone")
+   @GET
+   @QueryParams(keys = "command", values = "createZone")
+   @SelectJson("zone")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Zone createZone(@QueryParam("name") String name, @QueryParam("networktype") 
NetworkType networkType,
+      @QueryParam("dns1") String externalDns1, @QueryParam("internaldns1") 
String internalDns1, CreateZoneOptions... options);
+
+   /**
+    * Update a zone
+    *
+    * @param id
+    *          the ID of the Zone
+    * @param options
+    *          optional arguments
+    * @return
+    */
+   @Named("updateZone")
+   @GET
+   @QueryParams(keys = "command", values = "updateZone")
+   @SelectJson("zone")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   Zone updateZone(@QueryParam("id") String id, UpdateZoneOptions... options);
+
+   /**
+    * Delete a zone with a specific ID
+    *
+    * @param zoneId
+    *          the ID of the Zone
+    */
+   @Named("deleteZone")
+   @GET
+   @QueryParams(keys = "command", values = "deleteZone")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(VoidOnNotFoundOr404.class)
+   void deleteZone(@QueryParam("id") String id);
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GuestOSApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GuestOSApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GuestOSApi.java
new file mode 100644
index 0000000..9d43b01
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/GuestOSApi.java
@@ -0,0 +1,110 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Map;
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.OSType;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.functions.ParseIdToNameEntryFromHttpResponse;
+import org.jclouds.cloudstack.functions.ParseIdToNameFromHttpResponse;
+import org.jclouds.cloudstack.options.ListOSTypesOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.OnlyElement;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to cloudstack via their REST API.
+ * <p/>
+ * 
+ * @see <a 
href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_User.html"; />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface GuestOSApi {
+
+   /**
+    * Lists all supported OS types for this cloud.
+    * 
+    * @param options
+    *           if present, how to constrain the list
+    * @return os types matching query, or empty set, if no types are found
+    */
+   @Named("listOsTypes")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listOsTypes", 
"true" })
+   @SelectJson("ostype")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<OSType> listOSTypes(ListOSTypesOptions... options);
+
+   /**
+    * get a specific os type by id
+    * 
+    * @param id
+    *           os type to get
+    * @return os type or null if not found
+    */
+   @Named("listOsTypes")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listOsTypes", 
"true" })
+   @SelectJson("ostype")
+   @OnlyElement
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(NullOnNotFoundOr404.class)
+   OSType getOSType(@QueryParam("id") String id);
+
+   /**
+    * Lists all supported OS categories for this cloud.
+    * 
+    * @return os categories matching query, or empty set, if no categories are
+    *         found
+    */
+   @Named("listOsCategories")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { 
"listOsCategories", "true" })
+   @ResponseParser(ParseIdToNameFromHttpResponse.class)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Map<String, String> listOSCategories();
+
+   /**
+    * get a specific os category by id
+    * 
+    * @param id
+    *           os category to get
+    * @return os category or null if not found
+    */
+   @Named("listOsCategories")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { 
"listOsCategories", "true" })
+   @ResponseParser(ParseIdToNameEntryFromHttpResponse.class)
+   @Fallback(NullOnNotFoundOr404.class)
+   Map.Entry<String, String> getOSCategory(@QueryParam("id") String id);
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/HypervisorApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/HypervisorApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/HypervisorApi.java
new file mode 100644
index 0000000..1b132fe
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/HypervisorApi.java
@@ -0,0 +1,62 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.functions.ParseNamesFromHttpResponse;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+
+/**
+ * Provides synchronous access to cloudstack via their REST API.
+ * <p/>
+ * 
+ * @see <a 
href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_User.html"; />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface HypervisorApi {
+
+   /**
+    * @see HypervisorApi#listHypervisors
+    */
+   @Named("listHypervisors")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listHypervisors", 
"true" })
+   @ResponseParser(ParseNamesFromHttpResponse.class)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<String> listHypervisors();
+
+   /**
+    * @see HypervisorApi#listHypervisorsInZone
+    */
+   @Named("listHypervisors")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { "listHypervisors", 
"true" })
+   @ResponseParser(ParseNamesFromHttpResponse.class)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<String> listHypervisorsInZone(@QueryParam("zoneid") String zoneId);
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ISOApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ISOApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ISOApi.java
new file mode 100644
index 0000000..241e286
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ISOApi.java
@@ -0,0 +1,219 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.AsyncCreateResponse;
+import org.jclouds.cloudstack.domain.ExtractMode;
+import org.jclouds.cloudstack.domain.ISO;
+import org.jclouds.cloudstack.domain.ISOPermissions;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.AccountInDomainOptions;
+import org.jclouds.cloudstack.options.DeleteISOOptions;
+import org.jclouds.cloudstack.options.ExtractISOOptions;
+import org.jclouds.cloudstack.options.ListISOsOptions;
+import org.jclouds.cloudstack.options.RegisterISOOptions;
+import org.jclouds.cloudstack.options.UpdateISOOptions;
+import org.jclouds.cloudstack.options.UpdateISOPermissionsOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.OnlyElement;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+import org.jclouds.rest.annotations.Unwrap;
+
+/**
+ * 
+ * <p/>
+ * 
+ * @see http://download.cloud.com/releases/2.2.12/api/TOC_User.html
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface ISOApi {
+
+   /**
+    * Attaches an ISO to a virtual machine.
+    *
+    * @param isoId the ID of the ISO file
+    * @param vmId the ID of the virtual machine
+    * @return an asynchronous job response.
+    */
+   @Named("attachIso")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = "command", values = "attachIso")
+   @Unwrap
+   AsyncCreateResponse attachISO(@QueryParam("id") String isoId, 
@QueryParam("virtualmachineid") String vmId);
+
+   /**
+    * Detaches any ISO file (if any) currently attached to a virtual machine.
+    *
+    * @param vmId The ID of the virtual machine
+    * @return an asynchronous job response.
+    */
+   @Named("detachIso")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = "command", values = "detachIso")
+   @Unwrap
+   AsyncCreateResponse detachISO(@QueryParam("virtualmachineid") String vmId);
+
+   /**
+    * Gets information about an ISO by its ID.
+    *
+    * @param id the ID of the ISO file
+    * @return the ISO object matching the ID
+    */
+   @Named("listIsos")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = { "command", "listAll" }, values = { "listIsos", "true" 
})
+   @SelectJson("iso")
+   @OnlyElement
+   @Fallback(NullOnNotFoundOr404.class)
+   ISO getISO(@QueryParam("id") String id);
+
+   /**
+    * Lists all available ISO files.
+    *
+    * @param options optional arguments
+    * @return a set of ISO objects the match the filter
+    */
+   @Named("listIsos")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = { "command", "listAll" }, values = { "listIsos", "true" 
})
+   @SelectJson("iso")
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<ISO> listISOs(ListISOsOptions... options);
+
+   /**
+    * Registers an existing ISO into the Cloud.com Cloud.
+    *
+    * @param name the name of the ISO
+    * @param displayText the display text of the ISO. This is usually used for 
display purposes.
+    * @param url the URL to where the ISO is currently being hosted
+    * @param zoneId the ID of the zone you wish to register the ISO to.
+    * @param options optional arguments
+    * @return the newly-added ISO
+    */
+   @Named("registerIso")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = "command", values = "registerIso")
+   @SelectJson("iso")
+   @OnlyElement
+   ISO registerISO(@QueryParam("name") String name, @QueryParam("displaytext") 
String displayText, @QueryParam("url") String url, @QueryParam("zoneid") String 
zoneId, RegisterISOOptions... options);
+
+   /**
+    * 
+    *
+    * @param id the ID of the ISO file
+    * @param options optional arguments
+    * @return the ISO object matching the ID
+    */
+   @Named("updateIso")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = "command", values = "updateIso")
+   @Unwrap
+   ISO updateISO(@QueryParam("id") String id, UpdateISOOptions... options);
+
+   /**
+    * Deletes an ISO file.
+    *
+    * @param id the ID of the ISO file
+    * @param options optional arguments
+    * @return an asynchronous job response.
+    */
+   @Named("deleteIso")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = "command", values = "deleteIso")
+   @Unwrap
+   AsyncCreateResponse deleteISO(@QueryParam("id") String id, 
DeleteISOOptions... options);
+
+   /**
+    * Copies a template from one zone to another.
+    *
+    * @param isoId Template ID.
+    * @param sourceZoneId ID of the zone the template is currently hosted on.
+    * @param destZoneId ID of the zone the template is being copied to.
+    * @return an asynchronous job response.
+    */
+   @Named("copyIso")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = "command", values = "copyIso")
+   @Unwrap
+   AsyncCreateResponse copyISO(@QueryParam("id") String isoId, 
@QueryParam("sourcezoneid") String sourceZoneId, @QueryParam("destzoneid") 
String destZoneId);
+
+   /**
+    * Updates iso permissions
+    *
+    * @param id the template ID
+    * @param options optional arguments
+    * @return 
+    */
+   @Named("updateIsoPermissions")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = "command", values = "updateIsoPermissions")
+   @Unwrap
+   void updateISOPermissions(@QueryParam("id") String id, 
UpdateISOPermissionsOptions... options);
+
+   /**
+    * List template visibility and all accounts that have permissions to view 
this template.
+    *
+    * @param id the template ID
+    * @param options optional arguments
+    * @return A set of the permissions on this ISO
+    */
+   @Named("listIsoPermissions")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = { "command", "listAll" }, values = { 
"listIsoPermissions", "true" })
+   @SelectJson("templatepermission")
+   ISOPermissions listISOPermissions(@QueryParam("id") String id, 
AccountInDomainOptions... options);
+
+   /**
+    * Extracts an ISO
+    *
+    * @param id the ID of the ISO file
+    * @param mode the mode of extraction - HTTP_DOWNLOAD or FTP_UPLOAD
+    * @param zoneId the ID of the zone where the ISO is originally located
+    * @param options optional arguments
+    * @return an asynchronous job response.
+    */
+   @Named("extractIso")
+   @GET
+   @Consumes(MediaType.APPLICATION_JSON)
+   @QueryParams(keys = "command", values = "extractIso")
+   @Unwrap
+   AsyncCreateResponse extractISO(@QueryParam("id") String id, 
@QueryParam("mode") ExtractMode mode, @QueryParam("zoneid") String zoneId, 
ExtractISOOptions... options);
+
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/86fd5cf2/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/LimitApi.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/LimitApi.java
 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/LimitApi.java
new file mode 100644
index 0000000..c07ccb2
--- /dev/null
+++ 
b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/LimitApi.java
@@ -0,0 +1,58 @@
+/*
+ * 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.cloudstack.features;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.core.MediaType;
+
+import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.cloudstack.domain.ResourceLimit;
+import org.jclouds.cloudstack.filters.AuthenticationFilter;
+import org.jclouds.cloudstack.options.ListResourceLimitsOptions;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.QueryParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.SelectJson;
+
+/**
+ * Provides synchronous access to CloudStack SSHKeyPair features.
+ *
+ * @see <a
+ *      
href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_User.html";
+ *      />
+ */
+@RequestFilters(AuthenticationFilter.class)
+@QueryParams(keys = "response", values = "json")
+public interface LimitApi {
+   /**
+    * List the resource limits.
+    *
+    * @param options if present, how to constrain the list
+    */
+   @Named("listResourceLimits")
+   @GET
+   @QueryParams(keys = { "command", "listAll" }, values = { 
"listResourceLimits", "true" })
+   @SelectJson("resourcelimit")
+   @Consumes(MediaType.APPLICATION_JSON)
+   @Fallback(EmptySetOnNotFoundOr404.class)
+   Set<ResourceLimit> listResourceLimits(ListResourceLimitsOptions... options);
+
+}

Reply via email to