http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/LoadBalancerApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/LoadBalancerApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/LoadBalancerApi.java deleted file mode 100644 index f91c405..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/LoadBalancerApi.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.LoadBalancerRule; -import org.jclouds.cloudstack.domain.LoadBalancerRule.Algorithm; -import org.jclouds.cloudstack.domain.VirtualMachine; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.CreateLoadBalancerRuleOptions; -import org.jclouds.cloudstack.options.ListLoadBalancerRulesOptions; -import org.jclouds.cloudstack.options.UpdateLoadBalancerRuleOptions; -import org.jclouds.functions.JoinOnComma; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.OnlyElement; -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 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 LoadBalancerApi { - - /** - * List the load balancer rules - * - * @param options - * if present, how to constrain the list. - * @return load balancer rules matching query, or empty set, if no load - * balancer rules are found - */ - @Named("listLoadBalancerRules") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listLoadBalancerRules", "true" }) - @SelectJson("loadbalancerrule") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<LoadBalancerRule> listLoadBalancerRules(ListLoadBalancerRulesOptions... options); - - /** - * get a specific LoadBalancerRule by id - * - * @param id - * LoadBalancerRule to get - * @return LoadBalancerRule or null if not found - */ - @Named("listLoadBalancerRules") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listLoadBalancerRules", "true" }) - @SelectJson("loadbalancerrule") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - LoadBalancerRule getLoadBalancerRule(@QueryParam("id") String id); - - /** - * Creates a load balancer rule. - * - * @param publicIPId - * the public port from where the network traffic will be load - * balanced from - * @param algorithm - * load balancer algorithm (source, roundrobin, leastconn) - * @param name - * name of the load balancer rule - * @param privatePort - * the private port of the private ip address/virtual machine where - * the network traffic will be load balanced to - * @param publicPort - * public ip address id from where the network traffic will be load - * balanced from - * @param options optional call arguments - * @return newly created rule - */ - @Named("createLoadBalancerRule") - @GET - @QueryParams(keys = "command", values = "createLoadBalancerRule") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String createLoadBalancerRuleForPublicIP(@QueryParam("publicipid") String publicIPId, - @QueryParam("algorithm") Algorithm algorithm, @QueryParam("name") String name, - @QueryParam("privateport") int privatePort, @QueryParam("publicport") int publicPort, - CreateLoadBalancerRuleOptions... options); - - /** - * Update a load balancer rule. - * - * @param id - * rule id - * @param options - * optional arguments - * @return updated rule - */ - @Named("updateLoadBalancerRule") - @GET - @QueryParams(keys = "command", values = "updateLoadBalancerRule") - @SelectJson("loadbalancerrule") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - LoadBalancerRule updateLoadBalancerRule(@QueryParam("id") String id, UpdateLoadBalancerRuleOptions... options); - - /** - * - * deletes a loadbalancer rule - * - * @param id - * id of the rule to delete - * @return async job id of the job completing or null, if the load balancer - * rule was not found. - */ - @Named("deleteLoadBalancerRule") - @GET - @QueryParams(keys = "command", values = "deleteLoadBalancerRule") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - String deleteLoadBalancerRule(@QueryParam("id") String id); - - /** - * Assigns virtual machine or a list of virtual machines to a load balancer - * rule. - * - * @param id - * the ID of the load balancer rule - * @param virtualMachineIds - * the list of IDs of the virtual machine that are being assigned - * to the load balancer rule - * @return job id related to the operation - */ - @Named("assignToLoadBalancerRule") - @GET - @QueryParams(keys = "command", values = "assignToLoadBalancerRule") - @Fallback(NullOnNotFoundOr404.class) - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String assignVirtualMachinesToLoadBalancerRule(@QueryParam("id") String id, - @QueryParam("virtualmachineids") @ParamParser(JoinOnComma.class) Iterable<String> virtualMachineIds); - - /** - * Assigns virtual machine or a list of virtual machines to a load balancer - * rule. - * - * @param id - * the ID of the load balancer rule - * @param virtualMachineIds - * the list of IDs of the virtual machine that are being assigned - * to the load balancer rule - * @return job id related to the operation - */ - @Named("assignToLoadBalancerRule") - @GET - @QueryParams(keys = "command", values = "assignToLoadBalancerRule") - @Fallback(NullOnNotFoundOr404.class) - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String assignVirtualMachinesToLoadBalancerRule(@QueryParam("id") String id, - @QueryParam("virtualmachineids") @ParamParser(JoinOnComma.class) String... virtualMachineIds); - - /** - * Removes a virtual machine or a list of virtual machines from a load - * balancer rule. - * - * @param id - * the ID of the load balancer rule - * @param virtualMachineIds - * the list of IDs of the virtual machine that are being removed - * from the load balancer rule - * @return job id related to the operation - */ - @Named("removeFromLoadBalancerRule") - @GET - @QueryParams(keys = "command", values = "removeFromLoadBalancerRule") - @Fallback(NullOnNotFoundOr404.class) - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String removeVirtualMachinesFromLoadBalancerRule(@QueryParam("id") String id, - @QueryParam("virtualmachineids") @ParamParser(JoinOnComma.class) Iterable<String> virtualMachineIds); - - /** - * Removes a virtual machine or a list of virtual machines from a load - * balancer rule. - * - * @param id - * the ID of the load balancer rule - * @param virtualMachineIds - * the list of IDs of the virtual machine that are being removed - * from the load balancer rule - * @return job id related to the operation - */ - @Named("removeFromLoadBalancerRule") - @GET - @QueryParams(keys = "command", values = "removeFromLoadBalancerRule") - @Fallback(NullOnNotFoundOr404.class) - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String removeVirtualMachinesFromLoadBalancerRule(@QueryParam("id") String id, - @QueryParam("virtualmachineids") @ParamParser(JoinOnComma.class) String... virtualMachineIds); - - /** - * List all virtual machine instances that are assigned to a load balancer - * rule. - * - * @param id - * id of the rule - * @return VirtualMachines matching query, or empty set, if no - * VirtualMachines are assigned - */ - @Named("listLoadBalancerRuleInstances") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listLoadBalancerRuleInstances", "true" }) - @SelectJson("loadbalancerruleinstance") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<VirtualMachine> listVirtualMachinesAssignedToLoadBalancerRule(@QueryParam("id") String id); - -}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/NATApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/NATApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/NATApi.java deleted file mode 100644 index 015c2ba..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/NATApi.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.IPForwardingRule; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.CreateIPForwardingRuleOptions; -import org.jclouds.cloudstack.options.ListIPForwardingRulesOptions; -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; - -/** - * 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 NATApi { - - /** - * List the ip forwarding rules - * - * @param options - * if present, how to constrain the list. - * @return IPForwardingRules matching query, or empty set, if no - * IPForwardingRules are found - */ - @Named("listIpForwardingRules") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listIpForwardingRules", "true" }) - @SelectJson("ipforwardingrule") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<IPForwardingRule> listIPForwardingRules(ListIPForwardingRulesOptions... options); - - /** - * get a specific IPForwardingRule by id - * - * @param id - * IPForwardingRule to get - * @return IPForwardingRule or null if not found - */ - @Named("listIpForwardingRules") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listIpForwardingRules", "true" }) - @SelectJson("ipforwardingrule") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - IPForwardingRule getIPForwardingRule(@QueryParam("id") String id); - - /** - * get a set of IPForwardingRules by ipaddress id - * - * @param id - * IPAddress of rule to get - * @return IPForwardingRule matching query or empty if not found - */ - @Named("listIpForwardingRules") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listIpForwardingRules", "true" }) - @SelectJson("ipforwardingrule") - @Consumes(MediaType.APPLICATION_JSON) - Set<IPForwardingRule> getIPForwardingRulesForIPAddress(@QueryParam("ipaddressid") String id); - - /** - * get a set of IPForwardingRules by virtual machine id - * - * @param id - * virtual machine of rule to get - * @return IPForwardingRule matching query or empty set if not found - */ - @Named("listIpForwardingRules") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listIpForwardingRules", "true" }) - @SelectJson("ipforwardingrule") - @Consumes(MediaType.APPLICATION_JSON) - Set<IPForwardingRule> getIPForwardingRulesForVirtualMachine(@QueryParam("virtualmachineid") String id); - - /** - * Creates an ip forwarding rule - * - * @param IPAddressId - * the public IP address id of the forwarding rule, already - * associated via associateIp - * @param protocol - * the protocol for the rule. Valid values are TCP or UDP. - * @param startPort - * the start port for the rule - * @return response used to track creation - */ - @Named("createIpForwardingRule") - @GET - @QueryParams(keys = "command", values = "createIpForwardingRule") - @Unwrap - @Consumes(MediaType.APPLICATION_JSON) - AsyncCreateResponse createIPForwardingRule(@QueryParam("ipaddressid") String IPAddressId, - @QueryParam("protocol") String protocol, @QueryParam("startport") int startPort, - CreateIPForwardingRuleOptions... options); - - @Named("enableStaticNat") - @GET - @QueryParams(keys = "command", values = "enableStaticNat") - @Consumes(MediaType.APPLICATION_JSON) - void enableStaticNATForVirtualMachine( - @QueryParam("virtualmachineid") String virtualMachineId, @QueryParam("ipaddressid") String IPAddressId); - - /** - * Deletes an ip forwarding rule - * - * @param id - * the id of the forwarding rule - */ - @Named("deleteIpForwardingRule") - @GET - @QueryParams(keys = "command", values = "deleteIpForwardingRule") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - String deleteIPForwardingRule(@QueryParam("id") String id); - - /** - * Disables static rule for given ip address - * - * @param IPAddressId - * the public IP address id for which static nat feature is being - * disabled - */ - @Named("disableStaticNat") - @GET - @QueryParams(keys = "command", values = "disableStaticNat") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String disableStaticNATOnPublicIP(@QueryParam("ipaddressid") String IPAddressId); - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/NetworkApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/NetworkApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/NetworkApi.java deleted file mode 100644 index 9784b41..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/NetworkApi.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.Network; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.CreateNetworkOptions; -import org.jclouds.cloudstack.options.ListNetworksOptions; -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_User.html" /> - */ -@RequestFilters(AuthenticationFilter.class) -@QueryParams(keys = "response", values = "json") -public interface NetworkApi { - - /** - * Lists networks - * - * @param options - * if present, how to constrain the list. - * @return networks matching query, or empty set, if no networks are found - */ - @Named("listNetworks") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listNetworks", "true" }) - @SelectJson("network") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<Network> listNetworks(ListNetworksOptions... options); - - /** - * get a specific network by id - * - * @param id - * network to get - * @return network or null if not found - */ - @Named("listNetworks") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listNetworks", "true" }) - @SelectJson("network") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - Network getNetwork(@QueryParam("id") String id); - - /** - * Creates a network - * - * @param zoneId - * the Zone ID for the Vlan ip range - * @param networkOfferingId - * the network offering id - * @param name - * the name of the network - * @param displayText - * the display text of the network - * @param options - * optional parameters - * @return newly created network - */ - @Named("createNetwork") - @GET - @QueryParams(keys = "command", values = "createNetwork") - @SelectJson("network") - @Consumes(MediaType.APPLICATION_JSON) - Network createNetworkInZone(@QueryParam("zoneid") String zoneId, - @QueryParam("networkofferingid") String networkOfferingId, @QueryParam("name") String name, - @QueryParam("displaytext") String displayText, CreateNetworkOptions... options); - - /** - * Deletes a network - * - * @param id - * the ID of the network - * @return job id related to destroying the network, or null if resource was - * not found - */ - @Named("deleteNetwork") - @GET - @QueryParams(keys = "command", values = "deleteNetwork") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - String deleteNetwork(@QueryParam("id") String id); -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/OfferingApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/OfferingApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/OfferingApi.java deleted file mode 100644 index 4baf0f6..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/OfferingApi.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.DiskOffering; -import org.jclouds.cloudstack.domain.NetworkOffering; -import org.jclouds.cloudstack.domain.ServiceOffering; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.ListDiskOfferingsOptions; -import org.jclouds.cloudstack.options.ListNetworkOfferingsOptions; -import org.jclouds.cloudstack.options.ListServiceOfferingsOptions; -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_User.html" /> - */ -@RequestFilters(AuthenticationFilter.class) -@QueryParams(keys = "response", values = "json") -public interface OfferingApi { - - /** - * Lists service offerings - * - * @param options - * if present, how to constrain the list. - * @return service offerings matching query, or empty set, if no service - * offerings are found - */ - @Named("listServiceOfferings") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listServiceOfferings", "true" }) - @SelectJson("serviceoffering") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<ServiceOffering> listServiceOfferings(ListServiceOfferingsOptions... options); - - /** - * get a specific service offering by id - * - * @param id - * offering to get - * @return service offering or null if not found - */ - @Named("listServiceOfferings") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listServiceOfferings", "true" }) - @SelectJson("serviceoffering") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - ServiceOffering getServiceOffering(@QueryParam("id") String id); - - /** - * Lists disk offerings - * - * @param options - * if present, how to constrain the list. - * @return disk offerings matching query, or empty set, if no disk offerings - * are found - */ - @Named("listDiskOfferings") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listDiskOfferings", "true" }) - @SelectJson("diskoffering") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<DiskOffering> listDiskOfferings(ListDiskOfferingsOptions... options); - - /** - * get a specific disk offering by id - * - * @param id - * offering to get - * @return disk offering or null if not found - */ - @Named("listDiskOfferings") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listDiskOfferings", "true" }) - @SelectJson("diskoffering") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - DiskOffering getDiskOffering(@QueryParam("id") String id); - - /** - * Lists service offerings - * - * @param options - * if present, how to constrain the list. - * @return service offerings matching query, or empty set, if no service - * offerings are found - */ - @Named("listNetworkOfferings") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listNetworkOfferings", "true" }) - @SelectJson("networkoffering") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<NetworkOffering> listNetworkOfferings(ListNetworkOfferingsOptions... options); - - /** - * get a specific service offering by id - * - * @param id - * offering to get - * @return service offering or null if not found - */ - @Named("listNetworkOfferings") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listNetworkOfferings", "true" }) - @SelectJson("networkoffering") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - NetworkOffering getNetworkOffering(@QueryParam("id") String id); - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ProjectApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ProjectApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ProjectApi.java deleted file mode 100644 index f426cdf..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ProjectApi.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.Project; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.ListProjectsOptions; -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 project features. - * - * @see <a - * href="http://download.cloud.com/releases/3.0.6/api_3.0.6/TOC_Root_Admin.html" - * /> - */ -@RequestFilters(AuthenticationFilter.class) -@QueryParams(keys = "response", values = "json") -public interface ProjectApi { - /** - * Lists the projects this account has access to. - * - * @param options if present, how to constrain the list - */ - @Named("listProjects") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listProjects", "true" }) - @SelectJson("project") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<Project> listProjects(ListProjectsOptions... options); - - /** - * gets a specific Project by id - * - * @param id - * Project to get - * @return Project or null if not found */ - @Named("listProjects") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listProjects", "true" }) - @SelectJson("project") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - Project getProject(@QueryParam("id") String id); - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SSHKeyPairApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SSHKeyPairApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SSHKeyPairApi.java deleted file mode 100644 index 6ab8e53..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SSHKeyPairApi.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.SshKeyPair; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.ListSSHKeyPairsOptions; -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 SSHKeyPair features. - * - * @see <a - * href="http://download.cloud.com/releases/2.2.0/api_2.2.8/TOC_User.html" - * /> - */ -@RequestFilters(AuthenticationFilter.class) -@QueryParams(keys = "response", values = "json") -public interface SSHKeyPairApi { - /** - * Returns a list of {@link SshKeyPair}s registered by current user. - * - * @param options if present, how to constrain the list - * @return Set of {@link SshKeyPair}s matching the current constrains or - * empty set if no SshKeyPairs found. - */ - @Named("listSSHKeyPairs") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listSSHKeyPairs", "true" }) - @SelectJson("sshkeypair") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<SshKeyPair> listSSHKeyPairs(ListSSHKeyPairsOptions... options); - - /** - * Registers a {@link SshKeyPair} with the given name and public kay material. - * - * @param name of the keypair - * @param publicKey Public key material of the keypair - * @return Created SshKeyPair. - */ - @Named("registerSSHKeyPair") - @GET - @QueryParams(keys = "command", values = "registerSSHKeyPair") - @SelectJson("keypair") - @Consumes(MediaType.APPLICATION_JSON) - SshKeyPair registerSSHKeyPair(@QueryParam("name") String name, @QueryParam("publickey") String publicKey); - - /** - * Creates a {@link SshKeyPair} with specified name. - * - * @param name of the SshKeyPair. - * @return Created SshKeyPair. - */ - @Named("createSSHKeyPair") - @GET - @QueryParams(keys = "command", values = "createSSHKeyPair") - @SelectJson("keypair") - @Consumes(MediaType.APPLICATION_JSON) - SshKeyPair createSSHKeyPair(@QueryParam("name") String name); - - /** - * Retrieves the {@link SSHKeyPairApi} with given name. - * - * @param name name of the key pair - * @return SSH Key pair or null if not found. - */ - @Named("listSSHKeyPairs") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listSSHKeyPairs", "true" }) - @SelectJson("sshkeypair") - @OnlyElement() - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - SshKeyPair getSSHKeyPair(@QueryParam("name") String name); - - /** - * Deletes the {@link SSHKeyPairApi} with given name. - * - * @param name name of the key pair - * @return - */ - @Named("deleteSSHKeyPair") - @GET - @QueryParams(keys = "command", values = "deleteSSHKeyPair") - @Fallback(VoidOnNotFoundOr404.class) - void deleteSSHKeyPair(@QueryParam("name") String name); - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SecurityGroupApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SecurityGroupApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SecurityGroupApi.java deleted file mode 100644 index 3f53b8f..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SecurityGroupApi.java +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.binders.BindAccountSecurityGroupPairsToIndexedQueryParams; -import org.jclouds.cloudstack.binders.BindCIDRsToCommaDelimitedQueryParam; -import org.jclouds.cloudstack.domain.SecurityGroup; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.AccountInDomainOptions; -import org.jclouds.cloudstack.options.ListSecurityGroupsOptions; -import org.jclouds.rest.annotations.BinderParam; -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 com.google.common.collect.Multimap; -/** - * 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 SecurityGroupApi { - - /** - * Lists security groups - * - * @param options - * if present, how to constrain the list. - * @return security groups matching query, or empty set, if no security - * groups are found - */ - @Named("listSecurityGroups") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listSecurityGroups", "true" }) - @SelectJson("securitygroup") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<SecurityGroup> listSecurityGroups(ListSecurityGroupsOptions... options); - - /** - * get a specific security group by id - * - * @param id - * group to get - * @return security group or null if not found - */ - @Named("listSecurityGroups") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listSecurityGroups", "true" }) - @SelectJson("securitygroup") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - SecurityGroup getSecurityGroup(@QueryParam("id") String id); - - /** - * get a specific security group by name - * - * @param securityGroupName - * group to get - * @return security group or null if not found - */ - @Named("listSecurityGroups") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listSecurityGroups", "true" }) - @SelectJson("securitygroup") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - SecurityGroup getSecurityGroupByName(@QueryParam("securitygroupname") String securityGroupName); - - /** - * Creates a security group - * - * @param name - * name of the security group - * @return security group - */ - @Named("createSecurityGroup") - @GET - @QueryParams(keys = "command", values = "createSecurityGroup") - @SelectJson("securitygroup") - @Consumes(MediaType.APPLICATION_JSON) - SecurityGroup createSecurityGroup(@QueryParam("name") String name); - - /** - * Authorizes a particular TCP or UDP ingress rule for this security group - * - * @param securityGroupId - * The ID of the security group - * @param protocol - * tcp or udp - * @param startPort - * start port for this ingress rule - * @param endPort - * end port for this ingress rule - * @param cidrList - * the cidr list associated - * @return response relating to the creation of this ingress rule - */ - @Named("authorizeSecurityGroupIngress") - @GET - @QueryParams(keys = "command", values = "authorizeSecurityGroupIngress") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String authorizeIngressPortsToCIDRs(@QueryParam("securitygroupid") String securityGroupId, - @QueryParam("protocol") String protocol, @QueryParam("startport") int startPort, - @QueryParam("endport") int endPort, - @BinderParam(BindCIDRsToCommaDelimitedQueryParam.class) Iterable<String> cidrList, - AccountInDomainOptions... options); - - /** - * Authorizes a particular TCP or UDP ingress rule for this security group - * - * @param securityGroupId - * The ID of the security group - * @param protocol - * tcp or udp - * @param startPort - * start port for this ingress rule - * @param endPort - * end port for this ingress rule - * @param accountToGroup - * mapping of account names to security groups you wish to - * authorize - * @return response relating to the creation of this ingress rule - */ - @Named("authorizeSecurityGroupIngress") - @GET - @QueryParams(keys = "command", values = "authorizeSecurityGroupIngress") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String authorizeIngressPortsToSecurityGroups(@QueryParam("securitygroupid") String securityGroupId, - @QueryParam("protocol") String protocol, @QueryParam("startport") int startPort, - @QueryParam("endport") int endPort, - @BinderParam(BindAccountSecurityGroupPairsToIndexedQueryParams.class) Multimap<String, String> accountToGroup, - AccountInDomainOptions... options); - - /** - * Authorizes a particular ICMP ingress rule for this security group - * - * @param securityGroupId - * The ID of the security group - * @param ICMPCode - * type of the icmp message being sent - * @param ICMPType - * error code for this icmp message - * @param cidrList - * the cidr list associated - * @return response relating to the creation of this ingress rule - */ - @Named("authorizeSecurityGroupIngress") - @GET - @QueryParams(keys = { "command", "protocol" }, values = { "authorizeSecurityGroupIngress", "ICMP" }) - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String authorizeIngressICMPToCIDRs(@QueryParam("securitygroupid") String securityGroupId, - @QueryParam("icmpcode") int ICMPCode, @QueryParam("icmptype") int ICMPType, - @BinderParam(BindCIDRsToCommaDelimitedQueryParam.class) Iterable<String> cidrList, - AccountInDomainOptions... options); - - /** - * Authorizes a particular ICMP ingress rule for this security group - * - * @param securityGroupId - * The ID of the security group - * @param ICMPCode - * type of the icmp message being sent - * @param ICMPType - * error code for this icmp message - * @param accountToGroup - * mapping of account names to security groups you wish to - * authorize - * @return response relating to the creation of this ingress rule - */ - @Named("authorizeSecurityGroupIngress") - @GET - @QueryParams(keys = { "command", "protocol" }, values = { "authorizeSecurityGroupIngress", "ICMP" }) - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String authorizeIngressICMPToSecurityGroups(@QueryParam("securitygroupid") String securityGroupId, - @QueryParam("icmpcode") int ICMPCode, @QueryParam("icmptype") int ICMPType, - @BinderParam(BindAccountSecurityGroupPairsToIndexedQueryParams.class) Multimap<String, String> accountToGroup, - AccountInDomainOptions... options); - - /** - * Deletes a particular ingress rule from this security group - * - * @param id - * The ID of the ingress rule - * @param options - * scope of the rule. - */ - @Named("revokeSecurityGroupIngress") - @GET - @QueryParams(keys = "command", values = "revokeSecurityGroupIngress") - @Fallback(VoidOnNotFoundOr404.class) - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String revokeIngressRule(@QueryParam("id") String id, AccountInDomainOptions... options); - - /** - * delete a specific security group by id - * - * @param id - * group to delete - */ - @Named("deleteSecurityGroup") - @GET - @QueryParams(keys = "command", values = "deleteSecurityGroup") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(VoidOnNotFoundOr404.class) - void deleteSecurityGroup(@QueryParam("id") String id); - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SessionApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SessionApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SessionApi.java deleted file mode 100644 index 0dae2da..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SessionApi.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.LoginResponse; -import org.jclouds.cloudstack.functions.ParseLoginResponseFromHttpResponse; -import org.jclouds.rest.annotations.Fallback; -import org.jclouds.rest.annotations.QueryParams; -import org.jclouds.rest.annotations.ResponseParser; - -/** - * Provides synchronous access to Cloudstack Sessions - * <p/> - * - * @see <a href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_User.html" /> - */ -@QueryParams(keys = "response", values = "json") -public interface SessionApi { - - /** - * Logs a user into Cloudstack. A successful login attempt will generate a JSESSIONID - * cookie value that can be passed in subsequent Query command calls until the "logout" - * command has been issued or the session has expired. - * - * - * - * @param userName - * user account name - * @param domain - * domain name, if empty defaults to ROOT - * @param hashedPassword - * hashed password (by default MD5) - * @return - * login response with session key or null - */ - @Named("login") - @GET - @QueryParams(keys = "command", values = "login") - @ResponseParser(ParseLoginResponseFromHttpResponse.class) - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - LoginResponse loginUserInDomainWithHashOfPassword(@QueryParam("username") String userName, - @QueryParam("domain") String domain, @QueryParam("password") String hashedPassword); - - /** - * Logs out the user by invalidating the session key - * - * @param sessionKey - * user session key - */ - @Named("logout") - @GET - @QueryParams(keys = "command", values = "logout") - @Fallback(VoidOnNotFoundOr404.class) - void logoutUser(@QueryParam("sessionkey") String sessionKey); -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SnapshotApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SnapshotApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SnapshotApi.java deleted file mode 100644 index de93bbf..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/SnapshotApi.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.binders.BindIdListToCommaDelimitedQueryParam; -import org.jclouds.cloudstack.binders.BindSnapshotPolicyScheduleToQueryParam; -import org.jclouds.cloudstack.domain.AsyncCreateResponse; -import org.jclouds.cloudstack.domain.Snapshot; -import org.jclouds.cloudstack.domain.SnapshotPolicy; -import org.jclouds.cloudstack.domain.SnapshotPolicySchedule; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.CreateSnapshotOptions; -import org.jclouds.cloudstack.options.ListSnapshotPoliciesOptions; -import org.jclouds.cloudstack.options.ListSnapshotsOptions; -import org.jclouds.rest.annotations.BinderParam; -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; - -/** - * Provides synchronous access to CloudStack Snapshot features. - * <p/> - * - * @see http://download.cloud.com/releases/2.2.0/api/TOC_User.html - */ -@RequestFilters(AuthenticationFilter.class) -@QueryParams(keys = "response", values = "json") -public interface SnapshotApi { - - /** - * Creates an instant snapshot of a volume. - * - * @param volumeId The ID of the disk volume - * @param options optional arguments - * @return an asynchronous job structure - */ - @Named("createSnapshot") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @QueryParams(keys = "command", values = "createSnapshot") - @Unwrap - AsyncCreateResponse createSnapshot(@QueryParam("volumeid") String volumeId, CreateSnapshotOptions... options); - - /** - * Lists all available snapshots for the account, matching the query described by the options. - * - * @param options optional arguments - * @return the snapshots matching the query - */ - @Named("listSnapshots") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @QueryParams(keys = { "command", "listAll" }, values = { "listSnapshots", "true" }) - @SelectJson("snapshot") - @Unwrap - @Fallback(EmptySetOnNotFoundOr404.class) - Set<Snapshot> listSnapshots(ListSnapshotsOptions... options); - - /** - * Gets a snapshot by its ID. - * - * @param id the snapshot ID - * @return the snapshot with the requested ID - */ - @Named("listSnapshots") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @QueryParams(keys = { "command", "listAll" }, values = { "listSnapshots", "true" }) - @SelectJson("snapshot") - @OnlyElement - @Fallback(NullOnNotFoundOr404.class) - Snapshot getSnapshot(@QueryParam("id") String id); - - /** - * Deletes a snapshot of a disk volume. - * - * @param id The ID of the snapshot - * @return an asynchronous job structure - */ - @Named("deleteSnapshot") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @QueryParams(keys = "command", values = "deleteSnapshot") - @Fallback(VoidOnNotFoundOr404.class) - void deleteSnapshot(@QueryParam("id") String id); - - /** - * Creates a snapshot policy for the account. - * - * @param schedule how to schedule snapshots - * @param numberToRetain maximum number of snapshots to retain - * @param timezone Specifies a timezone for this command. For more information on the timezone parameter, see Time Zone Format. - * @param volumeId the ID of the disk volume - * @return the newly-created snapshot policy - */ - @Named("createSnapshotPolicy") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @Unwrap - @QueryParams(keys = "command", values = "createSnapshotPolicy") - SnapshotPolicy createSnapshotPolicy(@BinderParam(BindSnapshotPolicyScheduleToQueryParam.class) SnapshotPolicySchedule schedule, @QueryParam("maxsnaps") String numberToRetain, @QueryParam("timezone") String timezone, @QueryParam("volumeid") String volumeId); - - /** - * Deletes a snapshot policy for the account. - * - * @param id The ID of the snapshot policy - * @return - */ - @Named("deleteSnapshotPolicies") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @QueryParams(keys = "command", values = "deleteSnapshotPolicies") - @Fallback(VoidOnNotFoundOr404.class) - void deleteSnapshotPolicy(@QueryParam("id") String id); - - /** - * Deletes snapshot policies for the account. - * - * @param id IDs of snapshot policies - * @return - */ - @Named("deleteSnapshotPolicies") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @QueryParams(keys = "command", values = "deleteSnapshotPolicies") - @Fallback(VoidOnNotFoundOr404.class) - void deleteSnapshotPolicies(@BinderParam(BindIdListToCommaDelimitedQueryParam.class) Iterable<String> id); - - /** - * Lists snapshot policies. - * - * @param volumeId the ID of the disk volume - * @param options optional arguments - * @return the snapshot policies matching the query - */ - @Named("listSnapshotPolicies") - @GET - @Consumes(MediaType.APPLICATION_JSON) - @QueryParams(keys = { "command", "listAll" }, values = { "listSnapshotPolicies", "true" }) - @Unwrap - @Fallback(EmptySetOnNotFoundOr404.class) - Set<SnapshotPolicy> listSnapshotPolicies(@QueryParam("volumeid") String volumeId, ListSnapshotPoliciesOptions... options); -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/TemplateApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/TemplateApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/TemplateApi.java deleted file mode 100644 index 7a3d490..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/TemplateApi.java +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.binders.BindTemplateMetadataToQueryParams; -import org.jclouds.cloudstack.domain.AsyncCreateResponse; -import org.jclouds.cloudstack.domain.ExtractMode; -import org.jclouds.cloudstack.domain.Template; -import org.jclouds.cloudstack.domain.TemplateMetadata; -import org.jclouds.cloudstack.domain.TemplatePermission; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.AccountInDomainOptions; -import org.jclouds.cloudstack.options.CreateTemplateOptions; -import org.jclouds.cloudstack.options.DeleteTemplateOptions; -import org.jclouds.cloudstack.options.ExtractTemplateOptions; -import org.jclouds.cloudstack.options.ListTemplatesOptions; -import org.jclouds.cloudstack.options.RegisterTemplateOptions; -import org.jclouds.cloudstack.options.UpdateTemplateOptions; -import org.jclouds.cloudstack.options.UpdateTemplatePermissionsOptions; -import org.jclouds.rest.annotations.BinderParam; -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; - -/** - * 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 TemplateApi { - - /** - * Creates a template of a virtual machine. The virtual machine must be in a - * STOPPED state. A template created from this command is automatically - * designated as a private template visible to the account that created it. - * - * @see http - * ://download.cloud.com/releases/2.2.0/api_2.2.8/user/createTemplate - * .html - * @param templateMetadata - * overall description of the template - * @param options - * optional arguments - * @return an asynchronous job response - */ - @Named("createTemplate") - @GET - @QueryParams(keys = "command", values = "createTemplate") - @Unwrap - @Consumes(MediaType.APPLICATION_JSON) - AsyncCreateResponse createTemplate( - @BinderParam(BindTemplateMetadataToQueryParams.class) TemplateMetadata templateMetadata, - CreateTemplateOptions... options); - - /** - * Registers an existing template into the Cloud.com cloud. - * - * @see http - * ://download.cloud.com/releases/2.2.0/api_2.2.8/user/registerTemplate - * .html - * @param templateMetadata - * overall description of the template - * @param format - * the format for the template. Possible values include QCOW2, RAW, - * and VHD. - * - * @param url - * the URL of where the template is hosted. Possible URL include - * http:// and https:// - * @param zoneId - * the ID of the zone the template is to be hosted on - * @param options - * optional arguments - * @return data about the newly-registered template - */ - @Named("registerTemplate") - @GET - @QueryParams(keys = "command", values = "registerTemplate") - @SelectJson("template") - @Consumes(MediaType.APPLICATION_JSON) - Set<Template> registerTemplate( - @BinderParam(BindTemplateMetadataToQueryParams.class) TemplateMetadata templateMetadata, - @QueryParam("format") String format, @QueryParam("hypervisor") String hypervisor, - @QueryParam("url") String url, @QueryParam("zoneid") String zoneId, RegisterTemplateOptions... options); - - /** - * Updates attributes of a template. - * - * @see http - * ://download.cloud.com/releases/2.2.0/api_2.2.8/user/updateTemplate - * .html - * @param id - * the ID of the image file - * @param options - * optional arguments - * @return updated data about the template - */ - @Named("updateTemplate") - @GET - @QueryParams(keys = "command", values = "updateTemplate") - @SelectJson("template") - @Consumes(MediaType.APPLICATION_JSON) - Template updateTemplate(@QueryParam("id") String id, UpdateTemplateOptions... options); - - /** - * Copies a template from one zone to another. - * - * @see http - * ://download.cloud.com/releases/2.2.0/api_2.2.8/user/copyTemplate.html - * @param id - * 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("copyTemplate") - @GET - @QueryParams(keys = "command", values = "copyTemplate") - @Unwrap - @Consumes(MediaType.APPLICATION_JSON) - AsyncCreateResponse copyTemplateToZone(@QueryParam("id") String id, - @QueryParam("sourcezoneid") String sourceZoneId, @QueryParam("destzoneid") String destZoneId); - - /** - * Deletes a template from the system. All virtual machines using the deleted - * template will not be affected. - * - * @see http - * ://download.cloud.com/releases/2.2.0/api_2.2.8/user/deleteTemplate - * .html - * @param id - * the ID of the template - * @param options - * optional arguments - */ - @Named("deleteTemplate") - @GET - @QueryParams(keys = "command", values = "deleteTemplate") - @Unwrap - @Consumes(MediaType.APPLICATION_JSON) - AsyncCreateResponse deleteTemplate(@QueryParam("id") String id, DeleteTemplateOptions... options); - - /** - * List all executable templates. - * - * @see http - * ://download.cloud.com/releases/2.2.0/api_2.2.8/user/listTemplates. - * html - * @return all executable templates, or empty set, if no templates are found - */ - @Named("listTemplates") - @GET - @QueryParams(keys = { "command", "listAll", "templatefilter" }, values = { "listTemplates", "true", "executable" }) - @SelectJson("template") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<Template> listTemplates(); - - /** - * List all public, private, and privileged templates. - * - * @see http - * ://download.cloud.com/releases/2.2.0/api_2.2.8/user/listTemplates. - * html - * @param options - * if present, how to constrain the list, defaults to all - * executable templates - * @return templates matching query, or empty set, if no templates are found - * @see TemplateFilter - */ - @Named("listTemplates") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listTemplates", "true" }) - @SelectJson("template") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<Template> listTemplates(ListTemplatesOptions options); - - /** - * get a specific template by id - * - * - * @param templateId - * @param zoneId - * zone template is defined in - * @return template or null if not found - */ - @Named("listTemplates") - @GET - // templatefilter required in at least 2.2.8 version - @QueryParams(keys = { "command", "listAll", "templatefilter" }, values = { "listTemplates", "true", "executable" }) - @SelectJson("template") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - Template getTemplateInZone(@QueryParam("id") String templateId, @QueryParam("zoneid") String zoneId); - - /** - * Updates a template visibility permissions. A public template is visible to - * all accounts within the same domain. A private template is visible only to - * the owner of the template. A privileged template is a private template - * with account permissions added. Only accounts specified under the template - * permissions are visible to them. - * - * @see http://download.cloud.com/releases/2.2.0/api_2.2.8/user/ - * updateTemplatePermissions.html - * @param id - * the template ID - * @param options - * optional arguments - */ - @Named("updateTemplatePermissions") - @GET - @QueryParams(keys = "command", values = "updateTemplatePermissions") - void updateTemplatePermissions(@QueryParam("id") String id, - UpdateTemplatePermissionsOptions... options); - - /** - * List template visibility and all accounts that have permissions to view - * this template. - * - * @see http://download.cloud.com/releases/2.2.0/api_2.2.8/user/ - * listTemplatePermissions.html - * @param id - * the template ID - * @param options - * optional arguments - * @return the list of permissions that apply to the template - */ - @Named("listTemplatePermissions") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listTemplatePermissions", "true" }) - @Unwrap - @Consumes(MediaType.APPLICATION_JSON) - Set<TemplatePermission> listTemplatePermissions(@QueryParam("id") String id, - AccountInDomainOptions... options); - - /** - * - * @see http - * ://download.cloud.com/releases/2.2.0/api_2.2.8/user/extractTemplate - * .html - * @param id - * the ID of the template - * @param mode - * FIXME 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("extractTemplate") - @GET - @QueryParams(keys = "command", values = "extractTemplate") - @Unwrap - @Consumes(MediaType.APPLICATION_JSON) - AsyncCreateResponse extractTemplate(@QueryParam("id") String id, - @QueryParam("mode") ExtractMode mode, @QueryParam("zoneid") String zoneId, ExtractTemplateOptions... options); -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VMGroupApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VMGroupApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VMGroupApi.java deleted file mode 100644 index bf2be0d..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VMGroupApi.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.VMGroup; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.CreateVMGroupOptions; -import org.jclouds.cloudstack.options.ListVMGroupsOptions; -import org.jclouds.cloudstack.options.UpdateVMGroupOptions; -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 VM group features. - * <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 VMGroupApi { - /** - * Lists VM groups - * - * @param options if present, how to constrain the list. - * @return VM groups matching query, or empty set, if no zones are found - */ - @Named("listInstanceGroups") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listInstanceGroups", "true" }) - @SelectJson("instancegroup") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<VMGroup> listInstanceGroups(ListVMGroupsOptions... options); - - /** - * @see VMGroupApi#getInstanceGroup - */ - @Named("listInstanceGroups") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listInstanceGroups", "true" }) - @SelectJson("instancegroup") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - VMGroup getInstanceGroup(@QueryParam("id") String id); - - /** - * Creates a VM group - * - * @param name the name of the VM group - * @param options optional parameters - * @return the new VMGroup - */ - @Named("createInstanceGroup") - @GET - @QueryParams(keys = "command", values = "createInstanceGroup") - @SelectJson("instancegroup") - @Consumes(MediaType.APPLICATION_JSON) - VMGroup createInstanceGroup(@QueryParam("name") String name, CreateVMGroupOptions... options); - - /** - * Modify a VM group - * - * @param name the new name of the group - * @return the modified VMGroup - */ - @Named("updateInstanceGroup") - @GET - @QueryParams(keys = "command", values = "updateInstanceGroup") - @SelectJson("instancegroup") - @Consumes(MediaType.APPLICATION_JSON) - VMGroup updateInstanceGroup(@QueryParam("id") String id, UpdateVMGroupOptions... options); - - /** - * Delete a VM group - * - * @param id the ID of the VM group - * @return a future with a void data type - */ - @Named("deleteInstanceGroup") - @GET - @QueryParams(keys = "command", values = "deleteInstanceGroup") - @Fallback(VoidOnNotFoundOr404.class) - void deleteInstanceGroup(@QueryParam("id") String id); -} http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VirtualMachineApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VirtualMachineApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VirtualMachineApi.java deleted file mode 100644 index 413bfc5..0000000 --- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VirtualMachineApi.java +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jclouds.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.VirtualMachine; -import org.jclouds.cloudstack.filters.AuthenticationFilter; -import org.jclouds.cloudstack.options.AssignVirtualMachineOptions; -import org.jclouds.cloudstack.options.DeployVirtualMachineOptions; -import org.jclouds.cloudstack.options.ListVirtualMachinesOptions; -import org.jclouds.cloudstack.options.StopVirtualMachineOptions; -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_User.html" /> - */ -@RequestFilters(AuthenticationFilter.class) -@QueryParams(keys = "response", values = "json") -public interface VirtualMachineApi { - - /** - * Lists VirtualMachines - * - * @param options - * if present, how to constrain the list. - * @return VirtualMachines matching query, or empty set, if no - * VirtualMachines are found - */ - @Named("listVirtualMachines") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listVirtualMachines", "true" }) - @SelectJson("virtualmachine") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(EmptySetOnNotFoundOr404.class) - Set<VirtualMachine> listVirtualMachines(ListVirtualMachinesOptions... options); - - /** - * get a specific VirtualMachine by id - * - * @param id - * VirtualMachine to get - * @return VirtualMachine or null if not found - */ - @Named("listVirtualMachines") - @GET - @QueryParams(keys = { "command", "listAll" }, values = { "listVirtualMachines", "true" }) - @SelectJson("virtualmachine") - @OnlyElement - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - VirtualMachine getVirtualMachine(@QueryParam("id") String id); - - /** - * Creates and automatically starts a virtual machine based on a service - * offering, disk offering, and template. - * - * @param zoneId - * availability zone for the virtual machine - * @param serviceOfferingId - * the ID of the service offering for the virtual machine - * @param templateId - * the ID of the template for the virtual machine - * - * @return virtual machine - */ - @Named("deployVirtualMachine") - @GET - @QueryParams(keys = "command", values = "deployVirtualMachine") - @SelectJson({ "deployvirtualmachine", "deployvirtualmachineresponse" }) - @Consumes(MediaType.APPLICATION_JSON) - AsyncCreateResponse deployVirtualMachineInZone(@QueryParam("zoneid") String zoneId, - @QueryParam("serviceofferingid") String serviceOfferingId, @QueryParam("templateid") String templateId, - DeployVirtualMachineOptions... options); - - /** - * Reboots a virtual machine. - * - * @param id - * The ID of the virtual machine - * @return job id related to destroying the VM - */ - @Named("rebootVirtualMachine") - @GET - @QueryParams(keys = "command", values = "rebootVirtualMachine") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String rebootVirtualMachine(@QueryParam("id") String id); - - /** - * Starts a virtual machine. - * - * @param id - * The ID of the virtual machine - * @return job id related to destroying the VM - */ - @Named("startVirtualMachine") - @GET - @QueryParams(keys = "command", values = "startVirtualMachine") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String startVirtualMachine(@QueryParam("id") String id); - - /** - * Stops a virtual machine. - * - * @param id - * The ID of the virtual machine - * @return job id related to destroying the VM - */ - @Named("stopVirtualMachine") - @GET - @QueryParams(keys = "command", values = "stopVirtualMachine") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String stopVirtualMachine(@QueryParam("id") String id); - - /** - * Stops a virtual machine. - * - * @param id - * The ID of the virtual machine - * @param options - * If present, whether to force stop. - * @return job id related to destroying the VM - */ - @GET - @QueryParams(keys = "command", values = "stopVirtualMachine") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String stopVirtualMachine(@QueryParam("id") String id, - StopVirtualMachineOptions options); - - /** - * Resets the password for virtual machine. The virtual machine must be in a - * "Stopped" state and the template must already support this feature for - * this command to take effect. - * - * @param id - * The ID of the virtual machine - * @return job id related to destroying the VM - */ - @Named("resetPasswordForVirtualMachine") - @GET - @QueryParams(keys = "command", values = "resetPasswordForVirtualMachine") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String resetPasswordForVirtualMachine(@QueryParam("id") String id); - - /** - * Return an encrypted password for the virtual machine. The command - * is asynchronous. - * - * @param id - * the ID of the virtual machine - * @return encrypted password - */ - @Named("getVMPassword") - @GET - @QueryParams(keys = "command", values = "getVMPassword") - @SelectJson("encryptedpassword") - @Consumes(MediaType.APPLICATION_JSON) - String getEncryptedPasswordForVirtualMachine(@QueryParam("id") String id); - - /** - * Changes the service offering for a virtual machine. The virtual machine - * must be in a "Stopped" state for this command to take effect. - * - * @param id - * The ID of the virtual machine - * @return job id related to destroying the VM - */ - @Named("changeServiceForVirtualMachine") - @GET - @QueryParams(keys = "command", values = "changeServiceForVirtualMachine") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String changeServiceForVirtualMachine(@QueryParam("id") String id); - - /** - * Updates parameters of a virtual machine. - * - * @param id - * The ID of the virtual machine - * @return job id related to destroying the VM - */ - @Named("updateVirtualMachine") - @GET - @QueryParams(keys = "command", values = "updateVirtualMachine") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - String updateVirtualMachine(@QueryParam("id") String id); - - /** - * Destroys a virtual machine. Once destroyed, only the administrator can - * recover it. - * - * @param id - * vm to destroy - * @return job id related to destroying the VM, or null if resource was not - * found - */ - @Named("destroyVirtualMachine") - @GET - @QueryParams(keys = "command", values = "destroyVirtualMachine") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - @Fallback(NullOnNotFoundOr404.class) - String destroyVirtualMachine(@QueryParam("id") String id); - - /** - * Re-assign a virtual machine to a different account/domain. - * - * @param virtualMachineId - * VirtualMachine to re-assign - * @param options - * AssignVirtualMachineOptions specifying account and domain to transfer to, and optional network and security group IDs. - * @return VirtualMachine or null if not found - */ - @Named("assignVirtualMachine") - @GET - @QueryParams(keys = "command", values = "assignVirtualMachine") - @SelectJson("jobid") - @Consumes(MediaType.APPLICATION_JSON) - VirtualMachine assignVirtualMachine(@QueryParam("virtualmachineid") String virtualMachineId, - AssignVirtualMachineOptions... options); - -}
