Hello community,
here is the log from the commit of package booth for openSUSE:Factory checked in at 2015-12-09 19:50:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/booth (Old)
and /work/SRC/openSUSE:Factory/.booth.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "booth"
Changes:
--------
--- /work/SRC/openSUSE:Factory/booth/booth.changes 2015-11-28 15:19:06.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.booth.new/booth.changes 2015-12-09 22:13:08.000000000 +0100
@@ -1,0 +2,23 @@
+Thu Dec 03 10:59:27 UTC 2015 - dmuhamedagic@suse.com
+
+- Update to version v0.2.0_130_g9c5c19f:
+ + test: use SSH_OPTS for rsync too
+ + test: fix external/booth ip use
+
+-------------------------------------------------------------------
+Wed Dec 02 11:31:24 UTC 2015 - opensuse-packaging@opensuse.org
+
+- Update to version v0.2.0_128_g29be3ec:
+ + test: create and distribute authfile
+ + test: allow alternative ip addresses
+ + config: support for comments
+
+-------------------------------------------------------------------
+Mon Nov 30 18:20:49 UTC 2015 - dmuhamedagic@suse.com
+
+- Update to version v0.2.0_126_g2154ade:
+ + main: add 'other' as possible site reference
+ + attr: GEO attributes OCF RA support (fate#318182)
+ + ocf: add geostore sample RA (fate#318182)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ booth.spec ++++++
--- /var/tmp/diff_new_pack.pnHeyN/_old 2015-12-09 22:13:09.000000000 +0100
+++ /var/tmp/diff_new_pack.pnHeyN/_new 2015-12-09 22:13:09.000000000 +0100
@@ -144,9 +144,14 @@
%dir /usr/lib/ocf
%dir /usr/lib/ocf/resource.d
%dir /usr/lib/ocf/resource.d/pacemaker
+%dir /usr/lib/ocf/resource.d/booth
+%dir /usr/lib/ocf/lib
+%dir /usr/lib/ocf/lib/booth
%dir %{_sysconfdir}/booth
%{_sbindir}/rcbooth-arbitrator
/usr/lib/ocf/resource.d/pacemaker/booth-site
+/usr/lib/ocf/lib/booth/geo_attr.sh
+/usr/lib/ocf/resource.d/booth/geostore
%config %{_sysconfdir}/booth/booth.conf.example
%if %{defined _unitdir}
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.pnHeyN/_old 2015-12-09 22:13:09.000000000 +0100
+++ /var/tmp/diff_new_pack.pnHeyN/_new 2015-12-09 22:13:09.000000000 +0100
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">git://github.com/ClusterLabs/booth.git</param>
- <param name="changesrevision">88c3d6a865cea676778bdeb7858f715a6ece6b10</param></service></servicedata>
\ No newline at end of file
+ <param name="changesrevision">9c5c19f2c9217db9bf6265e8e753ac15ba631ae0</param></service></servicedata>
\ No newline at end of file
++++++ booth.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/.git_info new/booth/.git_info
--- old/booth/.git_info 2015-11-24 14:08:30.000000000 +0100
+++ new/booth/.git_info 2015-12-03 11:52:44.000000000 +0100
@@ -1 +1 @@
-v0.2.0-120-gf3d73a5
+v0.2.0-130-g9c5c19f
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/Makefile.am new/booth/Makefile.am
--- old/booth/Makefile.am 2015-11-23 19:13:11.000000000 +0100
+++ new/booth/Makefile.am 2015-12-03 11:52:35.000000000 +0100
@@ -55,7 +55,10 @@
boothsite_SCRIPTS = script/ocf/booth-site
boothocfdir = /usr/lib/ocf/resource.d/booth
-boothocf_SCRIPTS = script/ocf/sharedrsc
+boothocf_SCRIPTS = script/ocf/sharedrsc script/ocf/geostore
+
+boothocflibdir = /usr/lib/ocf/lib/booth
+boothocflib_DATA = script/ocf/geo_attr.sh
bootharbitratordir = ${INITDDIR}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/booth.spec new/booth/booth.spec
--- old/booth/booth.spec 2015-11-23 19:13:11.000000000 +0100
+++ new/booth/booth.spec 2015-12-03 11:52:35.000000000 +0100
@@ -133,9 +133,14 @@
%dir /usr/lib/ocf
%dir /usr/lib/ocf/resource.d
%dir /usr/lib/ocf/resource.d/pacemaker
+%dir /usr/lib/ocf/resource.d/booth
+%dir /usr/lib/ocf/lib
+%dir /usr/lib/ocf/lib/booth
%dir %{_sysconfdir}/booth
%{_sbindir}/rcbooth-arbitrator
/usr/lib/ocf/resource.d/pacemaker/booth-site
+/usr/lib/ocf/lib/booth/geo_attr.sh
+/usr/lib/ocf/resource.d/booth/geostore
%config %{_sysconfdir}/booth/booth.conf.example
%if 0%{?suse_version}
%config %{_fwdefdir}/booth
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/docs/boothd.8.txt new/booth/docs/boothd.8.txt
--- old/booth/docs/boothd.8.txt 2015-11-23 19:13:11.000000000 +0100
+++ new/booth/docs/boothd.8.txt 2015-12-03 11:52:35.000000000 +0100
@@ -65,6 +65,10 @@
*-s*::
Site address or name.
++
+ The special value 'other' can be used to specify the other
+ site. Obviously, in that case, the booth configuration must
+ have exactly two sites defined.
*-F*::
'immediate grant': Don't wait for unreachable sites to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/docs/geostore.8.txt new/booth/docs/geostore.8.txt
--- old/booth/docs/geostore.8.txt 2015-11-23 19:13:11.000000000 +0100
+++ new/booth/docs/geostore.8.txt 2015-12-03 11:52:35.000000000 +0100
@@ -42,13 +42,13 @@
--------------
---------------------
-# geostore set -t ticket-A -s 44.0.0.61 bigdb-repl-status UPTODATE
+# geostore set -t ticket-A -s other bigdb-repl-status UPTODATE
-# geostore get -t ticket-A -s 44.0.0.61 bigdb-repl-status
+# geostore get -t ticket-A -s other bigdb-repl-status
# geostore delete -t ticket-A -s 44.0.0.61 bigdb-repl-status
-# geostore list -t ticket-A -s 44.0.0.61
+# geostore list -t ticket-A -s other
---------------------
@@ -62,6 +62,10 @@
*-s*::
Site address or name where the attribute is to be stored/retrieved.
++
+ The special value 'other' can be used to specify the other
+ site. Obviously, in that case, the booth configuration must
+ have exactly two sites defined.
*-c* 'configfile'::
Configuration to use.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/script/ocf/geo_attr.sh new/booth/script/ocf/geo_attr.sh
--- old/booth/script/ocf/geo_attr.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/booth/script/ocf/geo_attr.sh 2015-12-03 11:52:35.000000000 +0100
@@ -0,0 +1,203 @@
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of version 2 of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Further, this software is distributed without any warranty that it is
+# free of the rightful claim of any third person regarding infringement
+# or the like. Any license provided herein, whether implied or
+# otherwise, applies only to this software file. Patent licenses, if
+# any, provided herein do not apply to combinations of this program with
+# other software, or any other product whatsoever.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+#
+
+# This file is part of the booth project and contains /bin/sh
+# code to support GEO attributes
+
+# USAGE
+#
+# To use this for updating GEO attributes just follow the
+# instructions below.
+
+# Source this file in your OCF RA script:
+#
+## . ${OCF_ROOT}/lib/booth/geo_attr.sh
+
+# 1) meta-data
+#
+# geo_attr_meta_data prints descriptions of three parameters.
+# Best to invoke it just before printing "</parameters>". For
+# instance:
+#
+## cat </dev/null 2>&1
+ else
+ geostore set -s $site $1 $2
+ fi
+}
+
+geo_attr_read_attr() {
+ local site
+
+ set -- `geo_attr_get_attr`
+ if test z"`command -v get_site_name`" = z"get_site_name"; then
+ site=`get_site_name`
+ else
+ site="other"
+ fi
+
+ geostore get -s $site $1
+}
+
+# test the environment for geo_attr
+#
+geo_attr_validate_all() {
+ if [ -z "$OCF_RESKEY_booth_ticket" ]; then
+ return 0
+ fi
+
+ if ! test -f "$OCF_RESKEY_booth_config"; then
+ ocf_log err "booth configuration $OCF_RESKEY_booth_config doesn't exist"
+ return 1
+ fi
+
+ if ! grep -qs "^ticket[[:space:]]*=[[:space:]]*\"$OCF_RESKEY_booth_ticket\"" $OCF_RESKEY_booth_config; then
+ ocf_log err "ticket $OCF_RESKEY_booth_ticket not found in $OCF_RESKEY_booth_config"
+ return 1
+ fi
+
+ set -- `geo_attr_get_attr`
+ if [ $# -eq 0 ]; then
+ ocf_log err "no attr-prereq defined in $OCF_RESKEY_booth_ticket"
+ return 1
+ fi
+
+ return 0
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/script/ocf/geostore new/booth/script/ocf/geostore
--- old/booth/script/ocf/geostore 1970-01-01 01:00:00.000000000 +0100
+++ new/booth/script/ocf/geostore 2015-12-03 11:52:35.000000000 +0100
@@ -0,0 +1,112 @@
+#!/bin/sh
+#
+#
+# geostore OCF RA. Just an example on how to use
+# geo-attr.sh
+#
+# Copyright (c) 2015 Dejan Muhamedagic
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of version 2 of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Further, this software is distributed without any warranty that it is
+# free of the rightful claim of any third person regarding infringement
+# or the like. Any license provided herein, whether implied or
+# otherwise, applies only to this software file. Patent licenses, if
+# any, provided herein do not apply to combinations of this program with
+# other software, or any other product whatsoever.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+#
+
+#######################################################################
+# Initialization:
+
+: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
+. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
+. ${OCF_ROOT}/lib/booth/geo_attr.sh
+
+#######################################################################
+
+geostore_meta_data() {
+ cat <site_count; i++) {
+ n = booth_conf->site + i;
+ if (n != local && n->type == SITE) {
+ if (!*node) {
+ *node = n;
+ } else {
+ return 0;
+ }
+ }
+ }
+
+ return !*node ? 0 : 1;
+}
+
+
int find_site_by_name(unsigned char *site, struct booth_site **node, int any_type)
{
struct booth_site *n;
@@ -900,6 +924,9 @@
if (!booth_conf)
return 0;
+ if (!strcmp(site, OTHER_SITE))
+ return get_other_site(node);
+
for (i = 0; i < booth_conf->site_count; i++) {
n = booth_conf->site + i;
if ((n->type == SITE || any_type) &&
@@ -937,7 +964,6 @@
}
-
const char *type_to_string(int type)
{
switch (type)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/src/config.h new/booth/src/config.h
--- old/booth/src/config.h 2015-11-23 19:13:11.000000000 +0100
+++ new/booth/src/config.h 2015-12-03 11:52:35.000000000 +0100
@@ -35,6 +35,7 @@
#define MAX_ARGS 16
#define TICKET_ALLOC 16
+#define OTHER_SITE "other"
typedef enum {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/src/main.c new/booth/src/main.c
--- old/booth/src/main.c 2015-11-23 19:13:11.000000000 +0100
+++ new/booth/src/main.c 2015-12-03 11:52:35.000000000 +0100
@@ -1130,8 +1130,8 @@
* on one machine. */
if (cl.type == CLIENT || cl.type == GEOSTORE ||
(cl.type == DAEMON && debug_level)) {
- int re = host_convert(optarg, site_arg, INET_ADDRSTRLEN);
- if (re == 0) {
+ if (strcmp(optarg, OTHER_SITE) &&
+ host_convert(optarg, site_arg, INET_ADDRSTRLEN) == 0) {
safe_copy(cl.site, site_arg, sizeof(cl.site), "site name");
} else {
safe_copy(cl.site, optarg, sizeof(cl.site), "site name");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth/test/live_test.sh new/booth/test/live_test.sh
--- old/booth/test/live_test.sh 2015-11-23 19:13:11.000000000 +0100
+++ new/booth/test/live_test.sh 2015-12-03 11:52:35.000000000 +0100
@@ -41,6 +41,7 @@
[ $# -eq 0 ] && usage 0
cnf=$1
+BOOTH_DIR="/etc/booth"
run_cnf="/etc/booth/booth.conf"
shift 1
@@ -54,6 +55,10 @@
local n=$1
echo $sites | awk '{print $'$n'}'
}
+get_internal_site() {
+ local n=$1
+ echo $internal_sites | awk '{print $'$n'}'
+}
logmsg() {
if [ "$WE_SERVER" -o "$_JUST_NETEM" ]; then
@@ -274,15 +279,23 @@
is_pacemaker_running() {
local h
for h in $sites; do
- crmadmin -D >/dev/null || return 1
+ runcmd $h crmadmin -D >/dev/null || return 1
done
return 0
}
sync_conf() {
local h rc=0
+ local tmpf
for h in $sites $arbitrators; do
- rsync -q $cnf root@$h:$run_cnf
+ rsync -q -e "ssh $SSH_OPTS" $cnf root@$h:$run_cnf
rc=$((rc|$?))
+ if [ -n "$authfile" ]; then
+ tmpf=`mktemp`
+ scp -q $(get_site 1):$authfile $tmpf &&
+ rsync -q -e "ssh $SSH_OPTS" $tmpf root@$h:$authfile
+ rc=$((rc|$?))
+ rm -f $tmpf
+ fi
done
return $rc
}
@@ -355,13 +368,21 @@
runcmd $h crm_node -l | awk '{print $2}'
done
}
-get_port() {
- grep "^port" |
- sed -n 's/.*="//;s/"//p'
-}
-get_servers() {
- grep "^$1" |
- sed -n 's/.*="//;s/"//p'
+extract_value() {
+ sed 's/ *#.*//;s/.*=//;s/"//g;s/^ *//;s/ *$//'
+}
+get_extern_ip() {
+ grep "^$1" |
+ awk '
+ { if(/# *external[_-]ip=/) print $NF; else print; }
+ ' | extract_value
+}
+get_value() {
+ grep "^$1" | extract_value
+}
+# get internal IP for the external address
+internal_ip() {
+ fgrep "$1" $cnf | extract_value
}
get_rsc() {
awk '
@@ -380,15 +401,15 @@
set_site_attr() {
local site
- site=`get_site $1`
+ site=$1
set -- `get_attr`
- geostore set -s $site $1 $2
+ run_site $site geostore set $1 $2
}
del_site_attr() {
local site
- site=`get_site $1`
+ site=$1
set -- `get_attr`
- geostore delete -s $site $1
+ run_site $site geostore delete $1
}
break_external_prog() {
run_site $1 crm configure "location $PREFNAME `get_rsc` rule -inf: defined \#uname"
@@ -474,7 +495,7 @@
for h in $sites; do
if is_cib_granted $h; then
[ -n "$gh" ] && rc=1 # granted twice
- gh="$gh $h"
+ gh="$gh `internal_ip $h`"
fi
done
[ -z "$gh" ] && gh="none"
@@ -489,8 +510,9 @@
return $rc
}
check_cib() {
- local exp_grantee=$1 cib_grantee booth_grantee
+ local exp_grantee cib_grantee booth_grantee
local rc=0 pending
+ exp_grantee=$1
booth_grantee=`booth_where_granted`
pending=$?
cib_grantee=`check_cib_consistency`
@@ -703,6 +725,7 @@
echo "unexpected: dependent resource failure"
run_report $start_ts $end_ts $TEST
reboot_test
+ master_rc=1
fi
revoke_ticket
}
@@ -726,7 +749,7 @@
grant_ticket 1
}
check_grant() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
## TEST: longgrant ##
@@ -741,7 +764,7 @@
wait_exp
}
check_longgrant() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
## TEST: longgrant2 ##
@@ -757,7 +780,7 @@
done
}
check_longgrant2() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
## TEST: grant_noarb ##
@@ -774,7 +797,7 @@
grant_ticket 1
}
check_grant_noarb() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
recover_grant_noarb() {
local h
@@ -803,10 +826,10 @@
# just a grant to another site
test_grant_elsewhere() {
- run_site 1 booth grant -w -s `get_site 2` $tkt >/dev/null
+ run_site 1 booth grant -w -s `get_internal_site 2` $tkt >/dev/null
}
check_grant_elsewhere() {
- check_consistency `get_site 2`
+ check_consistency `get_internal_site 2`
}
## TEST: grant_site_lost ##
@@ -822,7 +845,7 @@
wait_exp
}
check_grant_site_lost() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
recover_grant_site_lost() {
start_site `get_site 2`
@@ -839,14 +862,14 @@
}
test_grant_site_reappear() {
grant_ticket 1 || return $ERR_SETUP_FAILED
- check_cib `get_site 1` || return $ERR_SETUP_FAILED
+ check_cib `get_internal_site 1` || return $ERR_SETUP_FAILED
wait_timeout
start_site `get_site 2` || return $ERR_SETUP_FAILED
wait_timeout
wait_timeout
}
check_grant_site_reappear() {
- check_consistency `get_site 1` &&
+ check_consistency `get_internal_site 1` &&
is_cib_granted `get_site 1`
}
recover_grant_site_reappear() {
@@ -875,7 +898,7 @@
wait_timeout
}
check_simultaneous_start_even() {
- check_consistency `get_site 2`
+ check_consistency `get_internal_site 2`
}
## TEST: slow_start_granted ##
@@ -897,7 +920,7 @@
done
}
check_slow_start_granted() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
## TEST: restart_granted ##
@@ -911,7 +934,7 @@
wait_timeout
}
check_restart_granted() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
## TEST: reload_granted ##
@@ -925,7 +948,7 @@
wait_timeout
}
check_reload_granted() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
## TEST: restart_granted_nocib ##
@@ -943,7 +966,7 @@
wait_timeout
}
check_restart_granted_nocib() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
## TEST: restart_notgranted ##
@@ -959,7 +982,7 @@
wait_timeout
}
check_restart_notgranted() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
## TEST: failover ##
@@ -1027,7 +1050,7 @@
wait_timeout
}
check_split_follower() {
- check_consistency `get_site 1`
+ check_consistency `get_internal_site 1`
}
## TEST: split_edge ##
@@ -1062,7 +1085,7 @@
}
check_external_prog_failed() {
check_consistency any &&
- [ `booth_where_granted` != `get_site 1` ]
+ [ `booth_where_granted` != `get_internal_site 1` ]
}
recover_external_prog_failed() {
repair_external_prog 1
@@ -1086,7 +1109,7 @@
wait_timeout
}
check_attr_prereq_ok() {
- check_consistency `get_site 2`
+ check_consistency `get_internal_site 2`
}
recover_attr_prereq_ok() {
start_site `get_site 1`
@@ -1169,15 +1192,18 @@
exit 1
}
-sites=`get_servers site < $cnf`
-arbitrators=`get_servers arbitrator < $cnf`
+sites=`get_extern_ip site < $cnf`
+arbitrators=`get_extern_ip arbitrator < $cnf`
+internal_sites=`get_value site < $cnf`
+internal_arbitrators=`get_value arbitrator < $cnf`
all_nodes=`get_all_nodes`
-port=`get_port < $cnf`
+port=`get_value port < $cnf`
: ${port:=9929}
-site_cnt=`echo $sites | wc -w`
-arbitrator_cnt=`echo $arbitrators | wc -w`
+site_cnt=`echo $internal_sites | wc -w`
+arbitrator_cnt=`echo $internal_arbitrators | wc -w`
tkt=`get_tkt < $cnf`
eval `get_tkt_settings`
+
MIN_TIMEOUT=`awk -v tm=$T_timeout 'BEGIN{
if (tm >= 2) print tm;
else print 2*tm;
@@ -1190,7 +1216,7 @@
exit
fi
-[ -z "$sites" ] && {
+[ -z "$internal_sites" ] && {
echo no sites in $cnf
usage 1
}
@@ -1214,6 +1240,9 @@
PREFNAME=__pref_booth_live_test
+authfile=`get_value authfile < $cnf`
+run_site 1 'test -f '"$authfile"' || booth-keygen '"$authfile"
+
sync_conf || exit
reboot_test
all_booth_status || {
@@ -1238,6 +1267,9 @@
failover split_leader split_follower split_edge
external_prog_failed attr_prereq_ok attr_prereq_fail"}
+master_rc=0 # updated in runtest
for t in $TESTS; do
runtest $t
done
+
+exit $master_rc