Removing jclouds/docker fork since it is not used anymore and changes have already sent upstream
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/4e042bca Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/4e042bca Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/4e042bca Branch: refs/heads/master Commit: 4e042bcaccbe35eec743e8cb74e0486f4727c924 Parents: 8380cc3 Author: Imesh Gunaratne <[email protected]> Authored: Mon Nov 10 23:03:58 2014 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Mon Nov 10 23:03:58 2014 +0530 ---------------------------------------------------------------------- .../jclouds/apis/docker/1.8.0-stratos/README.md | 52 -- .../jclouds/apis/docker/1.8.0-stratos/pom.xml | 145 ------ .../main/java/org/jclouds/docker/DockerApi.java | 37 -- .../org/jclouds/docker/DockerApiMetadata.java | 98 ---- .../binders/BindInputStreamToRequest.java | 68 --- .../DockerComputeServiceContextModule.java | 59 --- .../functions/ContainerToNodeMetadata.java | 126 ----- .../docker/compute/functions/ImageToImage.java | 98 ---- .../docker/compute/functions/StateToStatus.java | 38 -- .../compute/options/DockerTemplateOptions.java | 485 ------------------- .../strategy/DockerComputeServiceAdapter.java | 232 --------- .../docker/config/DockerHttpApiModule.java | 40 -- .../docker/config/DockerParserModule.java | 62 --- .../jclouds/docker/config/DockerProperties.java | 26 - .../java/org/jclouds/docker/domain/Config.java | 457 ----------------- .../org/jclouds/docker/domain/Container.java | 389 --------------- .../org/jclouds/docker/domain/ExposedPorts.java | 106 ---- .../org/jclouds/docker/domain/HostConfig.java | 242 --------- .../java/org/jclouds/docker/domain/Image.java | 239 --------- .../jclouds/docker/domain/NetworkSettings.java | 175 ------- .../java/org/jclouds/docker/domain/Port.java | 88 ---- .../java/org/jclouds/docker/domain/State.java | 166 ------- .../java/org/jclouds/docker/domain/Version.java | 166 ------- .../org/jclouds/docker/features/RemoteApi.java | 272 ----------- .../docker/features/internal/Archives.java | 60 --- .../docker/handlers/DockerErrorHandler.java | 102 ---- .../jclouds/docker/options/BuildOptions.java | 71 --- .../jclouds/docker/options/CommitOptions.java | 109 ----- .../docker/options/CreateImageOptions.java | 95 ---- .../docker/options/DeleteImageOptions.java | 44 -- .../docker/options/ListContainerOptions.java | 97 ---- .../docker/options/ListImageOptions.java | 43 -- .../docker/options/RemoveContainerOptions.java | 55 --- .../services/org.jclouds.apis.ApiMetadata | 1 - .../jclouds/docker/DockerApiMetadataTest.java | 47 -- .../binders/BindInputStreamToRequestTest.java | 66 --- .../docker/compute/BaseDockerApiLiveTest.java | 91 ---- .../DockerComputeServiceAdapterLiveTest.java | 95 ---- .../compute/DockerComputeServiceLiveTest.java | 142 ------ .../functions/ContainerToNodeMetadataTest.java | 203 -------- .../compute/functions/ImageToImageTest.java | 73 --- .../compute/functions/StateToStatusTest.java | 81 ---- .../options/DockerTemplateOptionsTest.java | 62 --- .../docker/config/DockerParserModuleTest.java | 52 -- .../docker/features/RemoteApiLiveTest.java | 121 ----- .../docker/features/RemoteApiMockTest.java | 376 -------------- .../docker/features/internal/ArchivesTest.java | 112 ----- .../docker/internal/BaseDockerMockTest.java | 118 ----- .../1.8.0-stratos/src/test/resources/Dockerfile | 29 -- .../src/test/resources/container-creation.json | 1 - .../src/test/resources/container.json | 81 ---- .../src/test/resources/containers.json | 20 - .../src/test/resources/logback.xml | 34 -- dependencies/pom.xml | 1 - .../pom.xml | 5 - 55 files changed, 6353 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/README.md ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/README.md b/dependencies/jclouds/apis/docker/1.8.0-stratos/README.md deleted file mode 100644 index 3ce8cf0..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# Docker as a local cloud provider -jclouds-docker is a local cloud provider modelled on [docker](http://www.docker.io). Similar to other jclouds supported -providers, it supports the same portable abstractions offered by jclouds. - -##Setup - -Please follow these steps to configure your workstation for jclouds-docker: - -- install the latest Docker release (please visit http://www.docker.io/gettingstarted/) - -If you are on OS X, please consider [boot2docker](http://docs.docker.io/en/latest/installation/mac/) as simplified -way to install docker locally. - -#How it works - - - --------------- ------------- - | Image(s) | | Node(s) | - --------------- ------------- - --------- docker remote api ---------------------------------------- - | jclouds | ---------------------------> | DOCKER_HOST | - --------- ---------------------------------------- - -##Components - -- jclouds \- acts as a java client to access to docker features -- DOCKER_HOST \- hosts Docker API, NB: jclouds-docker assumes that the latest Docker is installed -- Image \- it is a docker image that can be started. -- Node \- is a docker container - -## Assumptions - -- jclouds-docker assumes that the images specified using the template are ssh'able. -- jclouds-docker will mount ${user.home} to /root of the container - --------------- - -#Notes: -- jclouds-docker is still at alpha stage please report any issues you find at [jclouds issues](https://github.com/jclouds/jclouds/issues?state=open) -- jclouds-docker has been tested on Mac OSX, it might work on Linux iff vbox is running and set up correctly. However, it will not currently run on Windows. - --------------- - -#Troubleshooting -As jclouds docker support is quite new, issues may occasionally arise. Please follow these steps to get things going again: - -1. Remove all containers - - `$ docker ps -a -q | xargs docker stop | xargs docker rm` -2. remove all the images - - `$ docker images -q | xargs docker rmi` http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/pom.xml ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/pom.xml b/dependencies/jclouds/apis/docker/1.8.0-stratos/pom.xml deleted file mode 100644 index d2a3cca..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/pom.xml +++ /dev/null @@ -1,145 +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.labs</groupId> - <artifactId>jclouds-labs</artifactId> - <version>1.8.0</version> - </parent> - - <!-- TODO: when out of labs, switch to org.jclouds.provider --> - <groupId>org.apache.stratos</groupId> - <artifactId>docker</artifactId> - <name>jclouds docker API</name> - <version>1.8.0-stratos</version> - <description>ComputeService binding to the Docker API</description> - <packaging>bundle</packaging> - - <properties> - <jclouds.version>1.8.0</jclouds.version> - <test.docker.endpoint>https://localhost:4243</test.docker.endpoint> - <test.docker.api-version>1.10</test.docker.api-version> - <test.docker.identity>FIXME</test.docker.identity> - <test.docker.credential>FIXME</test.docker.credential> - <jclouds.osgi.export>org.jclouds.docker*;version="${project.version}"</jclouds.osgi.export> - <jclouds.osgi.import> - org.jclouds.compute.internal;version="${jclouds.version}", - org.jclouds.rest.internal;version="${jclouds.version}", - org.jclouds*;version="${jclouds.version}", - * - </jclouds.osgi.import> - </properties> - - <dependencies> - <dependency> - <groupId>org.apache.jclouds</groupId> - <artifactId>jclouds-core</artifactId> - <version>${jclouds.version}</version> - </dependency> - <dependency> - <groupId>org.apache.jclouds</groupId> - <artifactId>jclouds-compute</artifactId> - <version>${jclouds.version}</version> - </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-compress</artifactId> - <version>1.5</version> - </dependency> - - <dependency> - <groupId>org.apache.jclouds.driver</groupId> - <artifactId>jclouds-sshj</artifactId> - <version>${jclouds.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.jclouds</groupId> - <artifactId>jclouds-core</artifactId> - <version>${jclouds.version}</version> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.jclouds</groupId> - <artifactId>jclouds-compute</artifactId> - <version>${jclouds.version}</version> - <type>test-jar</type> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.jclouds.driver</groupId> - <artifactId>jclouds-slf4j</artifactId> - <version>${jclouds.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>com.squareup.okhttp</groupId> - <artifactId>mockwebserver</artifactId> - <scope>test</scope> - <exclusions> - <!-- Already provided by jclouds-sshj --> - <exclusion> - <groupId>org.bouncycastle</groupId> - <artifactId>bcprov-jdk15on</artifactId> - </exclusion> - </exclusions> - </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.docker.endpoint>${test.docker.endpoint}</test.docker.endpoint> - <test.docker.api-version>${test.docker.api-version}</test.docker.api-version> - <test.docker.credential>${test.docker.identity}</test.docker.credential> - <test.docker.credential>${test.docker.credential}</test.docker.credential> - </systemPropertyVariables> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> - -</project> http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/DockerApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/DockerApi.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/DockerApi.java deleted file mode 100644 index 54bf5c9..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/DockerApi.java +++ /dev/null @@ -1,37 +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.docker; - -import org.jclouds.docker.features.RemoteApi; -import org.jclouds.rest.annotations.Delegate; - -import java.io.Closeable; - -/** - * Provides synchronous access to Docker Remote API. - * - * @see <a href="https://docs.docker.com/reference/api/docker_remote_api/"></a> - */ -public interface DockerApi extends Closeable { - - /** - * Provides synchronous access to Docker Remote API features. - */ - @Delegate - RemoteApi getRemoteApi(); - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/DockerApiMetadata.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/DockerApiMetadata.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/DockerApiMetadata.java deleted file mode 100644 index b281eb7..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/DockerApiMetadata.java +++ /dev/null @@ -1,98 +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.docker; - -import com.google.common.collect.ImmutableSet; -import com.google.inject.Module; -import org.jclouds.Constants; -import org.jclouds.apis.ApiMetadata; -import org.jclouds.compute.ComputeServiceContext; -import org.jclouds.compute.config.ComputeServiceProperties; -import org.jclouds.docker.compute.config.DockerComputeServiceContextModule; -import org.jclouds.docker.config.DockerHttpApiModule; -import org.jclouds.docker.config.DockerParserModule; -import org.jclouds.rest.internal.BaseHttpApiMetadata; - -import java.net.URI; -import java.util.Properties; - -import static org.jclouds.compute.config.ComputeServiceProperties.TEMPLATE; -import static org.jclouds.reflect.Reflection2.typeToken; - -/** - * Implementation of {@link BaseHttpApiMetadata} for the Docker API - */ -public class DockerApiMetadata extends BaseHttpApiMetadata<DockerApi> { - - @Override - public Builder toBuilder() { - return new Builder().fromApiMetadata(this); - } - - public DockerApiMetadata() { - this(new Builder()); - } - - protected DockerApiMetadata(Builder builder) { - super(builder); - } - - public static Properties defaultProperties() { - Properties properties = BaseHttpApiMetadata.defaultProperties(); - properties.setProperty(Constants.PROPERTY_MAX_RETRIES, "15"); - properties.setProperty("jclouds.ssh.retry-auth", "true"); - properties.setProperty(Constants.PROPERTY_CONNECTION_TIMEOUT, "1200000"); // 15 minutes - properties.setProperty(ComputeServiceProperties.IMAGE_LOGIN_USER, "root:password"); - properties.setProperty(TEMPLATE, "osFamily=UBUNTU,os64Bit=true,osVersionMatches=1[012].[01][04]"); - return properties; - } - - public static class Builder extends BaseHttpApiMetadata.Builder<DockerApi, Builder> { - - protected Builder() { - super(DockerApi.class); - id("docker") - .name("Docker API") - .identityName("user") - .credentialName("password") - .documentation(URI.create("https://docs.docker.com/reference/api/docker_remote_api/")) - .version("1.12") - .defaultEndpoint("http://127.0.0.1:2375") - .defaultProperties(DockerApiMetadata.defaultProperties()) - .view(typeToken(ComputeServiceContext.class)) - .defaultModules(ImmutableSet.<Class<? extends Module>>of( - DockerHttpApiModule.class, - DockerParserModule.class, - DockerComputeServiceContextModule.class)); - } - - @Override - public DockerApiMetadata build() { - return new DockerApiMetadata(this); - } - - @Override - protected Builder self() { - return this; - } - - @Override - public Builder fromApiMetadata(ApiMetadata in) { - return this; - } - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/binders/BindInputStreamToRequest.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/binders/BindInputStreamToRequest.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/binders/BindInputStreamToRequest.java deleted file mode 100644 index 855a2e5..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/binders/BindInputStreamToRequest.java +++ /dev/null @@ -1,68 +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.docker.binders; - -import com.google.common.base.Throwables; -import com.google.common.io.Files; -import org.jclouds.compute.reference.ComputeServiceConstants; -import org.jclouds.docker.features.internal.Archives; -import org.jclouds.http.HttpRequest; -import org.jclouds.io.Payload; -import org.jclouds.io.Payloads; -import org.jclouds.logging.Logger; -import org.jclouds.rest.Binder; - -import javax.annotation.Resource; -import javax.inject.Named; -import javax.inject.Singleton; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -@Singleton -public class BindInputStreamToRequest implements Binder { - - @Resource - @Named(ComputeServiceConstants.COMPUTE_LOGGER) - protected Logger logger = Logger.NULL; - - @Override - public <R extends HttpRequest> R bindToRequest(R request, Object input) { - checkArgument(checkNotNull(input, "input") instanceof File, "this binder is only valid for File!"); - checkNotNull(request, "request"); - - File dockerFile = (File) input; - File tmpDir = Files.createTempDir(); - final File targetFile = new File(tmpDir + File.separator + "Dockerfile"); - try { - Files.copy(dockerFile, targetFile); - File archive = Archives.tar(tmpDir, File.createTempFile("archive", ".tar")); - FileInputStream data = new FileInputStream(archive); - Payload payload = Payloads.newInputStreamPayload(data); - payload.getContentMetadata().setContentLength(data.getChannel().size()); - payload.getContentMetadata().setContentType("application/tar"); - request.setPayload(payload); - } catch (IOException e) { - logger.error(e, "Couldn't create a tarball for %s", targetFile); - throw Throwables.propagate(e); - } - return request; - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/config/DockerComputeServiceContextModule.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/config/DockerComputeServiceContextModule.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/config/DockerComputeServiceContextModule.java deleted file mode 100644 index 063d6c9..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/config/DockerComputeServiceContextModule.java +++ /dev/null @@ -1,59 +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.docker.compute.config; - -import com.google.common.base.Function; -import com.google.inject.TypeLiteral; -import org.jclouds.compute.ComputeServiceAdapter; -import org.jclouds.compute.config.ComputeServiceAdapterContextModule; -import org.jclouds.compute.domain.Hardware; -import org.jclouds.compute.domain.NodeMetadata; -import org.jclouds.compute.options.TemplateOptions; -import org.jclouds.docker.compute.functions.ContainerToNodeMetadata; -import org.jclouds.docker.compute.functions.ImageToImage; -import org.jclouds.docker.compute.functions.StateToStatus; -import org.jclouds.docker.compute.options.DockerTemplateOptions; -import org.jclouds.docker.compute.strategy.DockerComputeServiceAdapter; -import org.jclouds.docker.domain.Container; -import org.jclouds.docker.domain.Image; -import org.jclouds.docker.domain.State; -import org.jclouds.domain.Location; -import org.jclouds.functions.IdentityFunction; - -public class DockerComputeServiceContextModule extends - ComputeServiceAdapterContextModule<Container, Hardware, Image, Location> { - - @SuppressWarnings("unchecked") - @Override - protected void configure() { - super.configure(); - bind(new TypeLiteral<ComputeServiceAdapter<Container, Hardware, Image, Location>>() { - }).to(DockerComputeServiceAdapter.class); - bind(new TypeLiteral<Function<Container, NodeMetadata>>() { - }).to(ContainerToNodeMetadata.class); - bind(new TypeLiteral<Function<Image, org.jclouds.compute.domain.Image>>() { - }).to(ImageToImage.class); - bind(new TypeLiteral<Function<Hardware, Hardware>>() { - }).to(Class.class.cast(IdentityFunction.class)); - bind(new TypeLiteral<Function<Location, Location>>() { - }).to(Class.class.cast(IdentityFunction.class)); - bind(new TypeLiteral<Function<State, NodeMetadata.Status>>() { - }).to(StateToStatus.class); - bind(TemplateOptions.class).to(DockerTemplateOptions.class); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java deleted file mode 100644 index 72c16af..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/ContainerToNodeMetadata.java +++ /dev/null @@ -1,126 +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.docker.compute.functions; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.collect.Iterables.getOnlyElement; -import java.net.URI; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.inject.Inject; - -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.NodeMetadataBuilder; -import org.jclouds.compute.domain.Processor; -import org.jclouds.compute.functions.GroupNamingConvention; -import org.jclouds.docker.domain.Container; -import org.jclouds.docker.domain.Port; -import org.jclouds.docker.domain.State; -import org.jclouds.domain.Location; -import org.jclouds.providers.ProviderMetadata; - -import com.google.common.base.Function; -import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.google.inject.Singleton; - -@Singleton -public class ContainerToNodeMetadata implements Function<Container, NodeMetadata> { - - private final ProviderMetadata providerMetadata; - private final Function<State, NodeMetadata.Status> toPortableStatus; - private final GroupNamingConvention nodeNamingConvention; - private final Supplier<Map<String, ? extends Image>> images; - private final Supplier<Set<? extends Location>> locations; - - @Inject - public ContainerToNodeMetadata(ProviderMetadata providerMetadata, Function<State, - NodeMetadata.Status> toPortableStatus, GroupNamingConvention.Factory namingConvention, - Supplier<Map<String, ? extends Image>> images, - @Memoized Supplier<Set<? extends Location>> locations) { - this.providerMetadata = checkNotNull(providerMetadata, "providerMetadata"); - this.toPortableStatus = checkNotNull(toPortableStatus, "toPortableStatus cannot be null"); - this.nodeNamingConvention = checkNotNull(namingConvention, "namingConvention").createWithoutPrefix(); - this.images = checkNotNull(images, "images cannot be null"); - this.locations = checkNotNull(locations, "locations"); - } - - @Override - public NodeMetadata apply(Container container) { - String name = cleanUpName(container.getName()); - String group = nodeNamingConvention.extractGroup(name); - NodeMetadataBuilder builder = new NodeMetadataBuilder(); - builder.ids(container.getId()) - .name(name) - .group(group) - .hostname(container.getContainerConfig().getHostname()) - // TODO Set up hardware - .hardware(new HardwareBuilder() - .id("") - .ram(container.getContainerConfig().getMemory()) - .processor(new Processor(container.getContainerConfig().getCpuShares(), container.getContainerConfig().getCpuShares())) - .build()); - builder.status(toPortableStatus.apply(container.getState())); - builder.imageId(container.getImage()); - builder.loginPort(getLoginPort(container)); - builder.publicAddresses(getPublicIpAddresses()); - builder.privateAddresses(getPrivateIpAddresses(container)); - builder.location(Iterables.getOnlyElement(locations.get())); - Image image = images.get().get(container.getImage()); - builder.imageId(image.getId()); - builder.operatingSystem(image.getOperatingSystem()); - - return builder.build(); - } - - private String cleanUpName(String name) { - return name.startsWith("/") ? name.substring(1) : name; - } - - private Iterable<String> getPrivateIpAddresses(Container container) { - if (container.getNetworkSettings() == null) return ImmutableList.of(); - return ImmutableList.of(container.getNetworkSettings().getIpAddress()); - } - - private List<String> getPublicIpAddresses() { - String dockerIpAddress = URI.create(providerMetadata.getEndpoint()).getHost(); - return ImmutableList.of(dockerIpAddress); - } - - protected static int getLoginPort(Container container) { - if (container.getNetworkSettings() != null) { - Map<String, List<Map<String, String>>> ports = container.getNetworkSettings().getPorts(); - if (ports != null) { - return Integer.parseInt(getOnlyElement(ports.get("22/tcp")).get("HostPort")); - } - // this is needed in case the container list is coming from listContainers - } else if (container.getPorts() != null) { - for (Port port : container.getPorts()) { - if (port.getPrivatePort() == 22) { - return port.getPublicPort(); - } - } - } - throw new IllegalStateException("Cannot determine the login port for " + container.getId()); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java deleted file mode 100644 index 4e3358d..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/ImageToImage.java +++ /dev/null @@ -1,98 +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.docker.compute.functions; - -import com.google.common.base.Function; -import com.google.common.base.Splitter; -import com.google.common.collect.Iterables; -import org.jclouds.compute.domain.Image; -import org.jclouds.compute.domain.ImageBuilder; -import org.jclouds.compute.domain.OperatingSystem; -import org.jclouds.compute.domain.OsFamily; -import org.jclouds.compute.reference.ComputeServiceConstants; -import org.jclouds.logging.Logger; - -import javax.annotation.Resource; -import javax.inject.Named; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.collect.Iterables.get; - -public class ImageToImage implements Function<org.jclouds.docker.domain.Image, org.jclouds.compute.domain.Image> { - - private static final String CENTOS = "centos"; - private static final String UBUNTU = "ubuntu"; - - @Resource - @Named(ComputeServiceConstants.COMPUTE_LOGGER) - protected Logger logger = Logger.NULL; - - @Override - public Image apply(org.jclouds.docker.domain.Image from) { - checkNotNull(from, "image"); - String description = checkNotNull(Iterables.getFirst(from.getRepoTags(), "image must have at least one repo tag")); - - OsFamily osFamily = osFamily().apply(description); - String osVersion = parseVersion(description); - - OperatingSystem os = OperatingSystem.builder() - .description(description) - .family(osFamily) - .version(osVersion) - .is64Bit(is64bit(from)) - .build(); - - return new ImageBuilder() - .ids(from.getId()) - .name(get(Splitter.on(":").split(description), 0)) - .description(description) - .operatingSystem(os) - .status(Image.Status.AVAILABLE) - .build(); - } - - private boolean is64bit(org.jclouds.docker.domain.Image inspectedImage) { - if (inspectedImage.getArchitecture() == null) return true; - return inspectedImage.getArchitecture().matches("x86_64|amd64"); - } - - /** - * Parses the item description to determine the OSFamily - * - * @return the @see OsFamily or OsFamily.UNRECOGNIZED - */ - private Function<String, OsFamily> osFamily() { - return new Function<String, OsFamily>() { - - @Override - public OsFamily apply(final String description) { - if (description != null) { - if (description.contains(CENTOS)) return OsFamily.CENTOS; - else if (description.contains(UBUNTU)) return OsFamily.UBUNTU; - } - return OsFamily.UNRECOGNIZED; - } - }; - } - - private String parseVersion(String description) { - String version = get(Splitter.on(":").split(description), 1); - logger.debug("os version for item: %s is %s", description, version); - return version; - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/StateToStatus.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/StateToStatus.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/StateToStatus.java deleted file mode 100644 index 2d87384..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/functions/StateToStatus.java +++ /dev/null @@ -1,38 +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.docker.compute.functions; - -import javax.inject.Singleton; - -import org.jclouds.compute.domain.NodeMetadata.Status; -import org.jclouds.docker.domain.State; - -import com.google.common.base.Function; - -/** - * Transforms an {@link org.jclouds.docker.domain.Container} to the jclouds portable model. - */ -@Singleton -public class StateToStatus implements Function<State, Status> { - - @Override - public Status apply(final State state) { - if (state == null) return Status.UNRECOGNIZED; - return state.isRunning() ? Status.RUNNING : Status.TERMINATED; - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/options/DockerTemplateOptions.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/options/DockerTemplateOptions.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/options/DockerTemplateOptions.java deleted file mode 100644 index 5e4669b..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/options/DockerTemplateOptions.java +++ /dev/null @@ -1,485 +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.docker.compute.options; - -import com.google.common.base.Objects; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import org.jclouds.compute.options.TemplateOptions; -import org.jclouds.domain.LoginCredentials; -import org.jclouds.javax.annotation.Nullable; -import org.jclouds.scriptbuilder.domain.Statement; - -import java.util.List; -import java.util.Map; - -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Contains options supported in the {@code ComputeService#runNode} operation on the - * "docker" provider. <h2>Usage</h2> The recommended way to instantiate a - * DockerTemplateOptions object is to statically import DockerTemplateOptions.* and invoke a static - * creation method followed by an instance mutator (if needed): - * <p/> - * <code> - * import static org.jclouds.docker.compute.options.DockerTemplateOptions.Builder.*; - * <p/> - * ComputeService api = // get connection - * templateBuilder.options(inboundPorts(22, 80, 8080, 443)); - * Set<? extends NodeMetadata> set = api.createNodesInGroup(tag, 2, templateBuilder.build()); - * <code> - */ -public class DockerTemplateOptions extends TemplateOptions implements Cloneable { - - protected Optional<String> dns = Optional.absent(); - protected Optional<String> hostname = Optional.absent(); - protected Optional<Integer> memory = Optional.absent(); - protected Optional<Integer> cpuShares = Optional.absent(); - protected Optional<List<String>> commands = Optional.absent(); - protected Optional<Map<String, String>> volumes = Optional.absent(); - - @Override - public DockerTemplateOptions clone() { - DockerTemplateOptions options = new DockerTemplateOptions(); - copyTo(options); - return options; - } - - @Override - public void copyTo(TemplateOptions to) { - super.copyTo(to); - if (to instanceof DockerTemplateOptions) { - DockerTemplateOptions eTo = DockerTemplateOptions.class.cast(to); - if (volumes.isPresent()) { - eTo.volumes(getVolumes().get()); - } - if (hostname.isPresent()) { - eTo.hostname(hostname.get()); - } - if (dns.isPresent()) { - eTo.dns(dns.get()); - } - if (memory.isPresent()) { - eTo.memory(memory.get()); - } - if (commands.isPresent()) { - eTo.commands(commands.get()); - } - if (cpuShares.isPresent()) { - eTo.cpuShares(cpuShares.get()); - } - } - } - - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - DockerTemplateOptions that = DockerTemplateOptions.class.cast(o); - return super.equals(that) && equal(this.volumes, that.volumes) && - equal(this.hostname, that.hostname) && - equal(this.dns, that.dns) && - equal(this.memory, that.memory) && - equal(this.commands, that.commands) && - equal(this.cpuShares, that.cpuShares); - } - - @Override - public int hashCode() { - return Objects.hashCode(super.hashCode(), volumes, hostname, dns, memory, commands, cpuShares); - } - - @Override - public String toString() { - return Objects.toStringHelper(this) - .add("dns", dns) - .add("hostname", hostname) - .add("memory", memory) - .add("cpuShares", cpuShares) - .add("commands", commands) - .add("volumes", volumes) - .toString(); - } - - public static final DockerTemplateOptions NONE = new DockerTemplateOptions(); - - public DockerTemplateOptions volumes(Map<String, String> volumes) { - this.volumes = Optional.<Map<String, String>> of(ImmutableMap.copyOf(volumes)); - return this; - } - - public TemplateOptions dns(@Nullable String dns) { - this.dns = Optional.fromNullable(dns); - return this; - } - - public TemplateOptions hostname(@Nullable String hostname) { - this.hostname = Optional.fromNullable(hostname); - return this; - } - - public TemplateOptions memory(@Nullable Integer memory) { - this.memory = Optional.fromNullable(memory); - return this; - } - - public TemplateOptions commands(Iterable<String> commands) { - for (String command : checkNotNull(commands, "commands")) - checkNotNull(command, "all commands must be non-empty"); - this.commands = Optional.<List<String>> of(ImmutableList.copyOf(commands)); - return this; - } - - public TemplateOptions commands(String... commands) { - return commands(ImmutableList.copyOf(checkNotNull(commands, "commands"))); - } - - public TemplateOptions cpuShares(@Nullable Integer cpuShares) { - this.cpuShares = Optional.fromNullable(cpuShares); - return this; - } - - public Optional<Map<String, String>> getVolumes() { - return volumes; - } - - public Optional<String> getDns() { return dns; } - - public Optional<String> getHostname() { return hostname; } - - public Optional<Integer> getMemory() { return memory; } - - public Optional<List<String>> getCommands() { - return commands; - } - - public Optional<Integer> getCpuShares() { return cpuShares; } - - public static class Builder { - - /** - * @see DockerTemplateOptions#volumes(java.util.Map) - */ - public static DockerTemplateOptions volumes(Map<String, String> volumes) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.volumes(volumes)); - } - - /** - * @see DockerTemplateOptions#dns(String) - */ - public static DockerTemplateOptions dns(String dns) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.dns(dns)); - } - - /** - * @see DockerTemplateOptions#hostname(String) - */ - public static DockerTemplateOptions hostname(String hostname) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.hostname(hostname)); - } - - /** - * @see DockerTemplateOptions#memory(int) - */ - public static DockerTemplateOptions memory(int memory) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.memory(memory)); - } - - /** - * @see DockerTemplateOptions#commands(Iterable) - */ - public static DockerTemplateOptions commands(String... commands) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.commands(commands)); - } - - public static DockerTemplateOptions commands(Iterable<String> commands) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.commands(commands)); - } - - /** - * @see DockerTemplateOptions#cpuShares(int) - */ - public static DockerTemplateOptions cpuShares(int cpuShares) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.cpuShares(cpuShares)); - } - - // methods that only facilitate returning the correct object type - - /** - * @see TemplateOptions#inboundPorts - */ - public static DockerTemplateOptions inboundPorts(int... ports) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.inboundPorts(ports)); - } - - /** - * @see TemplateOptions#port - */ - public static DockerTemplateOptions blockOnPort(int port, int seconds) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.blockOnPort(port, seconds)); - } - - /** - * @see TemplateOptions#installPrivateKey - */ - public static DockerTemplateOptions installPrivateKey(String rsaKey) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.installPrivateKey(rsaKey)); - } - - /** - * @see TemplateOptions#authorizePublicKey - */ - public static DockerTemplateOptions authorizePublicKey(String rsaKey) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.authorizePublicKey(rsaKey)); - } - - /** - * @see TemplateOptions#userMetadata - */ - public static DockerTemplateOptions userMetadata(Map<String, String> userMetadata) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.userMetadata(userMetadata)); - } - - /** - * @see TemplateOptions#nodeNames(Iterable) - */ - public static DockerTemplateOptions nodeNames(Iterable<String> nodeNames) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.nodeNames(nodeNames)); - } - - /** - * @see TemplateOptions#networks(Iterable) - */ - public static DockerTemplateOptions networks(Iterable<String> networks) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return DockerTemplateOptions.class.cast(options.networks(networks)); - } - - /** - * @see TemplateOptions#overrideLoginUser - */ - public static DockerTemplateOptions overrideLoginUser(String user) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return options.overrideLoginUser(user); - } - - /** - * @see TemplateOptions#overrideLoginPassword - */ - public static DockerTemplateOptions overrideLoginPassword(String password) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return options.overrideLoginPassword(password); - } - - /** - * @see TemplateOptions#overrideLoginPrivateKey - */ - public static DockerTemplateOptions overrideLoginPrivateKey(String privateKey) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return options.overrideLoginPrivateKey(privateKey); - } - - /** - * @see TemplateOptions#overrideAuthenticateSudo - */ - public static DockerTemplateOptions overrideAuthenticateSudo(boolean authenticateSudo) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return options.overrideAuthenticateSudo(authenticateSudo); - } - - /** - * @see TemplateOptions#overrideLoginCredentials - */ - public static DockerTemplateOptions overrideLoginCredentials(LoginCredentials credentials) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return options.overrideLoginCredentials(credentials); - } - - /** - * @see TemplateOptions#blockUntilRunning - */ - public static DockerTemplateOptions blockUntilRunning(boolean blockUntilRunning) { - DockerTemplateOptions options = new DockerTemplateOptions(); - return options.blockUntilRunning(blockUntilRunning); - } - - } - - // methods that only facilitate returning the correct object type - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions blockOnPort(int port, int seconds) { - return DockerTemplateOptions.class.cast(super.blockOnPort(port, seconds)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions inboundPorts(int... ports) { - return DockerTemplateOptions.class.cast(super.inboundPorts(ports)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions authorizePublicKey(String publicKey) { - return DockerTemplateOptions.class.cast(super.authorizePublicKey(publicKey)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions installPrivateKey(String privateKey) { - return DockerTemplateOptions.class.cast(super.installPrivateKey(privateKey)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions blockUntilRunning(boolean blockUntilRunning) { - return DockerTemplateOptions.class.cast(super.blockUntilRunning(blockUntilRunning)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions dontAuthorizePublicKey() { - return DockerTemplateOptions.class.cast(super.dontAuthorizePublicKey()); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions nameTask(String name) { - return DockerTemplateOptions.class.cast(super.nameTask(name)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions runAsRoot(boolean runAsRoot) { - return DockerTemplateOptions.class.cast(super.runAsRoot(runAsRoot)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions runScript(Statement script) { - return DockerTemplateOptions.class.cast(super.runScript(script)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions overrideLoginCredentials(LoginCredentials overridingCredentials) { - return DockerTemplateOptions.class.cast(super.overrideLoginCredentials(overridingCredentials)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions overrideLoginPassword(String password) { - return DockerTemplateOptions.class.cast(super.overrideLoginPassword(password)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions overrideLoginPrivateKey(String privateKey) { - return DockerTemplateOptions.class.cast(super.overrideLoginPrivateKey(privateKey)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions overrideLoginUser(String loginUser) { - return DockerTemplateOptions.class.cast(super.overrideLoginUser(loginUser)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions overrideAuthenticateSudo(boolean authenticateSudo) { - return DockerTemplateOptions.class.cast(super.overrideAuthenticateSudo(authenticateSudo)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions userMetadata(Map<String, String> userMetadata) { - return DockerTemplateOptions.class.cast(super.userMetadata(userMetadata)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions userMetadata(String key, String value) { - return DockerTemplateOptions.class.cast(super.userMetadata(key, value)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions nodeNames(Iterable<String> nodeNames) { - return DockerTemplateOptions.class.cast(super.nodeNames(nodeNames)); - } - - /** - * {@inheritDoc} - */ - @Override - public DockerTemplateOptions networks(Iterable<String> networks) { - return DockerTemplateOptions.class.cast(super.networks(networks)); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java deleted file mode 100644 index 7bbead3..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/compute/strategy/DockerComputeServiceAdapter.java +++ /dev/null @@ -1,232 +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.docker.compute.strategy; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.collect.Iterables.find; - -import java.util.Map; -import java.util.Set; - -import javax.annotation.Resource; -import javax.inject.Inject; -import javax.inject.Named; -import javax.inject.Singleton; - -import org.jclouds.compute.ComputeServiceAdapter; -import org.jclouds.compute.domain.Hardware; -import org.jclouds.compute.domain.HardwareBuilder; -import org.jclouds.compute.domain.Processor; -import org.jclouds.compute.domain.Template; -import org.jclouds.compute.reference.ComputeServiceConstants; -import org.jclouds.docker.DockerApi; -import org.jclouds.docker.compute.options.DockerTemplateOptions; -import org.jclouds.docker.domain.Config; -import org.jclouds.docker.domain.Container; -import org.jclouds.docker.domain.HostConfig; -import org.jclouds.docker.domain.Image; -import org.jclouds.docker.options.ListContainerOptions; -import org.jclouds.docker.options.RemoveContainerOptions; -import org.jclouds.domain.Location; -import org.jclouds.domain.LoginCredentials; -import org.jclouds.logging.Logger; - -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -/** - * defines the connection between the {@link org.jclouds.docker.DockerApi} implementation and - * the jclouds {@link org.jclouds.compute.ComputeService} - */ -@Singleton -public class DockerComputeServiceAdapter implements - ComputeServiceAdapter<Container, Hardware, Image, Location> { - - @Resource - @Named(ComputeServiceConstants.COMPUTE_LOGGER) - protected Logger logger = Logger.NULL; - - private final DockerApi api; - - @Inject - public DockerComputeServiceAdapter(DockerApi api) { - this.api = checkNotNull(api, "api"); - } - - @Override - public NodeAndInitialCredentials<Container> createNodeWithGroupEncodedIntoName(String group, String name, - Template template) { - checkNotNull(template, "template was null"); - checkNotNull(template.getOptions(), "template options was null"); - - String imageId = checkNotNull(template.getImage().getId(), "template image id must not be null"); - String loginUser = template.getImage().getDefaultCredentials().getUser(); - String loginUserPassword = template.getImage().getDefaultCredentials().getPassword(); - - DockerTemplateOptions templateOptions = DockerTemplateOptions.class.cast(template.getOptions()); - int[] inboundPorts = templateOptions.getInboundPorts(); - - Map<String, Object> exposedPorts = Maps.newHashMap(); - for (int inboundPort : inboundPorts) { - exposedPorts.put(inboundPort + "/tcp", Maps.newHashMap()); - } - - Config.Builder containerConfigBuilder = Config.builder() - .imageId(imageId) - .exposedPorts(exposedPorts); - - if (templateOptions.getCommands().isPresent()) { - containerConfigBuilder.cmd(templateOptions.getCommands().get()); - } - - if (templateOptions.getMemory().isPresent()) { - containerConfigBuilder.memory(templateOptions.getMemory().get()); - } - - if (templateOptions.getCpuShares().isPresent()) { - containerConfigBuilder.cpuShares(templateOptions.getCpuShares().get()); - } - - if (templateOptions.getVolumes().isPresent()) { - Map<String, Object> volumes = Maps.newLinkedHashMap(); - for (String containerDir : templateOptions.getVolumes().get().values()) { - volumes.put(containerDir, Maps.newHashMap()); - } - containerConfigBuilder.volumes(volumes); - } - Config containerConfig = containerConfigBuilder.build(); - - logger.debug(">> creating new container with containerConfig(%s)", containerConfig); - Container container = api.getRemoteApi().createContainer(name, containerConfig); - logger.trace("<< container(%s)", container.getId()); - - HostConfig.Builder hostConfigBuilder = HostConfig.builder() - .publishAllPorts(true) - .privileged(true); - - if (templateOptions.getDns().isPresent()) { - hostConfigBuilder.dns(templateOptions.getDns().get()); - } - // set up for volume bindings - if (templateOptions.getVolumes().isPresent()) { - for (Map.Entry<String, String> entry : templateOptions.getVolumes().get().entrySet()) { - hostConfigBuilder.binds(ImmutableList.of(entry.getKey() + ":" + entry.getValue())); - } - } - HostConfig hostConfig = hostConfigBuilder.build(); - - api.getRemoteApi().startContainer(container.getId(), hostConfig); - container = api.getRemoteApi().inspectContainer(container.getId()); - if (container.getState().getExitCode() != 0) { - destroyNode(container.getId()); - throw new IllegalStateException(String.format("Container %s has not started correctly", container.getId())); - } - return new NodeAndInitialCredentials<Container>(container, container.getId(), - LoginCredentials.builder().user(loginUser).password(loginUserPassword).build()); - } - - @Override - public Iterable<Hardware> listHardwareProfiles() { - Set<Hardware> hardware = Sets.newLinkedHashSet(); - // todo they are only placeholders at the moment - hardware.add(new HardwareBuilder().ids("micro").hypervisor("lxc").name("micro").processor(new Processor(1, 1)).ram(512).build()); - hardware.add(new HardwareBuilder().ids("small").hypervisor("lxc").name("small").processor(new Processor(1, 1)).ram(1024).build()); - hardware.add(new HardwareBuilder().ids("medium").hypervisor("lxc").name("medium").processor(new Processor(1, 1)).ram(2048).build()); - hardware.add(new HardwareBuilder().ids("large").hypervisor("lxc").name("large").processor(new Processor(1, 1)).ram(3072).build()); - return hardware; - } - - @Override - public Set<Image> listImages() { - Set<Image> images = Sets.newHashSet(); - for (Image image : api.getRemoteApi().listImages()) { - // less efficient than just listImages but returns richer json that needs repoTags coming from listImages - Image inspected = api.getRemoteApi().inspectImage(image.getId()); - if (inspected.getRepoTags().isEmpty()) { - inspected = Image.builder().fromImage(inspected).repoTags(image.getRepoTags()).build(); - } - images.add(inspected); - } - return images; - } - - @Override - public Image getImage(final String imageId) { - // less efficient than just inspectImage but listImages return repoTags - return find(listImages(), new Predicate<Image>() { - - @Override - public boolean apply(Image input) { - return input.getId().equals(imageId); - } - }, null); - } - - @Override - public Iterable<Container> listNodes() { - Set<Container> containers = Sets.newHashSet(); - for (Container container : api.getRemoteApi().listContainers(ListContainerOptions.Builder.all(true))) { - // less efficient than just listNodes but returns richer json - containers.add(api.getRemoteApi().inspectContainer(container.getId())); - } - return containers; - } - - @Override - public Iterable<Container> listNodesByIds(final Iterable<String> ids) { - Set<Container> containers = Sets.newHashSet(); - for (String id : ids) { - containers.add(api.getRemoteApi().inspectContainer(id)); - } - return containers; - } - - @Override - public Iterable<Location> listLocations() { - return ImmutableSet.of(); - } - - @Override - public Container getNode(String id) { - return api.getRemoteApi().inspectContainer(id); - } - - @Override - public void destroyNode(String id) { - api.getRemoteApi().removeContainer(id, RemoveContainerOptions.Builder.force(true)); - } - - @Override - public void rebootNode(String id) { - api.getRemoteApi().stopContainer(id); - api.getRemoteApi().startContainer(id); - } - - @Override - public void resumeNode(String id) { - throw new UnsupportedOperationException("resume not supported"); - } - - @Override - public void suspendNode(String id) { - throw new UnsupportedOperationException("suspend not supported"); - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerHttpApiModule.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerHttpApiModule.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerHttpApiModule.java deleted file mode 100644 index e6da554..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerHttpApiModule.java +++ /dev/null @@ -1,40 +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.docker.config; - -import org.jclouds.docker.DockerApi; -import org.jclouds.docker.handlers.DockerErrorHandler; -import org.jclouds.http.HttpErrorHandler; -import org.jclouds.http.annotation.ClientError; -import org.jclouds.http.annotation.Redirection; -import org.jclouds.http.annotation.ServerError; -import org.jclouds.rest.ConfiguresHttpApi; -import org.jclouds.rest.config.HttpApiModule; - -/** - * Configures the Docker connection. - */ -@ConfiguresHttpApi -public class DockerHttpApiModule extends HttpApiModule<DockerApi> { - - @Override - protected void bindErrorHandlers() { - bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(DockerErrorHandler.class); - bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(DockerErrorHandler.class); - bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(DockerErrorHandler.class); - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerParserModule.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerParserModule.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerParserModule.java deleted file mode 100644 index 533184f..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerParserModule.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.docker.config; - -import com.google.common.collect.ImmutableMap; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; -import com.google.inject.AbstractModule; -import com.google.inject.Provides; -import org.jclouds.docker.domain.Container; -import org.jclouds.json.config.GsonModule; - -import javax.inject.Singleton; -import java.lang.reflect.Type; -import java.util.Map; - -public class DockerParserModule extends AbstractModule { - - @Override - protected void configure() { - bind(GsonModule.DateAdapter.class).to(GsonModule.Iso8601DateAdapter.class); - } - - @Provides - @Singleton - public Map<Type, Object> provideCustomAdapterBindings() { - return new ImmutableMap.Builder<Type, Object>() - .put(Container.class, new ContainerTypeAdapter()) - .build(); - } - - protected static class ContainerTypeAdapter implements JsonDeserializer<Container> { - - @Override - public Container deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws - JsonParseException { - Gson gson = new GsonBuilder().serializeNulls().create(); - final JsonObject jsonObject = json.getAsJsonObject(); - return gson.fromJson(jsonObject, Container.class); - } - } - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerProperties.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerProperties.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerProperties.java deleted file mode 100644 index b870fea..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/config/DockerProperties.java +++ /dev/null @@ -1,26 +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.docker.config; - -public class DockerProperties { - - /** - * default Docker host password - */ - public static final String HOST_PASSWORD = "jclouds.docker.host.password"; - -} http://git-wip-us.apache.org/repos/asf/stratos/blob/4e042bca/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/domain/Config.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/domain/Config.java b/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/domain/Config.java deleted file mode 100644 index 9c80472..0000000 --- a/dependencies/jclouds/apis/docker/1.8.0-stratos/src/main/java/org/jclouds/docker/domain/Config.java +++ /dev/null @@ -1,457 +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.docker.domain; - -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.gson.annotations.SerializedName; -import org.jclouds.javax.annotation.Nullable; - -import java.beans.ConstructorProperties; -import java.util.List; -import java.util.Map; - -import static com.google.common.base.Preconditions.checkNotNull; - -public class Config { - - @SerializedName("Hostname") - private final String hostname; - @SerializedName("Domainname") - private final String domainName; - @SerializedName("User") - private final String user; - @SerializedName("Memory") - private final int memory; - @SerializedName("MemorySwap") - private final int memorySwap; - @SerializedName("CpuShares") - private final int cpuShares; - @SerializedName("AttachStdin") - private final boolean attachStdin; - @SerializedName("AttachStdout") - private final boolean attachStdout; - @SerializedName("AttachStderr") - private final boolean attachStderr; - @SerializedName("ExposedPorts") - private final Map<String, ?> exposedPorts; - @SerializedName("Tty") - private final boolean tty; - @SerializedName("OpenStdin") - private final boolean openStdin; - @SerializedName("StdinOnce") - private final boolean stdinOnce; - @SerializedName("Env") - private final List<String> env; - @SerializedName("Cmd") - private final List<String> cmd; - @SerializedName("Dns") - private final List<String> dns; - @SerializedName("Image") - private final String imageId; - @SerializedName("Volumes") - private final Map<String, ?> volumes; - @SerializedName("VolumesFrom") - private final String volumesFrom; - @SerializedName("WorkingDir") - private final String workingDir; - @SerializedName("Entrypoint") - private final String entrypoint; - @SerializedName("NetworkDisabled") - private final boolean networkDisabled; - @SerializedName("OnBuild") - private final List<String> onBuild; - - - @ConstructorProperties({ "Hostname", "Domainname", "User", "Memory", "MemorySwap", "CpuShares", "AttachStdin", - "AttachStdout", "AttachStderr", "ExposedPorts", "Tty", "OpenStdin", "StdinOnce", "Env", "Cmd", - "Dns", "Image", "Volumes", "VolumesFrom", "WorkingDir", "Entrypoint", "NetworkDisabled", "OnBuild" }) - protected Config(@Nullable String hostname, @Nullable String domainName, @Nullable String user, - int memory, int memorySwap, int cpuShares, boolean attachStdin, boolean attachStdout, - boolean attachStderr, Map<String, ?> exposedPorts, boolean tty, boolean openStdin, - boolean stdinOnce, @Nullable List<String> env, @Nullable List<String> cmd, - @Nullable List<String> dns, String imageId, @Nullable Map<String, ?> volumes, - @Nullable String volumesFrom, @Nullable String workingDir, @Nullable String entrypoint, - @Nullable boolean networkDisabled, @Nullable List<String> onBuild) { - this.hostname = hostname; - this.domainName = domainName; - this.user = user; - this.memory = checkNotNull(memory, "memory"); - this.memorySwap = checkNotNull(memorySwap, "memorySwap"); - this.cpuShares = checkNotNull(cpuShares, "cpuShares"); - this.attachStdin = checkNotNull(attachStdin, "attachStdin"); - this.attachStdout = checkNotNull(attachStdout, "attachStdout"); - this.attachStderr = checkNotNull(attachStderr, "attachStderr"); - this.exposedPorts = exposedPorts != null ? ImmutableMap.copyOf(exposedPorts) : ImmutableMap.<String, Object> of(); - this.tty = checkNotNull(tty, "tty"); - this.openStdin = checkNotNull(openStdin, "openStdin"); - this.stdinOnce = checkNotNull(stdinOnce, "stdinOnce"); - this.env = env != null ? ImmutableList.copyOf(env) : ImmutableList.<String> of(); - this.cmd = cmd != null ? ImmutableList.copyOf(cmd) : ImmutableList.<String> of(); - this.dns = dns != null ? ImmutableList.copyOf(dns) : ImmutableList.<String> of(); - this.imageId = checkNotNull(imageId, "imageId"); - this.volumes = volumes != null ? ImmutableMap.copyOf(volumes) : ImmutableMap.<String, Object> of(); - this.volumesFrom = volumesFrom; - this.workingDir = workingDir; - this.entrypoint = entrypoint; - this.networkDisabled = networkDisabled; - this.onBuild = onBuild != null ? ImmutableList.copyOf(onBuild) : ImmutableList.<String> of(); - } - - public String getHostname() { - return hostname; - } - - public String getDomainName() { - return domainName; - } - - public String getUser() { - return user; - } - - public int getMemory() { - return memory; - } - - public int getMemorySwap() { - return memorySwap; - } - - public int getCpuShares() { - return cpuShares; - } - - public boolean isAttachStdin() { - return attachStdin; - } - - public boolean isAttachStdout() { - return attachStdout; - } - - public boolean isAttachStderr() { - return attachStderr; - } - - public Map<String, ?> getExposedPorts() { - return exposedPorts; - } - - public boolean isTty() { - return tty; - } - - public boolean isOpenStdin() { - return openStdin; - } - - public boolean isStdinOnce() { - return stdinOnce; - } - - public List<String> getEnv() { - return env; - } - - public List<String> getCmd() { - return cmd; - } - - public List<String> getDns() { - return dns; - } - - public String getImageId() { - return imageId; - } - - public Map<String, ?> getVolumes() { - return volumes; - } - - public String getVolumesFrom() { - return volumesFrom; - } - - public String getWorkingDir() { - return workingDir; - } - - public String getEntrypoint() { - return entrypoint; - } - - public boolean isNetworkDisabled() { - return networkDisabled; - } - - public List<String> getOnBuild() { - return onBuild; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Config that = (Config) o; - - return Objects.equal(this.hostname, that.hostname) && - Objects.equal(this.domainName, that.domainName) && - Objects.equal(this.user, that.user) && - Objects.equal(this.memory, that.memory) && - Objects.equal(this.memorySwap, that.memorySwap) && - Objects.equal(this.cpuShares, that.cpuShares) && - Objects.equal(this.attachStdin, that.attachStdin) && - Objects.equal(this.attachStdout, that.attachStdout) && - Objects.equal(this.attachStderr, that.attachStderr) && - Objects.equal(this.exposedPorts, that.exposedPorts) && - Objects.equal(this.tty, that.tty) && - Objects.equal(this.openStdin, that.openStdin) && - Objects.equal(this.stdinOnce, that.stdinOnce) && - Objects.equal(this.env, that.env) && - Objects.equal(this.cmd, that.cmd) && - Objects.equal(this.dns, that.dns) && - Objects.equal(this.imageId, that.imageId) && - Objects.equal(this.volumes, that.volumes) && - Objects.equal(this.volumesFrom, that.volumesFrom) && - Objects.equal(this.workingDir, that.workingDir) && - Objects.equal(this.entrypoint, that.entrypoint) && - Objects.equal(this.onBuild, that.onBuild); - } - - @Override - public int hashCode() { - return Objects.hashCode(hostname, domainName, user, memory, memorySwap, cpuShares, attachStdin, attachStdout, - attachStderr, exposedPorts, tty, openStdin, stdinOnce, env, cmd, dns, imageId, volumes, - volumesFrom, workingDir, entrypoint, networkDisabled, onBuild); - } - - @Override - public String toString() { - return Objects.toStringHelper(this) - .add("hostname", hostname) - .add("domainName", domainName) - .add("user", user) - .add("memory", memory) - .add("memorySwap", memorySwap) - .add("cpuShares", cpuShares) - .add("attachStdin", attachStdin) - .add("attachStdout", attachStdout) - .add("attachStderr", attachStderr) - .add("exposedPorts", exposedPorts) - .add("tty", tty) - .add("openStdin", openStdin) - .add("stdinOnce", stdinOnce) - .add("env", env) - .add("cmd", cmd) - .add("dns", dns) - .add("imageId", imageId) - .add("volumes", volumes) - .add("volumesFrom", volumesFrom) - .add("workingDir", workingDir) - .add("entrypoint", entrypoint) - .add("networkDisabled", networkDisabled) - .add("onBuild", onBuild) - .toString(); - } - - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return builder().fromConfig(this); - } - - public static final class Builder { - private String hostname; - private String domainName; - private String user; - private int memory; - private int memorySwap; - private int cpuShares; - private boolean attachStdin; - private boolean attachStdout; - private boolean attachStderr; - private Map<String, ?> exposedPorts = ImmutableMap.of(); - private boolean tty; - private boolean openStdin; - private boolean stdinOnce; - private List<String> env = ImmutableList.of(); - private List<String> cmd = ImmutableList.of(); - private List<String> dns = ImmutableList.of(); - private String imageId; - private Map<String, ?> volumes = ImmutableMap.of(); - private String volumesFrom; - private String workingDir; - private String entrypoint; - private boolean networkDisabled; - private List<String> onBuild = ImmutableList.of(); - - public Builder hostname(String hostname) { - this.hostname = hostname; - return this; - } - - public Builder domainName(String domainName) { - this.domainName = domainName; - return this; - } - - public Builder user(String user) { - this.user = user; - return this; - } - - public Builder memory(int memory) { - this.memory = memory; - return this; - } - - public Builder memorySwap(int memorySwap) { - this.memorySwap = memorySwap; - return this; - } - - public Builder cpuShares(int cpuShares) { - this.cpuShares = cpuShares; - return this; - } - - public Builder attachStdin(boolean attachStdin) { - this.attachStdin = attachStdin; - return this; - } - - public Builder attachStdout(boolean attachStdout) { - this.attachStdout = attachStdout; - return this; - } - - public Builder attachStderr(boolean attachStderr) { - this.attachStderr = attachStderr; - return this; - } - - public Builder exposedPorts(Map<String, ?> exposedPorts) { - this.exposedPorts = ImmutableMap.copyOf(checkNotNull(exposedPorts, "exposedPorts")); - return this; - } - - public Builder tty(boolean tty) { - this.tty = tty; - return this; - } - - public Builder openStdin(boolean openStdin) { - this.openStdin = openStdin; - return this; - } - - public Builder stdinOnce(boolean stdinOnce) { - this.stdinOnce = stdinOnce; - return this; - } - - public Builder env(List<String> env) { - this.env = env; - return this; - } - - public Builder cmd(List<String> cmd) { - this.cmd = ImmutableList.copyOf(checkNotNull(cmd, "cmd")); - return this; - } - - public Builder dns(List<String> dns) { - this.dns = ImmutableList.copyOf(checkNotNull(dns, "dns")); - return this; - } - - public Builder imageId(String imageId) { - this.imageId = imageId; - return this; - } - - public Builder volumes(Map<String, ?> volumes) { - this.volumes = ImmutableMap.copyOf(checkNotNull(volumes, "volumes")); - return this; - } - - public Builder volumesFrom(String volumesFrom) { - this.volumesFrom = volumesFrom; - return this; - } - - public Builder workingDir(String workingDir) { - this.workingDir = workingDir; - return this; - } - - public Builder entrypoint(String entrypoint) { - this.entrypoint = entrypoint; - return this; - } - - public Builder networkDisabled(boolean networkDisabled) { - this.networkDisabled = networkDisabled; - return this; - } - - public Builder onBuild(List<String> onBuild) { - this.onBuild = ImmutableList.copyOf(checkNotNull(onBuild, "onBuild")); - return this; - } - - public Config build() { - return new Config(hostname, domainName, user, memory, memorySwap, cpuShares, attachStdin, attachStdout, - attachStderr, exposedPorts, tty, openStdin, stdinOnce, env, cmd, dns, imageId, volumes, - volumesFrom, workingDir, entrypoint, networkDisabled, onBuild); - } - - public Builder fromConfig(Config in) { - return this - .hostname(in.getHostname()) - .domainName(in.getDomainName()) - .user(in.getUser()) - .memory(in.getMemory()) - .memorySwap(in.getMemorySwap()) - .cpuShares(in.getCpuShares()) - .attachStdin(in.isAttachStdin()) - .attachStdout(in.isAttachStdout()) - .attachStderr(in.isAttachStderr()) - .exposedPorts(in.getExposedPorts()) - .tty(in.isTty()) - .openStdin(in.isOpenStdin()) - .stdinOnce(in.isStdinOnce()) - .env(in.getEnv()) - .cmd(in.getCmd()) - .dns(in.getDns()) - .imageId(in.getImageId()) - .volumes(in.getVolumes()) - .volumesFrom(in.getVolumesFrom()) - .workingDir(in.getWorkingDir()) - .entrypoint(in.getEntrypoint()) - .networkDisabled(in.isNetworkDisabled()) - .onBuild(in.getOnBuild()); - } - - } -}
