You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by an...@apache.org on 2014/10/03 16:28:02 UTC
[46/50] [abbrv] git commit: JCLOUDS-692 Remove the CloudSigma v1
provider.
JCLOUDS-692 Remove the CloudSigma v1 provider.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f7aea987
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f7aea987
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f7aea987
Branch: refs/heads/fix-jclouds-538
Commit: f7aea98742c2885eb85f07754b47abf7e71ec851
Parents: 5bac61d
Author: Adrian Cole <ad...@gmail.com>
Authored: Tue Sep 30 16:04:20 2014 -0700
Committer: Jeremy Daggett <jd...@apache.org>
Committed: Thu Oct 2 09:28:53 2014 -0700
----------------------------------------------------------------------
allcompute/pom.xml | 15 -
apis/cloudsigma/README.txt | 6 -
apis/cloudsigma/pom.xml | 116 ----
.../org/jclouds/cloudsigma/CloudSigmaApi.java | 447 -------------
.../cloudsigma/CloudSigmaApiMetadata.java | 88 ---
.../BindCloneDriveOptionsToPlainTextString.java | 87 ---
.../binders/BindDriveDataToPlainTextString.java | 55 --
.../binders/BindDriveToPlainTextString.java | 55 --
.../binders/BindServerToPlainTextString.java | 55 --
.../CloudSigmaComputeServiceAdapter.java | 251 --------
.../compute/CloudSigmaTemplateBuilderImpl.java | 44 --
.../CloudSigmaComputeServiceContextModule.java | 120 ----
.../ParseOsFamilyVersion64BitFromImageName.java | 82 ---
.../functions/PreinstalledDiskToImage.java | 62 --
.../functions/ServerInfoToNodeMetadata.java | 174 -----
.../options/CloudSigmaTemplateOptions.java | 323 ----------
.../config/CloudSigmaRestClientModule.java | 88 ---
.../jclouds/cloudsigma/domain/AffinityType.java | 47 --
.../jclouds/cloudsigma/domain/BlockDevice.java | 79 ---
.../jclouds/cloudsigma/domain/ClaimType.java | 52 --
.../cloudsigma/domain/CreateDriveRequest.java | 164 -----
.../org/jclouds/cloudsigma/domain/Device.java | 101 ---
.../org/jclouds/cloudsigma/domain/Drive.java | 209 ------
.../jclouds/cloudsigma/domain/DriveData.java | 81 ---
.../jclouds/cloudsigma/domain/DriveInfo.java | 466 --------------
.../jclouds/cloudsigma/domain/DriveMetrics.java | 132 ----
.../jclouds/cloudsigma/domain/DriveStatus.java | 41 --
.../jclouds/cloudsigma/domain/DriveType.java | 41 --
.../jclouds/cloudsigma/domain/IDEDevice.java | 91 ---
.../org/jclouds/cloudsigma/domain/Item.java | 163 -----
.../jclouds/cloudsigma/domain/MediaType.java | 45 --
.../org/jclouds/cloudsigma/domain/Model.java | 40 --
.../java/org/jclouds/cloudsigma/domain/NIC.java | 170 -----
.../jclouds/cloudsigma/domain/ProfileInfo.java | 191 ------
.../jclouds/cloudsigma/domain/ProfileType.java | 40 --
.../jclouds/cloudsigma/domain/SCSIDevice.java | 85 ---
.../org/jclouds/cloudsigma/domain/Server.java | 286 --------
.../jclouds/cloudsigma/domain/ServerInfo.java | 251 --------
.../cloudsigma/domain/ServerMetrics.java | 149 -----
.../jclouds/cloudsigma/domain/ServerStatus.java | 40 --
.../jclouds/cloudsigma/domain/StaticIPInfo.java | 224 -------
.../org/jclouds/cloudsigma/domain/VLANInfo.java | 159 -----
.../java/org/jclouds/cloudsigma/domain/VNC.java | 98 ---
.../cloudsigma/functions/BaseDriveToMap.java | 50 --
.../cloudsigma/functions/DriveDataToMap.java | 77 ---
...yValuesDelimitedByBlankLinesToDriveInfo.java | 46 --
...aluesDelimitedByBlankLinesToProfileInfo.java | 46 --
...ValuesDelimitedByBlankLinesToServerInfo.java | 46 --
...luesDelimitedByBlankLinesToStaticIPInfo.java | 46 --
...eyValuesDelimitedByBlankLinesToVLANInfo.java | 46 --
...luesDelimitedByBlankLinesToDriveInfoSet.java | 53 --
...ValuesDelimitedByBlankLinesToListOfMaps.java | 54 --
...esDelimitedByBlankLinesToProfileInfoSet.java | 53 --
...uesDelimitedByBlankLinesToServerInfoSet.java | 54 --
...sDelimitedByBlankLinesToStaticIPInfoSet.java | 53 --
...aluesDelimitedByBlankLinesToVLANInfoSet.java | 53 --
...sToListOfKeyValuesDelimitedByBlankLines.java | 51 --
.../cloudsigma/functions/MapToDevices.java | 95 ---
.../cloudsigma/functions/MapToDriveInfo.java | 110 ----
.../cloudsigma/functions/MapToDriveMetrics.java | 80 ---
.../jclouds/cloudsigma/functions/MapToNICs.java | 52 --
.../cloudsigma/functions/MapToProfileInfo.java | 54 --
.../cloudsigma/functions/MapToServerInfo.java | 87 ---
.../functions/MapToServerMetrics.java | 53 --
.../cloudsigma/functions/MapToStaticIPInfo.java | 54 --
.../cloudsigma/functions/MapToVLANInfo.java | 50 --
.../cloudsigma/functions/ReturnPayload.java | 32 -
.../cloudsigma/functions/ServerToMap.java | 74 ---
.../cloudsigma/functions/SplitNewlines.java | 45 --
.../SplitNewlinesAndReturnSecondField.java | 60 --
.../handlers/CloudSigmaErrorHandler.java | 102 ---
.../cloudsigma/options/CloneDriveOptions.java | 136 ----
.../cloudsigma/predicates/DriveClaimed.java | 56 --
.../reference/CloudSigmaConstants.java | 29 -
.../org/jclouds/cloudsigma/util/Servers.java | 79 ---
.../services/org.jclouds.apis.ApiMetadata | 1 -
.../cloudsigma/CloudSigmaApiMetadataTest.java | 28 -
.../jclouds/cloudsigma/CloudSigmaApiTest.java | 644 -------------------
.../cloudsigma/CloudSigmaClientLiveTest.java | 441 -------------
...dCloneDriveOptionsToPlainTextStringTest.java | 67 --
.../BindDriveDataToPlainTextStringTest.java | 80 ---
.../binders/BindDriveToPlainTextStringTest.java | 83 ---
.../BindServerToPlainTextStringTest.java | 85 ---
.../CloudSigmaComputeServiceLiveTest.java | 64 --
.../functions/BaseDriveToMapTest.java | 60 --
.../functions/DriveDataToMapTest.java | 74 ---
...uesDelimitedByBlankLinesToDriveInfoTest.java | 42 --
...sDelimitedByBlankLinesToProfileInfoTest.java | 42 --
...esDelimitedByBlankLinesToServerInfoTest.java | 73 ---
...luesDelimitedByBlankLinesToVLANInfoTest.java | 42 --
...DelimitedByBlankLinesToDriveInfoSetTest.java | 44 --
...esDelimitedByBlankLinesToListOfMapsTest.java | 59 --
...elimitedByBlankLinesToServerInfoSetTest.java | 73 ---
...sDelimitedByBlankLinesToVLANInfoSetTest.java | 44 --
...istOfKeyValuesDelimitedByBlankLinesTest.java | 53 --
.../functions/MapToDriveInfoTest.java | 90 ---
.../functions/MapToProfileInfoTest.java | 51 --
.../functions/MapToServerInfoTest.java | 155 -----
.../cloudsigma/functions/MapToVLANInfoTest.java | 49 --
...seOsFamilyVersion64BitFromImageNameTest.java | 74 ---
.../cloudsigma/functions/ServerToMapTest.java | 59 --
.../cloudsigma/functions/SplitNewlinesTest.java | 48 --
.../handlers/CloudSigmaErrorHandlerTest.java | 131 ----
.../options/CloneDriveOptionsTest.java | 127 ----
.../src/test/resources/create_drive.txt | 5 -
.../src/test/resources/create_server.txt | 11 -
apis/cloudsigma/src/test/resources/drive.txt | 27 -
.../src/test/resources/drive_data.txt | 6 -
apis/cloudsigma/src/test/resources/log4j.xml | 151 -----
.../src/test/resources/new_server.txt | 24 -
.../src/test/resources/osmatches.json | 174 -----
apis/cloudsigma/src/test/resources/profile.txt | 28 -
apis/cloudsigma/src/test/resources/servers.txt | 40 --
apis/cloudsigma/src/test/resources/uuids.txt | 3 -
apis/cloudsigma/src/test/resources/vlan.txt | 4 -
apis/pom.xml | 1 -
providers/cloudsigma-lvs/pom.xml | 125 ----
.../CloudSigmaLasVegasProviderMetadata.java | 81 ---
.../org.jclouds.providers.ProviderMetadata | 1 -
.../CloudSigmaLasVegasLondonClientLiveTest.java | 26 -
.../CloudSigmaLasVegasProviderTest.java | 28 -
...loudSigmaLasVegasComputeServiceLiveTest.java | 28 -
...oudSigmaLasVegasTemplateBuilderLiveTest.java | 85 ---
providers/cloudsigma-zrh/pom.xml | 126 ----
.../CloudSigmaZurichProviderMetadata.java | 81 ---
.../org.jclouds.providers.ProviderMetadata | 1 -
.../CloudSigmaZurichClientLiveTest.java | 26 -
.../CloudSigmaZurichProviderTest.java | 28 -
.../CloudSigmaZurichComputeServiceLiveTest.java | 75 ---
...CloudSigmaZurichTemplateBuilderLiveTest.java | 82 ---
providers/pom.xml | 2 -
131 files changed, 11641 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/allcompute/pom.xml
----------------------------------------------------------------------
diff --git a/allcompute/pom.xml b/allcompute/pom.xml
index c29e553..488a108 100644
--- a/allcompute/pom.xml
+++ b/allcompute/pom.xml
@@ -79,11 +79,6 @@
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.jclouds.api</groupId>
- <artifactId>cloudsigma</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>org.apache.jclouds.provider</groupId>
<artifactId>bluelock-vcloud-zone01</artifactId>
<version>${project.version}</version>
@@ -130,16 +125,6 @@
</dependency>
<dependency>
<groupId>org.apache.jclouds.provider</groupId>
- <artifactId>cloudsigma-zrh</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds.provider</groupId>
- <artifactId>cloudsigma-lvs</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds.provider</groupId>
<artifactId>go2cloud-jhb1</artifactId>
<version>${project.version}</version>
</dependency>
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/README.txt
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/README.txt b/apis/cloudsigma/README.txt
deleted file mode 100644
index bddfd04..0000000
--- a/apis/cloudsigma/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# The jclouds provider for CloudSigma (http://www.cloudsigma.com/).
-#
-# TODO: Implementation status.
-# TODO: Supported features.
-# TODO: Usage example.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/pom.xml
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/pom.xml b/apis/cloudsigma/pom.xml
deleted file mode 100644
index 859f62d..0000000
--- a/apis/cloudsigma/pom.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- 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.
-
--->
-<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</groupId>
- <artifactId>jclouds-project</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- <relativePath>../../project/pom.xml</relativePath>
- </parent>
- <groupId>org.apache.jclouds.api</groupId>
- <artifactId>cloudsigma</artifactId>
- <name>jclouds CloudSigma API</name>
- <description>ComputeService binding to the CloudSigma API</description>
- <packaging>bundle</packaging>
-
- <properties>
- <test.cloudsigma.endpoint>https://api.cloudsigma.com</test.cloudsigma.endpoint>
- <test.cloudsigma.api-version>1.0</test.cloudsigma.api-version>
- <test.cloudsigma.build-version />
- <test.cloudsigma.identity>FIXME_IDENTITY</test.cloudsigma.identity>
- <test.cloudsigma.credential>FIXME_CREDENTIAL</test.cloudsigma.credential>
- <test.cloudsigma.template>imageId=f3c7c665-cd54-4a78-8fd2-7ec2f028cf29</test.cloudsigma.template>
- <jclouds.osgi.export>org.jclouds.cloudsigma*;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.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds.driver</groupId>
- <artifactId>jclouds-sshj</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds</groupId>
- <artifactId>jclouds-core</artifactId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds</groupId>
- <artifactId>jclouds-compute</artifactId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.jclouds.driver</groupId>
- <artifactId>jclouds-log4j</artifactId>
- <version>${project.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.cloudsigma.endpoint>${test.cloudsigma.endpoint}</test.cloudsigma.endpoint>
- <test.cloudsigma.api-version>${test.cloudsigma.api-version}</test.cloudsigma.api-version>
- <test.cloudsigma.build-version>${test.cloudsigma.build-version}</test.cloudsigma.build-version>
- <test.cloudsigma.identity>${test.cloudsigma.identity}</test.cloudsigma.identity>
- <test.cloudsigma.credential>${test.cloudsigma.credential}</test.cloudsigma.credential>
- <test.cloudsigma.template>${test.cloudsigma.template}</test.cloudsigma.template>
- </systemPropertyVariables>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-
-</project>
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/CloudSigmaApi.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/CloudSigmaApi.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/CloudSigmaApi.java
deleted file mode 100644
index da0156d..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/CloudSigmaApi.java
+++ /dev/null
@@ -1,447 +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.cloudsigma;
-
-import java.io.Closeable;
-import java.util.Set;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
-import org.jclouds.cloudsigma.binders.BindCloneDriveOptionsToPlainTextString;
-import org.jclouds.cloudsigma.binders.BindDriveDataToPlainTextString;
-import org.jclouds.cloudsigma.binders.BindDriveToPlainTextString;
-import org.jclouds.cloudsigma.binders.BindServerToPlainTextString;
-import org.jclouds.cloudsigma.domain.Drive;
-import org.jclouds.cloudsigma.domain.DriveData;
-import org.jclouds.cloudsigma.domain.DriveInfo;
-import org.jclouds.cloudsigma.domain.ProfileInfo;
-import org.jclouds.cloudsigma.domain.Server;
-import org.jclouds.cloudsigma.domain.ServerInfo;
-import org.jclouds.cloudsigma.domain.StaticIPInfo;
-import org.jclouds.cloudsigma.domain.VLANInfo;
-import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToDriveInfo;
-import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToProfileInfo;
-import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToServerInfo;
-import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToStaticIPInfo;
-import org.jclouds.cloudsigma.functions.KeyValuesDelimitedByBlankLinesToVLANInfo;
-import org.jclouds.cloudsigma.functions.ListOfKeyValuesDelimitedByBlankLinesToDriveInfoSet;
-import org.jclouds.cloudsigma.functions.ListOfKeyValuesDelimitedByBlankLinesToServerInfoSet;
-import org.jclouds.cloudsigma.functions.ListOfKeyValuesDelimitedByBlankLinesToStaticIPInfoSet;
-import org.jclouds.cloudsigma.functions.ListOfKeyValuesDelimitedByBlankLinesToVLANInfoSet;
-import org.jclouds.cloudsigma.functions.SplitNewlines;
-import org.jclouds.cloudsigma.functions.SplitNewlinesAndReturnSecondField;
-import org.jclouds.cloudsigma.options.CloneDriveOptions;
-import org.jclouds.http.filters.BasicAuthentication;
-import org.jclouds.rest.annotations.BinderParam;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.MapBinder;
-import org.jclouds.rest.annotations.Payload;
-import org.jclouds.rest.annotations.PayloadParam;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.ResponseParser;
-
-/**
- * Provides synchronous access to CloudSigma via their REST API.
- * <p/>
- *
- * @see <a href="http://cloudsigma.com/en/platform-details/the-api" />
- */
-@RequestFilters(BasicAuthentication.class)
-@Consumes(MediaType.TEXT_PLAIN)
-public interface CloudSigmaApi extends Closeable {
-
- /**
- * list of drive uuids that are in the library
- *
- * @return or empty set if no drives are found
- */
- @GET
- @Path("/drives/standard/list")
- @ResponseParser(SplitNewlines.class)
- Set<String> listStandardDrives();
-
- /**
- * list of cd uuids that are in the library
- *
- * @return or empty set if no cds are found
- */
- @GET
- @Path("/drives/standard/cd/list")
- @ResponseParser(SplitNewlines.class)
- Set<String> listStandardCds();
-
- /**
- * list of image uuids that are in the library
- *
- * @return or empty set if no images are found
- */
- @GET
- @Path("/drives/standard/img/list")
- @ResponseParser(SplitNewlines.class)
- Set<String> listStandardImages();
-
- /**
- * Clone an existing drive. By default, the size is the same as the source
- *
- * @param sourceUuid
- * source to clone
- * @param newName
- * name of the resulting drive
- * @param options
- * options to control size
- * @return new drive
- */
- @POST
- @ResponseParser(KeyValuesDelimitedByBlankLinesToDriveInfo.class)
- @Path("/drives/{uuid}/clone")
- @MapBinder(BindCloneDriveOptionsToPlainTextString.class)
- DriveInfo cloneDrive(@PathParam("uuid") String sourceUuid, @PayloadParam("name") String newName,
- CloneDriveOptions... options);
-
- /**
- * Get profile info
- *
- * @return info or null, if not found
- */
- @GET
- @Path("/profile/info")
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToProfileInfo.class)
- ProfileInfo getProfileInfo();
-
- /**
- * Get all drives info
- *
- * @return or empty set if no drives are found
- */
- @GET
- @Path("/drives/info")
- @ResponseParser(ListOfKeyValuesDelimitedByBlankLinesToDriveInfoSet.class)
- Set<DriveInfo> listDriveInfo();
-
- /**
- * @param uuid
- * what to get
- * @return null, if not found
- */
- @GET
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToDriveInfo.class)
- @Path("/drives/{uuid}/info")
- DriveInfo getDriveInfo(@PathParam("uuid") String uuid);
-
- /**
- * create a new drive
- *
- * @param createDrive
- * required parameters: name, size
- * @return newly created drive
- */
- @POST
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToDriveInfo.class)
- @Path("/drives/create")
- DriveInfo createDrive(@BinderParam(BindDriveToPlainTextString.class) Drive createDrive);
-
- /**
- * set extra drive data
- *
- * @param uuid
- * what drive to change
- * @param createDrive
- * what values to change
- * @return new data
- */
- @POST
- @ResponseParser(KeyValuesDelimitedByBlankLinesToDriveInfo.class)
- @Path("/drives/{uuid}/set")
- DriveInfo setDriveData(@PathParam("uuid") String uuid,
- @BinderParam(BindDriveDataToPlainTextString.class) DriveData createDrive);
-
- /**
- * create a new server
- *
- * @param createServer
- * @return newly created server
- */
- @POST
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToServerInfo.class)
- @Path("/servers/create")
- ServerInfo createServer(@BinderParam(BindServerToPlainTextString.class) Server createServer);
-
- /**
- * Get all servers info
- *
- * @return or empty set if no servers are found
- */
- @GET
- @Path("/servers/info")
- @ResponseParser(ListOfKeyValuesDelimitedByBlankLinesToServerInfoSet.class)
- Set<ServerInfo> listServerInfo();
-
- /**
- * @param uuid
- * what to get
- * @return null, if not found
- */
- @GET
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToServerInfo.class)
- @Path("/servers/{uuid}/info")
- ServerInfo getServerInfo(@PathParam("uuid") String uuid);
-
- /**
- * set server configuration
- *
- * @param uuid
- * what server to change
- * @param setServer
- * what values to change
- * @return new data
- */
- @POST
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToServerInfo.class)
- @Path("/servers/{uuid}/set")
- ServerInfo setServerConfiguration(@PathParam("uuid") String uuid,
- @BinderParam(BindServerToPlainTextString.class) Server setServer);
-
- /**
- * list of server uuids in your account
- *
- * @return or empty set if no servers are found
- */
- @GET
- @Path("/servers/list")
- @ResponseParser(SplitNewlines.class)
- Set<String> listServers();
-
- /**
- * Destroy a server
- *
- * @param uuid
- * what to destroy
- */
- @GET
- @Path("/servers/{uuid}/destroy")
- @Fallback(VoidOnNotFoundOr404.class)
- void destroyServer(@PathParam("uuid") String uuid);
-
- /**
- * Start a server
- *
- * @param uuid
- * what to start
- */
- @POST
- @Path("/servers/{uuid}/start")
- void startServer(@PathParam("uuid") String uuid);
-
- /**
- * Stop a server
- * <p/>
- * Kills the server immediately, equivalent to a power failure. Server reverts to a stopped
- * status if it is persistent and is automatically destroyed otherwise.
- *
- * @param uuid
- * what to stop
- */
- @POST
- @Path("/servers/{uuid}/stop")
- void stopServer(@PathParam("uuid") String uuid);
-
- /**
- * Shutdown a server
- * <p/>
- * Sends the server an ACPI power-down event. Server reverts to a stopped status if it is
- * persistent and is automatically destroyed otherwise.
- * <h4>note</h4> behaviour on shutdown depends on how your server OS is set up to respond to an
- * ACPI power button signal.
- *
- * @param uuid
- * what to shutdown
- */
- @POST
- @Path("/servers/{uuid}/shutdown")
- void shutdownServer(@PathParam("uuid") String uuid);
-
- /**
- * Reset a server
- *
- * @param uuid
- * what to reset
- */
- @POST
- @Path("/servers/{uuid}/reset")
- void resetServer(@PathParam("uuid") String uuid);
-
- /**
- * list of drive uuids in your account
- *
- * @return or empty set if no drives are found
- */
- @GET
- @Path("/drives/list")
- @ResponseParser(SplitNewlines.class)
- Set<String> listDrives();
-
- /**
- * Destroy a drive
- *
- * @param uuid
- * what to delete
- */
- @GET
- @Path("/drives/{uuid}/destroy")
- @Fallback(VoidOnNotFoundOr404.class)
- void destroyDrive(@PathParam("uuid") String uuid);
-
- /**
- * create a new vlan
- *
- * @param name
- * @return newly created vlan
- */
- @POST
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToVLANInfo.class)
- @Path("/resources/vlan/create")
- @Payload("name {name}\n")
- @Produces(MediaType.TEXT_PLAIN)
- VLANInfo createVLAN(@PayloadParam("name") String name);
-
- /**
- * Get all vlans info
- *
- * @return or empty set if no vlans are found
- */
- @GET
- @Path("/resources/vlan/info")
- @ResponseParser(ListOfKeyValuesDelimitedByBlankLinesToVLANInfoSet.class)
- Set<VLANInfo> listVLANInfo();
-
- /**
- * @param uuid
- * what to get
- * @return null, if not found
- */
- @GET
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToVLANInfo.class)
- @Path("/resources/vlan/{uuid}/info")
- VLANInfo getVLANInfo(@PathParam("uuid") String uuid);
-
- /**
- * set vlan configuration
- *
- * @param uuid
- * what vlan to change
- * @param name
- * what the new name is
- * @return new data
- */
- @POST
- @ResponseParser(KeyValuesDelimitedByBlankLinesToVLANInfo.class)
- @Path("/resources/vlan/{uuid}/set")
- @Payload("name {name}\n")
- @Produces(MediaType.TEXT_PLAIN)
- VLANInfo renameVLAN(@PathParam("uuid") String uuid, @PayloadParam("name") String name);
-
- /**
- * list of vlan uuids in your account
- *
- * @return or empty set if no vlans are found
- */
- @GET
- @Path("/resources/vlan/list")
- @ResponseParser(SplitNewlinesAndReturnSecondField.class)
- Set<String> listVLANs();
-
- /**
- * Destroy a vlan
- *
- * @param uuid
- * what to destroy
- */
- @GET
- @Path("/resources/vlan/{uuid}/destroy")
- @Fallback(VoidOnNotFoundOr404.class)
- void destroyVLAN(@PathParam("uuid") String uuid);
-
- /**
- * create a new ip
- *
- * @return newly created ip
- */
- @POST
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToStaticIPInfo.class)
- @Path("/resources/ip/create")
- StaticIPInfo createStaticIP();
-
- /**
- * Get all ips info
- *
- * @return or empty set if no ips are found
- */
- @GET
- @Path("/resources/ip/info")
- @ResponseParser(ListOfKeyValuesDelimitedByBlankLinesToStaticIPInfoSet.class)
- Set<StaticIPInfo> listStaticIPInfo();
-
- /**
- * @param uuid
- * what to get
- * @return null, if not found
- */
- @GET
- @Fallback(NullOnNotFoundOr404.class)
- @ResponseParser(KeyValuesDelimitedByBlankLinesToStaticIPInfo.class)
- @Path("/resources/ip/{uuid}/info")
- StaticIPInfo getStaticIPInfo(@PathParam("uuid") String uuid);
-
- /**
- * list of ip uuids in your account
- *
- * @return or empty set if no ips are found
- */
- @GET
- @Path("/resources/ip/list")
- @ResponseParser(SplitNewlinesAndReturnSecondField.class)
- Set<String> listStaticIPs();
-
- /**
- * Destroy a ip
- *
- * @param uuid
- * what to destroy
- */
- @GET
- @Path("/resources/ip/{uuid}/destroy")
- @Fallback(VoidOnNotFoundOr404.class)
- void destroyStaticIP(@PathParam("uuid") String uuid);
-
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/CloudSigmaApiMetadata.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/CloudSigmaApiMetadata.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/CloudSigmaApiMetadata.java
deleted file mode 100644
index 6a0192e..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/CloudSigmaApiMetadata.java
+++ /dev/null
@@ -1,88 +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.cloudsigma;
-import static org.jclouds.cloudsigma.reference.CloudSigmaConstants.PROPERTY_VNC_PASSWORD;
-import static org.jclouds.compute.config.ComputeServiceProperties.TEMPLATE;
-import static org.jclouds.reflect.Reflection2.typeToken;
-
-import java.net.URI;
-import java.util.Properties;
-
-import org.jclouds.cloudsigma.compute.config.CloudSigmaComputeServiceContextModule;
-import org.jclouds.cloudsigma.config.CloudSigmaRestClientModule;
-import org.jclouds.compute.ComputeServiceContext;
-import org.jclouds.rest.internal.BaseHttpApiMetadata;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Module;
-
-/**
- * Implementation of {@link ApiMetadata} for the Cloud Sigma API
- */
-public class CloudSigmaApiMetadata extends BaseHttpApiMetadata<CloudSigmaApi> {
-
-
- @Override
- public Builder toBuilder() {
- return new Builder().fromApiMetadata(this);
- }
-
- public CloudSigmaApiMetadata() {
- this(new Builder());
- }
-
- protected CloudSigmaApiMetadata(Builder builder) {
- super(builder);
- }
-
- public static Properties defaultProperties() {
- Properties properties = BaseHttpApiMetadata.defaultProperties();
- properties.setProperty(PROPERTY_VNC_PASSWORD, "IL9vs34d");
- // passwords are set post-boot, so auth failures are possible
- // from a race condition applying the password set script
- properties.setProperty("jclouds.ssh.max-retries", "7");
- properties.setProperty("jclouds.ssh.retry-auth", "true");
- properties.setProperty(TEMPLATE, "osFamily=UBUNTU,imageNameMatches=.*[Aa]utomated SSH Access.*,os64Bit=true");
- return properties;
- }
-
- public static class Builder extends BaseHttpApiMetadata.Builder<CloudSigmaApi, Builder> {
-
- protected Builder() {
- id("cloudsigma")
- .name("CloudSigma API")
- .identityName("Email")
- .credentialName("Password")
- .documentation(URI.create("http://cloudsigma.com/en/platform-details/the-api"))
- .version("1.0")
- .defaultEndpoint("https://api.cloudsigma.com")
- .defaultProperties(CloudSigmaApiMetadata.defaultProperties())
- .view(typeToken(ComputeServiceContext.class))
- .defaultModules(ImmutableSet.<Class<? extends Module>>of(CloudSigmaRestClientModule.class, CloudSigmaComputeServiceContextModule.class));
- }
-
- @Override
- public CloudSigmaApiMetadata build() {
- return new CloudSigmaApiMetadata(this);
- }
-
- @Override
- protected Builder self() {
- return this;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindCloneDriveOptionsToPlainTextString.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindCloneDriveOptionsToPlainTextString.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindCloneDriveOptionsToPlainTextString.java
deleted file mode 100644
index 9736efa..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindCloneDriveOptionsToPlainTextString.java
+++ /dev/null
@@ -1,87 +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.cloudsigma.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.cloudsigma.functions.ListOfMapsToListOfKeyValuesDelimitedByBlankLines;
-import org.jclouds.cloudsigma.options.CloneDriveOptions;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.internal.GeneratedHttpRequest;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Maps;
-
-@Singleton
-public class BindCloneDriveOptionsToPlainTextString implements MapBinder {
- private final ListOfMapsToListOfKeyValuesDelimitedByBlankLines listOfMapsToListOfKeyValuesDelimitedByBlankLines;
-
- @Inject
- public BindCloneDriveOptionsToPlainTextString(
- ListOfMapsToListOfKeyValuesDelimitedByBlankLines listOfMapsToListOfKeyValuesDelimitedByBlankLines) {
- this.listOfMapsToListOfKeyValuesDelimitedByBlankLines = listOfMapsToListOfKeyValuesDelimitedByBlankLines;
- }
-
- @Override
- public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
- checkArgument(checkNotNull(request, "request") instanceof GeneratedHttpRequest,
- "this binder is only valid for GeneratedHttpRequests!");
- GeneratedHttpRequest gRequest = GeneratedHttpRequest.class.cast(request);
-
- CloneDriveOptions options = findOptionsInArgsOrNull(gRequest);
- if (options != null) {
- postParams = ImmutableMap.<String, Object> builder().putAll(postParams).putAll(options.getOptions()).build();
- }
-
- request.setPayload(listOfMapsToListOfKeyValuesDelimitedByBlankLines.apply(ImmutableSet.of(Maps.transformValues(postParams, new Function<Object, String>() {
- @Override
- public String apply(Object input) {
- return input == null ? null : input.toString();
- }
- }))));
- request.getPayload().getContentMetadata().setContentType(MediaType.TEXT_PLAIN);
- return request;
- }
-
- static CloneDriveOptions findOptionsInArgsOrNull(GeneratedHttpRequest gRequest) {
- for (Object arg : gRequest.getInvocation().getArgs()) {
- if (arg instanceof CloneDriveOptions) {
- return (CloneDriveOptions) arg;
- } else if (arg instanceof CloneDriveOptions[]) {
- CloneDriveOptions[] options = (CloneDriveOptions[]) arg;
- return (options.length > 0) ? options[0] : null;
- }
- }
- return null;
- }
-
- @Override
- public <R extends HttpRequest> R bindToRequest(R request, Object input) {
- throw new UnsupportedOperationException();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindDriveDataToPlainTextString.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindDriveDataToPlainTextString.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindDriveDataToPlainTextString.java
deleted file mode 100644
index a3c8922..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindDriveDataToPlainTextString.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudsigma.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.cloudsigma.domain.DriveData;
-import org.jclouds.cloudsigma.functions.ListOfMapsToListOfKeyValuesDelimitedByBlankLines;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.Binder;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableSet;
-
-@Singleton
-public class BindDriveDataToPlainTextString implements Binder {
- private final Function<DriveData, Map<String, String>> createDriveRequestToMap;
- private final ListOfMapsToListOfKeyValuesDelimitedByBlankLines listOfMapsToListOfKeyValuesDelimitedByBlankLines;
-
- @Inject
- public BindDriveDataToPlainTextString(Function<DriveData, Map<String, String>> createDriveRequestToMap,
- ListOfMapsToListOfKeyValuesDelimitedByBlankLines listOfMapsToListOfKeyValuesDelimitedByBlankLines) {
- this.createDriveRequestToMap = createDriveRequestToMap;
- this.listOfMapsToListOfKeyValuesDelimitedByBlankLines = listOfMapsToListOfKeyValuesDelimitedByBlankLines;
- }
- @Override
- public <R extends HttpRequest> R bindToRequest(R request, Object payload) {
- checkArgument(payload instanceof DriveData, "this binder is only valid for DriveData!");
- DriveData create = DriveData.class.cast(payload);
- Map<String, String> map = createDriveRequestToMap.apply(create);
- request.setPayload(listOfMapsToListOfKeyValuesDelimitedByBlankLines.apply(ImmutableSet.of(map)));
- request.getPayload().getContentMetadata().setContentType(MediaType.TEXT_PLAIN);
- return request;
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindDriveToPlainTextString.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindDriveToPlainTextString.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindDriveToPlainTextString.java
deleted file mode 100644
index 21b203f..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindDriveToPlainTextString.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudsigma.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.cloudsigma.domain.Drive;
-import org.jclouds.cloudsigma.functions.ListOfMapsToListOfKeyValuesDelimitedByBlankLines;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.Binder;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableSet;
-
-@Singleton
-public class BindDriveToPlainTextString implements Binder {
- private final Function<Drive, Map<String, String>> createDriveRequestToMap;
- private final ListOfMapsToListOfKeyValuesDelimitedByBlankLines listOfMapsToListOfKeyValuesDelimitedByBlankLines;
-
- @Inject
- public BindDriveToPlainTextString(Function<Drive, Map<String, String>> createDriveRequestToMap,
- ListOfMapsToListOfKeyValuesDelimitedByBlankLines listOfMapsToListOfKeyValuesDelimitedByBlankLines) {
- this.createDriveRequestToMap = createDriveRequestToMap;
- this.listOfMapsToListOfKeyValuesDelimitedByBlankLines = listOfMapsToListOfKeyValuesDelimitedByBlankLines;
- }
- @Override
- public <R extends HttpRequest> R bindToRequest(R request, Object payload) {
- checkArgument(payload instanceof Drive, "this binder is only valid for Drive!");
- Drive create = Drive.class.cast(payload);
- Map<String, String> map = createDriveRequestToMap.apply(create);
- request.setPayload(listOfMapsToListOfKeyValuesDelimitedByBlankLines.apply(ImmutableSet.of(map)));
- request.getPayload().getContentMetadata().setContentType(MediaType.TEXT_PLAIN);
- return request;
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindServerToPlainTextString.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindServerToPlainTextString.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindServerToPlainTextString.java
deleted file mode 100644
index 351de4e..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/binders/BindServerToPlainTextString.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudsigma.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-import java.util.Map;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.cloudsigma.domain.Server;
-import org.jclouds.cloudsigma.functions.ListOfMapsToListOfKeyValuesDelimitedByBlankLines;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.Binder;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableSet;
-
-@Singleton
-public class BindServerToPlainTextString implements Binder {
- private final Function<Server, Map<String, String>> createServerRequestToMap;
- private final ListOfMapsToListOfKeyValuesDelimitedByBlankLines listOfMapsToListOfKeyValuesDelimitedByBlankLines;
-
- @Inject
- public BindServerToPlainTextString(Function<Server, Map<String, String>> createServerRequestToMap,
- ListOfMapsToListOfKeyValuesDelimitedByBlankLines listOfMapsToListOfKeyValuesDelimitedByBlankLines) {
- this.createServerRequestToMap = createServerRequestToMap;
- this.listOfMapsToListOfKeyValuesDelimitedByBlankLines = listOfMapsToListOfKeyValuesDelimitedByBlankLines;
- }
- @Override
- public <R extends HttpRequest> R bindToRequest(R request, Object payload) {
- checkArgument(payload instanceof Server, "this binder is only valid for Server!");
- Server create = Server.class.cast(payload);
- Map<String, String> map = createServerRequestToMap.apply(create);
- request.setPayload(listOfMapsToListOfKeyValuesDelimitedByBlankLines.apply(ImmutableSet.of(map)));
- request.getPayload().getContentMetadata().setContentType(MediaType.TEXT_PLAIN);
- return request;
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/CloudSigmaComputeServiceAdapter.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/CloudSigmaComputeServiceAdapter.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/CloudSigmaComputeServiceAdapter.java
deleted file mode 100644
index c3159da..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/CloudSigmaComputeServiceAdapter.java
+++ /dev/null
@@ -1,251 +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.cloudsigma.compute;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.contains;
-import static com.google.common.collect.Iterables.filter;
-import static org.jclouds.concurrent.FutureIterables.transformParallel;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.Constants;
-import org.jclouds.cloudsigma.CloudSigmaApi;
-import org.jclouds.cloudsigma.compute.options.CloudSigmaTemplateOptions;
-import org.jclouds.cloudsigma.domain.AffinityType;
-import org.jclouds.cloudsigma.domain.Device;
-import org.jclouds.cloudsigma.domain.DriveInfo;
-import org.jclouds.cloudsigma.domain.DriveType;
-import org.jclouds.cloudsigma.domain.Server;
-import org.jclouds.cloudsigma.domain.ServerInfo;
-import org.jclouds.cloudsigma.options.CloneDriveOptions;
-import org.jclouds.cloudsigma.reference.CloudSigmaConstants;
-import org.jclouds.cloudsigma.util.Servers;
-import org.jclouds.compute.ComputeServiceAdapter;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.HardwareBuilder;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.Processor;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.compute.domain.Volume;
-import org.jclouds.compute.domain.internal.VolumeImpl;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.domain.Location;
-import org.jclouds.domain.LoginCredentials;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSet.Builder;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.UncheckedExecutionException;
-
-/**
- * defines the connection between the {@link org.jclouds.cloudsigma.CloudSigmaApi} implementation
- * and the jclouds {@link ComputeService}
- */
-@Singleton
-public class CloudSigmaComputeServiceAdapter implements
- ComputeServiceAdapter<ServerInfo, Hardware, DriveInfo, Location> {
- private static final Predicate<DriveInfo> PREINSTALLED_DISK = Predicates.and(Predicates.notNull(),
- new Predicate<DriveInfo>() {
-
- @Override
- public boolean apply(DriveInfo drive) {
- return drive.getType().equals(DriveType.DISK) && drive.getDriveType().contains("preinstalled");
- }
-
- });
- private final CloudSigmaApi client;
- private final Predicate<DriveInfo> driveNotClaimed;
- private final String defaultVncPassword;
- private final LoadingCache<String, DriveInfo> cache;
- private final ListeningExecutorService userExecutor;
-
- @Resource
- @Named(ComputeServiceConstants.COMPUTE_LOGGER)
- protected Logger logger = Logger.NULL;
-
- @Inject
- public CloudSigmaComputeServiceAdapter(CloudSigmaApi client, Predicate<DriveInfo> driveNotClaimed,
- @Named(CloudSigmaConstants.PROPERTY_VNC_PASSWORD) String defaultVncPassword,
- LoadingCache<String, DriveInfo> cache, @Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor) {
- this.client = checkNotNull(client, "client");
- this.driveNotClaimed = checkNotNull(driveNotClaimed, "driveNotClaimed");
- this.defaultVncPassword = checkNotNull(defaultVncPassword, "defaultVncPassword");
- checkArgument(defaultVncPassword.length() <= 8, "vnc passwords should be less that 8 characters!");
- this.cache = checkNotNull(cache, "cache");
- this.userExecutor = checkNotNull(userExecutor, "userExecutor");
- }
-
- @Override
- public NodeAndInitialCredentials<ServerInfo> createNodeWithGroupEncodedIntoName(String tag, String name, Template template) {
- long bootSize = (long) (template.getHardware().getVolumes().get(0).getSize() * 1024 * 1024 * 1024l);
- AffinityType affinityType = AffinityType.HDD;
- if (template.getOptions() instanceof CloudSigmaTemplateOptions) {
- CloudSigmaTemplateOptions options = CloudSigmaTemplateOptions.class.cast(template.getOptions());
- affinityType = options.getDiskDriveAffinity();
- }
- logger.debug(">> imaging boot drive source(%s) bytes(%d) affinityType(%s)",
- template.getImage().getId(), bootSize, affinityType);
- DriveInfo drive = client.cloneDrive(template.getImage().getId(), template.getImage().getId(),
- new CloneDriveOptions().size(bootSize).affinity(affinityType));
- boolean success = driveNotClaimed.apply(drive);
- logger.debug("<< image(%s) complete(%s)", drive.getUuid(), success);
- if (!success) {
- client.destroyDrive(drive.getUuid());
- throw new IllegalStateException("could not image drive in time!");
- }
-
- Server toCreate = Servers.small(name, drive.getUuid(), defaultVncPassword).mem(template.getHardware().getRam())
- .cpu((int) (template.getHardware().getProcessors().get(0).getSpeed())).build();
-
- logger.debug(">> creating server");
- ServerInfo from = client.createServer(toCreate);
- logger.debug("<< created server(%s)", from.getUuid());
- logger.debug(">> starting server(%s)", from.getUuid());
- client.startServer(from.getUuid());
- return new NodeAndInitialCredentials<ServerInfo>(from, from.getUuid(), LoginCredentials.builder()
- .password(defaultVncPassword).authenticateSudo(true).build());
- }
-
- @Override
- public Iterable<Hardware> listHardwareProfiles() {
- Builder<Hardware> hardware = ImmutableSet.builder();
- for (double cpu : new double[] { 1000, 5000, 10000, 20000 })
- for (int ram : new int[] { 512, 1024, 4 * 1024, 16 * 1024, 32 * 1024 }) {
- final float size = (float) cpu / 100;
- String id = String.format("cpu=%f,ram=%s,disk=%f", cpu, ram, size);
- hardware.add(new HardwareBuilder().supportsImage(new Predicate<Image>() {
-
- @Override
- public boolean apply(Image input) {
- String toParse = input.getUserMetadata().get("size");
- return toParse != null && new Float(toParse) <= size;
- }
-
- @Override
- public String toString() {
- return "sizeLessThanOrEqual(" + size + ")";
- }
-
- }).ids(id).ram(ram).processors(ImmutableList.of(new Processor(1, cpu))).hypervisor("kvm")
- .volumes(ImmutableList.<Volume>of(new VolumeImpl(size, true, true))).build());
- }
- return hardware.build();
- }
-
- /**
- * look up the current standard images and do not error out, if they are not
- * found.
- */
- @Override
- public Iterable<DriveInfo> listImages() {
- return FluentIterable.from(transformParallel(client.listStandardDrives(),
- new Function<String, ListenableFuture<? extends DriveInfo>>() {
-
- @Override
- public ListenableFuture<DriveInfo> apply(String input) {
- try {
- return Futures.immediateFuture(cache.getUnchecked(input));
- } catch (CacheLoader.InvalidCacheLoadException e) {
- logger.debug("drive %s not found", input);
- } catch (UncheckedExecutionException e) {
- logger.warn(e, "error finding drive %s: %s", input, e.getMessage());
- }
- return Futures.immediateFuture(null);
- }
-
- @Override
- public String toString() {
- return "seedDriveCache()";
- }
- }, userExecutor, null, logger, "drives")).filter(PREINSTALLED_DISK);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Iterable<ServerInfo> listNodes() {
- return (Iterable<ServerInfo>) client.listServerInfo();
- }
-
- @Override
- public Iterable<ServerInfo> listNodesByIds(final Iterable<String> ids) {
- return filter(listNodes(), new Predicate<ServerInfo>() {
-
- @Override
- public boolean apply(ServerInfo server) {
- return contains(ids, server.getUuid());
- }
- });
- }
-
- @Override
- public Iterable<Location> listLocations() {
- // Not using the adapter to determine locations
- return ImmutableSet.<Location>of();
- }
-
- @Override
- public ServerInfo getNode(String id) {
- return client.getServerInfo(id);
- }
-
- @Override
- public DriveInfo getImage(String id) {
- return client.getDriveInfo(id);
- }
-
- @Override
- public void destroyNode(String id) {
- ServerInfo server = getNode(id);
- if (server != null) {
- client.stopServer(id);
- client.destroyServer(id);
- for (Device dev : server.getDevices().values())
- client.destroyDrive(dev.getDriveUuid());
- }
- }
-
- @Override
- public void rebootNode(String id) {
- client.resetServer(id);
- }
-
- @Override
- public void resumeNode(String id) {
- client.startServer(id);
-
- }
-
- @Override
- public void suspendNode(String id) {
- client.stopServer(id);
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/CloudSigmaTemplateBuilderImpl.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/CloudSigmaTemplateBuilderImpl.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/CloudSigmaTemplateBuilderImpl.java
deleted file mode 100644
index c609806..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/CloudSigmaTemplateBuilderImpl.java
+++ /dev/null
@@ -1,44 +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.cloudsigma.compute;
-
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Provider;
-
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.TemplateBuilder;
-import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
-import org.jclouds.compute.options.TemplateOptions;
-import org.jclouds.compute.strategy.GetImageStrategy;
-import org.jclouds.compute.suppliers.ImageCacheSupplier;
-import org.jclouds.domain.Location;
-
-import com.google.common.base.Supplier;
-
-public class CloudSigmaTemplateBuilderImpl extends TemplateBuilderImpl {
- @Inject
- public CloudSigmaTemplateBuilderImpl(@Memoized Supplier<Set<? extends Location>> locations,
- ImageCacheSupplier images, @Memoized Supplier<Set<? extends Hardware>> hardwares,
- Supplier<Location> defaultLocation2, @Named("DEFAULT") Provider<TemplateOptions> optionsProvider,
- @Named("DEFAULT") Provider<TemplateBuilder> defaultTemplateProvider, GetImageStrategy getImageStrategy) {
- super(locations, images, hardwares, defaultLocation2, optionsProvider, defaultTemplateProvider, getImageStrategy);
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/config/CloudSigmaComputeServiceContextModule.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/config/CloudSigmaComputeServiceContextModule.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/config/CloudSigmaComputeServiceContextModule.java
deleted file mode 100644
index 9daff85..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/config/CloudSigmaComputeServiceContextModule.java
+++ /dev/null
@@ -1,120 +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.cloudsigma.compute.config;
-
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static org.jclouds.util.Predicates2.retry;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudsigma.CloudSigmaApi;
-import org.jclouds.cloudsigma.compute.CloudSigmaComputeServiceAdapter;
-import org.jclouds.cloudsigma.compute.CloudSigmaTemplateBuilderImpl;
-import org.jclouds.cloudsigma.compute.functions.ParseOsFamilyVersion64BitFromImageName;
-import org.jclouds.cloudsigma.compute.functions.PreinstalledDiskToImage;
-import org.jclouds.cloudsigma.compute.functions.ServerInfoToNodeMetadata;
-import org.jclouds.cloudsigma.compute.functions.ServerInfoToNodeMetadata.DeviceToVolume;
-import org.jclouds.cloudsigma.compute.functions.ServerInfoToNodeMetadata.GetImageIdFromServer;
-import org.jclouds.cloudsigma.compute.options.CloudSigmaTemplateOptions;
-import org.jclouds.cloudsigma.domain.Device;
-import org.jclouds.cloudsigma.domain.DriveInfo;
-import org.jclouds.cloudsigma.domain.Server;
-import org.jclouds.cloudsigma.domain.ServerInfo;
-import org.jclouds.cloudsigma.predicates.DriveClaimed;
-import org.jclouds.compute.ComputeServiceAdapter;
-import org.jclouds.compute.config.ComputeServiceAdapterContextModule;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.OsFamilyVersion64Bit;
-import org.jclouds.compute.domain.TemplateBuilder;
-import org.jclouds.compute.domain.Volume;
-import org.jclouds.compute.options.TemplateOptions;
-import org.jclouds.compute.reference.ComputeServiceConstants.Timeouts;
-import org.jclouds.domain.Location;
-import org.jclouds.functions.IdentityFunction;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.inject.Provides;
-import com.google.inject.TypeLiteral;
-
-public class CloudSigmaComputeServiceContextModule extends
- ComputeServiceAdapterContextModule<ServerInfo, Hardware, DriveInfo, Location> {
-
- @SuppressWarnings({ "unchecked", "rawtypes" })
- @Override
- protected void configure() {
- super.configure();
- bind(new TypeLiteral<ComputeServiceAdapter<ServerInfo, Hardware, DriveInfo, Location>>() {
- }).to(CloudSigmaComputeServiceAdapter.class);
- bind(new TypeLiteral<Function<ServerInfo, NodeMetadata>>() {
- }).to(ServerInfoToNodeMetadata.class);
- bind(new TypeLiteral<Function<Hardware, Hardware>>() {
- }).to(Class.class.cast(IdentityFunction.class));
- bind(new TypeLiteral<Function<DriveInfo, Image>>() {
- }).to(PreinstalledDiskToImage.class);
- bind(new TypeLiteral<Function<Location, Location>>() {
- }).to(Class.class.cast(IdentityFunction.class));
- bind(new TypeLiteral<Function<Device, Volume>>() {
- }).to(DeviceToVolume.class);
- bind(new TypeLiteral<Function<Server, String>>() {
- }).to(GetImageIdFromServer.class);
- bind(new TypeLiteral<Function<String, OsFamilyVersion64Bit>>() {
- }).to(ParseOsFamilyVersion64BitFromImageName.class);
- bind(TemplateBuilder.class)
- .to(CloudSigmaTemplateBuilderImpl.class);
- }
-
- @Provides
- @Singleton
- protected LoadingCache<String, DriveInfo> cache(GetDrive getDrive) {
- return CacheBuilder.newBuilder().build(getDrive);
- }
-
- @Singleton
- public static class GetDrive extends CacheLoader<String, DriveInfo> {
- private final CloudSigmaApi client;
-
- @Inject
- public GetDrive(CloudSigmaApi client) {
- this.client = client;
- }
-
- @Override
- public DriveInfo load(String input) {
- return client.getDriveInfo(input);
- }
- }
-
- @Provides
- @Singleton
- protected Predicate<DriveInfo> supplyDriveUnclaimed(DriveClaimed driveClaimed, Timeouts timeouts) {
- return retry(Predicates.not(driveClaimed), timeouts.nodeRunning, 1000, MILLISECONDS);
- }
-
- @Provides
- @Singleton
- protected TemplateOptions templateOptions() {
- return new CloudSigmaTemplateOptions();
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/ParseOsFamilyVersion64BitFromImageName.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/ParseOsFamilyVersion64BitFromImageName.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/ParseOsFamilyVersion64BitFromImageName.java
deleted file mode 100644
index bbea27d..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/ParseOsFamilyVersion64BitFromImageName.java
+++ /dev/null
@@ -1,82 +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.cloudsigma.compute.functions;
-
-import static com.google.common.base.Predicates.and;
-import static com.google.common.base.Predicates.containsPattern;
-import static com.google.common.base.Predicates.not;
-import static com.google.common.base.Predicates.or;
-
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.compute.domain.OsFamily;
-import org.jclouds.compute.domain.OsFamilyVersion64Bit;
-import org.jclouds.compute.util.ComputeServiceUtils;
-
-import com.google.common.base.Function;
-
-/**
- * Defaults to version null and 64bit, if the operating system is unrecognized and the pattern
- * "32bit" isn't in the string.
- */
-@Singleton
-public class ParseOsFamilyVersion64BitFromImageName implements Function<String, OsFamilyVersion64Bit> {
- private final Map<OsFamily, Map<String, String>> osVersionMap;
-
- @Inject
- public ParseOsFamilyVersion64BitFromImageName(Map<OsFamily, Map<String, String>> osVersionMap) {
- this.osVersionMap = osVersionMap;
- }
-
- // ex CentOS 5.5 Linux 64bit Preinstalled System with AppFirst Monitoring
- // ex. Centos-5.6-20110917 pub
- public static final Pattern PATTERN = Pattern.compile("([^ -]+)[^0-9]([0-9.]+)[ -].*");
-
- @Override
- public OsFamilyVersion64Bit apply(String input) {
- boolean is64Bit = and(not(containsPattern("32bit")),
- or(containsPattern("64bit"), not(containsPattern("Windows")))).apply(input);
- if (input.contains("Windows")) {
- String version = null;
- Matcher matcher = Pattern.compile(".*(20[01][0-9] R[1-9]).*").matcher(input);
- if (matcher.find()) {
- version = matcher.group(1);
- } else {
- matcher = Pattern.compile(".*(20[01][0-9]).*").matcher(input);
- if (matcher.find())
- version = matcher.group(1);
- }
- return new OsFamilyVersion64Bit(OsFamily.WINDOWS, osVersionMap.get(OsFamily.WINDOWS).get(version), is64Bit);
- } else {
- Matcher matcher = PATTERN.matcher(input);
- if (matcher.find()) {
- OsFamily fam = OsFamily.fromValue(matcher.group(1).toLowerCase());
- if (fam == OsFamily.UNRECOGNIZED)
- return new OsFamilyVersion64Bit(OsFamily.UNRECOGNIZED, null, is64Bit);
- return new OsFamilyVersion64Bit(fam, ComputeServiceUtils.parseVersionOrReturnEmptyString(fam, matcher
- .group(2), osVersionMap), is64Bit);
- } else {
- return new OsFamilyVersion64Bit(OsFamily.UNRECOGNIZED, null, is64Bit);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/PreinstalledDiskToImage.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/PreinstalledDiskToImage.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/PreinstalledDiskToImage.java
deleted file mode 100644
index c415556..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/PreinstalledDiskToImage.java
+++ /dev/null
@@ -1,62 +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.cloudsigma.compute.functions;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudsigma.domain.DriveInfo;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.Image.Status;
-import org.jclouds.compute.domain.ImageBuilder;
-import org.jclouds.compute.domain.OperatingSystem;
-import org.jclouds.compute.domain.OperatingSystem.Builder;
-import org.jclouds.compute.domain.OsFamilyVersion64Bit;
-import org.jclouds.domain.Location;
-
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableMap;
-
-@Singleton
-public class PreinstalledDiskToImage implements Function<DriveInfo, Image> {
- private final Supplier<Location> locationSupplier;
- private final Function<String, OsFamilyVersion64Bit> imageParser;
-
- @Inject
- public PreinstalledDiskToImage(Supplier<Location> locationSupplier,
- Function<String, OsFamilyVersion64Bit> imageParser) {
- this.locationSupplier = locationSupplier;
- this.imageParser = imageParser;
- }
-
- @Override
- public Image apply(DriveInfo drive) {
- if (drive.getName() == null)
- return null;
- String description = drive.getDescription() != null ? drive.getDescription() : drive.getName();
- Builder builder = OperatingSystem.builder();
- OsFamilyVersion64Bit parsed = imageParser.apply(drive.getName());
- builder.name(drive.getName()).description(description)
- .is64Bit(drive.getBits() != null ? drive.getBits() == 64 : parsed.is64Bit).version(parsed.version)
- .family(parsed.family);
- return new ImageBuilder().ids(drive.getUuid())
- .userMetadata(ImmutableMap.<String, String> of("size", drive.getSize() / 1024 / 1024 / 1024 + ""))
- .location(locationSupplier.get()).name(drive.getName()).description(description)
- .operatingSystem(builder.build()).status(Status.AVAILABLE).version("").build();
- }
-}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f7aea987/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/ServerInfoToNodeMetadata.java
----------------------------------------------------------------------
diff --git a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/ServerInfoToNodeMetadata.java b/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/ServerInfoToNodeMetadata.java
deleted file mode 100644
index 38ef7f4..0000000
--- a/apis/cloudsigma/src/main/java/org/jclouds/cloudsigma/compute/functions/ServerInfoToNodeMetadata.java
+++ /dev/null
@@ -1,174 +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.cloudsigma.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.compute.predicates.ImagePredicates.idEquals;
-
-import java.util.Map;
-import java.util.Set;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudsigma.domain.Device;
-import org.jclouds.cloudsigma.domain.DriveInfo;
-import org.jclouds.cloudsigma.domain.Server;
-import org.jclouds.cloudsigma.domain.ServerInfo;
-import org.jclouds.cloudsigma.domain.ServerStatus;
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.domain.HardwareBuilder;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.NodeMetadata.Status;
-import org.jclouds.compute.domain.NodeMetadataBuilder;
-import org.jclouds.compute.domain.Processor;
-import org.jclouds.compute.domain.Volume;
-import org.jclouds.compute.domain.VolumeBuilder;
-import org.jclouds.compute.functions.GroupNamingConvention;
-import org.jclouds.domain.Location;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Supplier;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.util.concurrent.UncheckedExecutionException;
-
-@Singleton
-public class ServerInfoToNodeMetadata implements Function<ServerInfo, NodeMetadata> {
- public static final Map<ServerStatus, Status> serverStatusToNodeStatus = ImmutableMap
- .<ServerStatus, Status> builder().put(ServerStatus.ACTIVE, Status.RUNNING)//
- .put(ServerStatus.STOPPED, Status.SUSPENDED)//
- .put(ServerStatus.PAUSED, Status.SUSPENDED)//
- .put(ServerStatus.DUMPED, Status.PENDING)//
- .put(ServerStatus.DEAD, Status.TERMINATED)//
- .put(ServerStatus.UNRECOGNIZED, Status.UNRECOGNIZED)//
- .build();
-
- private final Function<Server, String> getImageIdFromServer;
- private final Supplier<Set<? extends Image>> images;
- private final Supplier<Location> locationSupplier;
- private final Function<Device, Volume> deviceToVolume;
- private final GroupNamingConvention nodeNamingConvention;
-
- @Inject
- ServerInfoToNodeMetadata(Function<Server, String> getImageIdFromServer, @Memoized Supplier<Set<? extends Image>> images,
- Function<Device, Volume> deviceToVolume, Supplier<Location> locationSupplier,
- GroupNamingConvention.Factory namingConvention) {
- this.nodeNamingConvention = checkNotNull(namingConvention, "namingConvention").createWithoutPrefix();
- this.locationSupplier = checkNotNull(locationSupplier, "locationSupplier");
- this.deviceToVolume = checkNotNull(deviceToVolume, "deviceToVolume");
- this.images = checkNotNull(images, "images");
- this.getImageIdFromServer = checkNotNull(getImageIdFromServer, "getImageIdFromServer");
- }
-
- @Override
- public NodeMetadata apply(ServerInfo from) {
- NodeMetadataBuilder builder = new NodeMetadataBuilder();
- builder.ids(from.getUuid());
- builder.name(from.getName());
- builder.location(locationSupplier.get());
- builder.group(nodeNamingConvention.groupInUniqueNameOrNull(from.getName()));
-
- String imageId = getImageIdFromServer.apply(from);
- if (imageId != null) {
- Optional<? extends Image> image = FluentIterable.from(images.get()).firstMatch(idEquals(imageId));
- if (image.isPresent()) {
- builder.operatingSystem(image.get().getOperatingSystem());
- }
- }
- builder.hardware(new HardwareBuilder().ids(from.getUuid()).hypervisor("kvm")
- .processors(ImmutableList.of(new Processor(1, from.getCpu()))).ram(from.getMem())
- .volumes(Iterables.transform(from.getDevices().values(), deviceToVolume)).build());
- builder.status(serverStatusToNodeStatus.get(from.getStatus()));
- builder.publicAddresses(ImmutableSet.<String> of(from.getVnc().getIp()));
- builder.privateAddresses(ImmutableSet.<String> of());
- return builder.build();
- }
-
- @Singleton
- public static final class DeviceToVolume implements Function<Device, Volume> {
- @Resource
- protected Logger logger = Logger.NULL;
-
- private final LoadingCache<String, DriveInfo> cache;
-
- @Inject
- public DeviceToVolume(LoadingCache<String, DriveInfo> cache) {
- this.cache = checkNotNull(cache, "cache");
- }
-
- @Override
- public Volume apply(Device input) {
- VolumeBuilder builder = new VolumeBuilder();
- builder.id(input.getId());
- try {
- DriveInfo drive = cache.getUnchecked(input.getDriveUuid());
- builder.size((float) drive.getSize());
- } catch (NullPointerException e) {
- logger.debug("drive %s not found", input.getDriveUuid());
- } catch (UncheckedExecutionException e) {
- logger.warn(e, "error finding drive %s: %s", input.getDriveUuid(), e.getMessage());
- }
- return builder.durable(true).type(Volume.Type.NAS).build();
- }
- }
-
- /**
- * When we create the boot drive of the server, by convention we set the name
- * to the image it came from.
- *
- *
- */
- @Singleton
- public static class GetImageIdFromServer implements Function<Server, String> {
- @Resource
- protected Logger logger = Logger.NULL;
-
- private final LoadingCache<String, DriveInfo> cache;
-
- @Inject
- public GetImageIdFromServer(LoadingCache<String, DriveInfo> cache) {
- this.cache = cache;
- }
-
- @Override
- public String apply(Server from) {
- String imageId = null;
- String bootDeviceId = Iterables.get(from.getBootDeviceIds(), 0);
- Device bootDevice = from.getDevices().get(bootDeviceId);
- if (bootDevice != null) {
- try {
- DriveInfo drive = cache.getUnchecked(bootDevice.getDriveUuid());
- imageId = drive.getName();
- } catch (NullPointerException e) {
- logger.debug("drive %s not found", bootDevice.getDriveUuid());
- } catch (UncheckedExecutionException e) {
- logger.warn(e, "error finding drive %s: %s", bootDevice.getDriveUuid(), e.getMessage());
- }
- }
- return imageId;
- }
- }
-}