summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/pom.xml15
-rwxr-xr-xnode-admin/scripts/maintenance.sh2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java22
-rw-r--r--node-admin/src/test/resources/simple-ipv6-server/Dockerfile11
-rw-r--r--node-admin/src/test/resources/simple-ipv6-server/README8
-rw-r--r--node-admin/src/test/resources/simple-ipv6-server/src/server.py40
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()