diff options
Diffstat (limited to 'node-admin')
7 files changed, 27 insertions, 75 deletions
diff --git a/node-admin/pom.xml b/node-admin/pom.xml index 2658826616c..a655a63acaf 100644 --- a/node-admin/pom.xml +++ b/node-admin/pom.xml @@ -19,6 +19,12 @@ <dependencies> <dependency> <groupId>com.yahoo.vespa</groupId> + <artifactId>docker-api</artifactId> + <version>${project.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>com.yahoo.vespa</groupId> <artifactId>node-repository</artifactId> <version>${project.version}</version> <scope>test</scope> @@ -47,12 +53,6 @@ <scope>compile</scope> </dependency> <dependency> - <groupId>com.yahoo.vespa</groupId> - <artifactId>docker-api</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.1</version> @@ -84,6 +84,7 @@ <groupId>com.yahoo.vespa</groupId> <artifactId>application-model</artifactId> <version>${project.version}</version> + <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> @@ -119,6 +120,7 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> + <source>1.8</source> <target>1.8</target> <compilerArgs> @@ -131,6 +133,7 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> + <finalName>node-admin-maintenance</finalName> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> diff --git a/node-admin/scripts/maintenance.sh b/node-admin/scripts/maintenance.sh index 1d5e6c1ee87..f637bdca035 100755 --- a/node-admin/scripts/maintenance.sh +++ b/node-admin/scripts/maintenance.sh @@ -2,7 +2,7 @@ if [ -z "$CLASSPATH" ]; then - CLASSPATH=/home/y/lib/jars/node-admin-maintenance-jar-with-dependencies.jar:/home/y/lib/jars/docker-api-jar-with-dependencies.jar + CLASSPATH=/home/y/lib/jars/node-admin-maintenance-jar-with-dependencies.jar:/home/y/lib/jars/docker-api-jar-with-dependencies.jar:/home/y/lib/jars/vespalog.jar fi java \ 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 e216a4e5ad3..6441695340f 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 @@ -171,13 +171,15 @@ public class NodeAgentImpl implements NodeAgent { } private void updateNodeRepoAndMarkNodeAsReady(ContainerNodeSpec nodeSpec) throws IOException { + /* publishStateToNodeRepoIfChanged( nodeSpec.hostname, // Clear current Docker image and vespa version, as nothing is running on this node new NodeAttributes( - nodeSpec.wantedRestartGeneration.get(), + nodeSpec.wantedRestartGeneration.orElse(0L), new DockerImage(""), "")); + */ nodeRepository.markAsReady(nodeSpec.hostname); } 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 5e38dd30fef..aa1a93e4410 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 @@ -246,9 +246,8 @@ public class NodeAgentImplTest { any(HostName.class), anyLong(), any(DockerImage.class), anyString()); } - private void nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState nodeState) + private void nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState nodeState, Optional<Long> wantedRestartGeneration) throws Exception { - final long restartGeneration = 1; final DockerImage dockerImage = new DockerImage("dockerImage"); final ContainerName containerName = new ContainerName("container-name"); final ContainerNodeSpec nodeSpec = new ContainerNodeSpec( @@ -256,8 +255,8 @@ public class NodeAgentImplTest { Optional.of(dockerImage), containerName, nodeState, - Optional.of(restartGeneration), - Optional.of(restartGeneration), + wantedRestartGeneration, + wantedRestartGeneration, //currentRestartGeneration MIN_CPU_CORES, MIN_MAIN_MEMORY_AVAILABLE_GB, MIN_DISK_AVAILABLE_GB); @@ -275,18 +274,25 @@ public class NodeAgentImplTest { verify(dockerOperations, never()).startContainerIfNeeded(any()); verify(orchestrator, never()).resume(any(HostName.class)); // current Docker image and vespa version should be cleared - verify(nodeRepository, times(1)).updateNodeAttributes( - any(HostName.class), anyLong(), eq(new DockerImage("")), eq("")); + //verify(nodeRepository, times(1)).updateNodeAttributes( + // any(HostName.class), anyLong(), eq(new DockerImage("")), eq("")); + verify(nodeRepository, never()).updateNodeAttributes( + any(HostName.class), anyLong(), any(DockerImage.class), any(String.class)); } @Test public void dirtyNodeRunningContainerIsTakenDownAndCleanedAndRecycled() throws Exception { - nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState.DIRTY); + nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState.DIRTY, Optional.of(1L)); + } + + @Test + public void dirtyNodeRunningContainerIsTakenDownAndCleanedAndRecycledNoRestartGeneration() throws Exception { + nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState.DIRTY, Optional.empty()); } @Test public void provisionedNodeWithNoContainerIsCleanedAndRecycled() throws Exception { - nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState.PROVISIONED); + nodeRunningContainerIsTakenDownAndCleanedAndRecycled(NodeState.PROVISIONED, Optional.of(1L)); } @Test diff --git a/node-admin/src/test/resources/simple-ipv6-server/Dockerfile b/node-admin/src/test/resources/simple-ipv6-server/Dockerfile deleted file mode 100644 index 82237af30f3..00000000000 --- a/node-admin/src/test/resources/simple-ipv6-server/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM gliderlabs/alpine:3.4 - -# Install python and curl -RUN apk-install python curl - -# Copy source -ADD src/ server/src - -# Run http server on port 80 -EXPOSE 80 -CMD ["python", "server/src/server.py"] diff --git a/node-admin/src/test/resources/simple-ipv6-server/README b/node-admin/src/test/resources/simple-ipv6-server/README deleted file mode 100644 index 76a36bb4630..00000000000 --- a/node-admin/src/test/resources/simple-ipv6-server/README +++ /dev/null @@ -1,8 +0,0 @@ -This is the source for a basic docker image that runs a python HTTP server listening at IPv6 port 80. -The server serves two basic paths: - /ip - returns IP address of the requester - /ping - returns string "pong" - - -To build the image run: -$ sudo docker build -t "simple-ipv6-server:Dockerfile" <path to this directory> diff --git a/node-admin/src/test/resources/simple-ipv6-server/src/server.py b/node-admin/src/test/resources/simple-ipv6-server/src/server.py deleted file mode 100644 index 049ecf7247f..00000000000 --- a/node-admin/src/test/resources/simple-ipv6-server/src/server.py +++ /dev/null @@ -1,40 +0,0 @@ -import socket -from BaseHTTPServer import HTTPServer -from SimpleHTTPServer import SimpleHTTPRequestHandler - - -class MyHandler(SimpleHTTPRequestHandler): - def do_GET(self): - if self.path == '/ip': - self.send_response(200) - self.send_header('Content-type', 'text/html') - self.end_headers() - self.wfile.write('Your IP address is %s\n' % self.client_address[0]) - return - - elif self.path == '/ping': - self.send_response(200) - self.send_header('Content-type', 'text/html') - self.end_headers() - self.wfile.write('pong\n') - return - - else: - self.send_response(404) - self.send_header('Content-type', 'text/html') - self.end_headers() - self.wfile.write('Could not find ' + self.path + '! Try /ping or /ip.\n') - return - - -class HTTPServerV6(HTTPServer): - address_family = socket.AF_INET6 - - -def main(): - server = HTTPServerV6(('::', 80), MyHandler) - server.serve_forever() - - -if __name__ == '__main__': - main() |