diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2018-10-17 15:41:06 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2018-10-17 15:50:42 +0200 |
commit | 0a00751e3a46ce4507e6f417744ffc7adbae8bc2 (patch) | |
tree | 64519c9fd13e3c56f0fdc34654295aa4fdf8777d /node-admin | |
parent | 4a4e796c9dcedf15cbee4d18ea4d2f04afd058ed (diff) |
Remove Environment from NodeAgent and AclMaintainer
Diffstat (limited to 'node-admin')
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) { |