You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2013/11/14 12:23:14 UTC
[11/13] git commit: Fix code style of the cloudsigma2 provider.
Fix code style of the cloudsigma2 provider.
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/0d70c84a
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/0d70c84a
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/0d70c84a
Branch: refs/heads/master
Commit: 0d70c84a3872e0ed85e4c8708e2b51a2dd6989fb
Parents: 0bebb58
Author: Vladimir Shevchenko <sh...@gmail.com>
Authored: Thu Nov 14 01:13:47 2013 +0700
Committer: Ignasi Barrera <na...@apache.org>
Committed: Thu Nov 14 12:20:57 2013 +0100
----------------------------------------------------------------------
cloudsigma2/pom.xml | 188 +-
.../org/jclouds/cloudsigma2/CloudSigma2Api.java | 2030 ++++++-----
.../cloudsigma2/CloudSigma2ApiMetadata.java | 30 +-
.../binders/BindCreateSubscriptionRequest.java | 35 +-
.../BindCreateSubscriptionRequestList.java | 49 +-
.../cloudsigma2/binders/BindDriveToJson.java | 34 +-
.../cloudsigma2/binders/BindDrivesToJson.java | 49 +-
.../BindFirewallPoliciesListToJsonRequest.java | 48 +-
.../BindFirewallPolicyToJsonRequest.java | 34 +-
.../binders/BindIPInfoToJsonRequest.java | 34 +-
.../binders/BindLibraryDriveToJson.java | 28 +-
.../binders/BindProfileInfoToJsonRequest.java | 28 +-
.../BindServerInfoListToJsonRequest.java | 49 +-
.../binders/BindServerInfoToJsonRequest.java | 28 +-
.../binders/BindTagListToJsonRequest.java | 48 +-
.../binders/BindTagToJsonRequest.java | 34 +-
.../binders/BindUuidStringsToJsonArray.java | 41 +-
.../binders/BindVLANToJsonRequest.java | 30 +-
.../config/CloudSigma2HttpApiModule.java | 12 +-
.../config/CloudSigma2ParserModule.java | 10 +-
.../config/CloudSigma2Properties.java | 11 +-
.../cloudsigma2/domain/AccountBalance.java | 92 +-
.../cloudsigma2/domain/AccountUsage.java | 421 +--
.../jclouds/cloudsigma2/domain/BurstLevel.java | 408 +--
.../domain/CreateSubscriptionRequest.java | 132 +-
.../cloudsigma2/domain/CurrentUsage.java | 130 +-
.../cloudsigma2/domain/DeviceEmulationType.java | 30 +-
.../jclouds/cloudsigma2/domain/Discount.java | 86 +-
.../org/jclouds/cloudsigma2/domain/Drive.java | 287 +-
.../jclouds/cloudsigma2/domain/DriveInfo.java | 608 ++--
.../cloudsigma2/domain/DriveLicense.java | 160 +-
.../jclouds/cloudsigma2/domain/DriveStatus.java | 1 -
.../domain/DrivesListRequestFieldsGroup.java | 38 +-
.../cloudsigma2/domain/FirewallAction.java | 30 +-
.../cloudsigma2/domain/FirewallDirection.java | 30 +-
.../cloudsigma2/domain/FirewallIpProtocol.java | 30 +-
.../cloudsigma2/domain/FirewallPolicy.java | 374 +-
.../cloudsigma2/domain/FirewallRule.java | 441 +--
.../org/jclouds/cloudsigma2/domain/IOStats.java | 166 +-
.../java/org/jclouds/cloudsigma2/domain/IP.java | 444 +--
.../cloudsigma2/domain/IPConfiguration.java | 148 +-
.../cloudsigma2/domain/IPConfigurationType.java | 30 +-
.../org/jclouds/cloudsigma2/domain/IPInfo.java | 442 +--
.../cloudsigma2/domain/InterfaceType.java | 30 +-
.../org/jclouds/cloudsigma2/domain/Item.java | 266 +-
.../cloudsigma2/domain/LibraryDrive.java | 696 ++--
.../org/jclouds/cloudsigma2/domain/License.java | 292 +-
.../jclouds/cloudsigma2/domain/MediaType.java | 2 +-
.../org/jclouds/cloudsigma2/domain/Model.java | 1 -
.../org/jclouds/cloudsigma2/domain/NIC.java | 400 +-
.../jclouds/cloudsigma2/domain/NICStats.java | 160 +-
.../org/jclouds/cloudsigma2/domain/Owner.java | 265 +-
.../cloudsigma2/domain/PaginatedCollection.java | 56 +-
.../org/jclouds/cloudsigma2/domain/Price.java | 386 +-
.../org/jclouds/cloudsigma2/domain/Pricing.java | 160 +-
.../jclouds/cloudsigma2/domain/ProfileInfo.java | 1009 +++---
.../org/jclouds/cloudsigma2/domain/Server.java | 277 +-
.../domain/ServerAvailabilityGroup.java | 62 +-
.../jclouds/cloudsigma2/domain/ServerDrive.java | 281 +-
.../jclouds/cloudsigma2/domain/ServerInfo.java | 826 +++--
.../cloudsigma2/domain/ServerRuntime.java | 114 +-
.../cloudsigma2/domain/ServerStatus.java | 2 +-
.../cloudsigma2/domain/Subscription.java | 864 ++---
.../domain/SubscriptionResource.java | 31 +-
.../org/jclouds/cloudsigma2/domain/Tag.java | 234 +-
.../jclouds/cloudsigma2/domain/TagResource.java | 246 +-
.../cloudsigma2/domain/TagResourceType.java | 30 +-
.../jclouds/cloudsigma2/domain/Transaction.java | 333 +-
.../org/jclouds/cloudsigma2/domain/Usage.java | 160 +-
.../jclouds/cloudsigma2/domain/VLANInfo.java | 432 +--
.../CreateSubscriptionRequestToJson.java | 34 +-
.../cloudsigma2/functions/DriveToJson.java | 48 +-
.../functions/FirewallPolicyToJson.java | 86 +-
.../cloudsigma2/functions/IPInfoToJson.java | 24 +-
.../functions/LibraryDriveToJson.java | 34 +-
.../functions/ProfileInfoToJson.java | 102 +-
.../cloudsigma2/functions/ServerInfoToJson.java | 200 +-
.../cloudsigma2/functions/TagToJson.java | 36 +-
.../cloudsigma2/functions/VLANInfoToJson.java | 22 +-
.../functions/internal/ParseDiscounts.java | 56 +-
.../functions/internal/ParseDriveInfos.java | 54 +-
.../functions/internal/ParseDrives.java | 54 +-
.../internal/ParseFirewallPolicies.java | 90 +-
.../functions/internal/ParseIPInfos.java | 56 +-
.../functions/internal/ParseIPs.java | 54 +-
.../functions/internal/ParseLibraryDrives.java | 54 +-
.../functions/internal/ParseLicenses.java | 54 +-
.../functions/internal/ParseServerInfos.java | 54 +-
.../functions/internal/ParseServers.java | 54 +-
.../functions/internal/ParseSubscriptions.java | 90 +-
.../functions/internal/ParseTags.java | 88 +-
.../functions/internal/ParseTransactions.java | 54 +-
.../functions/internal/ParseVLANs.java | 88 +-
.../handlers/CloudSigmaErrorHandler.java | 53 +-
.../cloudsigma2/options/PaginationOptions.java | 176 +-
.../cloudsigma2/CloudSigma2ApiExpectTest.java | 3414 +++++++++---------
.../cloudsigma2/CloudSigma2ApiLiveTest.java | 1168 +++---
.../functions/CloudSigma2ParserTest.java | 20 +-
.../CreateSubscriptionRequestToJsonTest.java | 40 +-
.../cloudsigma2/functions/DriveToJsonTest.java | 98 +-
.../functions/FirewallPolicyToJsonTest.java | 202 +-
.../cloudsigma2/functions/IPInfoToJsonTest.java | 82 +-
.../functions/LibraryDriveToJsonTest.java | 91 +-
.../functions/ProfileInfoToJsonTest.java | 120 +-
.../functions/ServerInfoToJsonTest.java | 226 +-
.../cloudsigma2/functions/TagToJsonTest.java | 94 +-
.../functions/VLANInfoToJsonTest.java | 77 +-
107 files changed, 11238 insertions(+), 11102 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/pom.xml
----------------------------------------------------------------------
diff --git a/cloudsigma2/pom.xml b/cloudsigma2/pom.xml
index 5b57f00..7863e2b 100644
--- a/cloudsigma2/pom.xml
+++ b/cloudsigma2/pom.xml
@@ -17,101 +17,107 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.jclouds.labs</groupId>
+ <artifactId>jclouds-labs</artifactId>
+ <version>1.7.0-SNAPSHOT</version>
+ </parent>
+
+ <!-- TODO: when out of labs, switch to org.jclouds.provider -->
<groupId>org.apache.jclouds.labs</groupId>
- <artifactId>jclouds-labs</artifactId>
+ <artifactId>cloudsigma2</artifactId>
<version>1.7.0-SNAPSHOT</version>
- </parent>
+ <name>jclouds CloudSigma v2 API</name>
+ <description>ComputeService binding to the CloudSigma v2 API</description>
+ <packaging>bundle</packaging>
- <!-- TODO: when out of labs, switch to org.jclouds.provider -->
- <groupId>org.apache.jclouds.labs</groupId>
- <artifactId>cloudsigma2</artifactId>
- <version>1.7.0-SNAPSHOT</version>
- <name>jclouds CloudSigma v2 API</name>
- <description>ComputeService binding to the CloudSigma v2 API</description>
- <packaging>bundle</packaging>
-
- <properties>
- <test.cloudsigma2.endpoint>https://zrh.cloudsigma.com/api/2.0/</test.cloudsigma2.endpoint>
- <test.cloudsigma2.api-version>2.0</test.cloudsigma2.api-version>
- <test.cloudsigma2.identity>FIXME</test.cloudsigma2.identity>
- <test.cloudsigma2.credential>FIXME</test.cloudsigma2.credential>
- <test.cloudsigma2.template>imageId=f3c7c665-cd54-4a78-8fd2-7ec2f028cf29</test.cloudsigma2.template>
- <jclouds.osgi.export>org.jclouds.cloudsigma2*;version="${project.version}"</jclouds.osgi.export>
- <jclouds.osgi.import>
- org.jclouds.compute.internal;version="${project.version}",
- org.jclouds.rest.internal;version="${project.version}",
- org.jclouds*;version="${project.version}",
- *
- </jclouds.osgi.import>
- </properties>
+ <properties>
+ <test.cloudsigma2.endpoint>https://zrh.cloudsigma.com/api/2.0/</test.cloudsigma2.endpoint>
+ <test.cloudsigma2.api-version>2.0</test.cloudsigma2.api-version>
+ <test.cloudsigma2.identity>FIXME</test.cloudsigma2.identity>
+ <test.cloudsigma2.credential>FIXME</test.cloudsigma2.credential>
+ <test.cloudsigma2.template>imageId=f3c7c665-cd54-4a78-8fd2-7ec2f028cf29</test.cloudsigma2.template>
+ <jclouds.osgi.export>org.jclouds.cloudsigma2*;version="${project.version}"</jclouds.osgi.export>
+ <jclouds.osgi.import>
+ org.jclouds.compute.internal;version="${project.version}",
+ org.jclouds.rest.internal;version="${project.version}",
+ org.jclouds*;version="${project.version}",
+ *
+ </jclouds.osgi.import>
+ </properties>
- <dependencies>
- <dependency>
- <groupId>org.apache.jclouds</groupId>
- <artifactId>jclouds-compute</artifactId>
- <version>${project.parent.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds.driver</groupId>
- <artifactId>jclouds-sshj</artifactId>
- <version>${project.parent.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds</groupId>
- <artifactId>jclouds-core</artifactId>
- <version>${project.parent.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds</groupId>
- <artifactId>jclouds-compute</artifactId>
- <version>${project.parent.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds.driver</groupId>
- <artifactId>jclouds-log4j</artifactId>
- <version>${project.parent.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.jclouds</groupId>
+ <artifactId>jclouds-compute</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jclouds.driver</groupId>
+ <artifactId>jclouds-sshj</artifactId>
+ <version>${project.parent.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jclouds</groupId>
+ <artifactId>jclouds-core</artifactId>
+ <version>${project.parent.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jclouds</groupId>
+ <artifactId>jclouds-compute</artifactId>
+ <version>${project.parent.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jclouds.driver</groupId>
+ <artifactId>jclouds-log4j</artifactId>
+ <version>${project.parent.version}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
- <profiles>
- <profile>
- <id>live</id>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <executions>
- <execution>
- <id>integration</id>
- <phase>integration-test</phase>
- <goals>
- <goal>test</goal>
- </goals>
- <configuration>
- <systemPropertyVariables>
- <test.cloudsigma2.endpoint>${test.cloudsigma2.endpoint}</test.cloudsigma2.endpoint>
- <test.cloudsigma2.api-version>${test.cloudsigma2.api-version}</test.cloudsigma2.api-version>
- <test.cloudsigma2.build-version>${test.cloudsigma2.build-version}</test.cloudsigma2.build-version>
- <test.cloudsigma2.credential>${test.cloudsigma2.credential}</test.cloudsigma2.credential>
- <test.cloudsigma2.template>${test.cloudsigma2.template}</test.cloudsigma2.template>
- </systemPropertyVariables>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
+ <profiles>
+ <profile>
+ <id>live</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>integration</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ <configuration>
+ <systemPropertyVariables>
+ <test.cloudsigma2.endpoint>${test.cloudsigma2.endpoint}
+ </test.cloudsigma2.endpoint>
+ <test.cloudsigma2.api-version>${test.cloudsigma2.api-version}
+ </test.cloudsigma2.api-version>
+ <test.cloudsigma2.build-version>${test.cloudsigma2.build-version}
+ </test.cloudsigma2.build-version>
+ <test.cloudsigma2.credential>${test.cloudsigma2.credential}
+ </test.cloudsigma2.credential>
+ <test.cloudsigma2.template>${test.cloudsigma2.template}
+ </test.cloudsigma2.template>
+ </systemPropertyVariables>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2Api.java
----------------------------------------------------------------------
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2Api.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2Api.java
index b594169..83886f4 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2Api.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2Api.java
@@ -106,1020 +106,1018 @@ import java.util.List;
@SkipEncoding({'?', '/', '='})
public interface CloudSigma2Api extends Closeable {
- /**
- * Gets the list of drives to which the authenticated user has access.
- *
- * @return list of drives or empty list if no drives are found
- */
- @Named("drive:listDrives")
- @GET
- @Path("/drives/")
- @ResponseParser(ParseDrives.class)
- @Transform(ParseDrives.ToPagedIterable.class)
- PagedIterable<Drive> listDrives();
-
- /**
- * Gets the list of drives to which the authenticated user has access.
- *
- * @return PaginatedCollection of drives
- */
- @Named("drive:listDrives")
- @GET
- @Path("/drives/")
- @ResponseParser(ParseDrives.class)
- PaginatedCollection<Drive> listDrives(PaginationOptions options);
-
- /**
- * Gets the list of drives to which the authenticated user has access.
- *
- * @param fields A set of field names specifying the returned fields
- * @param limit number of drives to show
- * @return or empty set if no drives are found
- */
- @Named("drive:listDrives")
- @GET
- @Path("/drives/")
- @SelectJson("objects")
- List<DriveInfo> listDrives(@QueryParam("fields") DrivesListRequestFieldsGroup fields
- , @DefaultValue("0") @QueryParam("limit") int limit);
-
- /**
- * Gets the detailed list of drives with additional information to which the authenticated user has access.
- *
- * @return list of drives or empty list if no drives are found
- */
- @Named("drive:listDrivesInfo")
- @GET
- @Path("/drives/detail/")
- @ResponseParser(ParseDriveInfos.class)
- @Transform(ParseDriveInfos.ToPagedIterable.class)
- PagedIterable<DriveInfo> listDrivesInfo();
-
- /**
- * Gets the detailed list of drives with additional information to which the authenticated user has access.
- *
- * @return PaginatedCollection of drives
- */
- @Named("drive:listDrivesInfo")
- @GET
- @Path("/drives/detail/")
- @ResponseParser(ParseDriveInfos.class)
- PaginatedCollection<DriveInfo> listDrivesInfo(PaginationOptions options);
-
- /**
- * Gets detailed information for drive identified by drive uuid
- *
- * @param uuid drive uuid to get
- * @return null, if not found
- */
- @Named("drive:getDriveInfo/{uuid}")
- @GET
- @Path("/drives/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- DriveInfo getDriveInfo(@PathParam("uuid") String uuid);
-
- /**
- * Creates a new drive
- *
- * @param createDrive required parameters: name, size, media
- * @return newly created drive
- */
- @Named("drive:createDrive")
- @POST
- @Path("/drives/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- @SelectJson("objects")
- @OnlyElement
- DriveInfo createDrive(@BinderParam(BindDriveToJson.class) DriveInfo createDrive);
-
- /**
- * Creates multiple new drives
- *
- * @param createDrives required parameters: name, size, media
- * @return newly created drives
- */
- @Named("drive:listDrives")
- @POST
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- @SelectJson("objects")
- @Path("/drives/")
- List<DriveInfo> createDrives(@BinderParam(BindDrivesToJson.class) List<DriveInfo> createDrives);
-
- /**
- * Deletes a single mounted or unmounted drive.
- *
- * @param uuid what to delete
- */
- @Named("drive:deleteDrive/{uuid}")
- @DELETE
- @Path("/drives/{uuid}/")
- @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
- void deleteDrive(@PathParam("uuid") String uuid);
-
- /**
- * Deletes multiple mounted or unmounted drives specified by their UUID’s.
- *
- * @param uuids what drives to delete
- */
- @Named("drive:deleteDrives")
- @DELETE
- @Path("/drives/")
- @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
- void deleteDrives(@BinderParam(BindUuidStringsToJsonArray.class) Iterable<String> uuids);
-
- /**
- * Edits a mounted or unmounted drive. If mounted, the server mounted on should be stopped.
- *
- * @param sourceUuid source drive to edit
- * @param driveInfo drive parameters to change
- * @return changed drive
- */
- @Named("drive:editDrive/{uuid}")
- @PUT
- @Path("/drives/{uuid}/")
- @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
- DriveInfo editDrive(@PathParam("uuid") String sourceUuid
- , @BinderParam(BindDriveToJson.class) DriveInfo driveInfo);
-
-
- /**
- * Clones a drive. Request body is optional and any or all of the key/value pairs can be omitted.
- *
- * @param sourceUuid source drive to clone
- * @param driveInfo drive parameters to change
- * @return new drive
- */
- @Named("drive:cloneDrive/{uuid}")
- @POST
- @Path("/drives/{uuid}/action/?do=clone")
- @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
- DriveInfo cloneDrive(@PathParam("uuid") String sourceUuid
- , @Nullable @BinderParam(BindDriveToJson.class) DriveInfo driveInfo);
-
- /**
- * Gets the list of library drives to which the authenticated user has access.
- *
- * @return list of library drives to which the authenticated user has access
- */
- @Named("libdrive:listLibraryDrives")
- @GET
- @Path("/libdrives/")
- @ResponseParser(ParseLibraryDrives.class)
- @Transform(ParseLibraryDrives.ToPagedIterable.class)
- PagedIterable<LibraryDrive> listLibraryDrives();
-
- /**
- * Gets the list of library drives to which the authenticated user has access.
- *
- * @return PaginatedCollection of library drives
- */
- @Named("libdrive:listLibraryDrives")
- @GET
- @Path("/libdrives/")
- @ResponseParser(ParseLibraryDrives.class)
- PaginatedCollection<LibraryDrive> listLibraryDrives(PaginationOptions options);
-
- /**
- * Gets detailed information for library drive identified by uuid.
- *
- * @param uuid uuid of library drive to be listed
- * @return drive information or null if not found
- */
- @Named("libdrive:getLibraryDrive/{uuid}")
- @GET
- @Path("/libdrives/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- LibraryDrive getLibraryDrive(@PathParam("uuid") String uuid);
-
- /**
- * If a library drive is not a CDROM, you have to clone it in your account in order to use it.
- *
- * @param uuid uuid of library drive to clone
- * @param libraryDrive cloned drive
- * @return cloned drive information or null if not found
- */
- @Named("libdrive:cloneLibraryDrive/{uuid}")
- @POST
- @Path("/libdrives/{uuid}/action/?do=clone")
- @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
- LibraryDrive cloneLibraryDrive(@PathParam("uuid") String uuid
- , @Nullable @BinderParam(BindLibraryDriveToJson.class) LibraryDrive libraryDrive);
-
- /**
- * Gets the list of servers to which the authenticated user has access.
- *
- * @return list of servers or empty list if no servers are found
- */
- @Named("server:listServers")
- @GET
- @Path("/servers/")
- @ResponseParser(ParseServers.class)
- @Transform(ParseServers.ToPagedIterable.class)
- PagedIterable<Server> listServers();
-
- /**
- * Gets the list of servers to which the authenticated user has access.
- *
- * @return PaginatedCollection of servers
- */
- @Named("server:listServers")
- @GET
- @Path("/servers/")
- @ResponseParser(ParseServers.class)
- PaginatedCollection<Server> listServers(PaginationOptions options);
-
- /**
- * Gets the detailed list of servers to which the authenticated user has access.
- *
- * @return list of servers or empty list if no servers are found
- */
- @Named("server:listServersInfo")
- @GET
- @Path("/servers/detail/")
- @ResponseParser(ParseServerInfos.class)
- @Transform(ParseServerInfos.ToPagedIterable.class)
- PagedIterable<ServerInfo> listServersInfo();
-
- /**
- * Gets the detailed list of servers to which the authenticated user has access.
- *
- * @return PaginatedCollection of servers
- */
- @Named("server:listServersInfo")
- @GET
- @Path("/servers/detail/")
- @ResponseParser(ParseServerInfos.class)
- PaginatedCollection<ServerInfo> listServersInfo(PaginationOptions options);
-
- /**
- * Creates a new virtual server or multiple servers.
- * The minimial amount of information you need to set is:
- * cpu
- * memory
- * name
- * vncPassword
- *
- * @param createServer required parameters: cpu, memory, name, vncPassword
- * @return newly created server
- */
- @Named("server:createServer")
- @POST
- @Path("/servers/")
- @SelectJson("objects")
- @OnlyElement
- ServerInfo createServer(@BinderParam(BindServerInfoToJsonRequest.class) ServerInfo createServer);
-
- /**
- * create a new servers
- *
- * @param servers servers to create. Required parameters: cpu, memory, name, vncPassword
- * @return newly created servers
- */
- @Named("server:createServers")
- @POST
- @Path("/servers/")
- @SelectJson("objects")
- List<ServerInfo> createServers(@BinderParam(BindServerInfoListToJsonRequest.class) Iterable<ServerInfo> servers);
-
- /**
- * Edits a server. Used also for attaching NIC’s and drives to servers.
- *
- * @param uuid server uuid
- * @param server data to change
- * @return modified server
- */
- @Named("server:editServer/{uuid}")
- @PUT
- @Path("/servers/{uuid}/")
- @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
- ServerInfo editServer(@PathParam("uuid") String uuid
- , @BinderParam(BindServerInfoToJsonRequest.class) ServerInfo server);
-
- /**
- * Deletes a single server.
- *
- * @param uuid uuid of server to delete
- */
- @Named("server:deleteServer/{uuid}")
- @DELETE
- @Path("/servers/{uuid}/")
- @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
- void deleteServer(@PathParam("uuid") String uuid);
-
- /**
- * Deletes multiple servers specified by their UUID’s.
- *
- * @param uuids server uuids to delete
- */
- @Named("server:deleteServers")
- @DELETE
- @Path("/servers/")
- @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
- void deleteServers(@BinderParam(BindUuidStringsToJsonArray.class) Iterable<String> uuids);
-
- /**
- * Clones a server. Empty body.
- * Does cascading clone of server drives.
- * IPs of the cloned server are set to DHCP.
- * All other properties of the clone are equal to the original.
- *
- * @param uuid server what to clone
- *
- * @return cloned server
- */
- @Named("server:cloneServer/{uuid}")
- @POST
- @Path("/servers/{uuid}/action/?do=clone")
- @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
- ServerInfo cloneServer(@PathParam("uuid") String uuid);
-
- /**
- * Gets detailed information for server identified by server uuid.
- *
- * @param uuid server uuid
- * @return server info or null, if not found
- */
- @Named("server:getServerInfo/{uuid}")
- @GET
- @Path("/servers/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- ServerInfo getServerInfo(@PathParam("uuid") String uuid);
-
- /**
- * Starts a server with specific UUID.
- *
- * @param uuid uuid of server to start
- */
- @Named("server:startServer/{uuid}")
- @POST
- @Path("/servers/{uuid}/action/?do=start")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- void startServer(@PathParam("uuid") String uuid);
-
- /**
- * Stops a server with specific UUID.
- *
- * @param uuid uuid of server to stop
- */
- @Named("server:stopServer/{uuid}")
- @POST
- @Path("/servers/{uuid}/action/?do=stop")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- void stopServer(@PathParam("uuid") String uuid);
-
- /**
- * Starts a server with specific UUID assuring that it is started on a different physical infrastructure host
- * from the other servers specified in the avoid argument which is
- * a single server UUID or a comma-separated list of server UUIDs.
- * This way the server specified by uuid is run in a distinct availability group from the other listed servers.
- * Note that it might not always be possible to run a server in a different availability group,
- * therefore the order of the avoid list also signifies the priority of avoiding other servers.
- *
- * @param uuid uuid of server to start
- * @param uuidGroup availability group to avoid
- */
- @Named("server:startServerInSeparateAvailabilityGroup/{uuid}")
- @POST
- @Path("/servers/{uuid}/action/?do=start")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- void startServerInSeparateAvailabilityGroup(@PathParam("uuid") String uuid
- , @QueryParam("avoid") List<String> uuidGroup);
-
- /**
- * Opens a VNC tunnel to a server with specific UUID.
- *
- * @param uuid uuid of server to open VNC tunnel
- */
- @Named("server:openServerVNCTunnel/{uuid}")
- @POST
- @Path("/servers/{uuid}/action/?do=open_vnc")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- void openServerVNCTunnel(@PathParam("uuid") String uuid);
-
- /**
- * Closes a VNC tunnel to a server with specific UUID.
- *
- * @param uuid uuid of server to close VNC tunnel
- */
- @Named("server:closeServerVCNTunnel/{uuid}")
- @POST
- @Path("/servers/{uuid}/action/?do=close_vnc")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- void closeServerVCNTunnel(@PathParam("uuid") String uuid);
-
- /**
- * @return which servers share same physical infrastructure host.
- */
- @Named("server:listServerAvailabilityGroup")
- @GET
- @Path("/servers/availability_groups/")
- List<List<String>> listServerAvailabilityGroup();
-
- /**
- * Queries which other servers share same physical host with the given one.
- *
- * @param uuid Uuid of server to find availability group
- *
- * @return an array holding server UUIDs. The response includes also the UUID of the queried server.
- */
- @Named("server:getServerAvailabilityGroup/{uuid}")
- @GET
- @PathParam("/servers/availability_groups/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- ServerAvailabilityGroup getServerAvailabilityGroup(@PathParam("uuid") String uuid);
-
- /**
- * Gets the list of firewall policies to which the authenticated user has access.
- *
- * @return list of firewall policies to which the authenticated user has access.
- */
- @Named("fwpolicy:listFirewallPolicies")
- @GET
- @Path("/fwpolicies/")
- @ResponseParser(ParseFirewallPolicies.class)
- @Transform(ParseFirewallPolicies.ToPagedIterable.class)
- PagedIterable<FirewallPolicy> listFirewallPolicies();
-
- /**
- * Gets the list of firewall policies to which the authenticated user has access.
- *
- * @return PaginatedCollection of firewall policies
- */
- @Named("fwpolicy:listFirewallPolicies")
- @GET
- @Path("/fwpolicies/")
- @ResponseParser(ParseFirewallPolicies.class)
- PaginatedCollection<FirewallPolicy> listFirewallPolicies(PaginationOptions options);
-
- /**
- * Gets a detailed list of firewall policies to which the authenticated user has access.
- *
- * @return list of firewall policies to which the authenticated user has access.
- */
- @Named("fwpolicy:listFirewallPoliciesInfo")
- @GET
- @Path("/fwpolicies/detail/")
- @ResponseParser(ParseFirewallPolicies.class)
- @Transform(ParseFirewallPolicies.ToPagedIterableInfo.class)
- PagedIterable<FirewallPolicy> listFirewallPoliciesInfo();
-
- /**
- * Gets a detailed list of firewall policies to which the authenticated user has access.
- *
- * @return PaginatedCollection of firewall policies
- */
- @Named("fwpolicy:listFirewallPoliciesInfo")
- @GET
- @Path("/fwpolicies/detail/")
- @ResponseParser(ParseFirewallPolicies.class)
- PaginatedCollection<FirewallPolicy> listFirewallPoliciesInfo(PaginationOptions options);
-
- /**
- * Creates firewall policies.
- *
- * @param firewallPolicies firewall policies to create
- * @return list of created firewall policies
- */
- @Named("fwpolicy:createFirewallPolicies")
- @POST
- @Path("/fwpolicies/")
- @SelectJson("objects")
- List<FirewallPolicy> createFirewallPolicies(
- @BinderParam(BindFirewallPoliciesListToJsonRequest.class) List< FirewallPolicy > firewallPolicies);
-
- /**
- * Creates a firewall policy.
- *
- * @param firewallPolicy firewall policy to create
- * @return created firewall policy
- */
- @Named("fwpolicy:createFirewallPolicy")
- @POST
- @Path("/fwpolicies/")
- @SelectJson("objects")
- @OnlyElement
- FirewallPolicy createFirewallPolicy(
- @BinderParam(BindFirewallPolicyToJsonRequest.class) FirewallPolicy firewallPolicy);
-
- /**
- * Update an existing firewall policy
- *
- * @param uuid uuid of policy to update
- * @param firewallPolicy firewall policy data to update
- * @return updated firewall policy
- */
- @Named("fwpolicy:editFirewallPolicy/{uuid}")
- @PUT
- @Path("/fwpolicies/{uuid}/")
- FirewallPolicy editFirewallPolicy(@PathParam("uuid") String uuid
- , @BinderParam(BindFirewallPolicyToJsonRequest.class) FirewallPolicy firewallPolicy);
-
- /**
- * Gets detailed information for VLAN identified by VLAN uuid.
- *
- * @param uuid uuid of VLAN to get
- * @return null, if not found
- */
- @Named("vlan:getVLANInfo/{uuid}")
- @GET
- @Path("/vlans/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- VLANInfo getVLANInfo(@PathParam("uuid") String uuid);
-
- /**
- * Gets the list of VLANs to which the authenticated user has access.
- *
- * @return list of VLANs or empty list if no vlans are found
- */
- @Named("vlan:listVLANs")
- @GET
- @Path("/vlans/")
- @ResponseParser(ParseVLANs.class)
- @Transform(ParseVLANs.ToPagedIterable.class)
- PagedIterable<VLANInfo> listVLANs();
-
- /**
- * Gets the list of VLANs to which the authenticated user has access.
- *
- * @return PaginatedCollection of VLANs
- */
- @Named("vlan:listVLANs")
- @GET
- @Path("/vlans/")
- @ResponseParser(ParseVLANs.class)
- PaginatedCollection<VLANInfo> listVLANs(PaginationOptions options);
-
- /**
- * Gets the list of VLANs to which the authenticated user has access.
- *
- * @return list of VLANs or empty list if no vlans are found
- */
- @Named("vlan:listVLANInfo")
- @GET
- @Path("/vlans/detail/")
- @ResponseParser(ParseVLANs.class)
- @Transform(ParseVLANs.ToPagedIterableInfo.class)
- PagedIterable<VLANInfo> listVLANInfo();
-
- /**
- * Gets the list of VLANs to which the authenticated user has access.
- *
- * @return PaginatedCollection of VLANs
- */
- @Named("vlan:listVLANInfo")
- @GET
- @Path("/vlans/detail/")
- @ResponseParser(ParseVLANs.class)
- PaginatedCollection<VLANInfo> listVLANInfo(PaginationOptions options);
-
- /**
- * Currently only VLAN meta field can be edited.
- *
- * @param uuid uuid of VLAN to edit
- * @param vlanInfo data to change
- * @return changed VLAN
- */
- @Named("vlan:listVLANInfo/{uuid}")
- @PUT
- @Path("/vlans/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- VLANInfo editVLAN(@PathParam("uuid") String uuid
- , @BinderParam(BindVLANToJsonRequest.class) VLANInfo vlanInfo);
-
- /**
- * Gets the list of IPs to which the authenticated user has access.
- *
- * @return list of IPs or empty list if no ips are found
- */
- @Named("ip:listIPs")
- @GET
- @Path("/ips/")
- @ResponseParser(ParseIPs.class)
- @Transform(ParseIPs.ToPagedIterable.class)
- PagedIterable<IP> listIPs();
-
- /**
- * Gets the list of IPs to which the authenticated user has access.
- *
- * @return PaginatedCollection of IPs
- */
- @Named("ip:listIPs")
- @GET
- @Path("/ips/")
- @ResponseParser(ParseIPs.class)
- PaginatedCollection<IP> listIPs(PaginationOptions options);
-
- /**
- * Gets the detailed list of IPs with additional information to which the authenticated user has access.
- *
- * @return list of IPs or empty list if no ips are found
- */
- @Named("ip:listIPInfo")
- @GET
- @Path("/ips/detail/")
- @ResponseParser(ParseIPInfos.class)
- @Transform(ParseIPInfos.ToPagedIterable.class)
- PagedIterable<IPInfo> listIPInfo();
-
- /**
- * Gets the detailed list of IPs with additional information to which the authenticated user has access.
- *
- * @return PaginatedCollection of IPs
- */
- @Named("ip:listIPInfo")
- @GET
- @Path("/ips/detail/")
- @ResponseParser(ParseIPInfos.class)
- PaginatedCollection<IPInfo> listIPInfo(PaginationOptions options);
-
- /**
- * Gets detailed information for IP identified by IP uuid.
- *
- * @param uuid uuid of IP to get
- * @return null, if not found
- */
- @Named("ip:getIPInfo/{uuid}")
- @GET
- @Path("/ips/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- IPInfo getIPInfo(@PathParam("uuid") String uuid);
-
- /**
- * Currently only IP meta field can be edited.
- *
- * @param uuid uuid of IP to edit
- * @param ipInfo data to change
- * @return changed IP
- */
- @Named("ip:editIP/{uuid}")
- @PUT
- @Path("/ips/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- IPInfo editIP(@PathParam("uuid") String uuid
- , @BinderParam(BindIPInfoToJsonRequest.class) IPInfo ipInfo);
-
- /**
- * Gets the list of tags to which the authenticated user has access.
- *
- * @return list of tags to which the authenticated user has access
- */
- @Named("tag:listTags")
- @GET
- @Path("/tags/")
- @ResponseParser(ParseTags.class)
- @Transform(ParseTags.ToPagedIterable.class)
- PagedIterable<Tag> listTags();
-
- /**
- * Gets the list of tags to which the authenticated user has access.
- *
- * @return PaginatedCollection of tags to which the authenticated user has access
- */
- @Named("tag:listTags")
- @GET
- @Path("/tags/")
- @ResponseParser(ParseTags.class)
- PaginatedCollection<Tag> listTags(PaginationOptions options);
-
- /**
- * Gets the detailed list of tags with additional information to which the authenticated user has access,
- * like the tagged resource
- *
- * @return detailed listings of your tags
- */
- @Named("tag:listTagsInfo")
- @GET
- @Path("/tags/detail/")
- @ResponseParser(ParseTags.class)
- @Transform(ParseTags.ToPagedIterableInfo.class)
- PagedIterable<Tag> listTagsInfo();
-
- /**
- * Gets the detailed list of tags with additional information to which the authenticated user has access,
- * like the tagged resource
- *
- * @return PaginatedCollection of detailed tags
- */
- @Named("tag:listTagsInfo")
- @GET
- @Path("/tags/detail/")
- @ResponseParser(ParseTags.class)
- PaginatedCollection<Tag> listTagsInfo(PaginationOptions options);
-
- /**
- * Gets detailed information for tag identified by tag uuid.
- *
- * @param uuid tag uuid
- * @return detailed info of tag
- */
- @Named("tag:getTagInfo/{uuid}")
- @GET
- @Path("/tags/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- Tag getTagInfo(@PathParam("uuid") String uuid);
-
- /**
- * Edits a tag.
- * It is possible to add or remove resources to a tag by replacing the resources list with a new one
- *
- * @param uuid tag uuid
- * @param tag info to change
- * @return detailed info of tag
- */
- @Named("tag:editTag/{uuid}")
- @PUT
- @Path("/tags/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- Tag editTag(@PathParam("uuid") String uuid, @BinderParam(BindTagToJsonRequest.class) Tag tag);
-
- /**
- * Creates a new tag
- *
- * @param tag tag to create
- * @return created tag
- */
- @Named("tag:createTag")
- @POST
- @Path("/tags/")
- @SelectJson("objects")
- @OnlyElement
- Tag createTag(@BinderParam(BindTagToJsonRequest.class) Tag tag);
-
- /**
- * Deletes a single tag.
- *
- * @param uuid uuid of tag to delete
- */
- @Named("tag:deleteTag/{uuid}")
- @DELETE
- @Path("/tags/{uuid}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- void deleteTag(@PathParam("uuid")String uuid);
-
- /**
- * Creates a multiple new tags
- *
- * @param tags tags to create
- * @return created tags
- */
- @Named("tag:createTags")
- @POST
- @Path("/tags/")
- @SelectJson("objects")
- List<Tag> createTags(@BinderParam(BindTagListToJsonRequest.class) List<Tag> tags);
-
- /**
- * Gets the user profile.
- *
- * @return profile information
- */
- @Named("profile:getProfileInfo")
- @GET
- @Path("/profile/")
- ProfileInfo getProfileInfo();
-
- /**
- * Edits a user profile.
- *
- * @param profile data to change
- * @return info or null, if not found
- */
- @Named("profile:editProfileInfo")
- @PUT
- @Path("/profile/")
- ProfileInfo editProfileInfo(@BinderParam(BindProfileInfoToJsonRequest.class) ProfileInfo profile);
-
- /**
- * Get the balance and currency of the current account.
- *
- * @return current account balance and currency
- */
- @Named("balance:getAccountBalance")
- @GET
- @Path("/balance/")
- AccountBalance getAccountBalance();
-
- /**
- * Get the current usage of the user.
- *
- * @return current usage of the user
- */
- @Named("currentusage:getCurrentUsage")
- @GET
- @Path("/currentusage/")
- CurrentUsage getCurrentUsage();
-
- /**
- * Gets the list of subscriptions of the user.
- *
- * @return list of subscriptions of the user.
- */
- @Named("subscription:listSubscriptions")
- @GET
- @Path("/subscriptions/")
- @ResponseParser(ParseSubscriptions.class)
- @Transform(ParseSubscriptions.ToPagedIterable.class)
- PagedIterable<Subscription> listSubscriptions();
-
- /**
- * Gets the list of subscriptions of the user.
- *
- * @return PaginatedCollection of subscriptions of the user.
- */
- @Named("subscription:listSubscriptions")
- @GET
- @Path("/subscriptions/")
- @ResponseParser(ParseSubscriptions.class)
- PaginatedCollection<Subscription> listSubscriptions(PaginationOptions options);
-
- /**
- * Returns requested subscription
- *
- * @return requested subscription.
- */
- @Named("subscription:getSubscription")
- @GET
- @Path("/subscriptions/{id}/")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- Subscription getSubscription(@PathParam("id") String id);
-
- /**
- * This is identical to the listSubscriptions(), except that subscriptions are not actually bought.
- *
- * @return list of subscriptions that are not actually bought.
- */
- @Named("subscription:listSubscriptionsCalculator")
- @GET
- @Path("/subscriptioncalculator/")
- @ResponseParser(ParseSubscriptions.class)
- @Transform(ParseSubscriptions.ToPagedIterableCalculator.class)
- PagedIterable<Subscription> listSubscriptionsCalculator();
-
- /**
- * This is identical to the listSubscriptions(), except that subscriptions are not actually bought.
- *
- * @return PaginatedCollection of subscriptions that are not actually bought.
- */
- @Named("subscription:listSubscriptionsCalculator")
- @GET
- @Path("/subscriptioncalculator/")
- @ResponseParser(ParseSubscriptions.class)
- PaginatedCollection<Subscription> listSubscriptionsCalculator(PaginationOptions options);
-
- /**
- * Creates a new subscription.
- * Subscription times are rounded to noon UTC, using the following rules:
- * - End time is always rounded to the next noon.
- * - Start time is rounded to the maximum between the current time an the previous noon.
- * This means that subscriptions bought for now do start now, but subscriptions for the future start at the previous noon.
- *
- * @param subscriptionRequest subscription request object
- * @return created subscription
- */
- @Named("subscription:listSubscriptionsCalculator")
- @POST
- @Path("/subscriptions/")
- @SelectJson("objects")
- @OnlyElement
- Subscription createSubscription(
- @BinderParam(BindCreateSubscriptionRequest.class) CreateSubscriptionRequest subscriptionRequest);
-
- /**
- * Creates a new subscription. There is a limit of 500 subscriptions that can be purchased in one request.
- * Subscription times are rounded to noon UTC, using the following rules:
- * - End time is always rounded to the next noon.
- * - Start time is rounded to the maximum between the current time an the previous noon.
- * This means that subscriptions bought for now do start now, but subscriptions for the future start at the previous noon.
- *
- * @param subscriptionRequest parameters for new subscriptions
- * @return new subscriptions
- */
- @Named("subscription:createSubscriptions")
- @POST
- @Path("/subscriptions/")
- @SelectJson("objects")
- List<Subscription> createSubscriptions(
- @BinderParam(BindCreateSubscriptionRequestList.class) List<CreateSubscriptionRequest> subscriptionRequest);
-
- /**
- * Extends the subscription. An extended subscription is actually just another subscription that is linked to the original
- * If a period or and end_time are specified in the request,they are used. If neither are specified,
- * the creation length of the subscription is used.
- *
- * A caveat to this is that a subscription created initially with an end_time, the exact interval is used.
- * Subscriptions that are created with a period have the period parsed again in the context of the new start_time.
- * An example would be a subscription created on the 1st of February with a period of ‘1 month’ will be extended for 31 days,
- * but one that was created with an end date of 1st of March will be extended for 28 days.
- *
- * If the specified subscription has actually been extended, it traverses and extends the last subscription in the chain.
- *
- * @param id id of subscription to extend
- */
- @Named("subscription:extendSubscription/{id}")
- @POST
- @Path("/subscriptions/{id}/action/?do=extend")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- void extendSubscription(@PathParam("id") String id);
-
- /**
- * Toggles the autorenew flag of the subscription.
- *
- * @param id id of subscription to enable autorenew
- */
- @Named("subscription:enableSubscriptionAutorenew/{id}")
- @POST
- @Path("/subscriptions/{id}/action/?do=auto_renew")
- @Fallback(Fallbacks.NullOnNotFoundOr404.class)
- void enableSubscriptionAutorenew(@PathParam("id") String id);
-
- /**
- * Gets the pricing information that are applicable to the cloud. Subscription prices use a burst level of 0.
- *
- * @return pricing information that are applicable to the cloud.
- */
- @Named("pricing:getPricing")
- @GET
- @Path("/pricing/")
- Pricing getPricing();
-
- /**
- * Get discount information.
- *
- * @return discount information.
- */
- @Named("discount:listDiscounts")
- @GET
- @Path("/discount/")
- @ResponseParser(ParseDiscounts.class)
- @Transform(ParseDiscounts.ToPagedIterable.class)
- PagedIterable<Discount> listDiscounts();
-
- /**
- * Get discount information.
- *
- * @return PaginatedCollection of discount information.
- */
- @Named("discount:listDiscounts")
- @GET
- @Path("/discount/")
- @ResponseParser(ParseDiscounts.class)
- PaginatedCollection<Discount> listDiscounts(PaginationOptions options);
-
- /**
- * Get the transactions for the account.
- *
- * @return transactions for the account.
- */
- @Named("ledger:listTransactions")
- @GET
- @Path("/ledger/")
- @ResponseParser(ParseTransactions.class)
- @Transform(ParseTransactions.ToPagedIterable.class)
- PagedIterable<Transaction> listTransactions();
-
- /**
- * Get the transactions for the account.
- *
- * @return PaginatedCollection of account's transactions.
- */
- @Named("ledger:listTransactions")
- @GET
- @Path("/ledger/")
- @ResponseParser(ParseTransactions.class)
- PaginatedCollection<Transaction> listTransactions(PaginationOptions options);
-
- /**
- * Get the licenses available on the cloud. The type of the license can be one of:
- * install - These licenses are billed per installation, regardless of whether it is attached to a running guests or not.
- * instance - These licenses are billed per running instance of a guest. A license attached to a guest that’s stopped is not billed.
- * stub - These licenses are billed per a metric specified by the customer (i.e. per number of users license)
- *
- * The user metric field specifies what attribute on the instance of the guest is used for determining the number of licenses.
- * For example, “smp” will count one license for each CPU/core in the virtual machine.
- *
- * @return licenses available on the cloud
- */
- @Named("license:listLicenses")
- @GET
- @Path("/licenses/")
- @ResponseParser(ParseLicenses.class)
- @Transform(ParseLicenses.ToPagedIterable.class)
- PagedIterable<License> listLicenses();
-
- /**
- * Get the licenses available on the cloud. The type of the license can be one of:
- * install - These licenses are billed per installation, regardless of whether it is attached to a running guests or not.
- * instance - These licenses are billed per running instance of a guest. A license attached to a guest that’s stopped is not billed.
- * stub - These licenses are billed per a metric specified by the customer (i.e. per number of users license)
- *
- * The user metric field specifies what attribute on the instance of the guest is used for determining the number of licenses.
- * For example, “smp” will count one license for each CPU/core in the virtual machine.
- *
- * @return PaginatedCollection of licenses available on the cloud
- */
- @Named("license:listLicenses")
- @GET
- @Path("/licenses/")
- @ResponseParser(ParseLicenses.class)
- PaginatedCollection<License> listLicenses(PaginationOptions options);
+ /**
+ * Gets the list of drives to which the authenticated user has access.
+ *
+ * @return list of drives or empty list if no drives are found
+ */
+ @Named("drive:listDrives")
+ @GET
+ @Path("/drives/")
+ @ResponseParser(ParseDrives.class)
+ @Transform(ParseDrives.ToPagedIterable.class)
+ PagedIterable<Drive> listDrives();
+
+ /**
+ * Gets the list of drives to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of drives
+ */
+ @Named("drive:listDrives")
+ @GET
+ @Path("/drives/")
+ @ResponseParser(ParseDrives.class)
+ PaginatedCollection<Drive> listDrives(PaginationOptions options);
+
+ /**
+ * Gets the list of drives to which the authenticated user has access.
+ *
+ * @param fields A set of field names specifying the returned fields
+ * @param limit number of drives to show
+ * @return or empty set if no drives are found
+ */
+ @Named("drive:listDrives")
+ @GET
+ @Path("/drives/")
+ @SelectJson("objects")
+ List<DriveInfo> listDrives(@QueryParam("fields") DrivesListRequestFieldsGroup fields
+ , @DefaultValue("0") @QueryParam("limit") int limit);
+
+ /**
+ * Gets the detailed list of drives with additional information to which the authenticated user has access.
+ *
+ * @return list of drives or empty list if no drives are found
+ */
+ @Named("drive:listDrivesInfo")
+ @GET
+ @Path("/drives/detail/")
+ @ResponseParser(ParseDriveInfos.class)
+ @Transform(ParseDriveInfos.ToPagedIterable.class)
+ PagedIterable<DriveInfo> listDrivesInfo();
+
+ /**
+ * Gets the detailed list of drives with additional information to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of drives
+ */
+ @Named("drive:listDrivesInfo")
+ @GET
+ @Path("/drives/detail/")
+ @ResponseParser(ParseDriveInfos.class)
+ PaginatedCollection<DriveInfo> listDrivesInfo(PaginationOptions options);
+
+ /**
+ * Gets detailed information for drive identified by drive uuid
+ *
+ * @param uuid drive uuid to get
+ * @return null, if not found
+ */
+ @Named("drive:getDriveInfo/{uuid}")
+ @GET
+ @Path("/drives/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ DriveInfo getDriveInfo(@PathParam("uuid") String uuid);
+
+ /**
+ * Creates a new drive
+ *
+ * @param createDrive required parameters: name, size, media
+ * @return newly created drive
+ */
+ @Named("drive:createDrive")
+ @POST
+ @Path("/drives/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ @SelectJson("objects")
+ @OnlyElement
+ DriveInfo createDrive(@BinderParam(BindDriveToJson.class) DriveInfo createDrive);
+
+ /**
+ * Creates multiple new drives
+ *
+ * @param createDrives required parameters: name, size, media
+ * @return newly created drives
+ */
+ @Named("drive:listDrives")
+ @POST
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ @SelectJson("objects")
+ @Path("/drives/")
+ List<DriveInfo> createDrives(@BinderParam(BindDrivesToJson.class) List<DriveInfo> createDrives);
+
+ /**
+ * Deletes a single mounted or unmounted drive.
+ *
+ * @param uuid what to delete
+ */
+ @Named("drive:deleteDrive/{uuid}")
+ @DELETE
+ @Path("/drives/{uuid}/")
+ @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
+ void deleteDrive(@PathParam("uuid") String uuid);
+
+ /**
+ * Deletes multiple mounted or unmounted drives specified by their UUID’s.
+ *
+ * @param uuids what drives to delete
+ */
+ @Named("drive:deleteDrives")
+ @DELETE
+ @Path("/drives/")
+ @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
+ void deleteDrives(@BinderParam(BindUuidStringsToJsonArray.class) Iterable<String> uuids);
+
+ /**
+ * Edits a mounted or unmounted drive. If mounted, the server mounted on should be stopped.
+ *
+ * @param sourceUuid source drive to edit
+ * @param driveInfo drive parameters to change
+ * @return changed drive
+ */
+ @Named("drive:editDrive/{uuid}")
+ @PUT
+ @Path("/drives/{uuid}/")
+ @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
+ DriveInfo editDrive(@PathParam("uuid") String sourceUuid
+ , @BinderParam(BindDriveToJson.class) DriveInfo driveInfo);
+
+
+ /**
+ * Clones a drive. Request body is optional and any or all of the key/value pairs can be omitted.
+ *
+ * @param sourceUuid source drive to clone
+ * @param driveInfo drive parameters to change
+ * @return new drive
+ */
+ @Named("drive:cloneDrive/{uuid}")
+ @POST
+ @Path("/drives/{uuid}/action/?do=clone")
+ @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
+ DriveInfo cloneDrive(@PathParam("uuid") String sourceUuid
+ , @Nullable @BinderParam(BindDriveToJson.class) DriveInfo driveInfo);
+
+ /**
+ * Gets the list of library drives to which the authenticated user has access.
+ *
+ * @return list of library drives to which the authenticated user has access
+ */
+ @Named("libdrive:listLibraryDrives")
+ @GET
+ @Path("/libdrives/")
+ @ResponseParser(ParseLibraryDrives.class)
+ @Transform(ParseLibraryDrives.ToPagedIterable.class)
+ PagedIterable<LibraryDrive> listLibraryDrives();
+
+ /**
+ * Gets the list of library drives to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of library drives
+ */
+ @Named("libdrive:listLibraryDrives")
+ @GET
+ @Path("/libdrives/")
+ @ResponseParser(ParseLibraryDrives.class)
+ PaginatedCollection<LibraryDrive> listLibraryDrives(PaginationOptions options);
+
+ /**
+ * Gets detailed information for library drive identified by uuid.
+ *
+ * @param uuid uuid of library drive to be listed
+ * @return drive information or null if not found
+ */
+ @Named("libdrive:getLibraryDrive/{uuid}")
+ @GET
+ @Path("/libdrives/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ LibraryDrive getLibraryDrive(@PathParam("uuid") String uuid);
+
+ /**
+ * If a library drive is not a CDROM, you have to clone it in your account in order to use it.
+ *
+ * @param uuid uuid of library drive to clone
+ * @param libraryDrive cloned drive
+ * @return cloned drive information or null if not found
+ */
+ @Named("libdrive:cloneLibraryDrive/{uuid}")
+ @POST
+ @Path("/libdrives/{uuid}/action/?do=clone")
+ @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
+ LibraryDrive cloneLibraryDrive(@PathParam("uuid") String uuid
+ , @Nullable @BinderParam(BindLibraryDriveToJson.class) LibraryDrive libraryDrive);
+
+ /**
+ * Gets the list of servers to which the authenticated user has access.
+ *
+ * @return list of servers or empty list if no servers are found
+ */
+ @Named("server:listServers")
+ @GET
+ @Path("/servers/")
+ @ResponseParser(ParseServers.class)
+ @Transform(ParseServers.ToPagedIterable.class)
+ PagedIterable<Server> listServers();
+
+ /**
+ * Gets the list of servers to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of servers
+ */
+ @Named("server:listServers")
+ @GET
+ @Path("/servers/")
+ @ResponseParser(ParseServers.class)
+ PaginatedCollection<Server> listServers(PaginationOptions options);
+
+ /**
+ * Gets the detailed list of servers to which the authenticated user has access.
+ *
+ * @return list of servers or empty list if no servers are found
+ */
+ @Named("server:listServersInfo")
+ @GET
+ @Path("/servers/detail/")
+ @ResponseParser(ParseServerInfos.class)
+ @Transform(ParseServerInfos.ToPagedIterable.class)
+ PagedIterable<ServerInfo> listServersInfo();
+
+ /**
+ * Gets the detailed list of servers to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of servers
+ */
+ @Named("server:listServersInfo")
+ @GET
+ @Path("/servers/detail/")
+ @ResponseParser(ParseServerInfos.class)
+ PaginatedCollection<ServerInfo> listServersInfo(PaginationOptions options);
+
+ /**
+ * Creates a new virtual server or multiple servers.
+ * The minimial amount of information you need to set is:
+ * cpu
+ * memory
+ * name
+ * vncPassword
+ *
+ * @param createServer required parameters: cpu, memory, name, vncPassword
+ * @return newly created server
+ */
+ @Named("server:createServer")
+ @POST
+ @Path("/servers/")
+ @SelectJson("objects")
+ @OnlyElement
+ ServerInfo createServer(@BinderParam(BindServerInfoToJsonRequest.class) ServerInfo createServer);
+
+ /**
+ * create a new servers
+ *
+ * @param servers servers to create. Required parameters: cpu, memory, name, vncPassword
+ * @return newly created servers
+ */
+ @Named("server:createServers")
+ @POST
+ @Path("/servers/")
+ @SelectJson("objects")
+ List<ServerInfo> createServers(@BinderParam(BindServerInfoListToJsonRequest.class) Iterable<ServerInfo> servers);
+
+ /**
+ * Edits a server. Used also for attaching NIC’s and drives to servers.
+ *
+ * @param uuid server uuid
+ * @param server data to change
+ * @return modified server
+ */
+ @Named("server:editServer/{uuid}")
+ @PUT
+ @Path("/servers/{uuid}/")
+ @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
+ ServerInfo editServer(@PathParam("uuid") String uuid
+ , @BinderParam(BindServerInfoToJsonRequest.class) ServerInfo server);
+
+ /**
+ * Deletes a single server.
+ *
+ * @param uuid uuid of server to delete
+ */
+ @Named("server:deleteServer/{uuid}")
+ @DELETE
+ @Path("/servers/{uuid}/")
+ @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
+ void deleteServer(@PathParam("uuid") String uuid);
+
+ /**
+ * Deletes multiple servers specified by their UUID’s.
+ *
+ * @param uuids server uuids to delete
+ */
+ @Named("server:deleteServers")
+ @DELETE
+ @Path("/servers/")
+ @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
+ void deleteServers(@BinderParam(BindUuidStringsToJsonArray.class) Iterable<String> uuids);
+
+ /**
+ * Clones a server. Empty body.
+ * Does cascading clone of server drives.
+ * IPs of the cloned server are set to DHCP.
+ * All other properties of the clone are equal to the original.
+ *
+ * @param uuid server what to clone
+ * @return cloned server
+ */
+ @Named("server:cloneServer/{uuid}")
+ @POST
+ @Path("/servers/{uuid}/action/?do=clone")
+ @Fallback(Fallbacks.VoidOnNotFoundOr404.class)
+ ServerInfo cloneServer(@PathParam("uuid") String uuid);
+
+ /**
+ * Gets detailed information for server identified by server uuid.
+ *
+ * @param uuid server uuid
+ * @return server info or null, if not found
+ */
+ @Named("server:getServerInfo/{uuid}")
+ @GET
+ @Path("/servers/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ ServerInfo getServerInfo(@PathParam("uuid") String uuid);
+
+ /**
+ * Starts a server with specific UUID.
+ *
+ * @param uuid uuid of server to start
+ */
+ @Named("server:startServer/{uuid}")
+ @POST
+ @Path("/servers/{uuid}/action/?do=start")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ void startServer(@PathParam("uuid") String uuid);
+
+ /**
+ * Stops a server with specific UUID.
+ *
+ * @param uuid uuid of server to stop
+ */
+ @Named("server:stopServer/{uuid}")
+ @POST
+ @Path("/servers/{uuid}/action/?do=stop")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ void stopServer(@PathParam("uuid") String uuid);
+
+ /**
+ * Starts a server with specific UUID assuring that it is started on a different physical infrastructure host
+ * from the other servers specified in the avoid argument which is
+ * a single server UUID or a comma-separated list of server UUIDs.
+ * This way the server specified by uuid is run in a distinct availability group from the other listed servers.
+ * Note that it might not always be possible to run a server in a different availability group,
+ * therefore the order of the avoid list also signifies the priority of avoiding other servers.
+ *
+ * @param uuid uuid of server to start
+ * @param uuidGroup availability group to avoid
+ */
+ @Named("server:startServerInSeparateAvailabilityGroup/{uuid}")
+ @POST
+ @Path("/servers/{uuid}/action/?do=start")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ void startServerInSeparateAvailabilityGroup(@PathParam("uuid") String uuid
+ , @QueryParam("avoid") List<String> uuidGroup);
+
+ /**
+ * Opens a VNC tunnel to a server with specific UUID.
+ *
+ * @param uuid uuid of server to open VNC tunnel
+ */
+ @Named("server:openServerVNCTunnel/{uuid}")
+ @POST
+ @Path("/servers/{uuid}/action/?do=open_vnc")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ void openServerVNCTunnel(@PathParam("uuid") String uuid);
+
+ /**
+ * Closes a VNC tunnel to a server with specific UUID.
+ *
+ * @param uuid uuid of server to close VNC tunnel
+ */
+ @Named("server:closeServerVCNTunnel/{uuid}")
+ @POST
+ @Path("/servers/{uuid}/action/?do=close_vnc")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ void closeServerVCNTunnel(@PathParam("uuid") String uuid);
+
+ /**
+ * @return which servers share same physical infrastructure host.
+ */
+ @Named("server:listServerAvailabilityGroup")
+ @GET
+ @Path("/servers/availability_groups/")
+ List<List<String>> listServerAvailabilityGroup();
+
+ /**
+ * Queries which other servers share same physical host with the given one.
+ *
+ * @param uuid Uuid of server to find availability group
+ * @return an array holding server UUIDs. The response includes also the UUID of the queried server.
+ */
+ @Named("server:getServerAvailabilityGroup/{uuid}")
+ @GET
+ @PathParam("/servers/availability_groups/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ ServerAvailabilityGroup getServerAvailabilityGroup(@PathParam("uuid") String uuid);
+
+ /**
+ * Gets the list of firewall policies to which the authenticated user has access.
+ *
+ * @return list of firewall policies to which the authenticated user has access.
+ */
+ @Named("fwpolicy:listFirewallPolicies")
+ @GET
+ @Path("/fwpolicies/")
+ @ResponseParser(ParseFirewallPolicies.class)
+ @Transform(ParseFirewallPolicies.ToPagedIterable.class)
+ PagedIterable<FirewallPolicy> listFirewallPolicies();
+
+ /**
+ * Gets the list of firewall policies to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of firewall policies
+ */
+ @Named("fwpolicy:listFirewallPolicies")
+ @GET
+ @Path("/fwpolicies/")
+ @ResponseParser(ParseFirewallPolicies.class)
+ PaginatedCollection<FirewallPolicy> listFirewallPolicies(PaginationOptions options);
+
+ /**
+ * Gets a detailed list of firewall policies to which the authenticated user has access.
+ *
+ * @return list of firewall policies to which the authenticated user has access.
+ */
+ @Named("fwpolicy:listFirewallPoliciesInfo")
+ @GET
+ @Path("/fwpolicies/detail/")
+ @ResponseParser(ParseFirewallPolicies.class)
+ @Transform(ParseFirewallPolicies.ToPagedIterableInfo.class)
+ PagedIterable<FirewallPolicy> listFirewallPoliciesInfo();
+
+ /**
+ * Gets a detailed list of firewall policies to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of firewall policies
+ */
+ @Named("fwpolicy:listFirewallPoliciesInfo")
+ @GET
+ @Path("/fwpolicies/detail/")
+ @ResponseParser(ParseFirewallPolicies.class)
+ PaginatedCollection<FirewallPolicy> listFirewallPoliciesInfo(PaginationOptions options);
+
+ /**
+ * Creates firewall policies.
+ *
+ * @param firewallPolicies firewall policies to create
+ * @return list of created firewall policies
+ */
+ @Named("fwpolicy:createFirewallPolicies")
+ @POST
+ @Path("/fwpolicies/")
+ @SelectJson("objects")
+ List<FirewallPolicy> createFirewallPolicies(
+ @BinderParam(BindFirewallPoliciesListToJsonRequest.class) List<FirewallPolicy> firewallPolicies);
+
+ /**
+ * Creates a firewall policy.
+ *
+ * @param firewallPolicy firewall policy to create
+ * @return created firewall policy
+ */
+ @Named("fwpolicy:createFirewallPolicy")
+ @POST
+ @Path("/fwpolicies/")
+ @SelectJson("objects")
+ @OnlyElement
+ FirewallPolicy createFirewallPolicy(
+ @BinderParam(BindFirewallPolicyToJsonRequest.class) FirewallPolicy firewallPolicy);
+
+ /**
+ * Update an existing firewall policy
+ *
+ * @param uuid uuid of policy to update
+ * @param firewallPolicy firewall policy data to update
+ * @return updated firewall policy
+ */
+ @Named("fwpolicy:editFirewallPolicy/{uuid}")
+ @PUT
+ @Path("/fwpolicies/{uuid}/")
+ FirewallPolicy editFirewallPolicy(@PathParam("uuid") String uuid
+ , @BinderParam(BindFirewallPolicyToJsonRequest.class) FirewallPolicy firewallPolicy);
+
+ /**
+ * Gets detailed information for VLAN identified by VLAN uuid.
+ *
+ * @param uuid uuid of VLAN to get
+ * @return null, if not found
+ */
+ @Named("vlan:getVLANInfo/{uuid}")
+ @GET
+ @Path("/vlans/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ VLANInfo getVLANInfo(@PathParam("uuid") String uuid);
+
+ /**
+ * Gets the list of VLANs to which the authenticated user has access.
+ *
+ * @return list of VLANs or empty list if no vlans are found
+ */
+ @Named("vlan:listVLANs")
+ @GET
+ @Path("/vlans/")
+ @ResponseParser(ParseVLANs.class)
+ @Transform(ParseVLANs.ToPagedIterable.class)
+ PagedIterable<VLANInfo> listVLANs();
+
+ /**
+ * Gets the list of VLANs to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of VLANs
+ */
+ @Named("vlan:listVLANs")
+ @GET
+ @Path("/vlans/")
+ @ResponseParser(ParseVLANs.class)
+ PaginatedCollection<VLANInfo> listVLANs(PaginationOptions options);
+
+ /**
+ * Gets the list of VLANs to which the authenticated user has access.
+ *
+ * @return list of VLANs or empty list if no vlans are found
+ */
+ @Named("vlan:listVLANInfo")
+ @GET
+ @Path("/vlans/detail/")
+ @ResponseParser(ParseVLANs.class)
+ @Transform(ParseVLANs.ToPagedIterableInfo.class)
+ PagedIterable<VLANInfo> listVLANInfo();
+
+ /**
+ * Gets the list of VLANs to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of VLANs
+ */
+ @Named("vlan:listVLANInfo")
+ @GET
+ @Path("/vlans/detail/")
+ @ResponseParser(ParseVLANs.class)
+ PaginatedCollection<VLANInfo> listVLANInfo(PaginationOptions options);
+
+ /**
+ * Currently only VLAN meta field can be edited.
+ *
+ * @param uuid uuid of VLAN to edit
+ * @param vlanInfo data to change
+ * @return changed VLAN
+ */
+ @Named("vlan:listVLANInfo/{uuid}")
+ @PUT
+ @Path("/vlans/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ VLANInfo editVLAN(@PathParam("uuid") String uuid
+ , @BinderParam(BindVLANToJsonRequest.class) VLANInfo vlanInfo);
+
+ /**
+ * Gets the list of IPs to which the authenticated user has access.
+ *
+ * @return list of IPs or empty list if no ips are found
+ */
+ @Named("ip:listIPs")
+ @GET
+ @Path("/ips/")
+ @ResponseParser(ParseIPs.class)
+ @Transform(ParseIPs.ToPagedIterable.class)
+ PagedIterable<IP> listIPs();
+
+ /**
+ * Gets the list of IPs to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of IPs
+ */
+ @Named("ip:listIPs")
+ @GET
+ @Path("/ips/")
+ @ResponseParser(ParseIPs.class)
+ PaginatedCollection<IP> listIPs(PaginationOptions options);
+
+ /**
+ * Gets the detailed list of IPs with additional information to which the authenticated user has access.
+ *
+ * @return list of IPs or empty list if no ips are found
+ */
+ @Named("ip:listIPInfo")
+ @GET
+ @Path("/ips/detail/")
+ @ResponseParser(ParseIPInfos.class)
+ @Transform(ParseIPInfos.ToPagedIterable.class)
+ PagedIterable<IPInfo> listIPInfo();
+
+ /**
+ * Gets the detailed list of IPs with additional information to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of IPs
+ */
+ @Named("ip:listIPInfo")
+ @GET
+ @Path("/ips/detail/")
+ @ResponseParser(ParseIPInfos.class)
+ PaginatedCollection<IPInfo> listIPInfo(PaginationOptions options);
+
+ /**
+ * Gets detailed information for IP identified by IP uuid.
+ *
+ * @param uuid uuid of IP to get
+ * @return null, if not found
+ */
+ @Named("ip:getIPInfo/{uuid}")
+ @GET
+ @Path("/ips/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ IPInfo getIPInfo(@PathParam("uuid") String uuid);
+
+ /**
+ * Currently only IP meta field can be edited.
+ *
+ * @param uuid uuid of IP to edit
+ * @param ipInfo data to change
+ * @return changed IP
+ */
+ @Named("ip:editIP/{uuid}")
+ @PUT
+ @Path("/ips/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ IPInfo editIP(@PathParam("uuid") String uuid
+ , @BinderParam(BindIPInfoToJsonRequest.class) IPInfo ipInfo);
+
+ /**
+ * Gets the list of tags to which the authenticated user has access.
+ *
+ * @return list of tags to which the authenticated user has access
+ */
+ @Named("tag:listTags")
+ @GET
+ @Path("/tags/")
+ @ResponseParser(ParseTags.class)
+ @Transform(ParseTags.ToPagedIterable.class)
+ PagedIterable<Tag> listTags();
+
+ /**
+ * Gets the list of tags to which the authenticated user has access.
+ *
+ * @return PaginatedCollection of tags to which the authenticated user has access
+ */
+ @Named("tag:listTags")
+ @GET
+ @Path("/tags/")
+ @ResponseParser(ParseTags.class)
+ PaginatedCollection<Tag> listTags(PaginationOptions options);
+
+ /**
+ * Gets the detailed list of tags with additional information to which the authenticated user has access,
+ * like the tagged resource
+ *
+ * @return detailed listings of your tags
+ */
+ @Named("tag:listTagsInfo")
+ @GET
+ @Path("/tags/detail/")
+ @ResponseParser(ParseTags.class)
+ @Transform(ParseTags.ToPagedIterableInfo.class)
+ PagedIterable<Tag> listTagsInfo();
+
+ /**
+ * Gets the detailed list of tags with additional information to which the authenticated user has access,
+ * like the tagged resource
+ *
+ * @return PaginatedCollection of detailed tags
+ */
+ @Named("tag:listTagsInfo")
+ @GET
+ @Path("/tags/detail/")
+ @ResponseParser(ParseTags.class)
+ PaginatedCollection<Tag> listTagsInfo(PaginationOptions options);
+
+ /**
+ * Gets detailed information for tag identified by tag uuid.
+ *
+ * @param uuid tag uuid
+ * @return detailed info of tag
+ */
+ @Named("tag:getTagInfo/{uuid}")
+ @GET
+ @Path("/tags/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ Tag getTagInfo(@PathParam("uuid") String uuid);
+
+ /**
+ * Edits a tag.
+ * It is possible to add or remove resources to a tag by replacing the resources list with a new one
+ *
+ * @param uuid tag uuid
+ * @param tag info to change
+ * @return detailed info of tag
+ */
+ @Named("tag:editTag/{uuid}")
+ @PUT
+ @Path("/tags/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ Tag editTag(@PathParam("uuid") String uuid, @BinderParam(BindTagToJsonRequest.class) Tag tag);
+
+ /**
+ * Creates a new tag
+ *
+ * @param tag tag to create
+ * @return created tag
+ */
+ @Named("tag:createTag")
+ @POST
+ @Path("/tags/")
+ @SelectJson("objects")
+ @OnlyElement
+ Tag createTag(@BinderParam(BindTagToJsonRequest.class) Tag tag);
+
+ /**
+ * Deletes a single tag.
+ *
+ * @param uuid uuid of tag to delete
+ */
+ @Named("tag:deleteTag/{uuid}")
+ @DELETE
+ @Path("/tags/{uuid}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ void deleteTag(@PathParam("uuid") String uuid);
+
+ /**
+ * Creates a multiple new tags
+ *
+ * @param tags tags to create
+ * @return created tags
+ */
+ @Named("tag:createTags")
+ @POST
+ @Path("/tags/")
+ @SelectJson("objects")
+ List<Tag> createTags(@BinderParam(BindTagListToJsonRequest.class) List<Tag> tags);
+
+ /**
+ * Gets the user profile.
+ *
+ * @return profile information
+ */
+ @Named("profile:getProfileInfo")
+ @GET
+ @Path("/profile/")
+ ProfileInfo getProfileInfo();
+
+ /**
+ * Edits a user profile.
+ *
+ * @param profile data to change
+ * @return info or null, if not found
+ */
+ @Named("profile:editProfileInfo")
+ @PUT
+ @Path("/profile/")
+ ProfileInfo editProfileInfo(@BinderParam(BindProfileInfoToJsonRequest.class) ProfileInfo profile);
+
+ /**
+ * Get the balance and currency of the current account.
+ *
+ * @return current account balance and currency
+ */
+ @Named("balance:getAccountBalance")
+ @GET
+ @Path("/balance/")
+ AccountBalance getAccountBalance();
+
+ /**
+ * Get the current usage of the user.
+ *
+ * @return current usage of the user
+ */
+ @Named("currentusage:getCurrentUsage")
+ @GET
+ @Path("/currentusage/")
+ CurrentUsage getCurrentUsage();
+
+ /**
+ * Gets the list of subscriptions of the user.
+ *
+ * @return list of subscriptions of the user.
+ */
+ @Named("subscription:listSubscriptions")
+ @GET
+ @Path("/subscriptions/")
+ @ResponseParser(ParseSubscriptions.class)
+ @Transform(ParseSubscriptions.ToPagedIterable.class)
+ PagedIterable<Subscription> listSubscriptions();
+
+ /**
+ * Gets the list of subscriptions of the user.
+ *
+ * @return PaginatedCollection of subscriptions of the user.
+ */
+ @Named("subscription:listSubscriptions")
+ @GET
+ @Path("/subscriptions/")
+ @ResponseParser(ParseSubscriptions.class)
+ PaginatedCollection<Subscription> listSubscriptions(PaginationOptions options);
+
+ /**
+ * Returns requested subscription
+ *
+ * @return requested subscription.
+ */
+ @Named("subscription:getSubscription")
+ @GET
+ @Path("/subscriptions/{id}/")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ Subscription getSubscription(@PathParam("id") String id);
+
+ /**
+ * This is identical to the listSubscriptions(), except that subscriptions are not actually bought.
+ *
+ * @return list of subscriptions that are not actually bought.
+ */
+ @Named("subscription:listSubscriptionsCalculator")
+ @GET
+ @Path("/subscriptioncalculator/")
+ @ResponseParser(ParseSubscriptions.class)
+ @Transform(ParseSubscriptions.ToPagedIterableCalculator.class)
+ PagedIterable<Subscription> listSubscriptionsCalculator();
+
+ /**
+ * This is identical to the listSubscriptions(), except that subscriptions are not actually bought.
+ *
+ * @return PaginatedCollection of subscriptions that are not actually bought.
+ */
+ @Named("subscription:listSubscriptionsCalculator")
+ @GET
+ @Path("/subscriptioncalculator/")
+ @ResponseParser(ParseSubscriptions.class)
+ PaginatedCollection<Subscription> listSubscriptionsCalculator(PaginationOptions options);
+
+ /**
+ * Creates a new subscription.
+ * Subscription times are rounded to noon UTC, using the following rules:
+ * - End time is always rounded to the next noon.
+ * - Start time is rounded to the maximum between the current time an the previous noon.
+ * This means that subscriptions bought for now do start now, but subscriptions for the future start at the previous noon.
+ *
+ * @param subscriptionRequest subscription request object
+ * @return created subscription
+ */
+ @Named("subscription:listSubscriptionsCalculator")
+ @POST
+ @Path("/subscriptions/")
+ @SelectJson("objects")
+ @OnlyElement
+ Subscription createSubscription(
+ @BinderParam(BindCreateSubscriptionRequest.class) CreateSubscriptionRequest subscriptionRequest);
+
+ /**
+ * Creates a new subscription. There is a limit of 500 subscriptions that can be purchased in one request.
+ * Subscription times are rounded to noon UTC, using the following rules:
+ * - End time is always rounded to the next noon.
+ * - Start time is rounded to the maximum between the current time an the previous noon.
+ * This means that subscriptions bought for now do start now, but subscriptions for the future start at the previous noon.
+ *
+ * @param subscriptionRequest parameters for new subscriptions
+ * @return new subscriptions
+ */
+ @Named("subscription:createSubscriptions")
+ @POST
+ @Path("/subscriptions/")
+ @SelectJson("objects")
+ List<Subscription> createSubscriptions(
+ @BinderParam(BindCreateSubscriptionRequestList.class) List<CreateSubscriptionRequest> subscriptionRequest);
+
+ /**
+ * Extends the subscription. An extended subscription is actually just another subscription that is linked to the original
+ * If a period or and end_time are specified in the request,they are used. If neither are specified,
+ * the creation length of the subscription is used.
+ * <p/>
+ * A caveat to this is that a subscription created initially with an end_time, the exact interval is used.
+ * Subscriptions that are created with a period have the period parsed again in the context of the new start_time.
+ * An example would be a subscription created on the 1st of February with a period of ‘1 month’ will be extended for 31 days,
+ * but one that was created with an end date of 1st of March will be extended for 28 days.
+ * <p/>
+ * If the specified subscription has actually been extended, it traverses and extends the last subscription in the chain.
+ *
+ * @param id id of subscription to extend
+ */
+ @Named("subscription:extendSubscription/{id}")
+ @POST
+ @Path("/subscriptions/{id}/action/?do=extend")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ void extendSubscription(@PathParam("id") String id);
+
+ /**
+ * Toggles the autorenew flag of the subscription.
+ *
+ * @param id id of subscription to enable autorenew
+ */
+ @Named("subscription:enableSubscriptionAutorenew/{id}")
+ @POST
+ @Path("/subscriptions/{id}/action/?do=auto_renew")
+ @Fallback(Fallbacks.NullOnNotFoundOr404.class)
+ void enableSubscriptionAutorenew(@PathParam("id") String id);
+
+ /**
+ * Gets the pricing information that are applicable to the cloud. Subscription prices use a burst level of 0.
+ *
+ * @return pricing information that are applicable to the cloud.
+ */
+ @Named("pricing:getPricing")
+ @GET
+ @Path("/pricing/")
+ Pricing getPricing();
+
+ /**
+ * Get discount information.
+ *
+ * @return discount information.
+ */
+ @Named("discount:listDiscounts")
+ @GET
+ @Path("/discount/")
+ @ResponseParser(ParseDiscounts.class)
+ @Transform(ParseDiscounts.ToPagedIterable.class)
+ PagedIterable<Discount> listDiscounts();
+
+ /**
+ * Get discount information.
+ *
+ * @return PaginatedCollection of discount information.
+ */
+ @Named("discount:listDiscounts")
+ @GET
+ @Path("/discount/")
+ @ResponseParser(ParseDiscounts.class)
+ PaginatedCollection<Discount> listDiscounts(PaginationOptions options);
+
+ /**
+ * Get the transactions for the account.
+ *
+ * @return transactions for the account.
+ */
+ @Named("ledger:listTransactions")
+ @GET
+ @Path("/ledger/")
+ @ResponseParser(ParseTransactions.class)
+ @Transform(ParseTransactions.ToPagedIterable.class)
+ PagedIterable<Transaction> listTransactions();
+
+ /**
+ * Get the transactions for the account.
+ *
+ * @return PaginatedCollection of account's transactions.
+ */
+ @Named("ledger:listTransactions")
+ @GET
+ @Path("/ledger/")
+ @ResponseParser(ParseTransactions.class)
+ PaginatedCollection<Transaction> listTransactions(PaginationOptions options);
+
+ /**
+ * Get the licenses available on the cloud. The type of the license can be one of:
+ * install - These licenses are billed per installation, regardless of whether it is attached to a running guests or not.
+ * instance - These licenses are billed per running instance of a guest. A license attached to a guest that’s stopped is not billed.
+ * stub - These licenses are billed per a metric specified by the customer (i.e. per number of users license)
+ * <p/>
+ * The user metric field specifies what attribute on the instance of the guest is used for determining the number of licenses.
+ * For example, “smp” will count one license for each CPU/core in the virtual machine.
+ *
+ * @return licenses available on the cloud
+ */
+ @Named("license:listLicenses")
+ @GET
+ @Path("/licenses/")
+ @ResponseParser(ParseLicenses.class)
+ @Transform(ParseLicenses.ToPagedIterable.class)
+ PagedIterable<License> listLicenses();
+
+ /**
+ * Get the licenses available on the cloud. The type of the license can be one of:
+ * install - These licenses are billed per installation, regardless of whether it is attached to a running guests or not.
+ * instance - These licenses are billed per running instance of a guest. A license attached to a guest that’s stopped is not billed.
+ * stub - These licenses are billed per a metric specified by the customer (i.e. per number of users license)
+ * <p/>
+ * The user metric field specifies what attribute on the instance of the guest is used for determining the number of licenses.
+ * For example, “smp” will count one license for each CPU/core in the virtual machine.
+ *
+ * @return PaginatedCollection of licenses available on the cloud
+ */
+ @Named("license:listLicenses")
+ @GET
+ @Path("/licenses/")
+ @ResponseParser(ParseLicenses.class)
+ PaginatedCollection<License> listLicenses(PaginationOptions options);
}
http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/0d70c84a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ApiMetadata.java
----------------------------------------------------------------------
diff --git a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ApiMetadata.java b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ApiMetadata.java
index c67f14c..5437a41 100644
--- a/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ApiMetadata.java
+++ b/cloudsigma2/src/main/java/org/jclouds/cloudsigma2/CloudSigma2ApiMetadata.java
@@ -33,7 +33,7 @@ import static org.jclouds.reflect.Reflection2.typeToken;
/**
* Implementation of {@link BaseHttpApiMetadata} for the Cloud Sigma API
- *
+ *
* @author Vladimir Shevchenko
*/
public class CloudSigma2ApiMetadata extends BaseHttpApiMetadata<CloudSigma2Api> {
@@ -67,19 +67,19 @@ public class CloudSigma2ApiMetadata extends BaseHttpApiMetadata<CloudSigma2Api>
protected Builder() {
super(CloudSigma2Api.class);
id("cloudsigma2")
- .name("CloudSigma API")
- .defaultIdentity("email")
- .identityName("Email")
- .defaultCredential("Password")
- .credentialName("Password")
- .documentation(URI.create("http://cloudsigma.com/en/platform-details/the-api"))
- .version("2.0")
- .defaultEndpoint("https://zrh.cloudsigma.com/api/2.0")
- .defaultProperties(CloudSigma2ApiMetadata.defaultProperties())
- .view(typeToken(ComputeServiceContext.class))
- .defaultModules(ImmutableSet.<Class<? extends Module>>of(
- CloudSigma2HttpApiModule.class,
- CloudSigma2ParserModule.class));
+ .name("CloudSigma API")
+ .defaultIdentity("email")
+ .identityName("Email")
+ .defaultCredential("Password")
+ .credentialName("Password")
+ .documentation(URI.create("http://cloudsigma.com/en/platform-details/the-api"))
+ .version("2.0")
+ .defaultEndpoint("https://zrh.cloudsigma.com/api/2.0")
+ .defaultProperties(CloudSigma2ApiMetadata.defaultProperties())
+ .view(typeToken(ComputeServiceContext.class))
+ .defaultModules(ImmutableSet.<Class<? extends Module>>of(
+ CloudSigma2HttpApiModule.class,
+ CloudSigma2ParserModule.class));
}
@Override
@@ -94,7 +94,7 @@ public class CloudSigma2ApiMetadata extends BaseHttpApiMetadata<CloudSigma2Api>
@Override
public Builder fromApiMetadata(ApiMetadata in) {
- return this;
+ return this;
}
}
}