Skip to content

Commit 95699e9

Browse files
authored
Merge pull request #367 from github/lildude/filter-cluster-names
Filter cluster nodes by role during backup and restore
2 parents 2e5bafd + b44905d commit 95699e9

19 files changed

+107
-52
lines changed

script/cibuild

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ fi
5656

5757
# Build the deb related packages
5858
echo "Building deb package ..."
59-
if script/package-deb 1>package-deb-out.txt 2>package-deb-err.txt; then
59+
if DEB_BUILD_OPTIONS=nocheck script/package-deb 1>package-deb-out.txt 2>package-deb-err.txt; then
6060
pkg_files="$pkg_files $(cat package-deb-out.txt)"
6161
else
6262
echo "Package build failed:"

share/github-backup-utils/ghe-backup-alambic-cluster

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ user="${host%@*}"
3333
[ "$user" = "$host" ] && user="admin"
3434

3535
# Alambic server hostnames
36-
hostnames=$(ghe_cluster_online_nodes "storage-server")
36+
hostnames=$(ghe-cluster-nodes "$GHE_HOSTNAME" "storage-server")
3737

3838
ssh_config_file=$(mktemp -t cluster-backup-restore-XXXXXX)
3939
ghe-ssh-config "$GHE_HOSTNAME" "$hostnames" > "$ssh_config_file"

share/github-backup-utils/ghe-backup-alambic-cluster-ng

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ user="${host%@*}"
3434
[ "$user" = "$host" ] && user="admin"
3535

3636
# storage server hostnames
37-
hostnames=$(ghe-cluster-hostnames "$GHE_HOSTNAME" "storage-server")
37+
hostnames=$(ghe-cluster-nodes "$GHE_HOSTNAME" "storage-server")
3838

3939
tempdir=$(mktemp -d -t backup-utils-restore-XXXXXX)
4040
ghe-ssh "$GHE_HOSTNAME" -- mkdir -p $tempdir

share/github-backup-utils/ghe-backup-config

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -286,13 +286,6 @@ ghe_remote_logger () {
286286
ghe-ssh "$GHE_HOSTNAME" -- logger -t backup-utils || true
287287
}
288288

289-
# Usage: ghe_cluster_online_nodes role
290-
# Returns the online nodes with a certain role in cluster
291-
ghe_cluster_online_nodes () {
292-
role=$1
293-
echo "ghe-config --get-regexp cluster.*.$role | egrep 'true$' | awk '{ print \$1; }' | awk 'BEGIN { FS=\".\" }; { print \$2 };' | xargs -I{} -n1 bash -c 'if [ \"\$(ghe-config cluster.{}.offline)\" != true ]; then ghe-config cluster.{}.hostname; fi'" | ghe-ssh "$GHE_HOSTNAME" /bin/bash
294-
}
295-
296289
# Usage: ghe_verbose <message>
297290
# Log if verbose mode is enabled (GHE_VERBOSE or `-v`).
298291
ghe_verbose() {

share/github-backup-utils/ghe-backup-git-hooks-cluster

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ user="${host%@*}"
3535
[ "$user" = "$host" ] && user="admin"
3636

3737
# git server hostnames
38-
hostnames=$(ghe_cluster_online_nodes "git-server")
38+
hostnames=$(ghe-cluster-nodes "$GHE_HOSTNAME" "git-server")
3939

4040
ssh_config_file=$(mktemp -t cluster-backup-restore-XXXXXX)
4141
ghe-ssh-config "$GHE_HOSTNAME" "$hostnames" > "$ssh_config_file"

share/github-backup-utils/ghe-backup-pages-cluster

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ user="${host%@*}"
3333
[ "$user" = "$host" ] && user="admin"
3434

3535
# Pages server hostnames
36-
hostnames=$(ghe_cluster_online_nodes "pages-server")
36+
hostnames=$(ghe-cluster-nodes "$GHE_HOSTNAME" "pages-server")
3737

3838
ssh_config_file=$(mktemp -t cluster-backup-restore-XXXXXX)
3939
ghe-ssh-config "$GHE_HOSTNAME" "$hostnames" > "$ssh_config_file"

share/github-backup-utils/ghe-backup-repositories-cluster

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ user="${host%@*}"
6767
[ "$user" = "$host" ] && user="admin"
6868

6969
# git server hostnames
70-
hostnames=$(ghe_cluster_online_nodes "git-server")
70+
hostnames=$(ghe-cluster-nodes "$GHE_HOSTNAME" "git-server")
7171

7272
ssh_config_file=$(mktemp -t cluster-backup-restore-XXXXXX)
7373
ghe-ssh-config "$GHE_HOSTNAME" "$hostnames" > "$ssh_config_file"

share/github-backup-utils/ghe-backup-repositories-cluster-ng

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ user="${host%@*}"
7070
[ "$user" = "$host" ] && user="admin"
7171

7272
# git server hostnames
73-
hostnames=$(ghe-cluster-hostnames "$GHE_HOSTNAME" "git-server")
73+
hostnames=$(ghe-cluster-nodes "$GHE_HOSTNAME" "git-server")
7474

7575
ssh_config_file=$(mktemp -t cluster-backup-restore-XXXXXX)
7676
ghe-ssh-config "$GHE_HOSTNAME" "$hostnames" > "$ssh_config_file"

share/github-backup-utils/ghe-cluster-hostnames

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/usr/bin/env bash
2+
#/ Usage: ghe-cluster-nodes <host> <prefix>
3+
#/
4+
#/ Finds all nodes of the cluster using the config on <host>.
5+
#/ If it is a 2.8 and later cluster version the results are returned as
6+
#/ prefix-uuid, otherwise the configured hostnames are returned.
7+
#/ Also filters nodes based on the prefix role.
8+
#/
9+
#/ Note: This script typically isn't called directly. It's invoked by the
10+
#/ ghe-backup-* and ghe-restore-* commands in cluster environments.
11+
set -e
12+
13+
# Bring in the backup configuration
14+
. "$( dirname "${BASH_SOURCE[0]}" )/ghe-backup-config"
15+
16+
# Check if the REMOTE DATA USER directory is set
17+
if [ -z $GHE_REMOTE_DATA_USER_DIR ]; then
18+
echo "Env variable GHE_REMOTE_DATA_USER_DIR is not set. Exiting"
19+
exit 1
20+
fi
21+
22+
# Show usage and bail with no arguments
23+
[ -z "$*" ] && print_usage
24+
25+
GHE_HOSTNAME="$1"
26+
prefix="$2"
27+
role=$(echo "$prefix" | cut -d '-' -f1)
28+
29+
if ghe-ssh "$GHE_HOSTNAME" test -f "$GHE_REMOTE_DATA_USER_DIR/common/uuid"; then
30+
node_uuids=$(ghe-ssh "$GHE_HOSTNAME" ghe-cluster-each -r "$role" -u)
31+
hostnames=''
32+
for uuid in $node_uuids; do
33+
hostnames+="$prefix-$uuid "
34+
done
35+
else
36+
hostnames=$(ghe-ssh "$GHE_HOSTNAME" ghe-cluster-each -r "$role" -p)
37+
fi
38+
39+
echo "$hostnames"

0 commit comments

Comments
 (0)