diff options
author | HÃ¥kon Hallingstad <hakon@oath.com> | 2017-12-06 00:45:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-06 00:45:03 +0100 |
commit | 351229b42387bbef47163e423f0c1c570f1dbeb1 (patch) | |
tree | c2a5d7a5177ffe238251767c8d0d03e95356968d /node-admin | |
parent | 19a7d1c0469fa8222b009ac985bc2740aea922a5 (diff) | |
parent | be7e101b46a75a92f28de4ed2e16c1bb0f405519 (diff) |
Merge pull request #4333 from vespa-engine/hakonhall/support-making-standalone-container-and-node-admin-rpms
Support making standalone container and node admin RPMs
Diffstat (limited to 'node-admin')
-rw-r--r-- | node-admin/src/main/application/services.xml | 23 | ||||
-rwxr-xr-x | node-admin/src/main/sh/node-admin.sh | 82 | ||||
-rw-r--r-- | node-admin/vespa-node-admin.spec | 49 |
3 files changed, 154 insertions, 0 deletions
diff --git a/node-admin/src/main/application/services.xml b/node-admin/src/main/application/services.xml new file mode 100644 index 00000000000..030c42ac8c5 --- /dev/null +++ b/node-admin/src/main/application/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 type="host"/> +</jdisc> diff --git a/node-admin/src/main/sh/node-admin.sh b/node-admin/src/main/sh/node-admin.sh new file mode 100755 index 00000000000..ff0ea492318 --- /dev/null +++ b/node-admin/src/main/sh/node-admin.sh @@ -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/standalone-container.sh start -s node-admin -u root + ;; + stop) + "$VESPA_HOME"/libexec/vespa/standalone-container.sh 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..ecdd9a02e95 --- /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-standalone-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/* |