diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 5d32bea8c2..0000000000 --- a/AUTHORS +++ /dev/null @@ -1,31 +0,0 @@ -NOTE: The work of everyone on this project is greatly appreciated. If you - are not listed here but should be, please let us know! - -The following people have kindly helped with pacemaker development by -providing code, documentation or testing, or fixes: - - Andrew Beekhof - Main architect, Lead Developer - David Vossel - Lrmd, Stonith Maintainer, PE bug fixes and features - Keisuke MORI - Maintainer of the 1.0 branch - Yan Gao - Bug fixes, features and documentation - Dan Frîncu - Romanian document translations - Raoul Scarazzini - Italian document translations - Charlie Chen - Chinese document translations - -Contributors, ordered by last name: - - Lars Marowsky-Brée - Project catalyst and advocate - - Dominik Klein - Dejan Muhamedagic - Alan Robertson - Tanja Roth - Thomas Schraitle diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..f103c47c5a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,12 @@ +# Contributing to the Pacemaker project + +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](http://clusterlabs.org/mailman/listinfo/). +* Report [bugs and new feature requests](http://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](http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html-single/Pacemaker_Development/index.html) +for detailed information about pull requests and policies. diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000000..4ee75c2a37 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,58 @@ +# How to Install Pacemaker + +## Build Dependencies +* automake +* autoconf +* libtool-ltdl-devel +* libuuid-devel +* pkgconfig +* python (or python-devel if that's preferred as a build dependency) +* glib2-devel +* libxml2-devel +* libxslt-devel +* bzip2-devel +* gnutls-devel +* pam-devel +* libqb-devel + +## Cluster Stack Dependencies (Pick at least one) +* clusterlib-devel (CMAN) +* corosynclib-devel (Corosync) +* heartbeat-devel (Heartbeat) + +## Optional Build Dependencies +* ncurses-devel +* openssl-devel +* libselinux-devel +* systemd-devel +* dbus-devel +* cluster-glue-libs-devel (LHA style fencing agents) +* libesmtp-devel (Email alerts) +* lm_sensors-devel (SNMP alerts) +* net-snmp-devel (SNMP alerts) +* asciidoc (documentation) +* help2man (documentation) +* publican (documentation) +* inkscape (documentation) +* docbook-style-xsl (documentation) + +## Optional testing dependencies +* valgrind (if running CTS valgrind tests) +* systemd-python (if using CTS on cluster nodes running systemd) +* rsync (if running CTS container tests) +* libvirt-daemon-driver-lxc (if running CTS container tests) +* libvirt-daemon-lxc (if running CTS container tests) +* libvirt-login-shell (if running CTS container tests) + +## Source Control (GIT) + + git clone git://github.com/ClusterLabs/pacemaker.git + +[See Github](https://github.com/ClusterLabs/pacemaker) + +## Installing from source + + $ ./autogen.sh + $ ./configure + $ make + $ sudo make install diff --git a/NEWS b/NEWS deleted file mode 100644 index 58d59547d1..0000000000 --- a/NEWS +++ /dev/null @@ -1 +0,0 @@ -Nobody here but us chickens. diff --git a/README.markdown b/README.markdown index 39afcb1371..43070c07a8 100644 --- a/README.markdown +++ b/README.markdown @@ -1,100 +1,63 @@ # Pacemaker ## What is Pacemaker? -Pacemaker is an advanced, scalable High-Availability cluster resource -manager for Linux-HA (Heartbeat) and/or Corosync. -It supports "n-node" clusters with significant capabilities for +Pacemaker is an advanced, scalable high-availability cluster resource manager. +It runs on top of a cluster communication layer, either Corosync or +Linux-HA's Heartbeat. + +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. -## For more information look at: -* [Website](http://www.clusterlabs.org) -* [Issues/Bugs](http://bugs.clusterlabs.org) -* Mailing lists per audience: [users](http://oss.clusterlabs.org/mailman/listinfo/users), [developers](http://oss.clusterlabs.org/mailman/listinfo/developers), or possibly [the original one](http://oss.clusterlabs.org/mailman/listinfo/pacemaker) ([deprecated](http://oss.clusterlabs.org/pipermail/pacemaker/2015-February/023521.html)) -* [Documentation](http://www.clusterlabs.org/doc) +## Who is Pacemaker? + +Pacemaker is distributed by [ClusterLabs](http://www.clusterlabs.org). + +Pacemaker was initially created by main architect and lead developer +Andrew Beekhof , with the aid of +project catalyst and advocate Lars Marowsky-Brée . + +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. + +## How do I install Pacemaker? + +See [INSTALL.md](https://github.com/ClusterLabs/pacemaker/blob/master/INSTALL.md). -## User interfaces / shells +## What higher-level interfaces to Pacemaker are available? -There are multiple user interfaces for Pacemaker, both command line -tools, graphical user interfaces and web frontends. The _crm shell_ +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 -maintained as a separate project. - -This is not meant to be an exhaustive list: - -* _crmsh_: https://crmsh.github.io/ -* _pcs_: https://github.com/ClusterLabs/pcs -* _LCMC_: http://lcmc.sourceforge.net/ -* _hawk_: https://github.com/ClusterLabs/hawk - -## Build Dependencies -* automake -* autoconf -* libtool-ltdl-devel -* libuuid-devel -* pkgconfig -* python (or python-devel if that's preferred as a build dependency) -* glib2-devel -* libxml2-devel -* libxslt-devel -* bzip2-devel -* gnutls-devel -* pam-devel -* libqb-devel - -## Cluster Stack Dependencies (Pick at least one) -* clusterlib-devel (CMAN) -* corosynclib-devel (Corosync) -* heartbeat-devel (Heartbeat) - -## Optional Build Dependencies -* ncurses-devel -* openssl-devel -* libselinux-devel -* systemd-devel -* dbus-devel -* cluster-glue-libs-devel (LHA style fencing agents) -* libesmtp-devel (Email alerts) -* lm_sensors-devel (SNMP alerts) -* net-snmp-devel (SNMP alerts) -* asciidoc (documentation) -* help2man (documentation) -* publican (documentation) -* inkscape (documentation) -* docbook-style-xsl (documentation) - -## Optional testing dependencies -* valgrind (if running CTS valgrind tests) -* systemd-python (if using CTS on cluster nodes running systemd) -* rsync (if running CTS container tests) -* libvirt-daemon-driver-lxc (if running CTS container tests) -* libvirt-daemon-lxc (if running CTS container tests) -* libvirt-login-shell (if running CTS container tests) - -## Source Control (GIT) - - git clone git://github.com/ClusterLabs/pacemaker.git - -[See Github](https://github.com/ClusterLabs/pacemaker) - -## Installing from source - - $ ./autogen.sh - $ ./configure - $ make - $ sudo make install - -## How you can help -If you find this project useful, you may want to consider supporting its future development. -There are a number of ways to support the project. - -* Test and report issues. -* Tick something off our [todo list](https://github.com/ClusterLabs/pacemaker/blob/master/TODO.markdown). -* Help others on the [mailing list](http://oss.clusterlabs.org/mailman/listinfo/users). -* Contribute documentation, examples and test cases. -* Contribute patches. -* Spread the word. +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 +* Pacemaker-mgmt: https://github.com/ClusterLabs/pacemaker-mgmt +* Striker: https://github.com/ClusterLabs/striker + +## How can I help? + +See [CONTRIBUTING.md](https://github.com/ClusterLabs/pacemaker/blob/master/CONTRIBUTING.md). + +## Where can I find more information about Pacemaker? + +* [ClusterLabs website](http://www.clusterlabs.org/) +* [Documentation](http://www.clusterlabs.org/doc/) +* [Issues/Bugs](http://bugs.clusterlabs.org/) +* Mailing lists for [users](http://oss.clusterlabs.org/mailman/listinfo/users) and [developers](http://oss.clusterlabs.org/mailman/listinfo/developers) +* #clusterlabs IRC channel on [freenode](http://freenode.net/) diff --git a/TODO.markdown b/TODO.markdown deleted file mode 100644 index 6d73d43854..0000000000 --- a/TODO.markdown +++ /dev/null @@ -1,61 +0,0 @@ -# Semi-random collection of tasks we'd like to get done - -## Targeted for this year - -- Implement: - - crm_node --standby - - crm_resource --enable --recursive : set target role for anything we depend on - - merge all the crmd global variables into a single struct - -- Only bump epoch if we have quorum when we are elected the DC -- Bump epoch if we gain quorum and are the DC - -- Make sure crm_attribute/crmd writes direct to cib if attrd is not around -- See if anywhere should be using clock_gettime() instead of time(NULL) -- Make sure fail counts etc are removed on resource deletion - -- Test and merge ipc-dispatch.patch -- Process election votes as soon as they happen - notice: do_election_count_vote: Election 6 (current: 6, owner: 101): Processed no-vote from east-04 (Peer is not part of our cluster) - -- Support - http://cgit.freedesktop.org/systemd/systemd/commit/?id=96342de68d0d6de71a062d984dafd2a0905ed9fe -- Support 'yesterday' and 'thursday' and '24-04' as dates in crm_report -- Allow the N in 'give up after N failed fencing attempts' to be configurable -- Show an english version of the config with crm_resource --rules -- Convert cts/CIB.py into a supported Python API for the CIB -- Re-implement no-quorum filter for cib updates? - -## Targeted for next year and beyond - -- Support A colocated with (B || C || D) -- Implement a truely atomic version of attrd -- Support rolling average values in attrd -- Support heartbeat with the mcp -- Freeze/Thaw -- Create Pacemaker plugin for snmpd - http://www.net-snmp.org/ -- Investigate using a DB as the back-end for the CIB -- Decide whether to fully support or drop failover domains - -# Testing -- Convert BandwidthTest CTS test into a Scenario wrapper -- find_operations() is not covered by PE regression tests -- no_quorum_policy==suicide is not covered by PE regression tests -- parse_xml_duration() is not covered by PE regression tests -- phase_of_the_moon() is not covered by PE regression tests -- test_role_expression() is not covered by PE regression tests -- native_parameter() is not covered by PE regression tests -- clone_active() is not covered by PE regression tests -- convert_non_atomic_task() in native.c is not covered by PE regression tests -- group_rsc_colocation_lh() is not covered by PE regression tests -- Test on-fail=standby - -# Documentation -- Clusters from Scratch: Mail -- Clusters from Scratch: MySQL -- Document advanced fencing logic in Pacemaker Explained -- Use ann:defaultValue="..." instead of in the schema more often -- Document in CFS an Appendix detailing with re-enabling firewall -- Document implicit operation creation in CFS once pcs supports it. -- Document use of pcs resource move command in CFS once pcs supports it. -- Make use of --clone option in pcs resource create dlm in CFS once pcs fully supports that option. diff --git a/doc/Pacemaker_Development/en-US/Ch-FAQ.txt b/doc/Pacemaker_Development/en-US/Ch-FAQ.txt index f150d44f18..490b46b06f 100644 --- a/doc/Pacemaker_Development/en-US/Ch-FAQ.txt +++ b/doc/Pacemaker_Development/en-US/Ch-FAQ.txt @@ -1,108 +1,112 @@ = Frequently Asked Questions = [qanda] Who is this document intended for?:: Anyone who wishes to read and/or edit the Pacemaker source code. Casual contributors should feel free to read just this FAQ, and consult other chapters as needed. Where is the source code for Pacemaker?:: indexterm:[downloads] indexterm:[source code] indexterm:[git,GitHub] The https://github.com/ClusterLabs/pacemaker[source code for Pacemaker] is kept on https://github.com/[GitHub], as are all software projects under the https://github.com/ClusterLabs[ClusterLabs] umbrella. Pacemaker uses https://git-scm.com/[Git] for source code management. If you are a Git newbie, the http://schacon.github.io/git/gittutorial.html[gittutorial(7) man page] is an excellent starting point. If you're familiar with using Git from the command line, you can create a local copy of the Pacemaker source code with: `git clone https://github.com/ClusterLabs/pacemaker.git pacemaker` What are the different Git branches and repositories used for?:: indexterm:[branches] * The https://github.com/ClusterLabs/pacemaker/tree/master[master branch] is the primary branch used for development. * The https://github.com/ClusterLabs/pacemaker/tree/1.1[1.1 branch] contains the latest official release, and normally does not receive any changes. During the release cycle, it will contain release candidates for the next official release, and will receive only bug fixes. * The https://github.com/ClusterLabs/pacemaker-1.0[1.0 repository] is a frozen snapshot of the 1.0 release series, and is no longer developed. + * Messages will be posted to the + http://clusterlabs.org/mailman/listinfo/developers[developers@clusterlabs.org] + mailing list during the release cycle, with instructions about which + branches to use when submitting requests. How do I build from the source code?:: See the https://github.com/ClusterLabs/pacemaker/blob/master/README.markdown[README] in the main checkout directory. What coding style should I follow?:: You'll be mostly fine if you simply follow the example of existing code. When unsure, see the relevant chapter of this document for language-specific recommendations. Pacemaker has grown and evolved organically over many years, so you will see much code that doesn't conform to the current guidelines. We discourage making changes solely to bring code into conformance, as any change requires developer time for review and opens the possibility of adding bugs. However, new code should follow the guidelines, and it is fine to bring lines of older code into conformance when modifying that code for other reasons. How should I format my Git commit messages?:: indexterm:[git,commit messages] See existing examples in the git log. The first line should look like +change-type: affected-code: explanation+ where +change-type+ can be +Fix+ or +Bug+ for most bug fixes, +Feature+ for new features, +Log+ for changes to log messages or handling, +Doc+ for changes to documentation or comments, or +Test+ for changes in CTS and regression tests. You will sometimes see +Low+, +Med+ (or +Mid+) and +High+ used instead for bug fixes, to indicate the severity. The important thing is that only commits with +Feature+, +Fix+, +Bug+, or +High+ will automatically be included in the change log for the next release. The +affected-code+ is the name of the component(s) being changed, for example, +crmd+ or +libcrmcommon+ (it's more free-form, so don't sweat getting it exact). The +explanation+ briefly describes the change. The git project recommends the entire summary line stay under 50 characters, but more is fine if needed for clarity. Except for the most simple and obvious of changes, the summary should be followed by a blank line and then a longer explanation of 'why' the change was made. How can I test my changes?:: Most importantly, Pacemaker has regression tests for most major components; these will automatically be run for any pull requests submitted through GitHub. Additionally, Pacemaker's Cluster Test Suite (CTS) can be used to set up a test cluster and run a wide variety of complex tests. This document will have more detail on testing in the future. What is Pacemaker's license?:: indexterm:[licensing] Except where noted otherwise in the file itself, the source code for all Pacemaker programs is licensed under version 2 or later of the GNU General Public License (https://www.gnu.org/licenses/gpl-2.0.html[GPLv2+]), its headers and libraries under version 2.1 or later of the less restrictive GNU Lesser General Public License (https://www.gnu.org/licenses/lgpl-2.1.html[LGPLv2.1+]), its documentation under version 4.0 or later of the Creative Commons Attribution-ShareAlike International Public License (https://creativecommons.org/licenses/by-sa/4.0/legalcode[CC-BY-SA]), and its init scripts under the https://opensource.org/licenses/BSD-3-Clause[Revised BSD] license. If you find any deviations from this policy, or wish to inquire about alternate licensing arrangements, please e-mail pacemaker@oss.clusterlabs.org. Licensing issues are also discussed on the http://clusterlabs.org/wiki/License[ClusterLabs wiki]. How can I contribute my changes to the project?:: Contributions of bug fixes or new features are very much appreciated! Patches can be submitted as https://help.github.com/articles/using-pull-requests/[pull requests] via GitHub (the preferred method, due to its excellent https://github.com/features/[features]), or e-mailed to the http://clusterlabs.org/mailman/listinfo/developers[developers@clusterlabs.org] mailing list as an attachment in a format Git can import. What if I still have questions?:: indexterm:[mailing lists] Ask on the http://clusterlabs.org/mailman/listinfo/developers[developers@clusterlabs.org] mailing list for development-related questions, or on the http://clusterlabs.org/mailman/listinfo/users[users@clusterlabs.org] mailing list for general questions about using Pacemaker. Developers often also hang out on http://freenode.net/[freenode's] #clusterlabs IRC channel.