Skip to content

Commit

Permalink
Merge pull request #3733 from ClusterLabs/main
Browse files Browse the repository at this point in the history
Pull main branch into 3.0 ahead of 3.0.0-rc1 release
  • Loading branch information
kgaillot authored Nov 14, 2024
2 parents cfd45a8 + 32fca61 commit 4886cd6
Show file tree
Hide file tree
Showing 421 changed files with 13,474 additions and 11,081 deletions.
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright 2011-2023 the Pacemaker project contributors
# Copyright 2011-2024 the Pacemaker project contributors
#
# The version control history for this file may have further details.
#
Expand Down Expand Up @@ -222,7 +222,7 @@ TAGS
/doc/sphinx/*/_build
/doc/sphinx/*/conf.py
/doc/sphinx/*/generated
/doc/sphinx/build-2.1.txt
/doc/sphinx/build-[0-9]*.txt
/doc/sphinx/shared/images/*.png

# Test artifacts (from unit tests, regression tests, static analysis, etc.)
Expand Down
12 changes: 5 additions & 7 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@

If you find Pacemaker useful and wish to support the project, you can:

* Spread the word (on blogs, social media, mailing lists, Q&A websites, etc.).
* Join and participate in the [mailing lists](https://clusterlabs.org/mailman/listinfo/).
* Participate in the [ClusterLabs community](https://clusterlabs.org/community/).
* Report [bugs and new feature requests](https://bugs.clusterlabs.org/).
* Contribute documentation, bug fixes, or features to the code base.

If you would like to contribute code base changes, please read
[Pacemaker Development](https://clusterlabs.org/pacemaker/doc/2.1/Pacemaker_Development/html/)
for detailed information about pull requests and policies.
* Contribute documentation, bug fixes, or features to the code base. (Read at
least the FAQ in [Pacemaker
Development](https://clusterlabs.org/projects/pacemaker/doc/3.0/Pacemaker_Development/html/)
for information about pull requests and policies.)
4,622 changes: 0 additions & 4,622 deletions ChangeLog

This file was deleted.

4,703 changes: 4,703 additions & 0 deletions ChangeLog.md

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
# or later (GPLv2+) WITHOUT ANY WARRANTY.
#

include $(top_srcdir)/mk/common.mk

# This directory must be same as in configure.ac's AC_CONFIG_MACRO_DIR
ACLOCAL_AMFLAGS = -I m4

Expand All @@ -22,8 +24,7 @@ EXTRA_DIST = CONTRIBUTING.md \

DISTCLEANFILES = config.status

MAINTAINERCLEANFILES = Makefile.in \
aclocal.m4 \
MAINTAINERCLEANFILES += aclocal.m4 \
config.guess \
config.sub \
configure \
Expand Down
54 changes: 11 additions & 43 deletions README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,24 @@

## What is Pacemaker?

Pacemaker is an advanced, scalable high-availability cluster resource manager.

It supports "N-node" clusters with significant capabilities for
managing resources and dependencies.

It will run scripts at initialization, when machines go up or down,
when related resources fail and can be configured to periodically check
resource health.
Pacemaker is the resource manager for the
[ClusterLabs](https://www.clusterlabs.org/) open-source high-availability
cluster stack. It coordinates the configuration, start-up, monitoring, and
recovery of interrelated services across all cluster nodes.

## Who is Pacemaker?

Pacemaker is distributed by [ClusterLabs](https://www.clusterlabs.org/).

Pacemaker was initially created by main architect and lead developer
Andrew Beekhof <[email protected]>, with the aid of
Andrew Beekhof <[email protected]> with the aid of
project catalyst and advocate Lars Marowsky-Brée <[email protected]>.

Many, many developers have contributed significantly to the project since.
The git log is the definitive record of their greatly appreciated
contributions.

The wider community of Pacemaker users is another essential aspect of the
project's existence, especially the many users who participate in the mailing
lists, blog about HA clustering, and otherwise actively make the project more
useful.
The wider ClusterLabs community is another essential aspect of the project's
existence, especially the many users who participate in the mailing lists, blog
about HA clustering, and otherwise actively make the project more useful.

## Where do I get Pacemaker?

Expand All @@ -41,37 +34,12 @@ development code, or download one of the official

See [INSTALL.md](https://github.com/ClusterLabs/pacemaker/blob/main/INSTALL.md).

## What higher-level interfaces to Pacemaker are available?

There are multiple user interfaces for Pacemaker, including command-line
tools, graphical user interfaces and web frontends. The crm shell
used to be included in the Pacemaker source tree, but is now
a separate project.

This is not an exhaustive list:

* crmsh: https://github.com/ClusterLabs/crmsh
* pcs: https://github.com/ClusterLabs/pcs
* LCMC: http://lcmc.sourceforge.net/
* hawk: https://github.com/ClusterLabs/hawk
* Striker: https://github.com/ClusterLabs/striker

### Can I convert some other cluster configuration to Pacemaker?

[clufter](https://github.com/jnpkrn/clufter) is a general-purpose tool
for converting one cluster representation format to another. Among other
possibilities, it can convert from a cluster based on rgmanager with CMAN to
a one based on pacemaker with corosync. See its documentation for details.

## How can I help?

See [CONTRIBUTING.md](https://github.com/ClusterLabs/pacemaker/blob/main/CONTRIBUTING.md).

## Where can I find more information about Pacemaker?

* [ClusterLabs website](https://www.clusterlabs.org/)
* [Documentation](https://www.clusterlabs.org/pacemaker/doc/)
* [Issues/Bugs](https://bugs.clusterlabs.org/)
* [Mailing lists](https://projects.clusterlabs.org/w/clusterlabs/clusterlabs_mailing_lists/)
for users and developers
* [ClusterLabs IRC channel](https://projects.clusterlabs.org/w/clusterlabs/clusterlabs_irc_channel/)
* [Documentation](https://www.clusterlabs.org/projects/pacemaker/doc/)
* [Bug reporter](https://bugs.clusterlabs.org/)
* [The ClusterLabs community](https://clusterlabs.org/community/)
11 changes: 6 additions & 5 deletions agents/ocf/attribute.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# ocf:pacemaker:attribute resource agent
#
# Copyright 2016-2023 the Pacemaker project contributors
# Copyright 2016-2024 the Pacemaker project contributors
#
# The version control history for this file may have further details.
#
Expand All @@ -14,15 +14,16 @@ USAGE="Usage: $0 {start|stop|monitor|migrate_to|migrate_from|validate-all|meta-d
Expects to have a fully populated OCF RA-compliant environment set."

# Load OCF helper functions
# If the OCF helper funtions aren't available, we can still show metadata.
: ${OCF_FUNCTIONS:="${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs"}
. "${OCF_FUNCTIONS}"
[ -r "${OCF_FUNCTIONS}" ] && . "${OCF_FUNCTIONS}"

: ${__OCF_ACTION:="$1"}

# Ensure certain variables are set and not empty
: ${HA_VARRUN:="/var/run"}
: ${HA_VARRUN:="@runstatedir@"}
: ${OCF_RESKEY_CRM_meta_globally_unique:="false"}
: ${OCF_RESOURCE_INSTANCE:="undef"}
: ${OCF_RESOURCE_INSTANCE:="RESOURCENAME"}

DEFAULT_STATE_FILE="${HA_VARRUN%%/}/opa-${OCF_RESOURCE_INSTANCE}.state"
if [ "${OCF_RESKEY_CRM_meta_globally_unique}" = "false" ]; then
Expand Down
121 changes: 54 additions & 67 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -1007,23 +1007,28 @@ AC_SUBST([GETOPT_PATH])
dnl ===============================================
dnl Libraries
dnl ===============================================
AC_CHECK_LIB(socket, socket) dnl -lsocket
AC_CHECK_LIB(c, dlopen) dnl if dlopen is in libc...
AC_CHECK_LIB(dl, dlopen) dnl -ldl (for Linux)
AC_CHECK_LIB(rt, sched_getscheduler) dnl -lrt (for Tru64)
AC_CHECK_LIB(gnugetopt, getopt_long) dnl -lgnugetopt ( if available )
AC_CHECK_LIB(pam, pam_start) dnl -lpam (if available)
AC_SEARCH_LIBS([socket], [socket])

save_LIBS="$LIBS"
DL_LIBS=""
LIBS=""
AC_SEARCH_LIBS([dlopen], [dl],
[test "$ac_cv_search_dlopen" = "none required" || DL_LIBS="$LIBS"])
AC_SUBST(DL_LIBS)
LIBS="$save_LIBS"

save_LIBS="$LIBS"
PAM_LIBS=""
LIBS=""
AC_SEARCH_LIBS([pam_start], [pam],
[test "$ac_cv_search_pam_start" = "none required" || PAM_LIBS="$LIBS"])
AC_SUBST(PAM_LIBS)
LIBS="$save_LIBS"

PKG_CHECK_MODULES([UUID], [uuid],
[CPPFLAGS="${CPPFLAGS} ${UUID_CFLAGS}"
LIBS="${LIBS} ${UUID_LIBS}"])

AC_CHECK_FUNCS([sched_setscheduler])
AS_IF([test x"$ac_cv_func_sched_setscheduler" != x"yes"],
[PC_LIBS_RT=""],
[PC_LIBS_RT="-lrt"])
AC_SUBST(PC_LIBS_RT)

# Require minimum glib version
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.42.0],
[CPPFLAGS="${CPPFLAGS} ${GLIB_CFLAGS}"
Expand All @@ -1032,15 +1037,6 @@ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.42.0],
# Check whether high-resolution sleep function is available
AC_CHECK_FUNCS([nanosleep usleep])

#
# Where is dlopen?
#
AS_IF([test x"$ac_cv_lib_c_dlopen" = x"yes"],
[LIBADD_DL=""],
[test x"$ac_cv_lib_dl_dlopen" = x"yes"],
[LIBADD_DL=-ldl],
[LIBADD_DL=${lt_cv_dlopen_libs}])

PKG_CHECK_MODULES(LIBXML2, [libxml-2.0 >= 2.9.2],
[CPPFLAGS="${CPPFLAGS} ${LIBXML2_CFLAGS}"
LIBS="${LIBS} ${LIBXML2_LIBS}"])
Expand Down Expand Up @@ -1189,6 +1185,7 @@ dnl ========================================================================
REQUIRE_FUNC([alphasort])
REQUIRE_FUNC([getopt])
REQUIRE_FUNC([scandir])
REQUIRE_FUNC([sched_getscheduler])
REQUIRE_FUNC([setenv])
REQUIRE_FUNC([strndup])
REQUIRE_FUNC([strnlen])
Expand Down Expand Up @@ -1258,45 +1255,20 @@ dnl ncurses takes precedence.
dnl
AC_CHECK_HEADERS([curses.h curses/curses.h ncurses.h ncurses/ncurses.h])

dnl Although n-library is preferred, only look for it if the n-header was found.
CURSESLIBS=''
PC_NAME_CURSES=""
PC_LIBS_CURSES=""
AS_IF([test x"$ac_cv_header_ncurses_h" = x"yes"], [
AC_CHECK_LIB(ncurses, printw,
[AC_DEFINE(HAVE_LIBNCURSES,1, have ncurses library)])
CURSESLIBS=`$PKG_CONFIG --libs ncurses` || CURSESLIBS='-lncurses'
PC_NAME_CURSES="ncurses"
])

AS_IF([test x"$ac_cv_header_ncurses_ncurses_h" = x"yes"], [
AC_CHECK_LIB(ncurses, printw,
[AC_DEFINE(HAVE_LIBNCURSES,1, have ncurses library)])
CURSESLIBS=`$PKG_CONFIG --libs ncurses` || CURSESLIBS='-lncurses'
PC_NAME_CURSES="ncurses"
])

dnl Only look for non-n-library if there was no n-library.
AS_IF([test x"$CURSESLIBS" = x"" && test x"$ac_cv_header_curses_h" = x"yes"], [
AC_CHECK_LIB(curses, printw,
[CURSESLIBS='-lcurses'; AC_DEFINE(HAVE_LIBCURSES,1, have curses library)])
PC_LIBS_CURSES="$CURSESLIBS"
])

dnl Only look for non-n-library if there was no n-library.
AS_IF([test x"$CURSESLIBS" = x"" && test x"$ac_cv_header_curses_curses_h" = x"yes"], [
AC_CHECK_LIB(curses, printw,
[CURSESLIBS='-lcurses'; AC_DEFINE(HAVE_LIBCURSES,1, have curses library)])
PC_LIBS_CURSES="$CURSESLIBS"
])

AS_IF([test x"$CURSESLIBS" != x""],
[PCMK_FEATURES="$PCMK_FEATURES ncurses"])
save_LIBS="$LIBS"
found_curses=0
CURSES_LIBS=""
LIBS=""
AC_SEARCH_LIBS([printw], [ncurses curses],
[test "$ac_cv_search_printw" = "none required" || CURSES_LIBS="$LIBS"
found_curses=1],
[found_curses=0])
LIBS="$save_LIBS"

dnl Check for printw() prototype compatibility
AS_IF([test x"$CURSESLIBS" != x"" && cc_supports_flag -Wcast-qual], [
ac_save_LIBS=$LIBS
LIBS="$CURSESLIBS"
AS_IF([test $found_curses -eq 1 && cc_supports_flag -Wcast-qual], [
ac_save_LIBS="$LIBS"
LIBS="$CURSES_LIBS"
# avoid broken test because of hardened build environment in Fedora 23+
# - https://fedoraproject.org/wiki/Changes/Harden_All_Packages
Expand All @@ -1314,12 +1286,18 @@ AS_IF([test x"$CURSESLIBS" != x"" && cc_supports_flag -Wcast-qual], [
# include <ncurses/ncurses.h>
#elif defined(HAVE_CURSES_H)
# include <curses.h>
#elif defined(HAVE_CURSES_CURSES_H)
# include <curses/curses.h>
#endif
],
[printw((const char *)"Test");]
)],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([yes])
PCMK_FEATURES="$PCMK_FEATURES ncurses"
],
[
found_curses=0
CURSES_LIBS=""
AC_MSG_RESULT([no])
AC_MSG_WARN(m4_normalize([Disabling curses because the printw()
function of your (n)curses library is old.
Expand All @@ -1328,18 +1306,15 @@ AS_IF([test x"$CURSESLIBS" != x"" && cc_supports_flag -Wcast-qual], [
recommended, available from
https://invisible-island.net/ncurses/)
]))
AC_DEFINE([HAVE_INCOMPATIBLE_PRINTW], [1],
[Define to 1 if curses library has incompatible printw()])
]
)
LIBS=$ac_save_LIBS
LIBS="$ac_save_LIBS"
cc_restore_flags
])

AC_SUBST(CURSESLIBS)
AC_SUBST(PC_NAME_CURSES)
AC_SUBST(PC_LIBS_CURSES)
AC_DEFINE_UNQUOTED([PCMK__ENABLE_CURSES], [$found_curses], [have ncurses library])
AC_SUBST(CURSES_LIBS)

dnl ========================================================================
dnl Profiling and GProf
Expand Down Expand Up @@ -1404,8 +1379,18 @@ AS_IF([test x"$cross_compiling" != x"yes"],
[CPPFLAGS="$CPPFLAGS -I${prefix}/include/heartbeat"])
AC_CHECK_HEADERS([stonith/stonith.h],
[
AC_CHECK_LIB([pils], [PILLoadPlugin])
AC_CHECK_LIB([plumb], [G_main_add_IPC_Channel])
save_LIBS="$LIBS"
STONITH_LIBS=""
LIBS=""
AC_SEARCH_LIBS([PILLoadPlugin], [pils],
[test "$ac_cv_search_PILLoadPlugin" = "none required" || STONITH_LIBS="$LIBS"])
LIBS=""
AC_SEARCH_LIBS([G_main_add_IPC_Channel], [plumb],
[test "$ac_cv_search_G_main_add_IPC_Channel" = "none required" || STONITH_LIBS="$STONITH_LIBS $LIBS"])
AC_SUBST(STONITH_LIBS)
LIBS="$save_LIBS"
PCMK_FEATURES="$PCMK_FEATURES lha"
])
AM_CONDITIONAL([BUILD_LHA_SUPPORT], [test x"$ac_cv_header_stonith_stonith_h" = x"yes"])
Expand Down Expand Up @@ -2047,6 +2032,8 @@ AC_CONFIG_FILES(Makefile \
lib/common/tests/strings/Makefile \
lib/common/tests/utils/Makefile \
lib/common/tests/xml/Makefile \
lib/common/tests/xml_comment/Makefile \
lib/common/tests/xml_element/Makefile \
lib/common/tests/xpath/Makefile \
lib/fencing/Makefile \
lib/libpacemaker.pc \
Expand Down
3 changes: 1 addition & 2 deletions cts/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@
# or later (GPLv2+) WITHOUT ANY WARRANTY.
#

include $(top_srcdir)/mk/common.mk
include $(top_srcdir)/mk/python.mk

MAINTAINERCLEANFILES = Makefile.in

# Test commands and globally applicable test files should be in $(testdir),
# and command-specific test data should be in a command-specific subdirectory.
testdir = $(datadir)/$(PACKAGE)/tests
Expand Down
5 changes: 3 additions & 2 deletions cts/benchmark/Makefile.am
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
#
# Copyright 2001-2023 the Pacemaker project contributors
# Copyright 2001-2024 the Pacemaker project contributors
#
# The version control history for this file may have further details.
#
# This source code is licensed under the GNU General Public License version 2
# or later (GPLv2+) WITHOUT ANY WARRANTY.
#
MAINTAINERCLEANFILES = Makefile.in

include $(top_srcdir)/mk/common.mk

benchdir = $(datadir)/$(PACKAGE)/tests/cts/benchmark
dist_bench_DATA = README.benchmark \
Expand Down
Loading

0 comments on commit 4886cd6

Please sign in to comment.