summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2017-12-04 01:53:13 +0100
committerHåkon Hallingstad <hakon@oath.com>2017-12-04 01:53:13 +0100
commit6842226338027546f77fb46d4d738d101bab9e07 (patch)
tree673ce1efdae0f2570733cdc8cc45f98be7f6efa7 /node-admin
parent7635f081e3ef57797de662b77206e64236960e68 (diff)
Support making standalone container and node admin RPMs
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/resources/services.xml23
-rwxr-xr-xnode-admin/src/main/sh/node-admin82
-rw-r--r--node-admin/vespa-node-admin.spec49
3 files changed, 154 insertions, 0 deletions
diff --git a/node-admin/src/main/resources/services.xml b/node-admin/src/main/resources/services.xml
new file mode 100644
index 00000000000..57bdf8b7af2
--- /dev/null
+++ b/node-admin/src/main/resources/services.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<jdisc id="node-admin" jetty="true" version="1.0">
+ <!-- Please update container test when changing this file -->
+ <accesslog type="vespa" fileNamePattern="logs/vespa/node-admin/access.log.%Y%m%d%H%M%S" rotationScheme="date" symlinkName="access.log" />
+ <handler id="com.yahoo.vespa.hosted.node.admin.restapi.RestApiHandler" bundle="node-admin">
+ <binding>http://*/rest/*</binding>
+ </handler>
+ <component id="node-admin" class="com.yahoo.vespa.hosted.node.admin.provider.NodeAdminProvider" bundle="node-admin"/>
+ <component id="docker-api" class="com.yahoo.vespa.hosted.dockerapi.DockerImpl" bundle="docker-api"/>
+ <component id="metrics-wrapper" class="com.yahoo.vespa.hosted.dockerapi.metrics.MetricReceiverWrapper" bundle="docker-api"/>
+
+ <config name='vespa.hosted.dockerapi.docker'>
+ <isRunningLocally>false</isRunningLocally>
+ </config>
+
+ <config name='vespa.hosted.node.admin.node-admin'>
+ <isRunningLocally>false</isRunningLocally>
+ <restartOnDeploy>true</restartOnDeploy>
+ </config>
+
+ <nodes jvmargs="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:5555 -Dvespa.freezedetector.disable=true" type="host"/>
+</jdisc>
diff --git a/node-admin/src/main/sh/node-admin b/node-admin/src/main/sh/node-admin
new file mode 100755
index 00000000000..8a8963eeed0
--- /dev/null
+++ b/node-admin/src/main/sh/node-admin
@@ -0,0 +1,82 @@
+#!/bin/bash
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# BEGIN environment bootstrap section
+# Do not edit between here and END as this section should stay identical in all scripts
+
+findpath () {
+ myname=${0}
+ mypath=${myname%/*}
+ myname=${myname##*/}
+ if [ "$mypath" ] && [ -d "$mypath" ]; then
+ return
+ fi
+ mypath=$(pwd)
+ if [ -f "${mypath}/${myname}" ]; then
+ return
+ fi
+ echo "FATAL: Could not figure out the path where $myname lives from $0"
+ exit 1
+}
+
+COMMON_ENV=libexec/vespa/common-env.sh
+
+source_common_env () {
+ if [ "$VESPA_HOME" ] && [ -d "$VESPA_HOME" ]; then
+ export VESPA_HOME
+ common_env=$VESPA_HOME/$COMMON_ENV
+ if [ -f "$common_env" ]; then
+ . $common_env
+ return
+ fi
+ fi
+ return 1
+}
+
+findroot () {
+ source_common_env && return
+ if [ "$VESPA_HOME" ]; then
+ echo "FATAL: bad VESPA_HOME value '$VESPA_HOME'"
+ exit 1
+ fi
+ if [ "$ROOT" ] && [ -d "$ROOT" ]; then
+ VESPA_HOME="$ROOT"
+ source_common_env && return
+ fi
+ findpath
+ while [ "$mypath" ]; do
+ VESPA_HOME=${mypath}
+ source_common_env && return
+ mypath=${mypath%/*}
+ done
+ echo "FATAL: missing VESPA_HOME environment variable"
+ echo "Could not locate $COMMON_ENV anywhere"
+ exit 1
+}
+
+findroot
+
+# END environment bootstrap section
+
+Usage() {
+ cat <<EOF
+Usage: ${0##*/} [start|stop]
+Manage standalone node admin
+EOF
+
+ exit 1
+}
+
+if (( $# != 1 )); then
+ Usage
+fi
+
+case "$1" in
+ start)
+ "$VESPA_HOME"/libexec/vespa/jdisc-container start -s node-admin -u root
+ ;;
+ stop)
+ "$VESPA_HOME"/libexec/vespa/jdisc-container stop -s node-admin -u root
+ ;;
+ *) Usage ;;
+esac
diff --git a/node-admin/vespa-node-admin.spec b/node-admin/vespa-node-admin.spec
new file mode 100644
index 00000000000..8c0eb23533c
--- /dev/null
+++ b/node-admin/vespa-node-admin.spec
@@ -0,0 +1,49 @@
+# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+# Force special prefix for Vespa
+%define _prefix /opt/vespa
+
+# Hack to speed up jar packing for now. This does not affect the rpm size.
+%define __jar_repack %{nil}
+
+Name: vespa-node-admin
+Version: %version
+Release: 1%{?dist}
+BuildArch: noarch
+Summary: Vespa Node Admin
+Group: Applications/Databases
+License: Commercial
+URL: http://vespa.ai
+
+Requires: bash
+Requires: java-1.8.0-openjdk-headless
+Requires: vespa-jdisc-container
+
+Conflicts: vespa
+
+%description
+The Node Admin manages the machine so it is a suitable host for one or more
+Vespa nodes.
+
+%install
+app_dir=%?buildroot%_prefix/conf/node-admin-app
+mkdir -p "$app_dir"/components
+cp node-admin/src/main/resources/services.xml "$app_dir"
+
+declare -a jar_components=(
+ node-admin/target/node-admin-jar-with-dependencies.jar
+ docker-api/target/docker-api-jar-with-dependencies.jar
+)
+for path in "${jar_components[@]}"; do
+ cp "$path" "$app_dir"/components
+done
+
+mkdir -p %buildroot%_prefix/libexec/vespa
+cp node-admin/src/main/sh/node-admin %buildroot%_prefix/libexec/vespa
+
+%clean
+rm -rf %buildroot
+
+%files
+%defattr(-,vespa,vespa,-)
+%_prefix/*