index : builder | |
Archlinux32 build system | gitolite user |
summaryrefslogtreecommitdiff |
-rwxr-xr-x | bin/manage-slaves | 37 |
diff --git a/bin/manage-slaves b/bin/manage-slaves index cddda84..fa1413d 100755 --- a/bin/manage-slaves +++ b/bin/manage-slaves @@ -1,4 +1,4 @@ -#!/bin/sh +#!/usr/bin/env bash # shellcheck source=../lib/load-configuration . "${0%/*}/../lib/load-configuration" @@ -9,7 +9,8 @@ usage() { >&2 echo 'manage-slaves $action [parameters]: manage the list of build slaves' >&2 echo '' >&2 echo 'possible actions:' - >&2 echo ' add $name $owner $ssh-key-fingerprint' + >&2 echo ' list' + >&2 echo ' add $name $owner $ssh-key-type $ssh-key-fingerprint' >&2 echo ' disable $name' >&2 echo ' enable $name' exit 1 @@ -33,10 +34,26 @@ if errors=$( fi case "$1" in + 'list') + # shellcheck disable=SC2016 + { + printf 'SELECT' + printf ' name, CASE WHEN access_allowed = 1 THEN "enabled" ELSE "disabled" END ' + printf ' name, CASE WHEN is_sane = 1 THEN "sane" ELSE "not sane" END ' + printf ' FROM build_slaves' + printf ';\n' + } | \ + mysql_run_query | \ + tr '\t' ' ' + ;; 'add') shift - if [ $# -ne 3 ]; then - >&2 printf '"add" expects 3 parameters, %s were given\n' "$#" + if [ $# -ne 4 ]; then + >&2 printf '"add" expects 4 parameters, %s were given\n' "$#" + usage + fi + if [[ $3 != ssh-* ]]; then + >&2 printf '"$ssh-key-type" must start with "ssh-", "%s" was given\n' "${3}" usage fi person_id=$( @@ -81,10 +98,11 @@ case "$1" in fi # shellcheck disable=SC2016 { - printf 'INSERT INTO `ssh_keys`(`owner`,`fingerprint`)' + printf 'INSERT INTO `ssh_keys`(`owner`,`fingerprint`,`type`)' printf ' VALUES' - printf ' (%s,"%s");\n' \ + printf ' (%s,"%s","%s");\n' \ "${person_id}" \ + "${4}" \ "${3}" printf 'INSERT INTO `build_slaves`(' printf '`name`,' @@ -96,10 +114,11 @@ case "$1" in "${1}" } | \ mysql_run_query - printf 'command="%s/bin/slave-build-connect %s" ssh-rsa %s %s@%s\n' \ + printf 'command="%s/bin/slave-build-connect %s" %s %s %s@%s\n' \ "${base_dir}" \ "${1}" \ "${3}" \ + "${4}" \ "${2}" \ "${1}" >> \ ~/".ssh/authorized_keys" @@ -122,7 +141,9 @@ case "$1" in printf '"command=\\\"%s/bin/slave-build-connect ",' \ "${base_dir}" printf '`build_slaves`.`name`,' - printf '"\\\" ssh-rsa ",' + printf '"\\\" ",' + printf '`ssh_keys`.`type`,' + printf '" ",' printf '`ssh_keys`.`fingerprint`,' printf '" ",' printf '`persons`.`name`,' |