{"action":"created","comment":{"url":"https://api.github.com/repos/bloomberg/chef-bach/pulls/comments/43837281","id":43837281,"diff_hunk":"@@ -0,0 +1,10 @@\n+default[:bcpc][:hadoop][:acl_group] = \"acl_group_for_pam\"\n+default[:bcpc][:hadoop][:base_dn] = \"DC=domain,DC=example,DC=com\"","path":"cookbooks/bcpc-hadoop/attributes/maintenance.rb","position":null,"original_position":2,"commit_id":"8b16f654bd91bde1122f2da5ea2efcc8b723066a","original_commit_id":"87ddf3d79f29a2ab390499100c43c064669270b4","user":{"login":"cbaenziger","id":4192761,"avatar_url":"https://avatars.githubusercontent.com/u/4192761?v=3","gravatar_id":"","url":"https://api.github.com/users/cbaenziger","html_url":"https://github.com/cbaenziger","followers_url":"https://api.github.com/users/cbaenziger/followers","following_url":"https://api.github.com/users/cbaenziger/following{/other_user}","gists_url":"https://api.github.com/users/cbaenziger/gists{/gist_id}","starred_url":"https://api.github.com/users/cbaenziger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cbaenziger/subscriptions","organizations_url":"https://api.github.com/users/cbaenziger/orgs","repos_url":"https://api.github.com/users/cbaenziger/repos","events_url":"https://api.github.com/users/cbaenziger/events{/privacy}","received_events_url":"https://api.github.com/users/cbaenziger/received_events","type":"User","site_admin":false},"body":"Updated","created_at":"2015-11-04T02:43:48Z","updated_at":"2015-11-04T02:43:48Z","html_url":"https://github.com/bloomberg/chef-bach/pull/302#discussion_r43837281","pull_request_url":"https://api.github.com/repos/bloomberg/chef-bach/pulls/302","_links":{"self":{"href":"https://api.github.com/repos/bloomberg/chef-bach/pulls/comments/43837281"},"html":{"href":"https://github.com/bloomberg/chef-bach/pull/302#discussion_r43837281"},"pull_request":{"href":"https://api.github.com/repos/bloomberg/chef-bach/pulls/302"}}},"pull_request":{"url":"https://api.github.com/repos/bloomberg/chef-bach/pulls/302","id":47477526,"html_url":"https://github.com/bloomberg/chef-bach/pull/302","diff_url":"https://github.com/bloomberg/chef-bach/pull/302.diff","patch_url":"https://github.com/bloomberg/chef-bach/pull/302.patch","issue_url":"https://api.github.com/repos/bloomberg/chef-bach/issues/302","number":302,"state":"open","locked":false,"title":"Maintenance Tasks","user":{"login":"cbaenziger","id":4192761,"avatar_url":"https://avatars.githubusercontent.com/u/4192761?v=3","gravatar_id":"","url":"https://api.github.com/users/cbaenziger","html_url":"https://github.com/cbaenziger","followers_url":"https://api.github.com/users/cbaenziger/followers","following_url":"https://api.github.com/users/cbaenziger/following{/other_user}","gists_url":"https://api.github.com/users/cbaenziger/gists{/gist_id}","starred_url":"https://api.github.com/users/cbaenziger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cbaenziger/subscriptions","organizations_url":"https://api.github.com/users/cbaenziger/orgs","repos_url":"https://api.github.com/users/cbaenziger/repos","events_url":"https://api.github.com/users/cbaenziger/events{/privacy}","received_events_url":"https://api.github.com/users/cbaenziger/received_events","type":"User","site_admin":false},"body":"This PR proposes adding some maintenance tasks linked with LDAP which has proven to be useful. In particular it provides:\r\n* `bcpc-hadoop::hdfs_user_directories`\r\n  This provides a recipe to create the HDFS `/user` directories for users in a PAM ACL group for the cluster so an administrator does not need to do this by hand\r\n* `bcpc-hadoop::hdfs_group_directories`\r\n  This provides a recipe to create POSIX (or HDFS LDAP) group directories for users to collaborate on projects. Further, there is an attribute to black list groups which are not relevant to projects and should not create their own `/groups` directories on HDFS.\r\n\r\nSome useful Ruby helper functions provided:\r\n* `BcpcHadoop::Helper::getent` -- provides a programmatic interface to the `getent`(1) command.\r\n* `BcpcHadoop::Helper::groups` -- provides a programmatic interface to the `groups`(1) command.\r\n* `BcpcHadoop::Helper::find_object_by_group` -- provides a programmatic interface around the `ldapsearch`(1) comand for a kerberized BACH cluster with a kerberized LDAP server.\r\n\r\nFurther, this PR introduces R-spec testing for the code as there is significant LDAP parsing code involved. This code assumes a kerberized LDAP implementation so that one may query the LDAP server without a bind password. (As such at this time there is no functional test in the chef-bach project for this code.)\r\n\r\nSome warts:\r\n* Ideally, `new_dir_creation` would use the hdfs_directory_creation resource provider but at this time I do not understand if the provider will work on a kerberized cluster as is.","created_at":"2015-10-13T00:01:14Z","updated_at":"2015-11-04T02:43:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"755009b801b2774c460a5520f47d77beaf215f9c","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/bloomberg/chef-bach/pulls/302/commits","review_comments_url":"https://api.github.com/repos/bloomberg/chef-bach/pulls/302/comments","review_comment_url":"https://api.github.com/repos/bloomberg/chef-bach/pulls/comments{/number}","comments_url":"https://api.github.com/repos/bloomberg/chef-bach/issues/302/comments","statuses_url":"https://api.github.com/repos/bloomberg/chef-bach/statuses/8b16f654bd91bde1122f2da5ea2efcc8b723066a","head":{"label":"cbaenziger:maintenance","ref":"maintenance","sha":"8b16f654bd91bde1122f2da5ea2efcc8b723066a","user":{"login":"cbaenziger","id":4192761,"avatar_url":"https://avatars.githubusercontent.com/u/4192761?v=3","gravatar_id":"","url":"https://api.github.com/users/cbaenziger","html_url":"https://github.com/cbaenziger","followers_url":"https://api.github.com/users/cbaenziger/followers","following_url":"https://api.github.com/users/cbaenziger/following{/other_user}","gists_url":"https://api.github.com/users/cbaenziger/gists{/gist_id}","starred_url":"https://api.github.com/users/cbaenziger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cbaenziger/subscriptions","organizations_url":"https://api.github.com/users/cbaenziger/orgs","repos_url":"https://api.github.com/users/cbaenziger/repos","events_url":"https://api.github.com/users/cbaenziger/events{/privacy}","received_events_url":"https://api.github.com/users/cbaenziger/received_events","type":"User","site_admin":false},"repo":{"id":25824446,"name":"chef-bach","full_name":"cbaenziger/chef-bach","owner":{"login":"cbaenziger","id":4192761,"avatar_url":"https://avatars.githubusercontent.com/u/4192761?v=3","gravatar_id":"","url":"https://api.github.com/users/cbaenziger","html_url":"https://github.com/cbaenziger","followers_url":"https://api.github.com/users/cbaenziger/followers","following_url":"https://api.github.com/users/cbaenziger/following{/other_user}","gists_url":"https://api.github.com/users/cbaenziger/gists{/gist_id}","starred_url":"https://api.github.com/users/cbaenziger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cbaenziger/subscriptions","organizations_url":"https://api.github.com/users/cbaenziger/orgs","repos_url":"https://api.github.com/users/cbaenziger/repos","events_url":"https://api.github.com/users/cbaenziger/events{/privacy}","received_events_url":"https://api.github.com/users/cbaenziger/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cbaenziger/chef-bach","description":"Chef recipes for Bloomberg's deployment of Hadoop and related components","fork":true,"url":"https://api.github.com/repos/cbaenziger/chef-bach","forks_url":"https://api.github.com/repos/cbaenziger/chef-bach/forks","keys_url":"https://api.github.com/repos/cbaenziger/chef-bach/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cbaenziger/chef-bach/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cbaenziger/chef-bach/teams","hooks_url":"https://api.github.com/repos/cbaenziger/chef-bach/hooks","issue_events_url":"https://api.github.com/repos/cbaenziger/chef-bach/issues/events{/number}","events_url":"https://api.github.com/repos/cbaenziger/chef-bach/events","assignees_url":"https://api.github.com/repos/cbaenziger/chef-bach/assignees{/user}","branches_url":"https://api.github.com/repos/cbaenziger/chef-bach/branches{/branch}","tags_url":"https://api.github.com/repos/cbaenziger/chef-bach/tags","blobs_url":"https://api.github.com/repos/cbaenziger/chef-bach/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cbaenziger/chef-bach/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cbaenziger/chef-bach/git/refs{/sha}","trees_url":"https://api.github.com/repos/cbaenziger/chef-bach/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cbaenziger/chef-bach/statuses/{sha}","languages_url":"https://api.github.com/repos/cbaenziger/chef-bach/languages","stargazers_url":"https://api.github.com/repos/cbaenziger/chef-bach/stargazers","contributors_url":"https://api.github.com/repos/cbaenziger/chef-bach/contributors","subscribers_url":"https://api.github.com/repos/cbaenziger/chef-bach/subscribers","subscription_url":"https://api.github.com/repos/cbaenziger/chef-bach/subscription","commits_url":"https://api.github.com/repos/cbaenziger/chef-bach/commits{/sha}","git_commits_url":"https://api.github.com/repos/cbaenziger/chef-bach/git/commits{/sha}","comments_url":"https://api.github.com/repos/cbaenziger/chef-bach/comments{/number}","issue_comment_url":"https://api.github.com/repos/cbaenziger/chef-bach/issues/comments{/number}","contents_url":"https://api.github.com/repos/cbaenziger/chef-bach/contents/{+path}","compare_url":"https://api.github.com/repos/cbaenziger/chef-bach/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cbaenziger/chef-bach/merges","archive_url":"https://api.github.com/repos/cbaenziger/chef-bach/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cbaenziger/chef-bach/downloads","issues_url":"https://api.github.com/repos/cbaenziger/chef-bach/issues{/number}","pulls_url":"https://api.github.com/repos/cbaenziger/chef-bach/pulls{/number}","milestones_url":"https://api.github.com/repos/cbaenziger/chef-bach/milestones{/number}","notifications_url":"https://api.github.com/repos/cbaenziger/chef-bach/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cbaenziger/chef-bach/labels{/name}","releases_url":"https://api.github.com/repos/cbaenziger/chef-bach/releases{/id}","created_at":"2014-10-27T15:02:22Z","updated_at":"2015-04-12T23:24:06Z","pushed_at":"2015-11-04T02:43:42Z","git_url":"git://github.com/cbaenziger/chef-bach.git","ssh_url":"git@github.com:cbaenziger/chef-bach.git","clone_url":"https://github.com/cbaenziger/chef-bach.git","svn_url":"https://github.com/cbaenziger/chef-bach","homepage":null,"size":2882,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"bloomberg:master","ref":"master","sha":"cfd1633cbe8985be6ce2611c45a8e3fa540f0026","user":{"login":"bloomberg","id":1416818,"avatar_url":"https://avatars.githubusercontent.com/u/1416818?v=3","gravatar_id":"","url":"https://api.github.com/users/bloomberg","html_url":"https://github.com/bloomberg","followers_url":"https://api.github.com/users/bloomberg/followers","following_url":"https://api.github.com/users/bloomberg/following{/other_user}","gists_url":"https://api.github.com/users/bloomberg/gists{/gist_id}","starred_url":"https://api.github.com/users/bloomberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bloomberg/subscriptions","organizations_url":"https://api.github.com/users/bloomberg/orgs","repos_url":"https://api.github.com/users/bloomberg/repos","events_url":"https://api.github.com/users/bloomberg/events{/privacy}","received_events_url":"https://api.github.com/users/bloomberg/received_events","type":"Organization","site_admin":false},"repo":{"id":24933148,"name":"chef-bach","full_name":"bloomberg/chef-bach","owner":{"login":"bloomberg","id":1416818,"avatar_url":"https://avatars.githubusercontent.com/u/1416818?v=3","gravatar_id":"","url":"https://api.github.com/users/bloomberg","html_url":"https://github.com/bloomberg","followers_url":"https://api.github.com/users/bloomberg/followers","following_url":"https://api.github.com/users/bloomberg/following{/other_user}","gists_url":"https://api.github.com/users/bloomberg/gists{/gist_id}","starred_url":"https://api.github.com/users/bloomberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bloomberg/subscriptions","organizations_url":"https://api.github.com/users/bloomberg/orgs","repos_url":"https://api.github.com/users/bloomberg/repos","events_url":"https://api.github.com/users/bloomberg/events{/privacy}","received_events_url":"https://api.github.com/users/bloomberg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/bloomberg/chef-bach","description":"Chef recipes for Bloomberg's deployment of Hadoop and related components","fork":false,"url":"https://api.github.com/repos/bloomberg/chef-bach","forks_url":"https://api.github.com/repos/bloomberg/chef-bach/forks","keys_url":"https://api.github.com/repos/bloomberg/chef-bach/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bloomberg/chef-bach/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bloomberg/chef-bach/teams","hooks_url":"https://api.github.com/repos/bloomberg/chef-bach/hooks","issue_events_url":"https://api.github.com/repos/bloomberg/chef-bach/issues/events{/number}","events_url":"https://api.github.com/repos/bloomberg/chef-bach/events","assignees_url":"https://api.github.com/repos/bloomberg/chef-bach/assignees{/user}","branches_url":"https://api.github.com/repos/bloomberg/chef-bach/branches{/branch}","tags_url":"https://api.github.com/repos/bloomberg/chef-bach/tags","blobs_url":"https://api.github.com/repos/bloomberg/chef-bach/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bloomberg/chef-bach/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bloomberg/chef-bach/git/refs{/sha}","trees_url":"https://api.github.com/repos/bloomberg/chef-bach/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bloomberg/chef-bach/statuses/{sha}","languages_url":"https://api.github.com/repos/bloomberg/chef-bach/languages","stargazers_url":"https://api.github.com/repos/bloomberg/chef-bach/stargazers","contributors_url":"https://api.github.com/repos/bloomberg/chef-bach/contributors","subscribers_url":"https://api.github.com/repos/bloomberg/chef-bach/subscribers","subscription_url":"https://api.github.com/repos/bloomberg/chef-bach/subscription","commits_url":"https://api.github.com/repos/bloomberg/chef-bach/commits{/sha}","git_commits_url":"https://api.github.com/repos/bloomberg/chef-bach/git/commits{/sha}","comments_url":"https://api.github.com/repos/bloomberg/chef-bach/comments{/number}","issue_comment_url":"https://api.github.com/repos/bloomberg/chef-bach/issues/comments{/number}","contents_url":"https://api.github.com/repos/bloomberg/chef-bach/contents/{+path}","compare_url":"https://api.github.com/repos/bloomberg/chef-bach/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bloomberg/chef-bach/merges","archive_url":"https://api.github.com/repos/bloomberg/chef-bach/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bloomberg/chef-bach/downloads","issues_url":"https://api.github.com/repos/bloomberg/chef-bach/issues{/number}","pulls_url":"https://api.github.com/repos/bloomberg/chef-bach/pulls{/number}","milestones_url":"https://api.github.com/repos/bloomberg/chef-bach/milestones{/number}","notifications_url":"https://api.github.com/repos/bloomberg/chef-bach/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bloomberg/chef-bach/labels{/name}","releases_url":"https://api.github.com/repos/bloomberg/chef-bach/releases{/id}","created_at":"2014-10-08T09:16:26Z","updated_at":"2015-10-13T17:00:26Z","pushed_at":"2015-11-04T02:43:42Z","git_url":"git://github.com/bloomberg/chef-bach.git","ssh_url":"git@github.com:bloomberg/chef-bach.git","clone_url":"https://github.com/bloomberg/chef-bach.git","svn_url":"https://github.com/bloomberg/chef-bach","homepage":null,"size":5798,"stargazers_count":20,"watchers_count":20,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":14,"mirror_url":null,"open_issues_count":85,"forks":14,"open_issues":85,"watchers":20,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/bloomberg/chef-bach/pulls/302"},"html":{"href":"https://github.com/bloomberg/chef-bach/pull/302"},"issue":{"href":"https://api.github.com/repos/bloomberg/chef-bach/issues/302"},"comments":{"href":"https://api.github.com/repos/bloomberg/chef-bach/issues/302/comments"},"review_comments":{"href":"https://api.github.com/repos/bloomberg/chef-bach/pulls/302/comments"},"review_comment":{"href":"https://api.github.com/repos/bloomberg/chef-bach/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/bloomberg/chef-bach/pulls/302/commits"},"statuses":{"href":"https://api.github.com/repos/bloomberg/chef-bach/statuses/8b16f654bd91bde1122f2da5ea2efcc8b723066a"}}}}