{"action":"created","comment":{"url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/comments/22472642","id":22472642,"diff_hunk":"@@ -328,258 +175,143 @@ anywhere.\n \n [IMPORTANT]\n ===========\n-\n Colocation constraints are \"directional\", in that they imply certain\n things about the order in which the two resources will have a location\n-chosen. In this case we're saying +WebSite+ needs to be placed on the\n-same machine as +ClusterIP+, this implies that we must know the\n-location of +ClusterIP+ before choosing a location for +WebSite+.\n-\n+chosen. In this case, we're saying that *WebSite* needs to be placed on the\n+same machine as *ClusterIP*, which implies that the cluster must know the\n+location of *ClusterIP* before choosing a location for *WebSite*.\n ===========\n \n-ifdef::pcs[]\n-[source,C]\n -----\n-# pcs constraint colocation add WebSite ClusterIP INFINITY\n-# pcs constraint\n+[root@pcmk-1 ~]# pcs constraint colocation add WebSite ClusterIP INFINITY","path":"doc/Clusters_from_Scratch/en-US/Ch-Apache.txt","position":445,"original_position":445,"commit_id":"d1edd48f5daab555e4108c10e14587f234d9a3f7","original_commit_id":"90d0a0eedb18df917ca45e6feeb389abdb005369","user":{"login":"kgaillot","id":8730570,"avatar_url":"https://avatars.githubusercontent.com/u/8730570?v=3","gravatar_id":"","url":"https://api.github.com/users/kgaillot","html_url":"https://github.com/kgaillot","followers_url":"https://api.github.com/users/kgaillot/followers","following_url":"https://api.github.com/users/kgaillot/following{/other_user}","gists_url":"https://api.github.com/users/kgaillot/gists{/gist_id}","starred_url":"https://api.github.com/users/kgaillot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kgaillot/subscriptions","organizations_url":"https://api.github.com/users/kgaillot/orgs","repos_url":"https://api.github.com/users/kgaillot/repos","events_url":"https://api.github.com/users/kgaillot/events{/privacy}","received_events_url":"https://api.github.com/users/kgaillot/received_events","type":"User","site_admin":false},"body":"Verified that 'with' works in F21, will add to next round of changes.","created_at":"2015-01-05T16:54:31Z","updated_at":"2015-01-05T16:54:31Z","html_url":"https://github.com/ClusterLabs/pacemaker/pull/619#discussion_r22472642","pull_request_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/619","_links":{"self":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/comments/22472642"},"html":{"href":"https://github.com/ClusterLabs/pacemaker/pull/619#discussion_r22472642"},"pull_request":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/619"}}},"pull_request":{"url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/619","id":26476296,"html_url":"https://github.com/ClusterLabs/pacemaker/pull/619","diff_url":"https://github.com/ClusterLabs/pacemaker/pull/619.diff","patch_url":"https://github.com/ClusterLabs/pacemaker/pull/619.patch","issue_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/619","number":619,"state":"open","locked":false,"title":"update Clusters From Scratch for Fedora 21","user":{"login":"kgaillot","id":8730570,"avatar_url":"https://avatars.githubusercontent.com/u/8730570?v=3","gravatar_id":"","url":"https://api.github.com/users/kgaillot","html_url":"https://github.com/kgaillot","followers_url":"https://api.github.com/users/kgaillot/followers","following_url":"https://api.github.com/users/kgaillot/following{/other_user}","gists_url":"https://api.github.com/users/kgaillot/gists{/gist_id}","starred_url":"https://api.github.com/users/kgaillot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kgaillot/subscriptions","organizations_url":"https://api.github.com/users/kgaillot/orgs","repos_url":"https://api.github.com/users/kgaillot/repos","events_url":"https://api.github.com/users/kgaillot/events{/privacy}","received_events_url":"https://api.github.com/users/kgaillot/received_events","type":"User","site_admin":false},"body":"This revision is an extensive overhaul of the Clusters From Scratch documentation. Diff is possible but you'll probably want to compare the generated HTML side-by-side instead or in addition. For convenience I've generated the full branded docs and made them available at http://www.boogieonline.com/ha/ for comparison.\r\n\r\n== The changes fall into these areas:\r\n\r\n* Update for Fedora 21 (OS installation instructions, some systemd/firewalld-related stuff and pcs syntax/output).\r\n\r\n* This should close http://bugs.clusterlabs.org/show_bug.cgi?id=5227 \"typos in Pacemaker-1.1-Clusters_from_Scratch-en-US.pdf\" and http://bugs.clusterlabs.org/show_bug.cgi?id=5228 \"Clusters_from_Scratch 2.5.3. wrong command\". The reporter's syntax suggestions may apply to F20 (I didn't check), but they definitely are not needed for F21. Only one of the recommended changes was needed (correcting the IP address in an example).\r\n\r\n* Strip out the ifdef's for generating a crmsh version (internal markup changes only, no visible impact on generated output). I had mixed feelings about this, but the crmsh info would no longer have been valid as-is for Fedora 21, so I thought it was better to remove it altogether. (Version control makes me brave.)\r\n\r\n* Make the styling more consistent with what the \"Typographic Conventions\" section says it is. This includes getting rid of the [source,C] highlighting for command-line blocks, since it's not really correct and the conventions do not indicate any highlighting in command-line output blocks.\r\n\r\n* I added one stylistic convention, commands are displayed with '#' if they need to be done on both nodes, or '[root@pcmk-1 ~]#' if they need to be done on one specific node. I felt this was more consistent with what the reader would see if they were following exactly, but if you feel it clutters too much, we can go back to '#' everywhere.\r\n\r\n* Make most headings imperative (e.g. \"Adding a Resource\" becomes \"Add a Resource\"). Psychological engineering to make the reader feel more active and confident.\r\n\r\n* Move the STONITH chapter before Active/Active, because DLM now refuses to run if STONITH is disabled. Within Active/Active, I moved configuring a DLM resource before configuring GFS2, for clarity; before, the DLM configuration was in the middle of the GFS2 configuration.\r\n\r\n* Misc. corrections. For example, the previous version had no colocation or ordering constraints for DLM and GFS2, so trying to stop cluster services on a node could lead to ordering problems and the node being fenced; those constraints were added.\r\n\r\n* Misc. rewordings for clarity.\r\n\r\n== Issues remaining:\r\n\r\n* While I took out the crmsh ifdef's from the documentation, the Makefile.am in doc still distinguishes between crmsh and pcs versions. No harm done, but crmsh could be removed here, too -- but that would likely involve path changes (and thus .gitignore changes) etc. It would also be nice to redo some of the targets, e.g. allowing the full set of documentation to be built without also trying to upload it to clusterlabs.org.\r\n\r\n* \"2.6.2. Configure Corosync\" has an ugly workaround for a bug in the currently shipped version of pcs in Fedora 21. Chris Feist is working on a fix, but in the meantime the only workarounds are disabling IPv6 on the node entirely or the one-line source change described in this section. I'm not sure whether we should hold CFS until the fix is available, or release it with the workaround and update it when the fix comes out.\r\n\r\n* The whole process might not actually work if followed exactly; I encountered many issues and fixed or worked around them as I went, and I may have missed updating the documentation accordingly in some cases. It would be worthwhile for someone else to try to follow it to get a fresh perspective. One particularly important example: the cluster will sometimes put both ClusterIP clones on a single node, even if the other node is healthy. I couldn't quickly figure out constraints/attributes to alter that behavior, so I just didn't discuss it. I still need to figure out why that was happening and update the documentation once I know what to do about it.\r\n\r\n* I didn't want to go down the rabbit hole of even bigger changes, but I think it would make sense to stop Chapter 2 at \"Configure SSH\" so that it was just the OS install/configuration, and put the remainder of chapter 2 with the current chapter 3 so that chapter 3 becomes cluster install/configuration.\r\n\r\n* Finally and trivially, there are three places where this document is versioned. Book_Info.xml has edition and pubsnumber tags; the value of edition appears on the title page, and pubsnumber seems not be user-visible, so it's probably just for internal bookkeeping. Then Revision_History.xml has its own numbering system (and is visible as the final appendix). It looks weird that the title page has one version number and the revision history has another. I'd recommend keeping the Revision_History.xml X-Y versioning in sync with the EDITION-PUBSNUMBER of Book_info.xml (which would mean jumping EDITION ahead a few numbers). To put some logic behind it, we could increment EDITION whenever the version/syntax of the documented software changes (Fedora, pacemaker, corosync, pcs), and PUBSNUMBER for other changes (corrections, translations, etc.). But that's incredibly unimportant.","created_at":"2014-12-22T19:41:40Z","updated_at":"2015-01-05T16:54:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2633f21dce9d82afb1dcdbfb43b0422115ca8cb2","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/619/commits","review_comments_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/619/comments","review_comment_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/comments/{number}","comments_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/619/comments","statuses_url":"https://api.github.com/repos/ClusterLabs/pacemaker/statuses/d1edd48f5daab555e4108c10e14587f234d9a3f7","head":{"label":"kgaillot:CFS","ref":"CFS","sha":"d1edd48f5daab555e4108c10e14587f234d9a3f7","user":{"login":"kgaillot","id":8730570,"avatar_url":"https://avatars.githubusercontent.com/u/8730570?v=3","gravatar_id":"","url":"https://api.github.com/users/kgaillot","html_url":"https://github.com/kgaillot","followers_url":"https://api.github.com/users/kgaillot/followers","following_url":"https://api.github.com/users/kgaillot/following{/other_user}","gists_url":"https://api.github.com/users/kgaillot/gists{/gist_id}","starred_url":"https://api.github.com/users/kgaillot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kgaillot/subscriptions","organizations_url":"https://api.github.com/users/kgaillot/orgs","repos_url":"https://api.github.com/users/kgaillot/repos","events_url":"https://api.github.com/users/kgaillot/events{/privacy}","received_events_url":"https://api.github.com/users/kgaillot/received_events","type":"User","site_admin":false},"repo":{"id":28232671,"name":"pacemaker","full_name":"kgaillot/pacemaker","owner":{"login":"kgaillot","id":8730570,"avatar_url":"https://avatars.githubusercontent.com/u/8730570?v=3","gravatar_id":"","url":"https://api.github.com/users/kgaillot","html_url":"https://github.com/kgaillot","followers_url":"https://api.github.com/users/kgaillot/followers","following_url":"https://api.github.com/users/kgaillot/following{/other_user}","gists_url":"https://api.github.com/users/kgaillot/gists{/gist_id}","starred_url":"https://api.github.com/users/kgaillot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kgaillot/subscriptions","organizations_url":"https://api.github.com/users/kgaillot/orgs","repos_url":"https://api.github.com/users/kgaillot/repos","events_url":"https://api.github.com/users/kgaillot/events{/privacy}","received_events_url":"https://api.github.com/users/kgaillot/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kgaillot/pacemaker","description":"Pacemaker is an advanced, scalable High-Availability cluster resource manager","fork":true,"url":"https://api.github.com/repos/kgaillot/pacemaker","forks_url":"https://api.github.com/repos/kgaillot/pacemaker/forks","keys_url":"https://api.github.com/repos/kgaillot/pacemaker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kgaillot/pacemaker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kgaillot/pacemaker/teams","hooks_url":"https://api.github.com/repos/kgaillot/pacemaker/hooks","issue_events_url":"https://api.github.com/repos/kgaillot/pacemaker/issues/events{/number}","events_url":"https://api.github.com/repos/kgaillot/pacemaker/events","assignees_url":"https://api.github.com/repos/kgaillot/pacemaker/assignees{/user}","branches_url":"https://api.github.com/repos/kgaillot/pacemaker/branches{/branch}","tags_url":"https://api.github.com/repos/kgaillot/pacemaker/tags","blobs_url":"https://api.github.com/repos/kgaillot/pacemaker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kgaillot/pacemaker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kgaillot/pacemaker/git/refs{/sha}","trees_url":"https://api.github.com/repos/kgaillot/pacemaker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kgaillot/pacemaker/statuses/{sha}","languages_url":"https://api.github.com/repos/kgaillot/pacemaker/languages","stargazers_url":"https://api.github.com/repos/kgaillot/pacemaker/stargazers","contributors_url":"https://api.github.com/repos/kgaillot/pacemaker/contributors","subscribers_url":"https://api.github.com/repos/kgaillot/pacemaker/subscribers","subscription_url":"https://api.github.com/repos/kgaillot/pacemaker/subscription","commits_url":"https://api.github.com/repos/kgaillot/pacemaker/commits{/sha}","git_commits_url":"https://api.github.com/repos/kgaillot/pacemaker/git/commits{/sha}","comments_url":"https://api.github.com/repos/kgaillot/pacemaker/comments{/number}","issue_comment_url":"https://api.github.com/repos/kgaillot/pacemaker/issues/comments/{number}","contents_url":"https://api.github.com/repos/kgaillot/pacemaker/contents/{+path}","compare_url":"https://api.github.com/repos/kgaillot/pacemaker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kgaillot/pacemaker/merges","archive_url":"https://api.github.com/repos/kgaillot/pacemaker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kgaillot/pacemaker/downloads","issues_url":"https://api.github.com/repos/kgaillot/pacemaker/issues{/number}","pulls_url":"https://api.github.com/repos/kgaillot/pacemaker/pulls{/number}","milestones_url":"https://api.github.com/repos/kgaillot/pacemaker/milestones{/number}","notifications_url":"https://api.github.com/repos/kgaillot/pacemaker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kgaillot/pacemaker/labels{/name}","releases_url":"https://api.github.com/repos/kgaillot/pacemaker/releases{/id}","created_at":"2014-12-19T14:33:03Z","updated_at":"2014-12-21T00:12:18Z","pushed_at":"2014-12-23T22:48:32Z","git_url":"git://github.com/kgaillot/pacemaker.git","ssh_url":"git@github.com:kgaillot/pacemaker.git","clone_url":"https://github.com/kgaillot/pacemaker.git","svn_url":"https://github.com/kgaillot/pacemaker","homepage":"http://www.clusterlabs.org","size":130476,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ClusterLabs:master","ref":"master","sha":"ffb2107862900936e023db46a4bb6e2ed57d1ee3","user":{"login":"ClusterLabs","id":574912,"avatar_url":"https://avatars.githubusercontent.com/u/574912?v=3","gravatar_id":"","url":"https://api.github.com/users/ClusterLabs","html_url":"https://github.com/ClusterLabs","followers_url":"https://api.github.com/users/ClusterLabs/followers","following_url":"https://api.github.com/users/ClusterLabs/following{/other_user}","gists_url":"https://api.github.com/users/ClusterLabs/gists{/gist_id}","starred_url":"https://api.github.com/users/ClusterLabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ClusterLabs/subscriptions","organizations_url":"https://api.github.com/users/ClusterLabs/orgs","repos_url":"https://api.github.com/users/ClusterLabs/repos","events_url":"https://api.github.com/users/ClusterLabs/events{/privacy}","received_events_url":"https://api.github.com/users/ClusterLabs/received_events","type":"Organization","site_admin":false},"repo":{"id":2304962,"name":"pacemaker","full_name":"ClusterLabs/pacemaker","owner":{"login":"ClusterLabs","id":574912,"avatar_url":"https://avatars.githubusercontent.com/u/574912?v=3","gravatar_id":"","url":"https://api.github.com/users/ClusterLabs","html_url":"https://github.com/ClusterLabs","followers_url":"https://api.github.com/users/ClusterLabs/followers","following_url":"https://api.github.com/users/ClusterLabs/following{/other_user}","gists_url":"https://api.github.com/users/ClusterLabs/gists{/gist_id}","starred_url":"https://api.github.com/users/ClusterLabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ClusterLabs/subscriptions","organizations_url":"https://api.github.com/users/ClusterLabs/orgs","repos_url":"https://api.github.com/users/ClusterLabs/repos","events_url":"https://api.github.com/users/ClusterLabs/events{/privacy}","received_events_url":"https://api.github.com/users/ClusterLabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ClusterLabs/pacemaker","description":"Pacemaker is an advanced, scalable High-Availability cluster resource manager","fork":false,"url":"https://api.github.com/repos/ClusterLabs/pacemaker","forks_url":"https://api.github.com/repos/ClusterLabs/pacemaker/forks","keys_url":"https://api.github.com/repos/ClusterLabs/pacemaker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ClusterLabs/pacemaker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ClusterLabs/pacemaker/teams","hooks_url":"https://api.github.com/repos/ClusterLabs/pacemaker/hooks","issue_events_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/events{/number}","events_url":"https://api.github.com/repos/ClusterLabs/pacemaker/events","assignees_url":"https://api.github.com/repos/ClusterLabs/pacemaker/assignees{/user}","branches_url":"https://api.github.com/repos/ClusterLabs/pacemaker/branches{/branch}","tags_url":"https://api.github.com/repos/ClusterLabs/pacemaker/tags","blobs_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/refs{/sha}","trees_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ClusterLabs/pacemaker/statuses/{sha}","languages_url":"https://api.github.com/repos/ClusterLabs/pacemaker/languages","stargazers_url":"https://api.github.com/repos/ClusterLabs/pacemaker/stargazers","contributors_url":"https://api.github.com/repos/ClusterLabs/pacemaker/contributors","subscribers_url":"https://api.github.com/repos/ClusterLabs/pacemaker/subscribers","subscription_url":"https://api.github.com/repos/ClusterLabs/pacemaker/subscription","commits_url":"https://api.github.com/repos/ClusterLabs/pacemaker/commits{/sha}","git_commits_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/commits{/sha}","comments_url":"https://api.github.com/repos/ClusterLabs/pacemaker/comments{/number}","issue_comment_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/comments/{number}","contents_url":"https://api.github.com/repos/ClusterLabs/pacemaker/contents/{+path}","compare_url":"https://api.github.com/repos/ClusterLabs/pacemaker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ClusterLabs/pacemaker/merges","archive_url":"https://api.github.com/repos/ClusterLabs/pacemaker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ClusterLabs/pacemaker/downloads","issues_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues{/number}","pulls_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls{/number}","milestones_url":"https://api.github.com/repos/ClusterLabs/pacemaker/milestones{/number}","notifications_url":"https://api.github.com/repos/ClusterLabs/pacemaker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ClusterLabs/pacemaker/labels{/name}","releases_url":"https://api.github.com/repos/ClusterLabs/pacemaker/releases{/id}","created_at":"2011-09-01T00:08:16Z","updated_at":"2015-01-02T14:59:34Z","pushed_at":"2015-01-02T14:59:33Z","git_url":"git://github.com/ClusterLabs/pacemaker.git","ssh_url":"git@github.com:ClusterLabs/pacemaker.git","clone_url":"https://github.com/ClusterLabs/pacemaker.git","svn_url":"https://github.com/ClusterLabs/pacemaker","homepage":"http://www.clusterlabs.org","size":151992,"stargazers_count":197,"watchers_count":197,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":97,"mirror_url":null,"open_issues_count":9,"forks":97,"open_issues":9,"watchers":197,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/619"},"html":{"href":"https://github.com/ClusterLabs/pacemaker/pull/619"},"issue":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/619"},"comments":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/619/comments"},"review_comments":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/619/comments"},"review_comment":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/619/commits"},"statuses":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/statuses/d1edd48f5daab555e4108c10e14587f234d9a3f7"}}}}