GitHub PullRequestEvent at 2014-07-02 13:59:27
Repository: resource-agents
Actor: davidvossel
Payload: {"action":"closed","number":443,"pull_request":{"url":"https://api.github.com/repos/ClusterLabs/resource-agents/pulls/443","id":17323370,"html_url":"https://github.com/ClusterLabs/resource-agents/pull/443","diff_url":"https://github.com/ClusterLabs/resource-agents/pull/443.diff","patch_url":"https://github.com/ClusterLabs/resource-agents/pull/443.patch","issue_url":"https://api.github.com/repos/ClusterLabs/resource-agents/issues/443","number":443,"state":"closed","title":"Support new NFS Active Passive and Active Active use-cases.","user":{"login":"davidvossel","id":683713,"avatar_url":"https://avatars.githubusercontent.com/u/683713?","gravatar_id":"6493967cc161349ed39998d98c5ee8c8","url":"https://api.github.com/users/davidvossel","html_url":"https://github.com/davidvossel","followers_url":"https://api.github.com/users/davidvossel/followers","following_url":"https://api.github.com/users/davidvossel/following{/other_user}","gists_url":"https://api.github.com/users/davidvossel/gists{/gist_id}","starred_url":"https://api.github.com/users/davidvossel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidvossel/subscriptions","organizations_url":"https://api.github.com/users/davidvossel/orgs","repos_url":"https://api.github.com/users/davidvossel/repos","events_url":"https://api.github.com/users/davidvossel/events{/privacy}","received_events_url":"https://api.github.com/users/davidvossel/received_events","type":"User","site_admin":false},"body":"We have two NFS related use-cases we want to support. I have documents below that outline exactly how to deploy these use-cases and why they are structured the way they are.  The commits in this pull request are related to the changes required support these NFS deployments.\r\n\r\nThe most notable change here is the introduction of the nfsnotify agent. Previously the nfsserver agent would execute sm-notify to notify NFSv3 clients of a server reboot so the clients can reclaim their locks. We've discovered that executing sm-notify before the exports are available can result in lock reclaim failures. To address this, the nfsnotify agent has been created to decouple the sm-notifications from the nfsserver agent. Now we can start the nfsserver, start the exports and floating IP, and execute sm-notify (using nfsnotify agent) as the last element in this stack. This  has proved to be much more reliable.  The nfsserver agent has been given the 'nfs_no_notify' option to toggle on/off suppressing sm-notify. The default behavior is preserved.\r\n\r\nBelow is information on the two deployments and a set of slides describing them in more detail.\r\n\r\n----------------------------------\r\nACTIVE-PASSIVE: Mixed NFSv3/NFSv4\r\n----------------------------------\r\nPresentation:\r\nhttps://github.com/davidvossel/phd/blob/master/doc/presentations/nfs-ap-overview.pdf?raw=true\r\nAutomated deployment script:\r\nhttps://github.com/davidvossel/phd/blob/master/scenarios/nfs-active-passive.scenario\r\n\r\n---------------------------------------\r\nACTIVE-ACTIVE: NFSv4 with limited NFSv3\r\n----------------------------------------\r\nPresentation:\r\nhttps://github.com/davidvossel/phd/blob/master/doc/presentations/nfs-aa-overview.pdf?raw=true\r\nAutomated deployment script:\r\nhttps://github.com/davidvossel/phd/blob/master/scenarios/nfs-active-active.scenario\r\n\r\n","created_at":"2014-06-18T22:17:45Z","updated_at":"2014-07-02T13:59:27Z","closed_at":"2014-07-02T13:59:26Z","merged_at":"2014-07-02T13:59:26Z","merge_commit_sha":"7ad9e123bebedd225f9c66c2551ffc45bda7a4a0","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ClusterLabs/resource-agents/pulls/443/commits","review_comments_url":"https://api.github.com/repos/ClusterLabs/resource-agents/pulls/443/comments","review_comment_url":"https://api.github.com/repos/ClusterLabs/resource-agents/pulls/comments/{number}","comments_url":"https://api.github.com/repos/ClusterLabs/resource-agents/issues/443/comments","statuses_url":"https://api.github.com/repos/ClusterLabs/resource-agents/statuses/3aa388702d37caab2e7621348d731b8f48463d5f","head":{"label":"davidvossel:nfs-cleanup","ref":"nfs-cleanup","sha":"3aa388702d37caab2e7621348d731b8f48463d5f","user":{"login":"davidvossel","id":683713,"avatar_url":"https://avatars.githubusercontent.com/u/683713?","gravatar_id":"6493967cc161349ed39998d98c5ee8c8","url":"https://api.github.com/users/davidvossel","html_url":"https://github.com/davidvossel","followers_url":"https://api.github.com/users/davidvossel/followers","following_url":"https://api.github.com/users/davidvossel/following{/other_user}","gists_url":"https://api.github.com/users/davidvossel/gists{/gist_id}","starred_url":"https://api.github.com/users/davidvossel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidvossel/subscriptions","organizations_url":"https://api.github.com/users/davidvossel/orgs","repos_url":"https://api.github.com/users/davidvossel/repos","events_url":"https://api.github.com/users/davidvossel/events{/privacy}","received_events_url":"https://api.github.com/users/davidvossel/received_events","type":"User","site_admin":false},"repo":{"id":8319361,"name":"resource-agents","full_name":"davidvossel/resource-agents","owner":{"login":"davidvossel","id":683713,"avatar_url":"https://avatars.githubusercontent.com/u/683713?","gravatar_id":"6493967cc161349ed39998d98c5ee8c8","url":"https://api.github.com/users/davidvossel","html_url":"https://github.com/davidvossel","followers_url":"https://api.github.com/users/davidvossel/followers","following_url":"https://api.github.com/users/davidvossel/following{/other_user}","gists_url":"https://api.github.com/users/davidvossel/gists{/gist_id}","starred_url":"https://api.github.com/users/davidvossel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidvossel/subscriptions","organizations_url":"https://api.github.com/users/davidvossel/orgs","repos_url":"https://api.github.com/users/davidvossel/repos","events_url":"https://api.github.com/users/davidvossel/events{/privacy}","received_events_url":"https://api.github.com/users/davidvossel/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/davidvossel/resource-agents","description":"Combined repository of OCF agents from the RHCS and Linux-HA projects","fork":true,"url":"https://api.github.com/repos/davidvossel/resource-agents","forks_url":"https://api.github.com/repos/davidvossel/resource-agents/forks","keys_url":"https://api.github.com/repos/davidvossel/resource-agents/keys{/key_id}","collaborators_url":"https://api.github.com/repos/davidvossel/resource-agents/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/davidvossel/resource-agents/teams","hooks_url":"https://api.github.com/repos/davidvossel/resource-agents/hooks","issue_events_url":"https://api.github.com/repos/davidvossel/resource-agents/issues/events{/number}","events_url":"https://api.github.com/repos/davidvossel/resource-agents/events","assignees_url":"https://api.github.com/repos/davidvossel/resource-agents/assignees{/user}","branches_url":"https://api.github.com/repos/davidvossel/resource-agents/branches{/branch}","tags_url":"https://api.github.com/repos/davidvossel/resource-agents/tags","blobs_url":"https://api.github.com/repos/davidvossel/resource-agents/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/davidvossel/resource-agents/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/davidvossel/resource-agents/git/refs{/sha}","trees_url":"https://api.github.com/repos/davidvossel/resource-agents/git/trees{/sha}","statuses_url":"https://api.github.com/repos/davidvossel/resource-agents/statuses/{sha}","languages_url":"https://api.github.com/repos/davidvossel/resource-agents/languages","stargazers_url":"https://api.github.com/repos/davidvossel/resource-agents/stargazers","contributors_url":"https://api.github.com/repos/davidvossel/resource-agents/contributors","subscribers_url":"https://api.github.com/repos/davidvossel/resource-agents/subscribers","subscription_url":"https://api.github.com/repos/davidvossel/resource-agents/subscription","commits_url":"https://api.github.com/repos/davidvossel/resource-agents/commits{/sha}","git_commits_url":"https://api.github.com/repos/davidvossel/resource-agents/git/commits{/sha}","comments_url":"https://api.github.com/repos/davidvossel/resource-agents/comments{/number}","issue_comment_url":"https://api.github.com/repos/davidvossel/resource-agents/issues/comments/{number}","contents_url":"https://api.github.com/repos/davidvossel/resource-agents/contents/{+path}","compare_url":"https://api.github.com/repos/davidvossel/resource-agents/compare/{base}...{head}","merges_url":"https://api.github.com/repos/davidvossel/resource-agents/merges","archive_url":"https://api.github.com/repos/davidvossel/resource-agents/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/davidvossel/resource-agents/downloads","issues_url":"https://api.github.com/repos/davidvossel/resource-agents/issues{/number}","pulls_url":"https://api.github.com/repos/davidvossel/resource-agents/pulls{/number}","milestones_url":"https://api.github.com/repos/davidvossel/resource-agents/milestones{/number}","notifications_url":"https://api.github.com/repos/davidvossel/resource-agents/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/davidvossel/resource-agents/labels{/name}","releases_url":"https://api.github.com/repos/davidvossel/resource-agents/releases{/id}","created_at":"2013-02-20T18:32:46Z","updated_at":"2014-06-19T19:56:52Z","pushed_at":"2014-06-19T19:55:13Z","git_url":"git://github.com/davidvossel/resource-agents.git","ssh_url":"git@github.com:davidvossel/resource-agents.git","clone_url":"https://github.com/davidvossel/resource-agents.git","svn_url":"https://github.com/davidvossel/resource-agents","homepage":"","size":33844,"stargazers_count":0,"watchers_count":0,"language":"Shell","has_issues":false,"has_downloads":true,"has_wiki":true,"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":"466529f4358d715bae38a7bddcf244718c4f56ca","user":{"login":"ClusterLabs","id":574912,"avatar_url":"https://avatars.githubusercontent.com/u/574912?","gravatar_id":"ac40a294cb8eefa7e9c16f7e1bb6efce","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":1316191,"name":"resource-agents","full_name":"ClusterLabs/resource-agents","owner":{"login":"ClusterLabs","id":574912,"avatar_url":"https://avatars.githubusercontent.com/u/574912?","gravatar_id":"ac40a294cb8eefa7e9c16f7e1bb6efce","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/resource-agents","description":"Combined repository of OCF agents from the RHCS and Linux-HA projects","fork":false,"url":"https://api.github.com/repos/ClusterLabs/resource-agents","forks_url":"https://api.github.com/repos/ClusterLabs/resource-agents/forks","keys_url":"https://api.github.com/repos/ClusterLabs/resource-agents/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ClusterLabs/resource-agents/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ClusterLabs/resource-agents/teams","hooks_url":"https://api.github.com/repos/ClusterLabs/resource-agents/hooks","issue_events_url":"https://api.github.com/repos/ClusterLabs/resource-agents/issues/events{/number}","events_url":"https://api.github.com/repos/ClusterLabs/resource-agents/events","assignees_url":"https://api.github.com/repos/ClusterLabs/resource-agents/assignees{/user}","branches_url":"https://api.github.com/repos/ClusterLabs/resource-agents/branches{/branch}","tags_url":"https://api.github.com/repos/ClusterLabs/resource-agents/tags","blobs_url":"https://api.github.com/repos/ClusterLabs/resource-agents/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ClusterLabs/resource-agents/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ClusterLabs/resource-agents/git/refs{/sha}","trees_url":"https://api.github.com/repos/ClusterLabs/resource-agents/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ClusterLabs/resource-agents/statuses/{sha}","languages_url":"https://api.github.com/repos/ClusterLabs/resource-agents/languages","stargazers_url":"https://api.github.com/repos/ClusterLabs/resource-agents/stargazers","contributors_url":"https://api.github.com/repos/ClusterLabs/resource-agents/contributors","subscribers_url":"https://api.github.com/repos/ClusterLabs/resource-agents/subscribers","subscription_url":"https://api.github.com/repos/ClusterLabs/resource-agents/subscription","commits_url":"https://api.github.com/repos/ClusterLabs/resource-agents/commits{/sha}","git_commits_url":"https://api.github.com/repos/ClusterLabs/resource-agents/git/commits{/sha}","comments_url":"https://api.github.com/repos/ClusterLabs/resource-agents/comments{/number}","issue_comment_url":"https://api.github.com/repos/ClusterLabs/resource-agents/issues/comments/{number}","contents_url":"https://api.github.com/repos/ClusterLabs/resource-agents/contents/{+path}","compare_url":"https://api.github.com/repos/ClusterLabs/resource-agents/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ClusterLabs/resource-agents/merges","archive_url":"https://api.github.com/repos/ClusterLabs/resource-agents/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ClusterLabs/resource-agents/downloads","issues_url":"https://api.github.com/repos/ClusterLabs/resource-agents/issues{/number}","pulls_url":"https://api.github.com/repos/ClusterLabs/resource-agents/pulls{/number}","milestones_url":"https://api.github.com/repos/ClusterLabs/resource-agents/milestones{/number}","notifications_url":"https://api.github.com/repos/ClusterLabs/resource-agents/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ClusterLabs/resource-agents/labels{/name}","releases_url":"https://api.github.com/repos/ClusterLabs/resource-agents/releases{/id}","created_at":"2011-02-01T13:43:18Z","updated_at":"2014-07-01T18:31:55Z","pushed_at":"2014-07-02T13:59:26Z","git_url":"git://github.com/ClusterLabs/resource-agents.git","ssh_url":"git@github.com:ClusterLabs/resource-agents.git","clone_url":"https://github.com/ClusterLabs/resource-agents.git","svn_url":"https://github.com/ClusterLabs/resource-agents","homepage":"","size":37877,"stargazers_count":206,"watchers_count":206,"language":"Shell","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":200,"mirror_url":null,"open_issues_count":65,"forks":200,"open_issues":65,"watchers":206,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ClusterLabs/resource-agents/pulls/443"},"html":{"href":"https://github.com/ClusterLabs/resource-agents/pull/443"},"issue":{"href":"https://api.github.com/repos/ClusterLabs/resource-agents/issues/443"},"comments":{"href":"https://api.github.com/repos/ClusterLabs/resource-agents/issues/443/comments"},"review_comments":{"href":"https://api.github.com/repos/ClusterLabs/resource-agents/pulls/443/comments"},"review_comment":{"href":"https://api.github.com/repos/ClusterLabs/resource-agents/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/ClusterLabs/resource-agents/pulls/443/commits"},"statuses":{"href":"https://api.github.com/repos/ClusterLabs/resource-agents/statuses/3aa388702d37caab2e7621348d731b8f48463d5f"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"davidvossel","id":683713,"avatar_url":"https://avatars.githubusercontent.com/u/683713?","gravatar_id":"6493967cc161349ed39998d98c5ee8c8","url":"https://api.github.com/users/davidvossel","html_url":"https://github.com/davidvossel","followers_url":"https://api.github.com/users/davidvossel/followers","following_url":"https://api.github.com/users/davidvossel/following{/other_user}","gists_url":"https://api.github.com/users/davidvossel/gists{/gist_id}","starred_url":"https://api.github.com/users/davidvossel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidvossel/subscriptions","organizations_url":"https://api.github.com/users/davidvossel/orgs","repos_url":"https://api.github.com/users/davidvossel/repos","events_url":"https://api.github.com/users/davidvossel/events{/privacy}","received_events_url":"https://api.github.com/users/davidvossel/received_events","type":"User","site_admin":false},"comments":3,"review_comments":0,"commits":8,"additions":512,"deletions":46,"changed_files":4}}