From 00e7d922dd9dc3defb28188d2a4775162afae519 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Tue, 5 Nov 2019 11:21:02 +0100 Subject: Remove mac address for docker container --- .../dockerapi/CreateContainerCommandImpl.java | 34 ---------------------- .../dockerapi/CreateContainerCommandImplTest.java | 20 ------------- 2 files changed, 54 deletions(-) (limited to 'docker-api') diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java index ed623c82259..32302a98757 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java @@ -13,8 +13,6 @@ import com.yahoo.vespa.hosted.dockerapi.exception.DockerException; import java.net.Inet6Address; import java.net.InetAddress; import java.nio.file.Path; -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -22,10 +20,8 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Random; import java.util.Set; import java.util.stream.Collectors; -import java.util.stream.IntStream; import java.util.stream.Stream; import static com.yahoo.vespa.hosted.dockerapi.DockerImpl.LABEL_NAME_MANAGEDBY; @@ -192,10 +188,6 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { .withLabels(labels) .withEnv(environmentAssignments); - networkMode - .filter(mode -> ! mode.toLowerCase().equals("host")) - .ifPresent(mode -> containerCmd.withMacAddress(generateMACAddress(hostName, ipv4Address, ipv6Address))); - hostName.ifPresent(containerCmd::withHostName); networkMode.ifPresent(hostConfig::withNetworkMode); ipv4Address.ifPresent(containerCmd::withIpv4Address); @@ -259,30 +251,4 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { .filter(s -> !s.isEmpty()) .collect(Collectors.joining(" ")); } - - /** - * Generates a pseudo-random MAC address based on the hostname, IPv4- and IPv6-address. - */ - static String generateMACAddress(Optional hostname, Optional ipv4Address, Optional ipv6Address) { - final String seed = hostname.orElse("") + ipv4Address.orElse("") + ipv6Address.orElse(""); - Random rand = getPRNG(seed); - byte[] macAddr = new byte[6]; - rand.nextBytes(macAddr); - - // Set second-last bit (locally administered MAC address), unset last bit (unicast) - macAddr[0] = (byte) ((macAddr[0] | 2) & 254); - return IntStream.range(0, macAddr.length) - .mapToObj(i -> String.format("%02x", macAddr[i])) - .collect(Collectors.joining(":")); - } - - private static Random getPRNG(String seed) { - try { - SecureRandom rand = SecureRandom.getInstance("SHA1PRNG"); - rand.setSeed(seed.getBytes()); - return rand; - } catch (NoSuchAlgorithmException e) { - throw new RuntimeException("Failed to get pseudo-random number generator", e); - } - } } diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java index 3b8b0a84e64..57d2c738904 100644 --- a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java @@ -1,15 +1,12 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.dockerapi; - import com.yahoo.config.provision.DockerImage; import org.junit.Test; import java.net.InetAddress; import java.net.UnknownHostException; import java.nio.file.Paths; -import java.util.Optional; -import java.util.stream.Stream; import static org.junit.Assert.assertEquals; @@ -64,21 +61,4 @@ public class CreateContainerCommandImplTest { "arg1 " + "arg2", createContainerCommand.toString()); } - - @Test - public void generateMacAddressTest() { - String[][] addresses = { - {"test123.host.yahoo.com", null, "abcd:1234::1", "ee:ae:a9:de:ad:c2"}, - {"test123.host.yahoo.com", null, "abcd:1234::2", "fa:81:11:1b:ff:fb"}, - {"unique.host.yahoo.com", null, "abcd:1234::1", "96:a4:00:77:90:3b"}, - {"test123.host.yahoo.com", "10.0.0.1", null, "7e:de:b3:7c:9e:96"}, - {"test123.host.yahoo.com", "10.0.0.1", "abcd:1234::1", "6a:06:af:16:25:95"}}; - - Stream.of(addresses).forEach(address -> { - String generatedMac = CreateContainerCommandImpl.generateMACAddress( - Optional.of(address[0]), Optional.ofNullable(address[1]), Optional.ofNullable(address[2])); - String expectedMac = address[3]; - assertEquals(expectedMac, generatedMac); - }); - } } -- cgit v1.2.3