Skip to content

Commit

Permalink
Issue #1608: use double for docker.cpus property
Browse files Browse the repository at this point in the history
Docker config option `--cpus` assumes float number, while current DMP
`docker.cpus` assumes integer number, which is actually `NanoCpus`.

Change this property to `double` and convert it to `NanoCpus` before
passing to Docker.

Signed-off-by: Vojtech Juranek <[email protected]>
  • Loading branch information
vjuranek authored and rohanKanojia committed Oct 14, 2022
1 parent 79a4a33 commit 2156a48
Show file tree
Hide file tree
Showing 11 changed files with 23 additions and 23 deletions.
1 change: 1 addition & 0 deletions doc/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* **0.41-SNAPSHOT** :
- image/squash option is taken into account when using buildx ([1605](https://github.com/fabric8io/docker-maven-plugin/pull/1605)) @kevinleturc
- Allow having build args with same name but different value in various sources, which are overriden in the order of precedence in resulting build args map ([1407](https://github.com/fabric8io/docker-maven-plugin/issues/1407)) @pavelsmolensky
- Use double for `docker.cpus` property and interpret this value in the same way as Docker config option `--cpus` ([1609](https://github.com/fabric8io/docker-maven-plugin/pull/1609)) @vjuranek

* **0.40.2** (2022-07-31):
- Plugin doesn't abort building an image in case Podman is used and Dockerfile can't be processed ([1562](https://github.com/fabric8io/docker-maven-plugin/issues/1512)) @jh-cd
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ public ContainerHostConfig cpuShares(Long cpuShares) {
return add("CpuShares", cpuShares);
}

public ContainerHostConfig cpus(Long cpus) {
return add ("NanoCpus", cpus);
public ContainerHostConfig cpus(Double cpus) {
return add ("NanoCpus", convertToNanoCpus(cpus));
}

public ContainerHostConfig cpuSet(String cpuSet) {
Expand Down Expand Up @@ -252,4 +252,11 @@ private ContainerHostConfig add(String name, Long value) {
}
return this;
}

private Long convertToNanoCpus(Double cpus){
if(cpus == null){
return null;
}
return (long)(cpus * 1_000_000_000);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public class RunImageConfiguration implements Serializable {
private Long cpuShares;

@Parameter
private Long cpus;
private Double cpus;

@Parameter
private String cpuSet;
Expand Down Expand Up @@ -282,7 +282,7 @@ public Long getCpuShares() {
return cpuShares;
}

public Long getCpus() {
public Double getCpus() {
return cpus;
}

Expand Down Expand Up @@ -632,7 +632,7 @@ public Builder cpuShares(Long cpuShares) {
return this;
}

public Builder cpus(Long cpus) {
public Builder cpus(Double cpus) {
config.cpus = cpus;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -360,9 +360,8 @@ public Long getCpuShares() {
return asLong("cpu_shares");
}

public Long getCpusCount(){
Double cpus = asDouble("cpus");
return convertToNanoCpus(cpus);
public Double getCpusCount(){
return asDouble("cpus");
}

public List<String> getDevices() {
Expand Down Expand Up @@ -449,13 +448,6 @@ private Map<String, String> convertToMap(List<String> list) {
return map;
}

private Long convertToNanoCpus(Double cpus){
if(cpus == null){
return null;
}
return (long)(cpus * 1000000000);
}

private void throwIllegalArgumentException(String msg) {
throw new IllegalArgumentException(String.format("%s: %s - ", composeFile, name) + msg);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ private RunImageConfiguration extractRunConfiguration(ImageConfiguration fromCon
.tmpfs(valueProvider.getList(TMPFS, config.getTmpfs()))
.isolation(valueProvider.getString(ISOLATION, config.getIsolation()))
.cpuShares(valueProvider.getLong(CPUSHARES, config.getCpuShares()))
.cpus(valueProvider.getLong(CPUS, config.getCpus()))
.cpus(valueProvider.getDouble(CPUS, config.getCpus()))
.cpuSet(valueProvider.getString(CPUSET, config.getCpuSet()))
.readOnly(valueProvider.getBoolean(READ_ONLY, config.getReadOnly()))
.autoRemove(valueProvider.getBoolean(AUTO_REMOVE, config.getAutoRemove()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ void validateRunConfiguration(RunImageConfiguration runConfig) {
Assertions.assertEquals((Long) 1L, runConfig.getMemory());
Assertions.assertEquals((Long) 1L, runConfig.getMemorySwap());
Assertions.assertEquals("0,1", runConfig.getCpuSet());
Assertions.assertEquals((Long) 1000000000L, runConfig.getCpus());
Assertions.assertEquals(1.5, runConfig.getCpus());
Assertions.assertEquals("default", runConfig.getIsolation());
Assertions.assertEquals((Long) 1L, runConfig.getCpuShares());
Assertions.assertNull(runConfig.getEnvPropertyFile());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1071,7 +1071,7 @@ protected void validateRunConfiguration(RunImageConfiguration runConfig) {
Assertions.assertEquals(a("redis"), runConfig.getLinks());
Assertions.assertEquals((Long) 1L, runConfig.getMemory());
Assertions.assertEquals((Long) 1L, runConfig.getMemorySwap());
Assertions.assertEquals((Long) 1000000000L, runConfig.getCpus());
Assertions.assertEquals(1.5, runConfig.getCpus());
Assertions.assertEquals("default", runConfig.getIsolation());
Assertions.assertEquals((Long) 1L, runConfig.getCpuShares());
Assertions.assertEquals("0,1", runConfig.getCpuSet());
Expand Down Expand Up @@ -1174,7 +1174,7 @@ private String[] getTestData() {
k(ConfigKey.CAP_DROP) + ".1", "CAP",
k(ConfigKey.SYSCTLS) + ".key", "value",
k(ConfigKey.SECURITY_OPTS) + ".1", "seccomp=unconfined",
k(ConfigKey.CPUS), "1000000000",
k(ConfigKey.CPUS), "1.5",
k(ConfigKey.CPUSET), "0,1",
k(ConfigKey.ISOLATION), "default",
k(ConfigKey.CPUSHARES), "1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ private void givenARunConfiguration() {
.shmSize(1024L)
.memory(1L)
.memorySwap(1L)
.cpus(1000000000L)
.cpus(1.5)
.cpuSet("0,1")
.isolation("default")
.cpuShares(1L)
Expand Down
2 changes: 1 addition & 1 deletion src/test/resources/compose/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ services:
isolation: default
cpu_shares: 1
cpuset: 0,1
cpus: 1
cpus: 1.5
devices:
- "/dev/device:/dev/device"
dns: 8.8.8.8
Expand Down
2 changes: 1 addition & 1 deletion src/test/resources/docker/containerCreateConfigAll.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
],
"Isolation": "default",
"CpuShares":1,
"NanoCpus": 1000000000,
"NanoCpus": 1500000000,
"CpusetCpus":"0,1",
"ReadonlyRootfs":false,
"AutoRemove":false,
Expand Down
2 changes: 1 addition & 1 deletion src/test/resources/docker/containerHostConfigAll.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
],
"Isolation": "default",
"CpuShares":1,
"NanoCpus":1000000000,
"NanoCpus":1500000000,
"CpusetCpus":"0,1",
"ReadonlyRootfs":false,
"AutoRemove":false,
Expand Down

0 comments on commit 2156a48

Please sign in to comment.