Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A lot of necessary features added. Working deployer for docker swarm used in preprod environment. Need to polish some code. #2

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 47 additions & 19 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,37 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-parent</artifactId>
<version>1.0.2.RELEASE</version>
<version>1.3.1.RELEASE</version>
</parent>

<properties>
<java.version>1.8</java.version>
<spring-cloud-deployer-spi.version>1.0.2.RELEASE</spring-cloud-deployer-spi.version>
<spring-cloud-deployer-spi.version>1.3.1.RELEASE</spring-cloud-deployer-spi.version>
<spring-boot-version>1.5.6.RELEASE</spring-boot-version>
</properties>

<distributionManagement>
<snapshotRepository>
<id>kazan-repo</id>
<name>Kazan repository</name>
<url>https://kazan.atosworldline.com/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>

<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-spi</artifactId>
<version>${spring-cloud-deployer-spi.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-resource-support</artifactId>
<version>${spring-cloud-deployer-spi.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-resource-maven</artifactId>
<version>${spring-cloud-deployer-spi.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-resource-docker</artifactId>
Expand All @@ -40,22 +49,22 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring-boot-version}</version>
</dependency>
<dependency>
<groupId>com.spotify</groupId>
<artifactId>docker-client</artifactId>
<version>6.2.6-SNAPSHOT</version>
<version>8.11.1</version>
</dependency>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jeromq</artifactId>
<version>0.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-spi-test</artifactId>
<version>${spring-cloud-deployer-spi.version}</version>
<scope>test</scope>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
Expand All @@ -65,17 +74,36 @@
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-test-support-internal</artifactId>
<version>1.3.0.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-deployer-local</artifactId>
<version>1.1.2.BUILD-SNAPSHOT</version>
<artifactId>spring-cloud-deployer-spi-test</artifactId>
<version>${spring-cloud-deployer-spi.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.zeromq</groupId>
<artifactId>jeromq</artifactId>
<version>0.3.5</version>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.4.0</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
package org.springframework.cloud.deployer.spi.swarm;


import com.spotify.docker.client.messages.swarm.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.deployer.spi.app.AppDeployer;
import org.springframework.cloud.deployer.spi.app.AppStatus;
import org.springframework.cloud.deployer.spi.core.AppDeploymentRequest;

import java.util.HashMap;
import java.util.Map;

/**
* Created by joriscaloud on 12/10/16.
*
* <p>
* Abstract base class for a deployer that targets Docker Swarm
*/
public class AbstractSwarmDeployer {
Expand All @@ -23,7 +20,7 @@ public class AbstractSwarmDeployer {
protected static final String SPRING_APP_KEY = "spring-app-id";
protected static final String SPRING_MARKER_KEY = "role";
protected static final String SPRING_MARKER_VALUE = "spring-app";
protected static final Logger logger = LoggerFactory.getLogger(AbstractSwarmDeployer.class);
protected static final Logger logger = LoggerFactory.getLogger(AbstractSwarmDeployer.class); // CHECKSTYLE_IGNORE

/**
* Creates a map of labels for a given ID. This will allow Swarm services
Expand All @@ -48,36 +45,26 @@ protected String createDeploymentId(AppDeploymentRequest request) {
String deploymentId;
if (groupId == null) {
deploymentId = String.format("%s", request.getDefinition().getName());
}
else {
} else {
deploymentId = String.format("%s-%s", groupId, request.getDefinition().getName());
}
return deploymentId.replace('.', '-');
}

protected AppStatus buildAppStatus(SwarmDeployerProperties properties, String appId, Task task) {
AppStatus.Builder statusBuilder = AppStatus.of(appId);

statusBuilder.with(new SwarmAppInstanceStatus(properties, appId, task));
return statusBuilder.build();
}

protected Map<String, Long> deduceResourceLimits(SwarmDeployerProperties properties, AppDeploymentRequest request) {
String memOverride = request.getDeploymentProperties().get("spring.cloud.deployer.swarm.memory");
Long memory = null;
Long memory;
if (memOverride == null) {
memory = properties.getMemory();
}
else {
} else {
memory = Long.parseLong(memOverride, 10);
}

String cpuOverride = request.getDeploymentProperties().get("spring.cloud.deployer.swarm.cpu");
Long cpu = null;
Long cpu;
if (cpuOverride == null) {
cpu = properties.getCpu();
}
else {
} else {
cpu = Long.parseLong(cpuOverride, 10);
}

Expand All @@ -88,5 +75,4 @@ protected Map<String, Long> deduceResourceLimits(SwarmDeployerProperties propert
limits.put("cpu", cpu);
return limits;
}

}
}
Loading