summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2018-10-17 15:41:06 +0200
committerValerij Fredriksen <valerijf@oath.com>2018-10-17 15:50:42 +0200
commit0a00751e3a46ce4507e6f417744ffc7adbae8bc2 (patch)
tree64519c9fd13e3c56f0fdc34654295aa4fdf8777d /node-admin
parent4a4e796c9dcedf15cbee4d18ea4d2f04afd058ed (diff)
Remove Environment from NodeAgent and AclMaintainer
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java20
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java25
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java15
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java34
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java43
6 files changed, 48 insertions, 93 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java
index 88fb5dcb90f..a733a52ea10 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainer.java
@@ -2,11 +2,10 @@
package com.yahoo.vespa.hosted.node.admin.maintenance.acl;
import com.google.common.net.InetAddresses;
+import com.yahoo.config.provision.HostName;
import com.yahoo.vespa.hosted.dockerapi.Container;
-import com.yahoo.vespa.hosted.node.admin.component.Environment;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerNetworking;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.task.util.network.IPAddresses;
import com.yahoo.vespa.hosted.node.admin.task.util.network.IPVersion;
@@ -31,23 +30,21 @@ import java.util.stream.Collectors;
* @author mpolden
* @author smorgrav
*/
-public class AclMaintainer implements Runnable {
+public class AclMaintainer {
private static final PrefixLogger log = PrefixLogger.getNodeAdminLogger(AclMaintainer.class);
private final DockerOperations dockerOperations;
private final NodeRepository nodeRepository;
private final IPAddresses ipAddresses;
- private final String nodeAdminHostname;
- private final Environment environment;
+ private final String hostHostname;
public AclMaintainer(DockerOperations dockerOperations, NodeRepository nodeRepository,
- String nodeAdminHostname, IPAddresses ipAddresses, Environment environment) {
+ HostName hostHostname, IPAddresses ipAddresses) {
this.dockerOperations = dockerOperations;
this.nodeRepository = nodeRepository;
this.ipAddresses = ipAddresses;
- this.nodeAdminHostname = nodeAdminHostname;
- this.environment = environment;
+ this.hostHostname = hostHostname.value();
}
private void applyRedirect(Container container, InetAddress address) {
@@ -68,21 +65,18 @@ public class AclMaintainer implements Runnable {
}
private synchronized void configureAcls() {
- if (environment.getDockerNetworking() != DockerNetworking.NPT) return;
-
log.info("Configuring ACLs"); // Needed to potentially nail down when ACL maintainer stopped working
Map<String, Container> runningContainers = dockerOperations
.getAllManagedContainers().stream()
.filter(container -> container.state.isRunning())
.collect(Collectors.toMap(container -> container.hostname, container -> container));
- nodeRepository.getAcls(nodeAdminHostname).entrySet().stream()
+ nodeRepository.getAcls(hostHostname).entrySet().stream()
.filter(entry -> runningContainers.containsKey(entry.getKey()))
.forEach(entry -> apply(runningContainers.get(entry.getKey()), entry.getValue()));
}
- @Override
- public void run() {
+ public void converge() {
try {
configureAcls();
} catch (Throwable t) {
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java
index d436e214266..b1c1a99a90a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImpl.java
@@ -7,7 +7,7 @@ import com.yahoo.vespa.hosted.dockerapi.metrics.Dimensions;
import com.yahoo.vespa.hosted.dockerapi.metrics.GaugeWrapper;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
+import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer;
import com.yahoo.vespa.hosted.node.admin.nodeagent.NodeAgent;
import com.yahoo.vespa.hosted.node.admin.util.PrefixLogger;
@@ -18,6 +18,7 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
@@ -39,7 +40,7 @@ public class NodeAdminImpl implements NodeAdmin {
Executors.newScheduledThreadPool(1, ThreadFactoryFactory.getDaemonThreadFactory("metricsscheduler"));
private final Function<String, NodeAgent> nodeAgentFactory;
- private final Runnable aclMaintainer;
+ private final Optional<AclMaintainer> aclMaintainer;
private final Clock clock;
private boolean previousWantFrozen;
@@ -51,16 +52,8 @@ public class NodeAdminImpl implements NodeAdmin {
private final GaugeWrapper numberOfContainersInLoadImageState;
private final CounterWrapper numberOfUnhandledExceptionsInNodeAgent;
- public NodeAdminImpl(DockerOperations dockerOperations,
- Function<String, NodeAgent> nodeAgentFactory,
- Runnable aclMaintainer,
- MetricReceiverWrapper metricReceiver,
- Clock clock) {
- this(nodeAgentFactory, aclMaintainer, metricReceiver, clock);
- }
-
public NodeAdminImpl(Function<String, NodeAgent> nodeAgentFactory,
- Runnable aclMaintainer,
+ Optional<AclMaintainer> aclMaintainer,
MetricReceiverWrapper metricReceiver,
Clock clock) {
this.nodeAgentFactory = nodeAgentFactory;
@@ -175,10 +168,12 @@ public class NodeAdminImpl implements NodeAdmin {
}
}, 10, 55, TimeUnit.SECONDS);
- int delay = 120; // WARNING: Reducing this will increase the load on config servers.
- aclScheduler.scheduleWithFixedDelay(() -> {
- if (!isFrozen()) aclMaintainer.run();
- }, 30, delay, TimeUnit.SECONDS);
+ aclMaintainer.ifPresent(maintainer -> {
+ int delay = 120; // WARNING: Reducing this will increase the load on config servers.
+ aclScheduler.scheduleWithFixedDelay(() -> {
+ if (!isFrozen()) maintainer.converge();
+ }, 30, delay, TimeUnit.SECONDS);
+ });
}
@Override
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
index 8f26013e42c..c3a6eabea2b 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java
@@ -22,7 +22,7 @@ import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.OrchestratorException;
-import com.yahoo.vespa.hosted.node.admin.component.Environment;
+import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.identity.AthenzCredentialsMaintainer;
import com.yahoo.vespa.hosted.provision.Node;
@@ -72,11 +72,10 @@ public class NodeAgentImpl implements NodeAgent {
private final Orchestrator orchestrator;
private final DockerOperations dockerOperations;
private final StorageMaintainer storageMaintainer;
- private final Runnable aclMaintainer;
- private final Environment environment;
private final Clock clock;
private final Duration timeBetweenEachConverge;
private final Optional<AthenzCredentialsMaintainer> athenzCredentialsMaintainer;
+ private final Optional<AclMaintainer> aclMaintainer;
private int numberOfUnhandledException = 0;
private Instant lastConverge;
@@ -116,22 +115,20 @@ public class NodeAgentImpl implements NodeAgent {
final Orchestrator orchestrator,
final DockerOperations dockerOperations,
final StorageMaintainer storageMaintainer,
- final Runnable aclMaintainer,
- final Environment environment,
final Clock clock,
final Duration timeBetweenEachConverge,
- final Optional<AthenzCredentialsMaintainer> athenzCredentialsMaintainer) {
+ final Optional<AthenzCredentialsMaintainer> athenzCredentialsMaintainer,
+ final Optional<AclMaintainer> aclMaintainer) {
this.context = context;
this.nodeRepository = nodeRepository;
this.orchestrator = orchestrator;
this.dockerOperations = dockerOperations;
this.storageMaintainer = storageMaintainer;
- this.aclMaintainer = aclMaintainer;
- this.environment = environment;
this.clock = clock;
this.timeBetweenEachConverge = timeBetweenEachConverge;
this.lastConverge = clock.instant();
this.athenzCredentialsMaintainer = athenzCredentialsMaintainer;
+ this.aclMaintainer = aclMaintainer;
this.loopThread = new Thread(() -> {
try {
@@ -508,7 +505,7 @@ public class NodeAgentImpl implements NodeAgent {
containerState = STARTING;
startContainer(node);
containerState = UNKNOWN;
- aclMaintainer.run();
+ aclMaintainer.ifPresent(AclMaintainer::converge);
}
verifyHealth(node);
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java
index 5b882461937..a270585bcaa 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/acl/AclMaintainerTest.java
@@ -1,14 +1,13 @@
// 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.node.admin.maintenance.acl;
+import com.yahoo.config.provision.HostName;
import com.yahoo.vespa.hosted.dockerapi.Container;
import com.yahoo.vespa.hosted.dockerapi.ContainerName;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
import com.yahoo.vespa.hosted.dockerapi.ProcessResult;
-import com.yahoo.vespa.hosted.node.admin.component.Environment;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.Acl;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerNetworking;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.task.util.network.IPAddressesMock;
import com.yahoo.vespa.hosted.node.admin.task.util.network.IPVersion;
@@ -32,21 +31,18 @@ import static org.mockito.Mockito.when;
public class AclMaintainerTest {
- private static final String NODE_ADMIN_HOSTNAME = "node-admin.region-1.yahoo.com";
-
+ private final HostName hostHostname = HostName.from("node-admin.region-1.yahoo.com");
private final IPAddressesMock ipAddresses = new IPAddressesMock();
private final DockerOperations dockerOperations = mock(DockerOperations.class);
private final NodeRepository nodeRepository = mock(NodeRepository.class);
private final Map<String, Container> containers = new HashMap<>();
private final List<Container> containerList = new ArrayList<>();
- private final Environment env = mock(Environment.class);
private final AclMaintainer aclMaintainer =
- new AclMaintainer(dockerOperations, nodeRepository, NODE_ADMIN_HOSTNAME, ipAddresses, env);
+ new AclMaintainer(dockerOperations, nodeRepository, hostHostname, ipAddresses);
@Before
public void before() {
when(dockerOperations.getAllManagedContainers()).thenReturn(containerList);
- when(env.getDockerNetworking()).thenReturn(DockerNetworking.NPT);
}
@Test
@@ -54,14 +50,14 @@ public class AclMaintainerTest {
Container container = addContainer("container1", "container1.host.com", Container.State.RUNNING);
Map<String, Acl> acls = makeAcl(container.hostname, "4321", "2001::1");
- when(nodeRepository.getAcls(NODE_ADMIN_HOSTNAME)).thenReturn(acls);
+ when(nodeRepository.getAcls(hostHostname.value())).thenReturn(acls);
whenListRules(container.name, "filter", IPVersion.IPv6, "");
whenListRules(container.name, "filter", IPVersion.IPv4, "");
whenListRules(container.name, "nat", IPVersion.IPv4, "");
whenListRules(container.name, "nat", IPVersion.IPv6, "");
- aclMaintainer.run();
+ aclMaintainer.converge();
verify(dockerOperations, times(1)).executeCommandInNetworkNamespace(eq(container.name), eq("iptables-restore"), anyVararg()); //we don;t have a ip4 address for the container so no redirect either
verify(dockerOperations, times(2)).executeCommandInNetworkNamespace(eq(container.name), eq("ip6tables-restore"), anyVararg());
@@ -72,14 +68,14 @@ public class AclMaintainerTest {
Container container = addContainer("container1", "container1.host.com", Container.State.RUNNING);
Map<String, Acl> acls = makeAcl(container.hostname, "4321", "2001::1");
- when(nodeRepository.getAcls(NODE_ADMIN_HOSTNAME)).thenReturn(acls);
+ when(nodeRepository.getAcls(hostHostname.value())).thenReturn(acls);
whenListRules(container.name, "filter", IPVersion.IPv6, "");
whenListRules(container.name, "filter", IPVersion.IPv4, "");
whenListRules(container.name, "nat", IPVersion.IPv4, "");
whenListRules(container.name, "nat", IPVersion.IPv6, "");
- aclMaintainer.run();
+ aclMaintainer.converge();
verify(dockerOperations, times(1)).executeCommandInNetworkNamespace(eq(container.name), eq("iptables-restore"), anyVararg()); //we don;t have a ip4 address for the container so no redirect either
verify(dockerOperations, times(2)).executeCommandInNetworkNamespace(eq(container.name), eq("ip6tables-restore"), anyVararg());
@@ -90,9 +86,9 @@ public class AclMaintainerTest {
Container container = addContainer("container1", "container1.host.com", Container.State.EXITED);
Map<String, Acl> acls = makeAcl(container.hostname, "4321", "2001::1");
- when(nodeRepository.getAcls(NODE_ADMIN_HOSTNAME)).thenReturn(acls);
+ when(nodeRepository.getAcls(hostHostname.value())).thenReturn(acls);
- aclMaintainer.run();
+ aclMaintainer.converge();
verify(dockerOperations, never()).executeCommandInNetworkNamespace(eq(container.name), anyVararg());
}
@@ -102,7 +98,7 @@ public class AclMaintainerTest {
Container container = addContainer("container1", "container1.host.com", Container.State.RUNNING);
Map<String, Acl> acls = makeAcl(container.hostname, "4321,2345,22", "2001::1", "fd01:1234::4321");
- when(nodeRepository.getAcls(NODE_ADMIN_HOSTNAME)).thenReturn(acls);
+ when(nodeRepository.getAcls(hostHostname.value())).thenReturn(acls);
String IPV6 = "-P INPUT ACCEPT\n" +
"-P FORWARD ACCEPT\n" +
@@ -125,7 +121,7 @@ public class AclMaintainerTest {
whenListRules(container.name, "filter", IPVersion.IPv4, ""); //IPv4 will then differ from wanted
whenListRules(container.name, "nat", IPVersion.IPv6, NATv6);
- aclMaintainer.run();
+ aclMaintainer.converge();
verify(dockerOperations, times(1)).executeCommandInNetworkNamespace(eq(container.name), eq("iptables-restore"), anyVararg());
verify(dockerOperations, never()).executeCommandInNetworkNamespace(eq(container.name), eq("ip6tables-restore"), anyVararg());
@@ -136,7 +132,7 @@ public class AclMaintainerTest {
Container container = addContainer("container1", "container1.host.com", Container.State.RUNNING);
Map<String, Acl> acls = makeAcl(container.hostname, "22,4443,2222", "2001::1", "192.64.13.2");
- when(nodeRepository.getAcls(NODE_ADMIN_HOSTNAME)).thenReturn(acls);
+ when(nodeRepository.getAcls(hostHostname.value())).thenReturn(acls);
String IPV4_FILTER = "-P INPUT ACCEPT\n" +
"-P FORWARD ACCEPT\n" +
@@ -168,7 +164,7 @@ public class AclMaintainerTest {
whenListRules(container.name, "nat", IPVersion.IPv6, IPV6_NAT);
whenListRules(container.name, "filter", IPVersion.IPv4, IPV4_FILTER);
- aclMaintainer.run();
+ aclMaintainer.converge();
verify(dockerOperations, never()).executeCommandInNetworkNamespace(any(), eq("ip6tables-restore"), anyVararg());
verify(dockerOperations, never()).executeCommandInNetworkNamespace(any(), eq("iptables-restore"), anyVararg());
@@ -179,7 +175,7 @@ public class AclMaintainerTest {
public void rollback_is_attempted_when_applying_acl_fail() {
Container container = addContainer("container1", "container1.host.com", Container.State.RUNNING);
Map<String, Acl> acls = makeAcl(container.hostname, "4321", "2001::1");
- when(nodeRepository.getAcls(NODE_ADMIN_HOSTNAME)).thenReturn(acls);
+ when(nodeRepository.getAcls(hostHostname.value())).thenReturn(acls);
String IPV6_NAT = "-P PREROUTING ACCEPT\n" +
"-P INPUT ACCEPT\n" +
@@ -199,7 +195,7 @@ public class AclMaintainerTest {
eq(container.name),
eq("iptables-restore"), anyVararg())).thenThrow(new RuntimeException("iptables restore failed"));
- aclMaintainer.run();
+ aclMaintainer.converge();
verify(dockerOperations, times(1)).executeCommandInNetworkNamespace(eq(container.name),
eq("ip6tables"), eq("-F"), eq("-t"), eq("filter"));
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java
index 2431433b17f..bb229a10f59 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeadmin/NodeAdminImplTest.java
@@ -14,6 +14,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
@@ -37,10 +38,9 @@ public class NodeAdminImplTest {
// Trick to allow mocking of typed interface without casts/warnings.
private interface NodeAgentFactory extends Function<String, NodeAgent> {}
private final Function<String, NodeAgent> nodeAgentFactory = mock(NodeAgentFactory.class);
- private final Runnable aclMaintainer = mock(Runnable.class);
private final ManualClock clock = new ManualClock();
- private final NodeAdminImpl nodeAdmin = new NodeAdminImpl(nodeAgentFactory, aclMaintainer,
+ private final NodeAdminImpl nodeAdmin = new NodeAdminImpl(nodeAgentFactory, Optional.empty(),
new MetricReceiverWrapper(MetricReceiver.nullImplementation), clock);
@Test
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
index 42e20311eb5..00326f90caa 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java
@@ -12,22 +12,17 @@ import com.yahoo.vespa.hosted.dockerapi.exception.DockerException;
import com.yahoo.vespa.hosted.dockerapi.DockerImage;
import com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec;
-import com.yahoo.vespa.hosted.node.admin.config.ConfigServerConfig;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttributes;
-import com.yahoo.vespa.hosted.node.admin.docker.DockerNetworking;
import com.yahoo.vespa.hosted.node.admin.docker.DockerOperations;
import com.yahoo.vespa.hosted.node.admin.maintenance.StorageMaintainer;
import com.yahoo.vespa.hosted.node.admin.maintenance.acl.AclMaintainer;
import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository;
import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator;
-import com.yahoo.vespa.hosted.node.admin.component.Environment;
import com.yahoo.vespa.hosted.node.admin.maintenance.identity.AthenzCredentialsMaintainer;
-import com.yahoo.vespa.hosted.node.admin.component.PathResolver;
import com.yahoo.vespa.hosted.provision.Node;
import org.junit.Test;
import org.mockito.InOrder;
-import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -80,18 +75,7 @@ public class NodeAgentImplTest {
Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap());
private final AthenzCredentialsMaintainer athenzCredentialsMaintainer = mock(AthenzCredentialsMaintainer.class);
- private final PathResolver pathResolver = mock(PathResolver.class);
private final ManualClock clock = new ManualClock();
- private final Environment environment = new Environment.Builder()
- .configServerConfig(new ConfigServerConfig(new ConfigServerConfig.Builder()))
- .environment("dev")
- .region("us-east-1")
- .system("main")
- .cloud("mycloud")
- .parentHostHostname("parent.host.name.yahoo.com")
- .pathResolver(pathResolver)
- .dockerNetworking(DockerNetworking.HOST_NETWORK)
- .build();
private final NodeSpec.Builder nodeBuilder = new NodeSpec.Builder()
.hostname(context.hostname().value())
@@ -196,7 +180,7 @@ public class NodeAgentImplTest {
}
@Test
- public void absentContainerCausesStart() throws Exception {
+ public void absentContainerCausesStart() {
final Optional<Long> restartGeneration = Optional.of(1L);
final long rebootGeneration = 0;
final NodeSpec node = nodeBuilder
@@ -211,8 +195,6 @@ public class NodeAgentImplTest {
NodeAgentImpl nodeAgent = makeNodeAgent(null, false);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
- when(pathResolver.getApplicationStoragePathForNodeAdmin()).thenReturn(Files.createTempDirectory("foo"));
- when(pathResolver.getApplicationStoragePathForHost()).thenReturn(Files.createTempDirectory("bar"));
when(dockerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false);
when(storageMaintainer.getDiskUsageFor(eq(context))).thenReturn(Optional.of(201326592000L));
@@ -226,7 +208,7 @@ public class NodeAgentImplTest {
inOrder.verify(dockerOperations, times(1)).pullImageAsyncIfNeeded(eq(dockerImage));
inOrder.verify(dockerOperations, times(1)).createContainer(eq(context), eq(node), any());
inOrder.verify(dockerOperations, times(1)).startContainer(eq(context));
- inOrder.verify(aclMaintainer, times(1)).run();
+ inOrder.verify(aclMaintainer, times(1)).converge();
inOrder.verify(dockerOperations, times(1)).resumeNode(eq(context));
inOrder.verify(nodeRepository).updateNodeAttributes(
hostName, new NodeAttributes()
@@ -268,7 +250,7 @@ public class NodeAgentImplTest {
}
@Test
- public void containerIsRestartedIfFlavorChanged() throws IOException {
+ public void containerIsRestartedIfFlavorChanged() {
final long wantedRestartGeneration = 1;
final long currentRestartGeneration = 1;
NodeSpec.Builder specBuilder = nodeBuilder
@@ -291,7 +273,6 @@ public class NodeAgentImplTest {
.thenReturn(Optional.of(thirdSpec));
when(dockerOperations.pullImageAsyncIfNeeded(any())).thenReturn(true);
when(storageMaintainer.getDiskUsageFor(eq(context))).thenReturn(Optional.of(201326592000L));
- when(pathResolver.getApplicationStoragePathForHost()).thenReturn(Files.createTempDirectory("bar"));
nodeAgent.converge();
nodeAgent.converge();
@@ -501,7 +482,7 @@ public class NodeAgentImplTest {
}
@Test
- public void testRestartDeadContainerAfterNodeAdminRestart() throws IOException {
+ public void testRestartDeadContainerAfterNodeAdminRestart() {
final NodeSpec node = nodeBuilder
.currentDockerImage(dockerImage)
.wantedDockerImage(dockerImage)
@@ -512,8 +493,6 @@ public class NodeAgentImplTest {
NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, false);
when(nodeRepository.getOptionalNode(eq(hostName))).thenReturn(Optional.of(node));
- when(pathResolver.getApplicationStoragePathForNodeAdmin()).thenReturn(Files.createTempDirectory("foo"));
- when(pathResolver.getApplicationStoragePathForHost()).thenReturn(Files.createTempDirectory("bar"));
when(storageMaintainer.getDiskUsageFor(eq(context))).thenReturn(Optional.of(201326592000L));
nodeAgent.tick();
@@ -590,7 +569,7 @@ public class NodeAgentImplTest {
}
@Test
- public void start_container_subtask_failure_leads_to_container_restart() throws IOException {
+ public void start_container_subtask_failure_leads_to_container_restart() {
final long restartGeneration = 1;
final long rebootGeneration = 0;
final NodeSpec node = nodeBuilder
@@ -605,8 +584,6 @@ public class NodeAgentImplTest {
NodeAgentImpl nodeAgent = spy(makeNodeAgent(null, false));
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
- when(pathResolver.getApplicationStoragePathForNodeAdmin()).thenReturn(Files.createTempDirectory("foo"));
- when(pathResolver.getApplicationStoragePathForHost()).thenReturn(Files.createTempDirectory("bar"));
when(dockerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false);
when(storageMaintainer.getDiskUsageFor(eq(context))).thenReturn(Optional.of(201326592000L));
doThrow(new DockerException("Failed to set up network")).doNothing().when(dockerOperations).startContainer(eq(context));
@@ -669,7 +646,6 @@ public class NodeAgentImplTest {
when(dockerOperations.getContainerStats(eq(context)))
.thenReturn(Optional.of(stats1))
.thenReturn(Optional.of(stats2));
- when(pathResolver.getApplicationStoragePathForHost()).thenReturn(Files.createTempDirectory("bar"));
nodeAgent.converge(); // Run the converge loop once to initialize lastNode
nodeAgent.updateContainerNodeMetrics(); // Update metrics once to init and lastCpuMetric
@@ -718,7 +694,7 @@ public class NodeAgentImplTest {
}
@Test
- public void testRunningConfigServer() throws IOException {
+ public void testRunningConfigServer() {
final long rebootGeneration = 0;
final NodeSpec node = nodeBuilder
.nodeType(NodeType.config)
@@ -730,8 +706,6 @@ public class NodeAgentImplTest {
NodeAgentImpl nodeAgent = makeNodeAgent(null, false);
when(nodeRepository.getOptionalNode(hostName)).thenReturn(Optional.of(node));
- Path tempDirectory = Files.createTempDirectory("foo");
- when(pathResolver.getApplicationStoragePathForHost()).thenReturn(tempDirectory);
when(dockerOperations.pullImageAsyncIfNeeded(eq(dockerImage))).thenReturn(false);
when(storageMaintainer.getDiskUsageFor(eq(context))).thenReturn(Optional.of(201326592000L));
@@ -744,7 +718,7 @@ public class NodeAgentImplTest {
inOrder.verify(dockerOperations, times(1)).pullImageAsyncIfNeeded(eq(dockerImage));
inOrder.verify(dockerOperations, times(1)).createContainer(eq(context), eq(node), any());
inOrder.verify(dockerOperations, times(1)).startContainer(eq(context));
- inOrder.verify(aclMaintainer, times(1)).run();
+ inOrder.verify(aclMaintainer, times(1)).converge();
inOrder.verify(dockerOperations, times(1)).resumeNode(eq(context));
inOrder.verify(nodeRepository).updateNodeAttributes(
hostName, new NodeAttributes()
@@ -757,11 +731,10 @@ public class NodeAgentImplTest {
mockGetContainer(dockerImage, isRunning);
when(dockerOperations.getContainerStats(any())).thenReturn(Optional.of(emptyContainerStats));
- doNothing().when(storageMaintainer).writeFilebeatConfig(any(), any());
doNothing().when(storageMaintainer).writeMetricsConfig(any(), any());
return new NodeAgentImpl(context, nodeRepository, orchestrator, dockerOperations,
- storageMaintainer, aclMaintainer, environment, clock, NODE_AGENT_SCAN_INTERVAL, Optional.of(athenzCredentialsMaintainer));
+ storageMaintainer, clock, NODE_AGENT_SCAN_INTERVAL, Optional.of(athenzCredentialsMaintainer), Optional.of(aclMaintainer));
}
private void mockGetContainer(DockerImage dockerImage, boolean isRunning) {